Apply new patches
[linux-2.6.git] / linux-2.6.27.10-click.patch
1 diff -Nurb click-1.6.0/Makefile click-1.6.0-27/Makefile
2 --- click-1.6.0/Makefile        1969-12-31 19:00:00.000000000 -0500
3 +++ click-1.6.0-27/Makefile     2009-01-28 16:15:43.000000000 -0500
4 @@ -0,0 +1,230 @@
5 +# Warning: this file must be usable by regular make
6 +# (unlike the Makefiles in subdirectories).
7 +
8 +SHELL = /bin/sh
9 +
10 +
11 +PACKAGE = click
12 +VERSION = 1.6.0
13 +
14 +top_srcdir = .
15 +srcdir = .
16 +top_builddir = .
17 +subdir = .
18 +conf_auxdir = $(top_srcdir)
19 +
20 +AUTOCONF = autoconf
21 +# ACLOCAL = aclocal -I m4
22 +ACLOCAL = :
23 +PERL = perl
24 +INSTALL = /usr/bin/install -c
25 +INSTALL_IF_CHANGED = $(top_builddir)/installch
26 +INSTALL_DATA = /usr/bin/install -c -m 644
27 +INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644
28 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
29 +
30 +EXTRA_PROVIDES =
31 +PROVISIONS = i686 i386 i586 int64 linux linux_2_6 pcap $(EXTRA_PROVIDES)
32 +
33 +prefix = /d/click/click-1.6.0-27/inst
34 +exec_prefix = /d/click/click-1.6.0-27/inst
35 +includedir = /d/click/click-1.6.0-27/inst/include
36 +clickincludedir = $(includedir)/click
37 +netincludedir = $(includedir)/clicknet
38 +toolincludedir = $(includedir)/clicktool
39 +bindir = /d/click/click-1.6.0-27/inst/bin
40 +datarootdir = /d/click/click-1.6.0-27/inst/share
41 +datadir = /d/click/click-1.6.0-27/inst/share
42 +clickdatadir = $(datadir)/click
43 +
44 +DRIVERS =  userlevel linuxmodule
45 +OTHER_TARGETS =  tools
46 +ALL_TARGETS = $(DRIVERS) $(OTHER_TARGETS)
47 +
48 +all: $(ALL_TARGETS) Makefile
49 +
50 +bsdmodule: Makefile click-buildtool stamp-h
51 +       @cd bsdmodule && $(MAKE) all
52 +linuxmodule: Makefile click-buildtool stamp-h
53 +       @cd linuxmodule && $(MAKE) all
54 +ns: Makefile click-buildtool stamp-h
55 +       @cd ns && $(MAKE) all
56 +userlevel: Makefile click-buildtool click-compile stamp-h
57 +       @cd userlevel && $(MAKE) all
58 +exopc: Makefile click-buildtool stamp-h
59 +       @cd exopc && $(MAKE) all
60 +tools: Makefile
61 +       @cd tools && $(MAKE) all
62 +
63 +install: Makefile click-buildtool click-compile stamp-h installch
64 +       @for d in $(ALL_TARGETS); do (cd $$d && $(MAKE) install) || exit 1; done
65 +       @$(MAKE) install-local install-doc install-local-include
66 +install-local: elementmap.xml click-buildtool click-compile config.mk \
67 +       etc/pkg-config.mk installch
68 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
69 +       $(INSTALL_IF_CHANGED) click-buildtool $(DESTDIR)$(bindir)/click-buildtool
70 +       $(INSTALL_IF_CHANGED) click-compile $(DESTDIR)$(bindir)/click-compile
71 +       $(INSTALL_IF_CHANGED) $(srcdir)/click-mkelemmap $(DESTDIR)$(bindir)/click-mkelemmap
72 +       $(INSTALL_IF_CHANGED) $(top_srcdir)/test/testie $(DESTDIR)$(bindir)/testie
73 +       $(mkinstalldirs) $(DESTDIR)$(clickdatadir)
74 +       $(INSTALL) $(mkinstalldirs) $(DESTDIR)$(clickdatadir)/mkinstalldirs
75 +       $(INSTALL_DATA) elementmap.xml $(DESTDIR)$(clickdatadir)/elementmap.xml
76 +       $(INSTALL_DATA_IF_CHANGED) config.mk $(DESTDIR)$(clickdatadir)/config.mk
77 +       $(INSTALL_DATA_IF_CHANGED) etc/pkg-config.mk $(DESTDIR)$(clickdatadir)/pkg-config.mk
78 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-Makefile $(DESTDIR)$(clickdatadir)/pkg-Makefile
79 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-userlevel.mk $(DESTDIR)$(clickdatadir)/pkg-userlevel.mk
80 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-linuxmodule.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule.mk
81 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/etc/pkg-linuxmodule-26.mk $(DESTDIR)$(clickdatadir)/pkg-linuxmodule-26.mk
82 +       (cd $(top_srcdir); pwd) > $(DESTDIR)$(clickdatadir)/srcdir
83 +       /bin/rm -rf $(DESTDIR)$(clickdatadir)/src
84 +       /bin/ln -s "`cd $(top_srcdir); pwd`" $(DESTDIR)$(clickdatadir)/src
85 +install-doc: elementmap.xml
86 +       @cd doc && $(MAKE) install
87 +install-info:
88 +       @cd doc && $(MAKE) install-info
89 +install-man: elementmap.xml
90 +       @-for d in $(ALL_TARGETS) doc; do (cd $$d && $(MAKE) install-man); done
91 +install-local-include: stamp-h installch
92 +       $(mkinstalldirs) $(DESTDIR)$(clickincludedir)
93 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.h $(DESTDIR)$(clickincludedir)
94 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.hh $(DESTDIR)$(clickincludedir)
95 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/*.cc $(DESTDIR)$(clickincludedir)
96 +       $(INSTALL_DATA_IF_CHANGED) $(top_builddir)/include/click/*.h $(DESTDIR)$(clickincludedir)
97 +       $(mkinstalldirs) $(DESTDIR)$(clickincludedir)/standard
98 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/click/standard/*.hh $(DESTDIR)$(clickincludedir)/standard
99 +       $(mkinstalldirs) $(DESTDIR)$(netincludedir)
100 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/include/clicknet/*.h $(DESTDIR)$(netincludedir)
101 +install-include: install-local-include
102 +       @cd tools && $(MAKE) install-include
103 +install-lib:
104 +       @if echo $(ALL_TARGETS) | grep userlevel >/dev/null 2>&1; then cd userlevel && $(MAKE) install-lib; fi
105 +       @if echo $(ALL_TARGETS) | grep tools >/dev/null 2>&1; then cd tools && $(MAKE) install-lib; fi
106 +
107 +uninstall: elementmap.xml
108 +       @for d in $(ALL_TARGETS) doc; do (cd $$d && $(MAKE) uninstall) || exit 1; done
109 +       @$(MAKE) uninstall-local uninstall-local-include
110 +uninstall-local:
111 +       /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
112 +       /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
113 +uninstall-local-include:
114 +       cd $(srcdir)/include/click; for i in *.h *.hh *.cc; do /bin/rm -f $(DESTDIR)$(clickincludedir)/$$i; done
115 +       cd $(top_builddir)/include/click; for i in *.h; do /bin/rm -f $(DESTDIR)$(clickincludedir)/$$i; done
116 +       cd $(srcdir)/include/click/standard; for i in *.hh; do /bin/rm -f $(DESTDIR)$(clickincludedir)/standard/$$i; done
117 +       cd $(srcdir)/include/clicknet; for i in *.h; do /bin/rm -f $(DESTDIR)$(netincludedir)/$$i; done
118 +       @-/bin/rmdir $(DESTDIR)$(clickincludedir)/standard
119 +       @-/bin/rmdir $(DESTDIR)$(clickincludedir)
120 +       @-/bin/rmdir $(DESTDIR)$(netincludedir)
121 +
122 +elemlist elemlists: click-buildtool
123 +       @for d in $(DRIVERS); do (cd $$d && $(MAKE) elemlist) || exit 1; done
124 +
125 +MKELEMMAPFLAGS =
126 +elementmap.xml: click-buildtool $(srcdir)/click-mkelemmap always
127 +       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
128 +always:
129 +       @:
130 +
131 +click-buildtool: $(srcdir)/click-buildtool.in config.status
132 +       cd $(top_builddir) && \
133 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
134 +       @chmod +x click-buildtool; touch click-buildtool
135 +click-compile: $(srcdir)/click-compile.in config.status
136 +       cd $(top_builddir) && \
137 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
138 +       @chmod +x click-compile; touch click-compile
139 +config.mk: $(srcdir)/config.mk.in config.status
140 +       cd $(top_builddir) && \
141 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
142 +installch: $(srcdir)/installch.in config.status
143 +       cd $(top_builddir) && \
144 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
145 +       @chmod +x installch; touch installch
146 +etc/pkg-config.mk: $(srcdir)/etc/pkg-config.mk.in config.status
147 +       cd $(top_builddir) && \
148 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
149 +
150 +$(srcdir)/configure: $(srcdir)/configure.in $(srcdir)/m4/click.m4
151 +       cd $(srcdir) && $(ACLOCAL) && $(AUTOCONF)
152 +config.status: $(srcdir)/configure
153 +       $(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'
154 +Makefile: config.status $(srcdir)/Makefile.in
155 +       cd $(top_builddir) && \
156 +         CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
157 +config.h: stamp-h
158 +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
159 +       cd $(top_builddir) \
160 +         && CONFIG_FILES= $(SHELL) ./config.status
161 +       echo > stamp-h
162 +
163 +check-filenames:
164 +       @a=`find . \( -name \*.cc -or -name \*.c \) -print | sed 's/.*\/\(.*\)\.c*$$/\1.o/' | grep -v 'elements\.o' | sort | uniq -d`; \
165 +       if test -z $$a; then echo OK; else echo "*** warning: duplicate object file names:"; echo "$$a"; fi
166 +
167 +clean:
168 +       @-for d in  bsdmodule linuxmodule ns userlevel tools doc; do (cd $$d && $(MAKE) clean); done
169 +       -rm -f elementmap.xml conftest.*
170 +distclean:
171 +       @-for d in  bsdmodule linuxmodule ns userlevel tools doc; do (cd $$d && $(MAKE) distclean); done
172 +       -rm -f Makefile config.status etc/libclick/Makefile
173 +       -rm -f include/click/config.h include/click/config-*.h include/click/pathvars.h
174 +       -rm -f config.cache config.log click-buildtool click-compile config.mk stamp-h
175 +       -rm -f etc/pkg-config.mk
176 +       -rm -f elementmap.xml conftest.* installch
177 +
178 +
179 +distdir = $(PACKAGE)-$(VERSION)
180 +top_distdir = $(distdir)
181 +
182 +dist: distdir
183 +       tar czf $(distdir).tar.gz $(distdir)
184 +       -rm -rf $(distdir)
185 +distdir: $(srcdir)/configure
186 +       -rm -rf doc/click.info* doc/testie.1 $(srcdir)/doc/click.info* $(srcdir)/doc/testie.1
187 +       cd doc && $(MAKE) info testie.1
188 +       cd $(srcdir)/etc/samplepackage && $(AUTOCONF)
189 +       -rm -rf $(distdir)
190 +       mkdir $(distdir)
191 +       chmod 777 $(distdir)
192 +       @echo Copying library, documentation, configuration, and driver files...
193 +       [ "$(srcdir)" == . ] || cp doc/click.info* doc/testie.1 $(srcdir)/doc
194 +       @for file in `cat $(srcdir)/DISTFILES | grep .`; do \
195 +         if expr "$$file" : '.*:$$' >/dev/null 2>&1; then \
196 +           d=`echo $$file | sed 's/:$$//;s/^\.\///'`; \
197 +         elif test -d "$(srcdir)/$$d/$$file"; then \
198 +           mkdir $(distdir)/$$d/$$file; \
199 +           chmod 777 $(distdir)/$$d/$$file; \
200 +         else \
201 +           for f in `cd $(srcdir)/$$d && echo $$file`; do \
202 +             test -f "$(distdir)/$$d/$$f" \
203 +             || ln $(srcdir)/$$d/$$f $(distdir)/$$d/$$f 2> /dev/null \
204 +             || cp -p $(srcdir)/$$d/$$f $(distdir)/$$d/$$f \
205 +             || echo "Could not copy $$d/$$f!" 1>&2; \
206 +         done; fi; \
207 +       done
208 +       @echo Copying element files...
209 +       @d=$(srcdir); \
210 +       for dir in `cd $$d && find elements -type d | grep -v 'exopc\|CVS'`; do \
211 +         mkdir $(distdir)/$$dir 2>/dev/null; \
212 +         chmod 777 $(distdir)/$$dir; \
213 +         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 \
214 +           ln $$d/$$cfile $(distdir)/$$cfile; \
215 +         done; \
216 +       done
217 +       @echo Removing files not meant for distribution...
218 +       @if test -r $(srcdir)/NODIST; then \
219 +       for i in `cat $(srcdir)/NODIST`; do \
220 +         rm -rf $(distdir)/$$i; \
221 +       done; fi
222 +       @if grep -q 'Id:.*benjie' `find $(srcdir)/etc -maxdepth 1 -type f`; then \
223 +         echo 'ERROR: Benjie must be punished!'; exit 1; \
224 +       fi
225 +       @if test `grep 'CLICK_VERSION=' $(srcdir)/configure.in` != `grep 'CLICK_VERSION=' $(srcdir)/etc/libclick/lc-configure.in`; then \
226 +         echo 'ERROR: Bad libclick CLICK_VERSION!'; exit 1; \
227 +       fi
228 +
229 +
230 +.PHONY: all always elemlist elemlists \
231 +       bsdmodule exopc linuxmodule ns tools userlevel \
232 +       clean distclean dist distdir \
233 +       install install-doc install-lib install-man install-local install-include install-local-include \
234 +       uninstall uninstall-local uninstall-local-include
235 diff -Nurb click-1.6.0/autom4te.cache/output.0 click-1.6.0-27/autom4te.cache/output.0
236 --- click-1.6.0/autom4te.cache/output.0 1969-12-31 19:00:00.000000000 -0500
237 +++ click-1.6.0-27/autom4te.cache/output.0      2009-01-27 12:14:43.000000000 -0500
238 @@ -0,0 +1,17329 @@
239 +@%:@! /bin/sh
240 +@%:@ Guess values for system-dependent variables and create Makefiles.
241 +@%:@ Generated by GNU Autoconf 2.61 for click 1.6.0.
242 +@%:@ 
243 +@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
244 +@%:@ 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
245 +@%:@ This configure script is free software; the Free Software Foundation
246 +@%:@ gives unlimited permission to copy, distribute and modify it.
247 +## --------------------- ##
248 +## M4sh Initialization.  ##
249 +## --------------------- ##
250 +
251 +# Be more Bourne compatible
252 +DUALCASE=1; export DUALCASE # for MKS sh
253 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
254 +  emulate sh
255 +  NULLCMD=:
256 +  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
257 +  # is contrary to our usage.  Disable this feature.
258 +  alias -g '${1+"$@"}'='"$@"'
259 +  setopt NO_GLOB_SUBST
260 +else
261 +  case `(set -o) 2>/dev/null` in
262 +  *posix*) set -o posix ;;
263 +esac
264 +
265 +fi
266 +
267 +
268 +
269 +
270 +# PATH needs CR
271 +# Avoid depending upon Character Ranges.
272 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
273 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
274 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
275 +as_cr_digits='0123456789'
276 +as_cr_alnum=$as_cr_Letters$as_cr_digits
277 +
278 +# The user is always right.
279 +if test "${PATH_SEPARATOR+set}" != set; then
280 +  echo "#! /bin/sh" >conf$$.sh
281 +  echo  "exit 0"   >>conf$$.sh
282 +  chmod +x conf$$.sh
283 +  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
284 +    PATH_SEPARATOR=';'
285 +  else
286 +    PATH_SEPARATOR=:
287 +  fi
288 +  rm -f conf$$.sh
289 +fi
290 +
291 +# Support unset when possible.
292 +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
293 +  as_unset=unset
294 +else
295 +  as_unset=false
296 +fi
297 +
298 +
299 +# IFS
300 +# We need space, tab and new line, in precisely that order.  Quoting is
301 +# there to prevent editors from complaining about space-tab.
302 +# (If _AS_PATH_WALK were called with IFS unset, it would disable word
303 +# splitting by setting IFS to empty value.)
304 +as_nl='
305 +'
306 +IFS=" ""       $as_nl"
307 +
308 +# Find who we are.  Look in the path if we contain no directory separator.
309 +case $0 in
310 +  *[\\/]* ) as_myself=$0 ;;
311 +  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
312 +for as_dir in $PATH
313 +do
314 +  IFS=$as_save_IFS
315 +  test -z "$as_dir" && as_dir=.
316 +  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
317 +done
318 +IFS=$as_save_IFS
319 +
320 +     ;;
321 +esac
322 +# We did not find ourselves, most probably we were run as `sh COMMAND'
323 +# in which case we are not to be found in the path.
324 +if test "x$as_myself" = x; then
325 +  as_myself=$0
326 +fi
327 +if test ! -f "$as_myself"; then
328 +  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
329 +  { (exit 1); exit 1; }
330 +fi
331 +
332 +# Work around bugs in pre-3.0 UWIN ksh.
333 +for as_var in ENV MAIL MAILPATH
334 +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
335 +done
336 +PS1='$ '
337 +PS2='> '
338 +PS4='+ '
339 +
340 +# NLS nuisances.
341 +for as_var in \
342 +  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
343 +  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
344 +  LC_TELEPHONE LC_TIME
345 +do
346 +  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
347 +    eval $as_var=C; export $as_var
348 +  else
349 +    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
350 +  fi
351 +done
352 +
353 +# Required to use basename.
354 +if expr a : '\(a\)' >/dev/null 2>&1 &&
355 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
356 +  as_expr=expr
357 +else
358 +  as_expr=false
359 +fi
360 +
361 +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
362 +  as_basename=basename
363 +else
364 +  as_basename=false
365 +fi
366 +
367 +
368 +# Name of the executable.
369 +as_me=`$as_basename -- "$0" ||
370 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
371 +        X"$0" : 'X\(//\)$' \| \
372 +        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
373 +echo X/"$0" |
374 +    sed '/^.*\/\([^/][^/]*\)\/*$/{
375 +           s//\1/
376 +           q
377 +         }
378 +         /^X\/\(\/\/\)$/{
379 +           s//\1/
380 +           q
381 +         }
382 +         /^X\/\(\/\).*/{
383 +           s//\1/
384 +           q
385 +         }
386 +         s/.*/./; q'`
387 +
388 +# CDPATH.
389 +$as_unset CDPATH
390 +
391 +
392 +if test "x$CONFIG_SHELL" = x; then
393 +  if (eval ":") 2>/dev/null; then
394 +  as_have_required=yes
395 +else
396 +  as_have_required=no
397 +fi
398 +
399 +  if test $as_have_required = yes &&    (eval ":
400 +(as_func_return () {
401 +  (exit \$1)
402 +}
403 +as_func_success () {
404 +  as_func_return 0
405 +}
406 +as_func_failure () {
407 +  as_func_return 1
408 +}
409 +as_func_ret_success () {
410 +  return 0
411 +}
412 +as_func_ret_failure () {
413 +  return 1
414 +}
415 +
416 +exitcode=0
417 +if as_func_success; then
418 +  :
419 +else
420 +  exitcode=1
421 +  echo as_func_success failed.
422 +fi
423 +
424 +if as_func_failure; then
425 +  exitcode=1
426 +  echo as_func_failure succeeded.
427 +fi
428 +
429 +if as_func_ret_success; then
430 +  :
431 +else
432 +  exitcode=1
433 +  echo as_func_ret_success failed.
434 +fi
435 +
436 +if as_func_ret_failure; then
437 +  exitcode=1
438 +  echo as_func_ret_failure succeeded.
439 +fi
440 +
441 +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
442 +  :
443 +else
444 +  exitcode=1
445 +  echo positional parameters were not saved.
446 +fi
447 +
448 +test \$exitcode = 0) || { (exit 1); exit 1; }
449 +
450 +(
451 +  as_lineno_1=\$LINENO
452 +  as_lineno_2=\$LINENO
453 +  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
454 +  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
455 +") 2> /dev/null; then
456 +  :
457 +else
458 +  as_candidate_shells=
459 +    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
460 +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
461 +do
462 +  IFS=$as_save_IFS
463 +  test -z "$as_dir" && as_dir=.
464 +  case $as_dir in
465 +        /*)
466 +          for as_base in sh bash ksh sh5; do
467 +            as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
468 +          done;;
469 +       esac
470 +done
471 +IFS=$as_save_IFS
472 +
473 +
474 +      for as_shell in $as_candidate_shells $SHELL; do
475 +        # Try only shells that exist, to save several forks.
476 +        if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
477 +               { ("$as_shell") 2> /dev/null <<\_ASEOF
478 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
479 +  emulate sh
480 +  NULLCMD=:
481 +  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
482 +  # is contrary to our usage.  Disable this feature.
483 +  alias -g '${1+"$@"}'='"$@"'
484 +  setopt NO_GLOB_SUBST
485 +else
486 +  case `(set -o) 2>/dev/null` in
487 +  *posix*) set -o posix ;;
488 +esac
489 +
490 +fi
491 +
492 +
493 +:
494 +_ASEOF
495 +}; then
496 +  CONFIG_SHELL=$as_shell
497 +              as_have_required=yes
498 +              if { "$as_shell" 2> /dev/null <<\_ASEOF
499 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
500 +  emulate sh
501 +  NULLCMD=:
502 +  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
503 +  # is contrary to our usage.  Disable this feature.
504 +  alias -g '${1+"$@"}'='"$@"'
505 +  setopt NO_GLOB_SUBST
506 +else
507 +  case `(set -o) 2>/dev/null` in
508 +  *posix*) set -o posix ;;
509 +esac
510 +
511 +fi
512 +
513 +
514 +:
515 +(as_func_return () {
516 +  (exit $1)
517 +}
518 +as_func_success () {
519 +  as_func_return 0
520 +}
521 +as_func_failure () {
522 +  as_func_return 1
523 +}
524 +as_func_ret_success () {
525 +  return 0
526 +}
527 +as_func_ret_failure () {
528 +  return 1
529 +}
530 +
531 +exitcode=0
532 +if as_func_success; then
533 +  :
534 +else
535 +  exitcode=1
536 +  echo as_func_success failed.
537 +fi
538 +
539 +if as_func_failure; then
540 +  exitcode=1
541 +  echo as_func_failure succeeded.
542 +fi
543 +
544 +if as_func_ret_success; then
545 +  :
546 +else
547 +  exitcode=1
548 +  echo as_func_ret_success failed.
549 +fi
550 +
551 +if as_func_ret_failure; then
552 +  exitcode=1
553 +  echo as_func_ret_failure succeeded.
554 +fi
555 +
556 +if ( set x; as_func_ret_success y && test x = "$1" ); then
557 +  :
558 +else
559 +  exitcode=1
560 +  echo positional parameters were not saved.
561 +fi
562 +
563 +test $exitcode = 0) || { (exit 1); exit 1; }
564 +
565 +(
566 +  as_lineno_1=$LINENO
567 +  as_lineno_2=$LINENO
568 +  test "x$as_lineno_1" != "x$as_lineno_2" &&
569 +  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
570 +
571 +_ASEOF
572 +}; then
573 +  break
574 +fi
575 +
576 +fi
577 +
578 +      done
579 +
580 +      if test "x$CONFIG_SHELL" != x; then
581 +  for as_var in BASH_ENV ENV
582 +        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
583 +        done
584 +        export CONFIG_SHELL
585 +        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
586 +fi
587 +
588 +
589 +    if test $as_have_required = no; then
590 +  echo This script requires a shell more modern than all the
591 +      echo shells that I found on your system.  Please install a
592 +      echo modern shell, or manually run the script under such a
593 +      echo shell if you do have one.
594 +      { (exit 1); exit 1; }
595 +fi
596 +
597 +    
598 +fi
599 +
600 +fi
601 +
602 +
603 +
604 +(eval "as_func_return () {
605 +  (exit \$1)
606 +}
607 +as_func_success () {
608 +  as_func_return 0
609 +}
610 +as_func_failure () {
611 +  as_func_return 1
612 +}
613 +as_func_ret_success () {
614 +  return 0
615 +}
616 +as_func_ret_failure () {
617 +  return 1
618 +}
619 +
620 +exitcode=0
621 +if as_func_success; then
622 +  :
623 +else
624 +  exitcode=1
625 +  echo as_func_success failed.
626 +fi
627 +
628 +if as_func_failure; then
629 +  exitcode=1
630 +  echo as_func_failure succeeded.
631 +fi
632 +
633 +if as_func_ret_success; then
634 +  :
635 +else
636 +  exitcode=1
637 +  echo as_func_ret_success failed.
638 +fi
639 +
640 +if as_func_ret_failure; then
641 +  exitcode=1
642 +  echo as_func_ret_failure succeeded.
643 +fi
644 +
645 +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
646 +  :
647 +else
648 +  exitcode=1
649 +  echo positional parameters were not saved.
650 +fi
651 +
652 +test \$exitcode = 0") || {
653 +  echo No shell found that supports shell functions.
654 +  echo Please tell autoconf@gnu.org about your system,
655 +  echo including any error possibly output before this
656 +  echo message
657 +}
658 +
659 +
660 +
661 +  as_lineno_1=$LINENO
662 +  as_lineno_2=$LINENO
663 +  test "x$as_lineno_1" != "x$as_lineno_2" &&
664 +  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
665 +
666 +  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
667 +  # uniformly replaced by the line number.  The first 'sed' inserts a
668 +  # line-number line after each line using $LINENO; the second 'sed'
669 +  # does the real work.  The second script uses 'N' to pair each
670 +  # line-number line with the line containing $LINENO, and appends
671 +  # trailing '-' during substitution so that $LINENO is not a special
672 +  # case at line end.
673 +  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
674 +  # scripts with optimization help from Paolo Bonzini.  Blame Lee
675 +  # E. McMahon (1931-1989) for sed's syntax.  :-)
676 +  sed -n '
677 +    p
678 +    /[$]LINENO/=
679 +  ' <$as_myself |
680 +    sed '
681 +      s/[$]LINENO.*/&-/
682 +      t lineno
683 +      b
684 +      :lineno
685 +      N
686 +      :loop
687 +      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
688 +      t loop
689 +      s/-\n.*//
690 +    ' >$as_me.lineno &&
691 +  chmod +x "$as_me.lineno" ||
692 +    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
693 +   { (exit 1); exit 1; }; }
694 +
695 +  # Don't try to exec as it changes $[0], causing all sort of problems
696 +  # (the dirname of $[0] is not the place where we might find the
697 +  # original and so on.  Autoconf is especially sensitive to this).
698 +  . "./$as_me.lineno"
699 +  # Exit status is that of the last command.
700 +  exit
701 +}
702 +
703 +
704 +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
705 +  as_dirname=dirname
706 +else
707 +  as_dirname=false
708 +fi
709 +
710 +ECHO_C= ECHO_N= ECHO_T=
711 +case `echo -n x` in
712 +-n*)
713 +  case `echo 'x\c'` in
714 +  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
715 +  *)   ECHO_C='\c';;
716 +  esac;;
717 +*)
718 +  ECHO_N='-n';;
719 +esac
720 +
721 +if expr a : '\(a\)' >/dev/null 2>&1 &&
722 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
723 +  as_expr=expr
724 +else
725 +  as_expr=false
726 +fi
727 +
728 +rm -f conf$$ conf$$.exe conf$$.file
729 +if test -d conf$$.dir; then
730 +  rm -f conf$$.dir/conf$$.file
731 +else
732 +  rm -f conf$$.dir
733 +  mkdir conf$$.dir
734 +fi
735 +echo >conf$$.file
736 +if ln -s conf$$.file conf$$ 2>/dev/null; then
737 +  as_ln_s='ln -s'
738 +  # ... but there are two gotchas:
739 +  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
740 +  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
741 +  # In both cases, we have to default to `cp -p'.
742 +  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
743 +    as_ln_s='cp -p'
744 +elif ln conf$$.file conf$$ 2>/dev/null; then
745 +  as_ln_s=ln
746 +else
747 +  as_ln_s='cp -p'
748 +fi
749 +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
750 +rmdir conf$$.dir 2>/dev/null
751 +
752 +if mkdir -p . 2>/dev/null; then
753 +  as_mkdir_p=:
754 +else
755 +  test -d ./-p && rmdir ./-p
756 +  as_mkdir_p=false
757 +fi
758 +
759 +if test -x / >/dev/null 2>&1; then
760 +  as_test_x='test -x'
761 +else
762 +  if ls -dL / >/dev/null 2>&1; then
763 +    as_ls_L_option=L
764 +  else
765 +    as_ls_L_option=
766 +  fi
767 +  as_test_x='
768 +    eval sh -c '\''
769 +      if test -d "$1"; then
770 +        test -d "$1/.";
771 +      else
772 +       case $1 in
773 +        -*)set "./$1";;
774 +       esac;
775 +       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
776 +       ???[sx]*):;;*)false;;esac;fi
777 +    '\'' sh
778 +  '
779 +fi
780 +as_executable_p=$as_test_x
781 +
782 +# Sed expression to map a string onto a valid CPP name.
783 +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
784 +
785 +# Sed expression to map a string onto a valid variable name.
786 +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
787 +
788 +
789 +
790 +exec 7<&0 </dev/null 6>&1
791 +
792 +# Name of the host.
793 +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
794 +# so uname gets run too.
795 +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
796 +
797 +#
798 +# Initializations.
799 +#
800 +ac_default_prefix=/usr/local
801 +ac_clean_files=
802 +ac_config_libobj_dir=.
803 +LIB@&t@OBJS=
804 +cross_compiling=no
805 +subdirs=
806 +MFLAGS=
807 +MAKEFLAGS=
808 +SHELL=${CONFIG_SHELL-/bin/sh}
809 +
810 +# Identity of this package.
811 +PACKAGE_NAME='click'
812 +PACKAGE_TARNAME='click'
813 +PACKAGE_VERSION='1.6.0'
814 +PACKAGE_STRING='click 1.6.0'
815 +PACKAGE_BUGREPORT=''
816 +
817 +# Factoring default headers for most tests.
818 +ac_includes_default="\
819 +#include <stdio.h>
820 +#ifdef HAVE_SYS_TYPES_H
821 +# include <sys/types.h>
822 +#endif
823 +#ifdef HAVE_SYS_STAT_H
824 +# include <sys/stat.h>
825 +#endif
826 +#ifdef STDC_HEADERS
827 +# include <stdlib.h>
828 +# include <stddef.h>
829 +#else
830 +# ifdef HAVE_STDLIB_H
831 +#  include <stdlib.h>
832 +# endif
833 +#endif
834 +#ifdef HAVE_STRING_H
835 +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
836 +#  include <memory.h>
837 +# endif
838 +# include <string.h>
839 +#endif
840 +#ifdef HAVE_STRINGS_H
841 +# include <strings.h>
842 +#endif
843 +#ifdef HAVE_INTTYPES_H
844 +# include <inttypes.h>
845 +#endif
846 +#ifdef HAVE_STDINT_H
847 +# include <stdint.h>
848 +#endif
849 +#ifdef HAVE_UNISTD_H
850 +# include <unistd.h>
851 +#endif"
852 +
853 +ac_subst_vars='SHELL
854 +PATH_SEPARATOR
855 +PACKAGE_NAME
856 +PACKAGE_TARNAME
857 +PACKAGE_VERSION
858 +PACKAGE_STRING
859 +PACKAGE_BUGREPORT
860 +exec_prefix
861 +prefix
862 +program_transform_name
863 +bindir
864 +sbindir
865 +libexecdir
866 +datarootdir
867 +datadir
868 +sysconfdir
869 +sharedstatedir
870 +localstatedir
871 +includedir
872 +oldincludedir
873 +docdir
874 +infodir
875 +htmldir
876 +dvidir
877 +pdfdir
878 +psdir
879 +libdir
880 +localedir
881 +mandir
882 +DEFS
883 +ECHO_C
884 +ECHO_N
885 +ECHO_T
886 +LIBS
887 +build_alias
888 +host_alias
889 +target_alias
890 +ac_configure_args
891 +CLICK_VERSION
892 +conf_auxdir
893 +build
894 +build_cpu
895 +build_vendor
896 +build_os
897 +host
898 +host_cpu
899 +host_vendor
900 +host_os
901 +target
902 +target_cpu
903 +target_vendor
904 +target_os
905 +CC
906 +CXX
907 +CFLAGS
908 +LDFLAGS
909 +CPPFLAGS
910 +ac_ct_CC
911 +EXEEXT
912 +OBJEXT
913 +DEPCFLAGS
914 +CFLAGS_NDEBUG
915 +CPP
916 +CXXFLAGS
917 +ac_ct_CXX
918 +CXXFLAGS_NDEBUG
919 +CXXCPP
920 +KERNEL_CC
921 +KERNEL_CXX
922 +AR
923 +LD
924 +RANLIB
925 +STRIP
926 +AR_CREATEFLAGS
927 +linuxdir
928 +element_groups
929 +freebsd_srcdir
930 +freebsd_includedir
931 +LIB@&t@OBJS
932 +GREP
933 +EGREP
934 +BUILD_CC
935 +BUILD_CXX
936 +BUILD_AR
937 +BUILD_RANLIB
938 +HOST_TOOLS
939 +DL_LIBS
940 +LDMODULEFLAGS
941 +BUILD_DL_LIBS
942 +SOCKET_LIBS
943 +EXTRA_DRIVER_OBJS
944 +EXTRA_TOOL_OBJS
945 +LINUXMODULE_2_6
946 +POSSIBLE_DRIVERS
947 +DRIVERS
948 +HAVE_USERLEVEL_DRIVER
949 +HAVE_LINUXMODULE_DRIVER
950 +HAVE_BSDMODULE_DRIVER
951 +OTHER_TARGETS
952 +TOOLDIRS
953 +TOOL_TARGETS
954 +PCAP_INCLUDES
955 +PCAP_LIBS
956 +PROPER_INCLUDES
957 +PROPER_LIBS
958 +XML2CLICK
959 +EXPAT_INCLUDES
960 +EXPAT_LIBS
961 +LINUX_CFLAGS
962 +INSTALL_PROGRAM
963 +INSTALL_SCRIPT
964 +INSTALL_DATA
965 +INSTALL_IF_CHANGED
966 +CLICKINSTALL
967 +SUBMAKE
968 +GMAKE
969 +AUTOCONF
970 +perl5
971 +localperl5
972 +PERL
973 +INSTALL_INFO
974 +MAKEINFO
975 +TEXI2DVI
976 +POD2MAN
977 +clickdatadir
978 +provisions
979 +LTLIBOBJS'
980 +ac_subst_files=''
981 +      ac_precious_vars='build_alias
982 +host_alias
983 +target_alias
984 +CC
985 +CFLAGS
986 +LDFLAGS
987 +LIBS
988 +CPPFLAGS
989 +CPP
990 +CXX
991 +CXXFLAGS
992 +CCC
993 +CXXCPP'
994 +
995 +
996 +# Initialize some variables set by options.
997 +ac_init_help=
998 +ac_init_version=false
999 +# The variables have the same names as the options, with
1000 +# dashes changed to underlines.
1001 +cache_file=/dev/null
1002 +exec_prefix=NONE
1003 +no_create=
1004 +no_recursion=
1005 +prefix=NONE
1006 +program_prefix=NONE
1007 +program_suffix=NONE
1008 +program_transform_name=s,x,x,
1009 +silent=
1010 +site=
1011 +srcdir=
1012 +verbose=
1013 +x_includes=NONE
1014 +x_libraries=NONE
1015 +
1016 +# Installation directory options.
1017 +# These are left unexpanded so users can "make install exec_prefix=/foo"
1018 +# and all the variables that are supposed to be based on exec_prefix
1019 +# by default will actually change.
1020 +# Use braces instead of parens because sh, perl, etc. also accept them.
1021 +# (The list follows the same order as the GNU Coding Standards.)
1022 +bindir='${exec_prefix}/bin'
1023 +sbindir='${exec_prefix}/sbin'
1024 +libexecdir='${exec_prefix}/libexec'
1025 +datarootdir='${prefix}/share'
1026 +datadir='${datarootdir}'
1027 +sysconfdir='${prefix}/etc'
1028 +sharedstatedir='${prefix}/com'
1029 +localstatedir='${prefix}/var'
1030 +includedir='${prefix}/include'
1031 +oldincludedir='/usr/include'
1032 +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
1033 +infodir='${datarootdir}/info'
1034 +htmldir='${docdir}'
1035 +dvidir='${docdir}'
1036 +pdfdir='${docdir}'
1037 +psdir='${docdir}'
1038 +libdir='${exec_prefix}/lib'
1039 +localedir='${datarootdir}/locale'
1040 +mandir='${datarootdir}/man'
1041 +
1042 +ac_prev=
1043 +ac_dashdash=
1044 +for ac_option
1045 +do
1046 +  # If the previous option needs an argument, assign it.
1047 +  if test -n "$ac_prev"; then
1048 +    eval $ac_prev=\$ac_option
1049 +    ac_prev=
1050 +    continue
1051 +  fi
1052 +
1053 +  case $ac_option in
1054 +  *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
1055 +  *)   ac_optarg=yes ;;
1056 +  esac
1057 +
1058 +  # Accept the important Cygnus configure options, so we can diagnose typos.
1059 +
1060 +  case $ac_dashdash$ac_option in
1061 +  --)
1062 +    ac_dashdash=yes ;;
1063 +
1064 +  -bindir | --bindir | --bindi | --bind | --bin | --bi)
1065 +    ac_prev=bindir ;;
1066 +  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
1067 +    bindir=$ac_optarg ;;
1068 +
1069 +  -build | --build | --buil | --bui | --bu)
1070 +    ac_prev=build_alias ;;
1071 +  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
1072 +    build_alias=$ac_optarg ;;
1073 +
1074 +  -cache-file | --cache-file | --cache-fil | --cache-fi \
1075 +  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
1076 +    ac_prev=cache_file ;;
1077 +  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
1078 +  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
1079 +    cache_file=$ac_optarg ;;
1080 +
1081 +  --config-cache | -C)
1082 +    cache_file=config.cache ;;
1083 +
1084 +  -datadir | --datadir | --datadi | --datad)
1085 +    ac_prev=datadir ;;
1086 +  -datadir=* | --datadir=* | --datadi=* | --datad=*)
1087 +    datadir=$ac_optarg ;;
1088 +
1089 +  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
1090 +  | --dataroo | --dataro | --datar)
1091 +    ac_prev=datarootdir ;;
1092 +  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
1093 +  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
1094 +    datarootdir=$ac_optarg ;;
1095 +
1096 +  -disable-* | --disable-*)
1097 +    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
1098 +    # Reject names that are not valid shell variable names.
1099 +    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1100 +      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1101 +   { (exit 1); exit 1; }; }
1102 +    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
1103 +    eval enable_$ac_feature=no ;;
1104 +
1105 +  -docdir | --docdir | --docdi | --doc | --do)
1106 +    ac_prev=docdir ;;
1107 +  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
1108 +    docdir=$ac_optarg ;;
1109 +
1110 +  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
1111 +    ac_prev=dvidir ;;
1112 +  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
1113 +    dvidir=$ac_optarg ;;
1114 +
1115 +  -enable-* | --enable-*)
1116 +    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
1117 +    # Reject names that are not valid shell variable names.
1118 +    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1119 +      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
1120 +   { (exit 1); exit 1; }; }
1121 +    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
1122 +    eval enable_$ac_feature=\$ac_optarg ;;
1123 +
1124 +  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
1125 +  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
1126 +  | --exec | --exe | --ex)
1127 +    ac_prev=exec_prefix ;;
1128 +  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
1129 +  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
1130 +  | --exec=* | --exe=* | --ex=*)
1131 +    exec_prefix=$ac_optarg ;;
1132 +
1133 +  -gas | --gas | --ga | --g)
1134 +    # Obsolete; use --with-gas.
1135 +    with_gas=yes ;;
1136 +
1137 +  -help | --help | --hel | --he | -h)
1138 +    ac_init_help=long ;;
1139 +  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
1140 +    ac_init_help=recursive ;;
1141 +  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
1142 +    ac_init_help=short ;;
1143 +
1144 +  -host | --host | --hos | --ho)
1145 +    ac_prev=host_alias ;;
1146 +  -host=* | --host=* | --hos=* | --ho=*)
1147 +    host_alias=$ac_optarg ;;
1148 +
1149 +  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
1150 +    ac_prev=htmldir ;;
1151 +  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
1152 +  | --ht=*)
1153 +    htmldir=$ac_optarg ;;
1154 +
1155 +  -includedir | --includedir | --includedi | --included | --include \
1156 +  | --includ | --inclu | --incl | --inc)
1157 +    ac_prev=includedir ;;
1158 +  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
1159 +  | --includ=* | --inclu=* | --incl=* | --inc=*)
1160 +    includedir=$ac_optarg ;;
1161 +
1162 +  -infodir | --infodir | --infodi | --infod | --info | --inf)
1163 +    ac_prev=infodir ;;
1164 +  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
1165 +    infodir=$ac_optarg ;;
1166 +
1167 +  -libdir | --libdir | --libdi | --libd)
1168 +    ac_prev=libdir ;;
1169 +  -libdir=* | --libdir=* | --libdi=* | --libd=*)
1170 +    libdir=$ac_optarg ;;
1171 +
1172 +  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
1173 +  | --libexe | --libex | --libe)
1174 +    ac_prev=libexecdir ;;
1175 +  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
1176 +  | --libexe=* | --libex=* | --libe=*)
1177 +    libexecdir=$ac_optarg ;;
1178 +
1179 +  -localedir | --localedir | --localedi | --localed | --locale)
1180 +    ac_prev=localedir ;;
1181 +  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
1182 +    localedir=$ac_optarg ;;
1183 +
1184 +  -localstatedir | --localstatedir | --localstatedi | --localstated \
1185 +  | --localstate | --localstat | --localsta | --localst | --locals)
1186 +    ac_prev=localstatedir ;;
1187 +  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
1188 +  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
1189 +    localstatedir=$ac_optarg ;;
1190 +
1191 +  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
1192 +    ac_prev=mandir ;;
1193 +  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
1194 +    mandir=$ac_optarg ;;
1195 +
1196 +  -nfp | --nfp | --nf)
1197 +    # Obsolete; use --without-fp.
1198 +    with_fp=no ;;
1199 +
1200 +  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
1201 +  | --no-cr | --no-c | -n)
1202 +    no_create=yes ;;
1203 +
1204 +  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
1205 +  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
1206 +    no_recursion=yes ;;
1207 +
1208 +  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
1209 +  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
1210 +  | --oldin | --oldi | --old | --ol | --o)
1211 +    ac_prev=oldincludedir ;;
1212 +  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
1213 +  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
1214 +  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
1215 +    oldincludedir=$ac_optarg ;;
1216 +
1217 +  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
1218 +    ac_prev=prefix ;;
1219 +  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
1220 +    prefix=$ac_optarg ;;
1221 +
1222 +  -program-prefix | --program-prefix | --program-prefi | --program-pref \
1223 +  | --program-pre | --program-pr | --program-p)
1224 +    ac_prev=program_prefix ;;
1225 +  -program-prefix=* | --program-prefix=* | --program-prefi=* \
1226 +  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
1227 +    program_prefix=$ac_optarg ;;
1228 +
1229 +  -program-suffix | --program-suffix | --program-suffi | --program-suff \
1230 +  | --program-suf | --program-su | --program-s)
1231 +    ac_prev=program_suffix ;;
1232 +  -program-suffix=* | --program-suffix=* | --program-suffi=* \
1233 +  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
1234 +    program_suffix=$ac_optarg ;;
1235 +
1236 +  -program-transform-name | --program-transform-name \
1237 +  | --program-transform-nam | --program-transform-na \
1238 +  | --program-transform-n | --program-transform- \
1239 +  | --program-transform | --program-transfor \
1240 +  | --program-transfo | --program-transf \
1241 +  | --program-trans | --program-tran \
1242 +  | --progr-tra | --program-tr | --program-t)
1243 +    ac_prev=program_transform_name ;;
1244 +  -program-transform-name=* | --program-transform-name=* \
1245 +  | --program-transform-nam=* | --program-transform-na=* \
1246 +  | --program-transform-n=* | --program-transform-=* \
1247 +  | --program-transform=* | --program-transfor=* \
1248 +  | --program-transfo=* | --program-transf=* \
1249 +  | --program-trans=* | --program-tran=* \
1250 +  | --progr-tra=* | --program-tr=* | --program-t=*)
1251 +    program_transform_name=$ac_optarg ;;
1252 +
1253 +  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
1254 +    ac_prev=pdfdir ;;
1255 +  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
1256 +    pdfdir=$ac_optarg ;;
1257 +
1258 +  -psdir | --psdir | --psdi | --psd | --ps)
1259 +    ac_prev=psdir ;;
1260 +  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
1261 +    psdir=$ac_optarg ;;
1262 +
1263 +  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1264 +  | -silent | --silent | --silen | --sile | --sil)
1265 +    silent=yes ;;
1266 +
1267 +  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
1268 +    ac_prev=sbindir ;;
1269 +  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
1270 +  | --sbi=* | --sb=*)
1271 +    sbindir=$ac_optarg ;;
1272 +
1273 +  -sharedstatedir | --sharedstatedir | --sharedstatedi \
1274 +  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
1275 +  | --sharedst | --shareds | --shared | --share | --shar \
1276 +  | --sha | --sh)
1277 +    ac_prev=sharedstatedir ;;
1278 +  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
1279 +  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
1280 +  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
1281 +  | --sha=* | --sh=*)
1282 +    sharedstatedir=$ac_optarg ;;
1283 +
1284 +  -site | --site | --sit)
1285 +    ac_prev=site ;;
1286 +  -site=* | --site=* | --sit=*)
1287 +    site=$ac_optarg ;;
1288 +
1289 +  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
1290 +    ac_prev=srcdir ;;
1291 +  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
1292 +    srcdir=$ac_optarg ;;
1293 +
1294 +  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
1295 +  | --syscon | --sysco | --sysc | --sys | --sy)
1296 +    ac_prev=sysconfdir ;;
1297 +  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
1298 +  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
1299 +    sysconfdir=$ac_optarg ;;
1300 +
1301 +  -target | --target | --targe | --targ | --tar | --ta | --t)
1302 +    ac_prev=target_alias ;;
1303 +  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
1304 +    target_alias=$ac_optarg ;;
1305 +
1306 +  -v | -verbose | --verbose | --verbos | --verbo | --verb)
1307 +    verbose=yes ;;
1308 +
1309 +  -version | --version | --versio | --versi | --vers | -V)
1310 +    ac_init_version=: ;;
1311 +
1312 +  -with-* | --with-*)
1313 +    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
1314 +    # Reject names that are not valid shell variable names.
1315 +    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1316 +      { echo "$as_me: error: invalid package name: $ac_package" >&2
1317 +   { (exit 1); exit 1; }; }
1318 +    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
1319 +    eval with_$ac_package=\$ac_optarg ;;
1320 +
1321 +  -without-* | --without-*)
1322 +    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
1323 +    # Reject names that are not valid shell variable names.
1324 +    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1325 +      { echo "$as_me: error: invalid package name: $ac_package" >&2
1326 +   { (exit 1); exit 1; }; }
1327 +    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
1328 +    eval with_$ac_package=no ;;
1329 +
1330 +  --x)
1331 +    # Obsolete; use --with-x.
1332 +    with_x=yes ;;
1333 +
1334 +  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
1335 +  | --x-incl | --x-inc | --x-in | --x-i)
1336 +    ac_prev=x_includes ;;
1337 +  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
1338 +  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
1339 +    x_includes=$ac_optarg ;;
1340 +
1341 +  -x-libraries | --x-libraries | --x-librarie | --x-librari \
1342 +  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
1343 +    ac_prev=x_libraries ;;
1344 +  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
1345 +  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
1346 +    x_libraries=$ac_optarg ;;
1347 +
1348 +  -*) { echo "$as_me: error: unrecognized option: $ac_option
1349 +Try \`$0 --help' for more information." >&2
1350 +   { (exit 1); exit 1; }; }
1351 +    ;;
1352 +
1353 +  *=*)
1354 +    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
1355 +    # Reject names that are not valid shell variable names.
1356 +    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
1357 +      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
1358 +   { (exit 1); exit 1; }; }
1359 +    eval $ac_envvar=\$ac_optarg
1360 +    export $ac_envvar ;;
1361 +
1362 +  *)
1363 +    # FIXME: should be removed in autoconf 3.0.
1364 +    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
1365 +    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
1366 +      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
1367 +    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
1368 +    ;;
1369 +
1370 +  esac
1371 +done
1372 +
1373 +if test -n "$ac_prev"; then
1374 +  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
1375 +  { echo "$as_me: error: missing argument to $ac_option" >&2
1376 +   { (exit 1); exit 1; }; }
1377 +fi
1378 +
1379 +# Be sure to have absolute directory names.
1380 +for ac_var in  exec_prefix prefix bindir sbindir libexecdir datarootdir \
1381 +               datadir sysconfdir sharedstatedir localstatedir includedir \
1382 +               oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
1383 +               libdir localedir mandir
1384 +do
1385 +  eval ac_val=\$$ac_var
1386 +  case $ac_val in
1387 +    [\\/$]* | ?:[\\/]* )  continue;;
1388 +    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
1389 +  esac
1390 +  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
1391 +   { (exit 1); exit 1; }; }
1392 +done
1393 +
1394 +# There might be people who depend on the old broken behavior: `$host'
1395 +# used to hold the argument of --host etc.
1396 +# FIXME: To remove some day.
1397 +build=$build_alias
1398 +host=$host_alias
1399 +target=$target_alias
1400 +
1401 +# FIXME: To remove some day.
1402 +if test "x$host_alias" != x; then
1403 +  if test "x$build_alias" = x; then
1404 +    cross_compiling=maybe
1405 +    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
1406 +    If a cross compiler is detected then cross compile mode will be used." >&2
1407 +  elif test "x$build_alias" != "x$host_alias"; then
1408 +    cross_compiling=yes
1409 +  fi
1410 +fi
1411 +
1412 +ac_tool_prefix=
1413 +test -n "$host_alias" && ac_tool_prefix=$host_alias-
1414 +
1415 +test "$silent" = yes && exec 6>/dev/null
1416 +
1417 +
1418 +ac_pwd=`pwd` && test -n "$ac_pwd" &&
1419 +ac_ls_di=`ls -di .` &&
1420 +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
1421 +  { echo "$as_me: error: Working directory cannot be determined" >&2
1422 +   { (exit 1); exit 1; }; }
1423 +test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
1424 +  { echo "$as_me: error: pwd does not report name of working directory" >&2
1425 +   { (exit 1); exit 1; }; }
1426 +
1427 +
1428 +# Find the source files, if location was not specified.
1429 +if test -z "$srcdir"; then
1430 +  ac_srcdir_defaulted=yes
1431 +  # Try the directory containing this script, then the parent directory.
1432 +  ac_confdir=`$as_dirname -- "$0" ||
1433 +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
1434 +        X"$0" : 'X\(//\)[^/]' \| \
1435 +        X"$0" : 'X\(//\)$' \| \
1436 +        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
1437 +echo X"$0" |
1438 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
1439 +           s//\1/
1440 +           q
1441 +         }
1442 +         /^X\(\/\/\)[^/].*/{
1443 +           s//\1/
1444 +           q
1445 +         }
1446 +         /^X\(\/\/\)$/{
1447 +           s//\1/
1448 +           q
1449 +         }
1450 +         /^X\(\/\).*/{
1451 +           s//\1/
1452 +           q
1453 +         }
1454 +         s/.*/./; q'`
1455 +  srcdir=$ac_confdir
1456 +  if test ! -r "$srcdir/$ac_unique_file"; then
1457 +    srcdir=..
1458 +  fi
1459 +else
1460 +  ac_srcdir_defaulted=no
1461 +fi
1462 +if test ! -r "$srcdir/$ac_unique_file"; then
1463 +  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
1464 +  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
1465 +   { (exit 1); exit 1; }; }
1466 +fi
1467 +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
1468 +ac_abs_confdir=`(
1469 +       cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
1470 +   { (exit 1); exit 1; }; }
1471 +       pwd)`
1472 +# When building in place, set srcdir=.
1473 +if test "$ac_abs_confdir" = "$ac_pwd"; then
1474 +  srcdir=.
1475 +fi
1476 +# Remove unnecessary trailing slashes from srcdir.
1477 +# Double slashes in file names in object file debugging info
1478 +# mess up M-x gdb in Emacs.
1479 +case $srcdir in
1480 +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
1481 +esac
1482 +for ac_var in $ac_precious_vars; do
1483 +  eval ac_env_${ac_var}_set=\${${ac_var}+set}
1484 +  eval ac_env_${ac_var}_value=\$${ac_var}
1485 +  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
1486 +  eval ac_cv_env_${ac_var}_value=\$${ac_var}
1487 +done
1488 +
1489 +#
1490 +# Report the --help message.
1491 +#
1492 +if test "$ac_init_help" = "long"; then
1493 +  # Omit some internal or obsolete options to make the list less imposing.
1494 +  # This message is too long to be a string in the A/UX 3.1 sh.
1495 +  cat <<_ACEOF
1496 +\`configure' configures click 1.6.0 to adapt to many kinds of systems.
1497 +
1498 +Usage: $0 [OPTION]... [VAR=VALUE]...
1499 +
1500 +To assign environment variables (e.g., CC, CFLAGS...), specify them as
1501 +VAR=VALUE.  See below for descriptions of some of the useful variables.
1502 +
1503 +Defaults for the options are specified in brackets.
1504 +
1505 +Configuration:
1506 +  -h, --help              display this help and exit
1507 +      --help=short        display options specific to this package
1508 +      --help=recursive    display the short help of all the included packages
1509 +  -V, --version           display version information and exit
1510 +  -q, --quiet, --silent   do not print \`checking...' messages
1511 +      --cache-file=FILE   cache test results in FILE [disabled]
1512 +  -C, --config-cache      alias for \`--cache-file=config.cache'
1513 +  -n, --no-create         do not create output files
1514 +      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
1515 +
1516 +Installation directories:
1517 +  --prefix=PREFIX         install architecture-independent files in PREFIX
1518 +                         [$ac_default_prefix]
1519 +  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
1520 +                         [PREFIX]
1521 +
1522 +By default, \`make install' will install all the files in
1523 +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
1524 +an installation prefix other than \`$ac_default_prefix' using \`--prefix',
1525 +for instance \`--prefix=\$HOME'.
1526 +
1527 +For better control, use the options below.
1528 +
1529 +Fine tuning of the installation directories:
1530 +  --bindir=DIR           user executables [EPREFIX/bin]
1531 +  --sbindir=DIR          system admin executables [EPREFIX/sbin]
1532 +  --libexecdir=DIR       program executables [EPREFIX/libexec]
1533 +  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
1534 +  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
1535 +  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
1536 +  --libdir=DIR           object code libraries [EPREFIX/lib]
1537 +  --includedir=DIR       C header files [PREFIX/include]
1538 +  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
1539 +  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
1540 +  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
1541 +  --infodir=DIR          info documentation [DATAROOTDIR/info]
1542 +  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
1543 +  --mandir=DIR           man documentation [DATAROOTDIR/man]
1544 +  --docdir=DIR           documentation root @<:@DATAROOTDIR/doc/click@:>@
1545 +  --htmldir=DIR          html documentation [DOCDIR]
1546 +  --dvidir=DIR           dvi documentation [DOCDIR]
1547 +  --pdfdir=DIR           pdf documentation [DOCDIR]
1548 +  --psdir=DIR            ps documentation [DOCDIR]
1549 +_ACEOF
1550 +
1551 +  cat <<\_ACEOF
1552 +
1553 +System types:
1554 +  --build=BUILD     configure for building on BUILD [guessed]
1555 +  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
1556 +  --target=TARGET   configure for building compilers for TARGET [HOST]
1557 +_ACEOF
1558 +fi
1559 +
1560 +if test -n "$ac_init_help"; then
1561 +  case $ac_init_help in
1562 +     short | recursive ) echo "Configuration of click 1.6.0:";;
1563 +   esac
1564 +  cat <<\_ACEOF
1565 +
1566 +Optional Features:
1567 +  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
1568 +  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
1569 +  --disable-userlevel     disable user-level driver
1570 +    --enable-user-multithread support userlevel multithreading (EXPERIMENTAL)
1571 +  --disable-linuxmodule   disable Linux kernel driver
1572 +    --enable-multithread[=N]  support kernel multithreading, N threads max
1573 +    --enable-warp9            reduce PollDevice functionality for speed
1574 +    --enable-kassert          enable kernel assertions
1575 +    --enable-adaptive         use adaptive scheduler to flexibly arbitrate
1576 +                              between Click and the kernel (EXPERIMENTAL)
1577 +  --enable-bsdmodule      enable FreeBSD kernel driver (EXPERIMENTAL)
1578 +  --enable-nsclick        enable NS simulator driver (EXPERIMENTAL)
1579 +  --enable-all-elements   include all provided element groups
1580 +  --enable-analysis       include elements for network analysis
1581 +  --disable-app           do not include application-level elements
1582 +  --disable-aqm           do not include active queue management elements
1583 +  --disable-ethernet      do not include Ethernet elements
1584 +  --enable-etherswitch    include Ethernet switch elements (EXPERIMENTAL)
1585 +  --enable-grid           include Grid elements (see FAQ)
1586 +  --disable-icmp          do not include ICMP elements
1587 +  --disable-ip            do not include IP elements
1588 +  --enable-ip6            include IPv6 elements (EXPERIMENTAL)
1589 +  --enable-ipsec          include IP security elements
1590 +  --enable-local          include local elements
1591 +  --enable-radio          include radio elements (EXPERIMENTAL)
1592 +  --enable-simple         include simple versions of other elements
1593 +  --disable-standard      do not include standard elements
1594 +  --disable-tcpudp        do not include TCP and UDP elements
1595 +  --enable-test           include regression test elements
1596 +  --enable-wifi           include wifi elements and support
1597 +  --enable-experimental   enable experimental elements in normal groups
1598 +  --disable-int64         disable 64-bit integer support
1599 +  --enable-nanotimestamp  enable nanosecond timestamps
1600 +  --enable-tools=WHERE    enable tools (host/build/mixed/no) [mixed]
1601 +  --disable-dynamic-linking disable dynamic linking
1602 +  --disable-stride        disable stride scheduler
1603 +  --enable-task-heap      use heap for task list
1604 +  --enable-dmalloc        enable debugging malloc
1605 +  --enable-intel-cpu      enable Intel-specific machine instructions
1606 +
1607 +Optional Packages:
1608 +  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
1609 +  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
1610 +  --with-linux[=DIR]      Linux source code is in DIR
1611 +  --with-linux-map[=FILE] filename for Linux System.map [LINUXDIR/System.map]
1612 +  --with-freebsd[=SRC,INC] FreeBSD source code is in SRC [/usr/src/sys],
1613 +                          include directory is INC [/usr/include]
1614 +  --with-proper[=PREFIX]  use PlanetLab Proper library (optional)
1615 +  --with-expat[=PREFIX]   locate expat XML library (optional)
1616 +
1617 +Some influential environment variables:
1618 +  CC          C compiler command
1619 +  CFLAGS      C compiler flags
1620 +  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
1621 +              nonstandard directory <lib dir>
1622 +  LIBS        libraries to pass to the linker, e.g. -l<library>
1623 +  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
1624 +              you have headers in a nonstandard directory <include dir>
1625 +  CPP         C preprocessor
1626 +  CXX         C++ compiler command
1627 +  CXXFLAGS    C++ compiler flags
1628 +  CXXCPP      C++ preprocessor
1629 +
1630 +Use these variables to override the choices made by `configure' or to help
1631 +it to find libraries and programs with nonstandard names/locations.
1632 +
1633 +_ACEOF
1634 +ac_status=$?
1635 +fi
1636 +
1637 +if test "$ac_init_help" = "recursive"; then
1638 +  # If there are subdirs, report their specific --help.
1639 +  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
1640 +    test -d "$ac_dir" || continue
1641 +    ac_builddir=.
1642 +
1643 +case "$ac_dir" in
1644 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
1645 +*)
1646 +  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
1647 +  # A ".." for each directory in $ac_dir_suffix.
1648 +  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
1649 +  case $ac_top_builddir_sub in
1650 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
1651 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
1652 +  esac ;;
1653 +esac
1654 +ac_abs_top_builddir=$ac_pwd
1655 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
1656 +# for backward compatibility:
1657 +ac_top_builddir=$ac_top_build_prefix
1658 +
1659 +case $srcdir in
1660 +  .)  # We are building in place.
1661 +    ac_srcdir=.
1662 +    ac_top_srcdir=$ac_top_builddir_sub
1663 +    ac_abs_top_srcdir=$ac_pwd ;;
1664 +  [\\/]* | ?:[\\/]* )  # Absolute name.
1665 +    ac_srcdir=$srcdir$ac_dir_suffix;
1666 +    ac_top_srcdir=$srcdir
1667 +    ac_abs_top_srcdir=$srcdir ;;
1668 +  *) # Relative name.
1669 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
1670 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
1671 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
1672 +esac
1673 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
1674 +
1675 +    cd "$ac_dir" || { ac_status=$?; continue; }
1676 +    # Check for guested configure.
1677 +    if test -f "$ac_srcdir/configure.gnu"; then
1678 +      echo &&
1679 +      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
1680 +    elif test -f "$ac_srcdir/configure"; then
1681 +      echo &&
1682 +      $SHELL "$ac_srcdir/configure" --help=recursive
1683 +    else
1684 +      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
1685 +    fi || ac_status=$?
1686 +    cd "$ac_pwd" || { ac_status=$?; break; }
1687 +  done
1688 +fi
1689 +
1690 +test -n "$ac_init_help" && exit $ac_status
1691 +if $ac_init_version; then
1692 +  cat <<\_ACEOF
1693 +click configure 1.6.0
1694 +generated by GNU Autoconf 2.61
1695 +
1696 +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
1697 +2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
1698 +This configure script is free software; the Free Software Foundation
1699 +gives unlimited permission to copy, distribute and modify it.
1700 +_ACEOF
1701 +  exit
1702 +fi
1703 +cat >config.log <<_ACEOF
1704 +This file contains any messages produced by compilers while
1705 +running configure, to aid debugging if configure makes a mistake.
1706 +
1707 +It was created by click $as_me 1.6.0, which was
1708 +generated by GNU Autoconf 2.61.  Invocation command line was
1709 +
1710 +  $ $0 $@
1711 +
1712 +_ACEOF
1713 +exec 5>>config.log
1714 +{
1715 +cat <<_ASUNAME
1716 +@%:@@%:@ --------- @%:@@%:@
1717 +@%:@@%:@ Platform. @%:@@%:@
1718 +@%:@@%:@ --------- @%:@@%:@
1719 +
1720 +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
1721 +uname -m = `(uname -m) 2>/dev/null || echo unknown`
1722 +uname -r = `(uname -r) 2>/dev/null || echo unknown`
1723 +uname -s = `(uname -s) 2>/dev/null || echo unknown`
1724 +uname -v = `(uname -v) 2>/dev/null || echo unknown`
1725 +
1726 +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
1727 +/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
1728 +
1729 +/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
1730 +/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
1731 +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
1732 +/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
1733 +/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
1734 +/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
1735 +/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
1736 +
1737 +_ASUNAME
1738 +
1739 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
1740 +for as_dir in $PATH
1741 +do
1742 +  IFS=$as_save_IFS
1743 +  test -z "$as_dir" && as_dir=.
1744 +  echo "PATH: $as_dir"
1745 +done
1746 +IFS=$as_save_IFS
1747 +
1748 +} >&5
1749 +
1750 +cat >&5 <<_ACEOF
1751 +
1752 +
1753 +@%:@@%:@ ----------- @%:@@%:@
1754 +@%:@@%:@ Core tests. @%:@@%:@
1755 +@%:@@%:@ ----------- @%:@@%:@
1756 +
1757 +_ACEOF
1758 +
1759 +
1760 +# Keep a trace of the command line.
1761 +# Strip out --no-create and --no-recursion so they do not pile up.
1762 +# Strip out --silent because we don't want to record it for future runs.
1763 +# Also quote any args containing shell meta-characters.
1764 +# Make two passes to allow for proper duplicate-argument suppression.
1765 +ac_configure_args=
1766 +ac_configure_args0=
1767 +ac_configure_args1=
1768 +ac_must_keep_next=false
1769 +for ac_pass in 1 2
1770 +do
1771 +  for ac_arg
1772 +  do
1773 +    case $ac_arg in
1774 +    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
1775 +    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
1776 +    | -silent | --silent | --silen | --sile | --sil)
1777 +      continue ;;
1778 +    *\'*)
1779 +      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
1780 +    esac
1781 +    case $ac_pass in
1782 +    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
1783 +    2)
1784 +      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
1785 +      if test $ac_must_keep_next = true; then
1786 +       ac_must_keep_next=false # Got value, back to normal.
1787 +      else
1788 +       case $ac_arg in
1789 +         *=* | --config-cache | -C | -disable-* | --disable-* \
1790 +         | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
1791 +         | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
1792 +         | -with-* | --with-* | -without-* | --without-* | --x)
1793 +           case "$ac_configure_args0 " in
1794 +             "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
1795 +           esac
1796 +           ;;
1797 +         -* ) ac_must_keep_next=true ;;
1798 +       esac
1799 +      fi
1800 +      ac_configure_args="$ac_configure_args '$ac_arg'"
1801 +      ;;
1802 +    esac
1803 +  done
1804 +done
1805 +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
1806 +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
1807 +
1808 +# When interrupted or exit'd, cleanup temporary files, and complete
1809 +# config.log.  We remove comments because anyway the quotes in there
1810 +# would cause problems or look ugly.
1811 +# WARNING: Use '\'' to represent an apostrophe within the trap.
1812 +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
1813 +trap 'exit_status=$?
1814 +  # Save into config.log some information that might help in debugging.
1815 +  {
1816 +    echo
1817 +
1818 +    cat <<\_ASBOX
1819 +@%:@@%:@ ---------------- @%:@@%:@
1820 +@%:@@%:@ Cache variables. @%:@@%:@
1821 +@%:@@%:@ ---------------- @%:@@%:@
1822 +_ASBOX
1823 +    echo
1824 +    # The following way of writing the cache mishandles newlines in values,
1825 +(
1826 +  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
1827 +    eval ac_val=\$$ac_var
1828 +    case $ac_val in #(
1829 +    *${as_nl}*)
1830 +      case $ac_var in #(
1831 +      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
1832 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
1833 +      esac
1834 +      case $ac_var in #(
1835 +      _ | IFS | as_nl) ;; #(
1836 +      *) $as_unset $ac_var ;;
1837 +      esac ;;
1838 +    esac
1839 +  done
1840 +  (set) 2>&1 |
1841 +    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
1842 +    *${as_nl}ac_space=\ *)
1843 +      sed -n \
1844 +       "s/'\''/'\''\\\\'\'''\''/g;
1845 +         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
1846 +      ;; #(
1847 +    *)
1848 +      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
1849 +      ;;
1850 +    esac |
1851 +    sort
1852 +)
1853 +    echo
1854 +
1855 +    cat <<\_ASBOX
1856 +@%:@@%:@ ----------------- @%:@@%:@
1857 +@%:@@%:@ Output variables. @%:@@%:@
1858 +@%:@@%:@ ----------------- @%:@@%:@
1859 +_ASBOX
1860 +    echo
1861 +    for ac_var in $ac_subst_vars
1862 +    do
1863 +      eval ac_val=\$$ac_var
1864 +      case $ac_val in
1865 +      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1866 +      esac
1867 +      echo "$ac_var='\''$ac_val'\''"
1868 +    done | sort
1869 +    echo
1870 +
1871 +    if test -n "$ac_subst_files"; then
1872 +      cat <<\_ASBOX
1873 +@%:@@%:@ ------------------- @%:@@%:@
1874 +@%:@@%:@ File substitutions. @%:@@%:@
1875 +@%:@@%:@ ------------------- @%:@@%:@
1876 +_ASBOX
1877 +      echo
1878 +      for ac_var in $ac_subst_files
1879 +      do
1880 +       eval ac_val=\$$ac_var
1881 +       case $ac_val in
1882 +       *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
1883 +       esac
1884 +       echo "$ac_var='\''$ac_val'\''"
1885 +      done | sort
1886 +      echo
1887 +    fi
1888 +
1889 +    if test -s confdefs.h; then
1890 +      cat <<\_ASBOX
1891 +@%:@@%:@ ----------- @%:@@%:@
1892 +@%:@@%:@ confdefs.h. @%:@@%:@
1893 +@%:@@%:@ ----------- @%:@@%:@
1894 +_ASBOX
1895 +      echo
1896 +      cat confdefs.h
1897 +      echo
1898 +    fi
1899 +    test "$ac_signal" != 0 &&
1900 +      echo "$as_me: caught signal $ac_signal"
1901 +    echo "$as_me: exit $exit_status"
1902 +  } >&5
1903 +  rm -f core *.core core.conftest.* &&
1904 +    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
1905 +    exit $exit_status
1906 +' 0
1907 +for ac_signal in 1 2 13 15; do
1908 +  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
1909 +done
1910 +ac_signal=0
1911 +
1912 +# confdefs.h avoids OS command line length limits that DEFS can exceed.
1913 +rm -f -r conftest* confdefs.h
1914 +
1915 +# Predefined preprocessor variables.
1916 +
1917 +cat >>confdefs.h <<_ACEOF
1918 +@%:@define PACKAGE_NAME "$PACKAGE_NAME"
1919 +_ACEOF
1920 +
1921 +
1922 +cat >>confdefs.h <<_ACEOF
1923 +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
1924 +_ACEOF
1925 +
1926 +
1927 +cat >>confdefs.h <<_ACEOF
1928 +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
1929 +_ACEOF
1930 +
1931 +
1932 +cat >>confdefs.h <<_ACEOF
1933 +@%:@define PACKAGE_STRING "$PACKAGE_STRING"
1934 +_ACEOF
1935 +
1936 +
1937 +cat >>confdefs.h <<_ACEOF
1938 +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
1939 +_ACEOF
1940 +
1941 +
1942 +# Let the site file select an alternate cache file if it wants to.
1943 +# Prefer explicitly selected file to automatically selected ones.
1944 +if test -n "$CONFIG_SITE"; then
1945 +  set x "$CONFIG_SITE"
1946 +elif test "x$prefix" != xNONE; then
1947 +  set x "$prefix/share/config.site" "$prefix/etc/config.site"
1948 +else
1949 +  set x "$ac_default_prefix/share/config.site" \
1950 +       "$ac_default_prefix/etc/config.site"
1951 +fi
1952 +shift
1953 +for ac_site_file
1954 +do
1955 +  if test -r "$ac_site_file"; then
1956 +    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
1957 +echo "$as_me: loading site script $ac_site_file" >&6;}
1958 +    sed 's/^/| /' "$ac_site_file" >&5
1959 +    . "$ac_site_file"
1960 +  fi
1961 +done
1962 +
1963 +if test -r "$cache_file"; then
1964 +  # Some versions of bash will fail to source /dev/null (special
1965 +  # files actually), so we avoid doing that.
1966 +  if test -f "$cache_file"; then
1967 +    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
1968 +echo "$as_me: loading cache $cache_file" >&6;}
1969 +    case $cache_file in
1970 +      [\\/]* | ?:[\\/]* ) . "$cache_file";;
1971 +      *)                      . "./$cache_file";;
1972 +    esac
1973 +  fi
1974 +else
1975 +  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
1976 +echo "$as_me: creating cache $cache_file" >&6;}
1977 +  >$cache_file
1978 +fi
1979 +
1980 +# Check that the precious variables saved in the cache have kept the same
1981 +# value.
1982 +ac_cache_corrupted=false
1983 +for ac_var in $ac_precious_vars; do
1984 +  eval ac_old_set=\$ac_cv_env_${ac_var}_set
1985 +  eval ac_new_set=\$ac_env_${ac_var}_set
1986 +  eval ac_old_val=\$ac_cv_env_${ac_var}_value
1987 +  eval ac_new_val=\$ac_env_${ac_var}_value
1988 +  case $ac_old_set,$ac_new_set in
1989 +    set,)
1990 +      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
1991 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
1992 +      ac_cache_corrupted=: ;;
1993 +    ,set)
1994 +      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
1995 +echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
1996 +      ac_cache_corrupted=: ;;
1997 +    ,);;
1998 +    *)
1999 +      if test "x$ac_old_val" != "x$ac_new_val"; then
2000 +       { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
2001 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
2002 +       { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
2003 +echo "$as_me:   former value:  $ac_old_val" >&2;}
2004 +       { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
2005 +echo "$as_me:   current value: $ac_new_val" >&2;}
2006 +       ac_cache_corrupted=:
2007 +      fi;;
2008 +  esac
2009 +  # Pass precious variables to config.status.
2010 +  if test "$ac_new_set" = set; then
2011 +    case $ac_new_val in
2012 +    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
2013 +    *) ac_arg=$ac_var=$ac_new_val ;;
2014 +    esac
2015 +    case " $ac_configure_args " in
2016 +      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
2017 +      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
2018 +    esac
2019 +  fi
2020 +done
2021 +if $ac_cache_corrupted; then
2022 +  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
2023 +echo "$as_me: error: changes in the environment can compromise the build" >&2;}
2024 +  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
2025 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
2026 +   { (exit 1); exit 1; }; }
2027 +fi
2028 +
2029 +
2030 +
2031 +
2032 +
2033 +
2034 +
2035 +
2036 +
2037 +
2038 +
2039 +
2040 +
2041 +
2042 +
2043 +
2044 +
2045 +
2046 +
2047 +
2048 +
2049 +
2050 +
2051 +
2052 +
2053 +ac_ext=c
2054 +ac_cpp='$CPP $CPPFLAGS'
2055 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2056 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2057 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
2058 +
2059 +
2060 +set +x +v
2061 +
2062 +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"
2063 +
2064 +
2065 +CLICK_VERSION=$PACKAGE_VERSION
2066 +
2067 +
2068 +cat >>confdefs.h <<_ACEOF
2069 +@%:@define CLICK_VERSION "$CLICK_VERSION"
2070 +_ACEOF
2071 +
2072 +
2073 +
2074 +
2075 +    ac_user_cc=; test -n "$CC" && ac_user_cc=y
2076 +    ac_user_kernel_cc=; test -n "$KERNEL_CC" && ac_user_kernel_cc=y
2077 +    ac_user_cxx=; test -n "$CXX" && ac_user_cxx=y
2078 +    ac_user_build_cxx=; test -n "$BUILD_CXX" && ac_user_build_cxx=y
2079 +    ac_user_kernel_cxx=; test -n "$KERNEL_CXX" && ac_user_kernel_cxx=y
2080 +    ac_user_depcflags=; test -n "$DEPCFLAGS" && ac_user_depcflags=y
2081 +    ac_compile_with_warnings=y
2082 +
2083 +    conf_auxdir='$(top_srcdir)'
2084 +    
2085 +
2086 +    
2087 +
2088 +
2089 +ac_aux_dir=
2090 +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
2091 +  if test -f "$ac_dir/install-sh"; then
2092 +    ac_aux_dir=$ac_dir
2093 +    ac_install_sh="$ac_aux_dir/install-sh -c"
2094 +    break
2095 +  elif test -f "$ac_dir/install.sh"; then
2096 +    ac_aux_dir=$ac_dir
2097 +    ac_install_sh="$ac_aux_dir/install.sh -c"
2098 +    break
2099 +  elif test -f "$ac_dir/shtool"; then
2100 +    ac_aux_dir=$ac_dir
2101 +    ac_install_sh="$ac_aux_dir/shtool install -c"
2102 +    break
2103 +  fi
2104 +done
2105 +if test -z "$ac_aux_dir"; then
2106 +  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5
2107 +echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;}
2108 +   { (exit 1); exit 1; }; }
2109 +fi
2110 +
2111 +# These three variables are undocumented and unsupported,
2112 +# and are intended to be withdrawn in a future Autoconf release.
2113 +# They can cause serious problems if a builder's source tree is in a directory
2114 +# whose full name contains unusual characters.
2115 +ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
2116 +ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
2117 +ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
2118 +
2119 +
2120 +# Make sure we can run config.sub.
2121 +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
2122 +  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
2123 +echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
2124 +   { (exit 1); exit 1; }; }
2125 +
2126 +{ echo "$as_me:$LINENO: checking build system type" >&5
2127 +echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
2128 +if test "${ac_cv_build+set}" = set; then
2129 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2130 +else
2131 +  ac_build_alias=$build_alias
2132 +test "x$ac_build_alias" = x &&
2133 +  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
2134 +test "x$ac_build_alias" = x &&
2135 +  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
2136 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
2137 +   { (exit 1); exit 1; }; }
2138 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
2139 +  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
2140 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
2141 +   { (exit 1); exit 1; }; }
2142 +
2143 +fi
2144 +{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
2145 +echo "${ECHO_T}$ac_cv_build" >&6; }
2146 +case $ac_cv_build in
2147 +*-*-*) ;;
2148 +*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
2149 +echo "$as_me: error: invalid value of canonical build" >&2;}
2150 +   { (exit 1); exit 1; }; };;
2151 +esac
2152 +build=$ac_cv_build
2153 +ac_save_IFS=$IFS; IFS='-'
2154 +set x $ac_cv_build
2155 +shift
2156 +build_cpu=$1
2157 +build_vendor=$2
2158 +shift; shift
2159 +# Remember, the first character of IFS is used to create $*,
2160 +# except with old shells:
2161 +build_os=$*
2162 +IFS=$ac_save_IFS
2163 +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
2164 +
2165 +
2166 +{ echo "$as_me:$LINENO: checking host system type" >&5
2167 +echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
2168 +if test "${ac_cv_host+set}" = set; then
2169 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2170 +else
2171 +  if test "x$host_alias" = x; then
2172 +  ac_cv_host=$ac_cv_build
2173 +else
2174 +  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
2175 +    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
2176 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
2177 +   { (exit 1); exit 1; }; }
2178 +fi
2179 +
2180 +fi
2181 +{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
2182 +echo "${ECHO_T}$ac_cv_host" >&6; }
2183 +case $ac_cv_host in
2184 +*-*-*) ;;
2185 +*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
2186 +echo "$as_me: error: invalid value of canonical host" >&2;}
2187 +   { (exit 1); exit 1; }; };;
2188 +esac
2189 +host=$ac_cv_host
2190 +ac_save_IFS=$IFS; IFS='-'
2191 +set x $ac_cv_host
2192 +shift
2193 +host_cpu=$1
2194 +host_vendor=$2
2195 +shift; shift
2196 +# Remember, the first character of IFS is used to create $*,
2197 +# except with old shells:
2198 +host_os=$*
2199 +IFS=$ac_save_IFS
2200 +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
2201 +
2202 +
2203 +{ echo "$as_me:$LINENO: checking target system type" >&5
2204 +echo $ECHO_N "checking target system type... $ECHO_C" >&6; }
2205 +if test "${ac_cv_target+set}" = set; then
2206 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2207 +else
2208 +  if test "x$target_alias" = x; then
2209 +  ac_cv_target=$ac_cv_host
2210 +else
2211 +  ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
2212 +    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5
2213 +echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;}
2214 +   { (exit 1); exit 1; }; }
2215 +fi
2216 +
2217 +fi
2218 +{ echo "$as_me:$LINENO: result: $ac_cv_target" >&5
2219 +echo "${ECHO_T}$ac_cv_target" >&6; }
2220 +case $ac_cv_target in
2221 +*-*-*) ;;
2222 +*) { { echo "$as_me:$LINENO: error: invalid value of canonical target" >&5
2223 +echo "$as_me: error: invalid value of canonical target" >&2;}
2224 +   { (exit 1); exit 1; }; };;
2225 +esac
2226 +target=$ac_cv_target
2227 +ac_save_IFS=$IFS; IFS='-'
2228 +set x $ac_cv_target
2229 +shift
2230 +target_cpu=$1
2231 +target_vendor=$2
2232 +shift; shift
2233 +# Remember, the first character of IFS is used to create $*,
2234 +# except with old shells:
2235 +target_os=$*
2236 +IFS=$ac_save_IFS
2237 +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac
2238 +
2239 +
2240 +# The aliases save the names the user supplied, while $host etc.
2241 +# will get canonicalized.
2242 +test -n "$target_alias" &&
2243 +  test "$program_prefix$program_suffix$program_transform_name" = \
2244 +    NONENONEs,x,x, &&
2245 +  program_prefix=${target_alias}-
2246 +
2247 +if test -n "$ac_tool_prefix"; then
2248 +  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2249 +set dummy ${ac_tool_prefix}gcc; ac_word=$2
2250 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2251 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2252 +if test "${ac_cv_prog_CC+set}" = set; then
2253 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2254 +else
2255 +  if test -n "$CC"; then
2256 +  ac_cv_prog_CC="$CC" # Let the user override the test.
2257 +else
2258 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2259 +for as_dir in $PATH
2260 +do
2261 +  IFS=$as_save_IFS
2262 +  test -z "$as_dir" && as_dir=.
2263 +  for ac_exec_ext in '' $ac_executable_extensions; do
2264 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2265 +    ac_cv_prog_CC="${ac_tool_prefix}gcc"
2266 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2267 +    break 2
2268 +  fi
2269 +done
2270 +done
2271 +IFS=$as_save_IFS
2272 +
2273 +fi
2274 +fi
2275 +CC=$ac_cv_prog_CC
2276 +if test -n "$CC"; then
2277 +  { echo "$as_me:$LINENO: result: $CC" >&5
2278 +echo "${ECHO_T}$CC" >&6; }
2279 +else
2280 +  { echo "$as_me:$LINENO: result: no" >&5
2281 +echo "${ECHO_T}no" >&6; }
2282 +fi
2283 +
2284 +
2285 +fi
2286 +if test -z "$ac_cv_prog_CC"; then
2287 +  ac_ct_CC=$CC
2288 +  # Extract the first word of "gcc", so it can be a program name with args.
2289 +set dummy gcc; ac_word=$2
2290 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2291 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2292 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
2293 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2294 +else
2295 +  if test -n "$ac_ct_CC"; then
2296 +  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2297 +else
2298 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2299 +for as_dir in $PATH
2300 +do
2301 +  IFS=$as_save_IFS
2302 +  test -z "$as_dir" && as_dir=.
2303 +  for ac_exec_ext in '' $ac_executable_extensions; do
2304 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2305 +    ac_cv_prog_ac_ct_CC="gcc"
2306 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2307 +    break 2
2308 +  fi
2309 +done
2310 +done
2311 +IFS=$as_save_IFS
2312 +
2313 +fi
2314 +fi
2315 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
2316 +if test -n "$ac_ct_CC"; then
2317 +  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
2318 +echo "${ECHO_T}$ac_ct_CC" >&6; }
2319 +else
2320 +  { echo "$as_me:$LINENO: result: no" >&5
2321 +echo "${ECHO_T}no" >&6; }
2322 +fi
2323 +
2324 +  if test "x$ac_ct_CC" = x; then
2325 +    CC=""
2326 +  else
2327 +    case $cross_compiling:$ac_tool_warned in
2328 +yes:)
2329 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2330 +whose name does not start with the host triplet.  If you think this
2331 +configuration is useful to you, please write to autoconf@gnu.org." >&5
2332 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2333 +whose name does not start with the host triplet.  If you think this
2334 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2335 +ac_tool_warned=yes ;;
2336 +esac
2337 +    CC=$ac_ct_CC
2338 +  fi
2339 +else
2340 +  CC="$ac_cv_prog_CC"
2341 +fi
2342 +
2343 +if test -n "$ac_tool_prefix"; then
2344 +  # Extract the first word of "${ac_tool_prefix}g++", so it can be a program name with args.
2345 +set dummy ${ac_tool_prefix}g++; ac_word=$2
2346 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2347 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2348 +if test "${ac_cv_prog_CXX+set}" = set; then
2349 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2350 +else
2351 +  if test -n "$CXX"; then
2352 +  ac_cv_prog_CXX="$CXX" # Let the user override the test.
2353 +else
2354 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2355 +for as_dir in $PATH
2356 +do
2357 +  IFS=$as_save_IFS
2358 +  test -z "$as_dir" && as_dir=.
2359 +  for ac_exec_ext in '' $ac_executable_extensions; do
2360 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2361 +    ac_cv_prog_CXX="${ac_tool_prefix}g++"
2362 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2363 +    break 2
2364 +  fi
2365 +done
2366 +done
2367 +IFS=$as_save_IFS
2368 +
2369 +fi
2370 +fi
2371 +CXX=$ac_cv_prog_CXX
2372 +if test -n "$CXX"; then
2373 +  { echo "$as_me:$LINENO: result: $CXX" >&5
2374 +echo "${ECHO_T}$CXX" >&6; }
2375 +else
2376 +  { echo "$as_me:$LINENO: result: no" >&5
2377 +echo "${ECHO_T}no" >&6; }
2378 +fi
2379 +
2380 +
2381 +fi
2382 +if test -z "$ac_cv_prog_CXX"; then
2383 +  ac_ct_CXX=$CXX
2384 +  # Extract the first word of "g++", so it can be a program name with args.
2385 +set dummy g++; ac_word=$2
2386 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2387 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2388 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
2389 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2390 +else
2391 +  if test -n "$ac_ct_CXX"; then
2392 +  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
2393 +else
2394 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2395 +for as_dir in $PATH
2396 +do
2397 +  IFS=$as_save_IFS
2398 +  test -z "$as_dir" && as_dir=.
2399 +  for ac_exec_ext in '' $ac_executable_extensions; do
2400 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2401 +    ac_cv_prog_ac_ct_CXX="g++"
2402 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2403 +    break 2
2404 +  fi
2405 +done
2406 +done
2407 +IFS=$as_save_IFS
2408 +
2409 +fi
2410 +fi
2411 +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
2412 +if test -n "$ac_ct_CXX"; then
2413 +  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
2414 +echo "${ECHO_T}$ac_ct_CXX" >&6; }
2415 +else
2416 +  { echo "$as_me:$LINENO: result: no" >&5
2417 +echo "${ECHO_T}no" >&6; }
2418 +fi
2419 +
2420 +  if test "x$ac_ct_CXX" = x; then
2421 +    CXX=""
2422 +  else
2423 +    case $cross_compiling:$ac_tool_warned in
2424 +yes:)
2425 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2426 +whose name does not start with the host triplet.  If you think this
2427 +configuration is useful to you, please write to autoconf@gnu.org." >&5
2428 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2429 +whose name does not start with the host triplet.  If you think this
2430 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2431 +ac_tool_warned=yes ;;
2432 +esac
2433 +    CXX=$ac_ct_CXX
2434 +  fi
2435 +else
2436 +  CXX="$ac_cv_prog_CXX"
2437 +fi
2438 +
2439 +
2440 +ac_ext=c
2441 +ac_cpp='$CPP $CPPFLAGS'
2442 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
2443 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
2444 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
2445 +if test -n "$ac_tool_prefix"; then
2446 +  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
2447 +set dummy ${ac_tool_prefix}gcc; ac_word=$2
2448 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2449 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2450 +if test "${ac_cv_prog_CC+set}" = set; then
2451 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2452 +else
2453 +  if test -n "$CC"; then
2454 +  ac_cv_prog_CC="$CC" # Let the user override the test.
2455 +else
2456 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2457 +for as_dir in $PATH
2458 +do
2459 +  IFS=$as_save_IFS
2460 +  test -z "$as_dir" && as_dir=.
2461 +  for ac_exec_ext in '' $ac_executable_extensions; do
2462 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2463 +    ac_cv_prog_CC="${ac_tool_prefix}gcc"
2464 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2465 +    break 2
2466 +  fi
2467 +done
2468 +done
2469 +IFS=$as_save_IFS
2470 +
2471 +fi
2472 +fi
2473 +CC=$ac_cv_prog_CC
2474 +if test -n "$CC"; then
2475 +  { echo "$as_me:$LINENO: result: $CC" >&5
2476 +echo "${ECHO_T}$CC" >&6; }
2477 +else
2478 +  { echo "$as_me:$LINENO: result: no" >&5
2479 +echo "${ECHO_T}no" >&6; }
2480 +fi
2481 +
2482 +
2483 +fi
2484 +if test -z "$ac_cv_prog_CC"; then
2485 +  ac_ct_CC=$CC
2486 +  # Extract the first word of "gcc", so it can be a program name with args.
2487 +set dummy gcc; ac_word=$2
2488 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2489 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2490 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
2491 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2492 +else
2493 +  if test -n "$ac_ct_CC"; then
2494 +  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2495 +else
2496 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2497 +for as_dir in $PATH
2498 +do
2499 +  IFS=$as_save_IFS
2500 +  test -z "$as_dir" && as_dir=.
2501 +  for ac_exec_ext in '' $ac_executable_extensions; do
2502 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2503 +    ac_cv_prog_ac_ct_CC="gcc"
2504 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2505 +    break 2
2506 +  fi
2507 +done
2508 +done
2509 +IFS=$as_save_IFS
2510 +
2511 +fi
2512 +fi
2513 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
2514 +if test -n "$ac_ct_CC"; then
2515 +  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
2516 +echo "${ECHO_T}$ac_ct_CC" >&6; }
2517 +else
2518 +  { echo "$as_me:$LINENO: result: no" >&5
2519 +echo "${ECHO_T}no" >&6; }
2520 +fi
2521 +
2522 +  if test "x$ac_ct_CC" = x; then
2523 +    CC=""
2524 +  else
2525 +    case $cross_compiling:$ac_tool_warned in
2526 +yes:)
2527 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2528 +whose name does not start with the host triplet.  If you think this
2529 +configuration is useful to you, please write to autoconf@gnu.org." >&5
2530 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2531 +whose name does not start with the host triplet.  If you think this
2532 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2533 +ac_tool_warned=yes ;;
2534 +esac
2535 +    CC=$ac_ct_CC
2536 +  fi
2537 +else
2538 +  CC="$ac_cv_prog_CC"
2539 +fi
2540 +
2541 +if test -z "$CC"; then
2542 +          if test -n "$ac_tool_prefix"; then
2543 +    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
2544 +set dummy ${ac_tool_prefix}cc; ac_word=$2
2545 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2546 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2547 +if test "${ac_cv_prog_CC+set}" = set; then
2548 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2549 +else
2550 +  if test -n "$CC"; then
2551 +  ac_cv_prog_CC="$CC" # Let the user override the test.
2552 +else
2553 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2554 +for as_dir in $PATH
2555 +do
2556 +  IFS=$as_save_IFS
2557 +  test -z "$as_dir" && as_dir=.
2558 +  for ac_exec_ext in '' $ac_executable_extensions; do
2559 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2560 +    ac_cv_prog_CC="${ac_tool_prefix}cc"
2561 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2562 +    break 2
2563 +  fi
2564 +done
2565 +done
2566 +IFS=$as_save_IFS
2567 +
2568 +fi
2569 +fi
2570 +CC=$ac_cv_prog_CC
2571 +if test -n "$CC"; then
2572 +  { echo "$as_me:$LINENO: result: $CC" >&5
2573 +echo "${ECHO_T}$CC" >&6; }
2574 +else
2575 +  { echo "$as_me:$LINENO: result: no" >&5
2576 +echo "${ECHO_T}no" >&6; }
2577 +fi
2578 +
2579 +
2580 +  fi
2581 +fi
2582 +if test -z "$CC"; then
2583 +  # Extract the first word of "cc", so it can be a program name with args.
2584 +set dummy cc; ac_word=$2
2585 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2586 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2587 +if test "${ac_cv_prog_CC+set}" = set; then
2588 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2589 +else
2590 +  if test -n "$CC"; then
2591 +  ac_cv_prog_CC="$CC" # Let the user override the test.
2592 +else
2593 +  ac_prog_rejected=no
2594 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2595 +for as_dir in $PATH
2596 +do
2597 +  IFS=$as_save_IFS
2598 +  test -z "$as_dir" && as_dir=.
2599 +  for ac_exec_ext in '' $ac_executable_extensions; do
2600 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2601 +    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
2602 +       ac_prog_rejected=yes
2603 +       continue
2604 +     fi
2605 +    ac_cv_prog_CC="cc"
2606 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2607 +    break 2
2608 +  fi
2609 +done
2610 +done
2611 +IFS=$as_save_IFS
2612 +
2613 +if test $ac_prog_rejected = yes; then
2614 +  # We found a bogon in the path, so make sure we never use it.
2615 +  set dummy $ac_cv_prog_CC
2616 +  shift
2617 +  if test $@%:@ != 0; then
2618 +    # We chose a different compiler from the bogus one.
2619 +    # However, it has the same basename, so the bogon will be chosen
2620 +    # first if we set CC to just the basename; use the full file name.
2621 +    shift
2622 +    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
2623 +  fi
2624 +fi
2625 +fi
2626 +fi
2627 +CC=$ac_cv_prog_CC
2628 +if test -n "$CC"; then
2629 +  { echo "$as_me:$LINENO: result: $CC" >&5
2630 +echo "${ECHO_T}$CC" >&6; }
2631 +else
2632 +  { echo "$as_me:$LINENO: result: no" >&5
2633 +echo "${ECHO_T}no" >&6; }
2634 +fi
2635 +
2636 +
2637 +fi
2638 +if test -z "$CC"; then
2639 +  if test -n "$ac_tool_prefix"; then
2640 +  for ac_prog in cl.exe
2641 +  do
2642 +    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
2643 +set dummy $ac_tool_prefix$ac_prog; ac_word=$2
2644 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2645 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2646 +if test "${ac_cv_prog_CC+set}" = set; then
2647 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2648 +else
2649 +  if test -n "$CC"; then
2650 +  ac_cv_prog_CC="$CC" # Let the user override the test.
2651 +else
2652 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2653 +for as_dir in $PATH
2654 +do
2655 +  IFS=$as_save_IFS
2656 +  test -z "$as_dir" && as_dir=.
2657 +  for ac_exec_ext in '' $ac_executable_extensions; do
2658 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2659 +    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
2660 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2661 +    break 2
2662 +  fi
2663 +done
2664 +done
2665 +IFS=$as_save_IFS
2666 +
2667 +fi
2668 +fi
2669 +CC=$ac_cv_prog_CC
2670 +if test -n "$CC"; then
2671 +  { echo "$as_me:$LINENO: result: $CC" >&5
2672 +echo "${ECHO_T}$CC" >&6; }
2673 +else
2674 +  { echo "$as_me:$LINENO: result: no" >&5
2675 +echo "${ECHO_T}no" >&6; }
2676 +fi
2677 +
2678 +
2679 +    test -n "$CC" && break
2680 +  done
2681 +fi
2682 +if test -z "$CC"; then
2683 +  ac_ct_CC=$CC
2684 +  for ac_prog in cl.exe
2685 +do
2686 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
2687 +set dummy $ac_prog; ac_word=$2
2688 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
2689 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
2690 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
2691 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2692 +else
2693 +  if test -n "$ac_ct_CC"; then
2694 +  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
2695 +else
2696 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
2697 +for as_dir in $PATH
2698 +do
2699 +  IFS=$as_save_IFS
2700 +  test -z "$as_dir" && as_dir=.
2701 +  for ac_exec_ext in '' $ac_executable_extensions; do
2702 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
2703 +    ac_cv_prog_ac_ct_CC="$ac_prog"
2704 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
2705 +    break 2
2706 +  fi
2707 +done
2708 +done
2709 +IFS=$as_save_IFS
2710 +
2711 +fi
2712 +fi
2713 +ac_ct_CC=$ac_cv_prog_ac_ct_CC
2714 +if test -n "$ac_ct_CC"; then
2715 +  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
2716 +echo "${ECHO_T}$ac_ct_CC" >&6; }
2717 +else
2718 +  { echo "$as_me:$LINENO: result: no" >&5
2719 +echo "${ECHO_T}no" >&6; }
2720 +fi
2721 +
2722 +
2723 +  test -n "$ac_ct_CC" && break
2724 +done
2725 +
2726 +  if test "x$ac_ct_CC" = x; then
2727 +    CC=""
2728 +  else
2729 +    case $cross_compiling:$ac_tool_warned in
2730 +yes:)
2731 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
2732 +whose name does not start with the host triplet.  If you think this
2733 +configuration is useful to you, please write to autoconf@gnu.org." >&5
2734 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
2735 +whose name does not start with the host triplet.  If you think this
2736 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
2737 +ac_tool_warned=yes ;;
2738 +esac
2739 +    CC=$ac_ct_CC
2740 +  fi
2741 +fi
2742 +
2743 +fi
2744 +
2745 +
2746 +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
2747 +See \`config.log' for more details." >&5
2748 +echo "$as_me: error: no acceptable C compiler found in \$PATH
2749 +See \`config.log' for more details." >&2;}
2750 +   { (exit 1); exit 1; }; }
2751 +
2752 +# Provide some information about the compiler.
2753 +echo "$as_me:$LINENO: checking for C compiler version" >&5
2754 +ac_compiler=`set X $ac_compile; echo $2`
2755 +{ (ac_try="$ac_compiler --version >&5"
2756 +case "(($ac_try" in
2757 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2758 +  *) ac_try_echo=$ac_try;;
2759 +esac
2760 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2761 +  (eval "$ac_compiler --version >&5") 2>&5
2762 +  ac_status=$?
2763 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2764 +  (exit $ac_status); }
2765 +{ (ac_try="$ac_compiler -v >&5"
2766 +case "(($ac_try" in
2767 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2768 +  *) ac_try_echo=$ac_try;;
2769 +esac
2770 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2771 +  (eval "$ac_compiler -v >&5") 2>&5
2772 +  ac_status=$?
2773 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2774 +  (exit $ac_status); }
2775 +{ (ac_try="$ac_compiler -V >&5"
2776 +case "(($ac_try" in
2777 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2778 +  *) ac_try_echo=$ac_try;;
2779 +esac
2780 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2781 +  (eval "$ac_compiler -V >&5") 2>&5
2782 +  ac_status=$?
2783 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2784 +  (exit $ac_status); }
2785 +
2786 +cat >conftest.$ac_ext <<_ACEOF
2787 +/* confdefs.h.  */
2788 +_ACEOF
2789 +cat confdefs.h >>conftest.$ac_ext
2790 +cat >>conftest.$ac_ext <<_ACEOF
2791 +/* end confdefs.h.  */
2792 +
2793 +int
2794 +main ()
2795 +{
2796 +
2797 +  ;
2798 +  return 0;
2799 +}
2800 +_ACEOF
2801 +ac_clean_files_save=$ac_clean_files
2802 +ac_clean_files="$ac_clean_files a.out a.exe b.out"
2803 +# Try to create an executable without -o first, disregard a.out.
2804 +# It will help us diagnose broken compilers, and finding out an intuition
2805 +# of exeext.
2806 +{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
2807 +echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
2808 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
2809 +#
2810 +# List of possible output files, starting from the most likely.
2811 +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
2812 +# only as a last resort.  b.out is created by i960 compilers.
2813 +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
2814 +#
2815 +# The IRIX 6 linker writes into existing files which may not be
2816 +# executable, retaining their permissions.  Remove them first so a
2817 +# subsequent execution test works.
2818 +ac_rmfiles=
2819 +for ac_file in $ac_files
2820 +do
2821 +  case $ac_file in
2822 +    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
2823 +    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
2824 +  esac
2825 +done
2826 +rm -f $ac_rmfiles
2827 +
2828 +if { (ac_try="$ac_link_default"
2829 +case "(($ac_try" in
2830 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2831 +  *) ac_try_echo=$ac_try;;
2832 +esac
2833 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2834 +  (eval "$ac_link_default") 2>&5
2835 +  ac_status=$?
2836 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2837 +  (exit $ac_status); }; then
2838 +  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
2839 +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
2840 +# in a Makefile.  We should not override ac_cv_exeext if it was cached,
2841 +# so that the user can short-circuit this test for compilers unknown to
2842 +# Autoconf.
2843 +for ac_file in $ac_files ''
2844 +do
2845 +  test -f "$ac_file" || continue
2846 +  case $ac_file in
2847 +    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
2848 +       ;;
2849 +    [ab].out )
2850 +       # We found the default executable, but exeext='' is most
2851 +       # certainly right.
2852 +       break;;
2853 +    *.* )
2854 +        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
2855 +       then :; else
2856 +          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2857 +       fi
2858 +       # We set ac_cv_exeext here because the later test for it is not
2859 +       # safe: cross compilers may not add the suffix if given an `-o'
2860 +       # argument, so we may need to know it at that point already.
2861 +       # Even if this section looks crufty: it has the advantage of
2862 +       # actually working.
2863 +       break;;
2864 +    * )
2865 +       break;;
2866 +  esac
2867 +done
2868 +test "$ac_cv_exeext" = no && ac_cv_exeext=
2869 +
2870 +else
2871 +  ac_file=''
2872 +fi
2873 +
2874 +{ echo "$as_me:$LINENO: result: $ac_file" >&5
2875 +echo "${ECHO_T}$ac_file" >&6; }
2876 +if test -z "$ac_file"; then
2877 +  echo "$as_me: failed program was:" >&5
2878 +sed 's/^/| /' conftest.$ac_ext >&5
2879 +
2880 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
2881 +See \`config.log' for more details." >&5
2882 +echo "$as_me: error: C compiler cannot create executables
2883 +See \`config.log' for more details." >&2;}
2884 +   { (exit 77); exit 77; }; }
2885 +fi
2886 +
2887 +ac_exeext=$ac_cv_exeext
2888 +
2889 +# Check that the compiler produces executables we can run.  If not, either
2890 +# the compiler is broken, or we cross compile.
2891 +{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
2892 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
2893 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
2894 +# If not cross compiling, check that we can run a simple program.
2895 +if test "$cross_compiling" != yes; then
2896 +  if { ac_try='./$ac_file'
2897 +  { (case "(($ac_try" in
2898 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2899 +  *) ac_try_echo=$ac_try;;
2900 +esac
2901 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2902 +  (eval "$ac_try") 2>&5
2903 +  ac_status=$?
2904 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2905 +  (exit $ac_status); }; }; then
2906 +    cross_compiling=no
2907 +  else
2908 +    if test "$cross_compiling" = maybe; then
2909 +       cross_compiling=yes
2910 +    else
2911 +       { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
2912 +If you meant to cross compile, use \`--host'.
2913 +See \`config.log' for more details." >&5
2914 +echo "$as_me: error: cannot run C compiled programs.
2915 +If you meant to cross compile, use \`--host'.
2916 +See \`config.log' for more details." >&2;}
2917 +   { (exit 1); exit 1; }; }
2918 +    fi
2919 +  fi
2920 +fi
2921 +{ echo "$as_me:$LINENO: result: yes" >&5
2922 +echo "${ECHO_T}yes" >&6; }
2923 +
2924 +rm -f a.out a.exe conftest$ac_cv_exeext b.out
2925 +ac_clean_files=$ac_clean_files_save
2926 +# Check that the compiler produces executables we can run.  If not, either
2927 +# the compiler is broken, or we cross compile.
2928 +{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
2929 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
2930 +{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
2931 +echo "${ECHO_T}$cross_compiling" >&6; }
2932 +
2933 +{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
2934 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
2935 +if { (ac_try="$ac_link"
2936 +case "(($ac_try" in
2937 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2938 +  *) ac_try_echo=$ac_try;;
2939 +esac
2940 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
2941 +  (eval "$ac_link") 2>&5
2942 +  ac_status=$?
2943 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
2944 +  (exit $ac_status); }; then
2945 +  # If both `conftest.exe' and `conftest' are `present' (well, observable)
2946 +# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
2947 +# work properly (i.e., refer to `conftest.exe'), while it won't with
2948 +# `rm'.
2949 +for ac_file in conftest.exe conftest conftest.*; do
2950 +  test -f "$ac_file" || continue
2951 +  case $ac_file in
2952 +    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
2953 +    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
2954 +         break;;
2955 +    * ) break;;
2956 +  esac
2957 +done
2958 +else
2959 +  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
2960 +See \`config.log' for more details." >&5
2961 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
2962 +See \`config.log' for more details." >&2;}
2963 +   { (exit 1); exit 1; }; }
2964 +fi
2965 +
2966 +rm -f conftest$ac_cv_exeext
2967 +{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
2968 +echo "${ECHO_T}$ac_cv_exeext" >&6; }
2969 +
2970 +rm -f conftest.$ac_ext
2971 +EXEEXT=$ac_cv_exeext
2972 +ac_exeext=$EXEEXT
2973 +{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
2974 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
2975 +if test "${ac_cv_objext+set}" = set; then
2976 +  echo $ECHO_N "(cached) $ECHO_C" >&6
2977 +else
2978 +  cat >conftest.$ac_ext <<_ACEOF
2979 +/* confdefs.h.  */
2980 +_ACEOF
2981 +cat confdefs.h >>conftest.$ac_ext
2982 +cat >>conftest.$ac_ext <<_ACEOF
2983 +/* end confdefs.h.  */
2984 +
2985 +int
2986 +main ()
2987 +{
2988 +
2989 +  ;
2990 +  return 0;
2991 +}
2992 +_ACEOF
2993 +rm -f conftest.o conftest.obj
2994 +if { (ac_try="$ac_compile"
2995 +case "(($ac_try" in
2996 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
2997 +  *) ac_try_echo=$ac_try;;
2998 +esac
2999 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3000 +  (eval "$ac_compile") 2>&5
3001 +  ac_status=$?
3002 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3003 +  (exit $ac_status); }; then
3004 +  for ac_file in conftest.o conftest.obj conftest.*; do
3005 +  test -f "$ac_file" || continue;
3006 +  case $ac_file in
3007 +    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
3008 +    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
3009 +       break;;
3010 +  esac
3011 +done
3012 +else
3013 +  echo "$as_me: failed program was:" >&5
3014 +sed 's/^/| /' conftest.$ac_ext >&5
3015 +
3016 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
3017 +See \`config.log' for more details." >&5
3018 +echo "$as_me: error: cannot compute suffix of object files: cannot compile
3019 +See \`config.log' for more details." >&2;}
3020 +   { (exit 1); exit 1; }; }
3021 +fi
3022 +
3023 +rm -f conftest.$ac_cv_objext conftest.$ac_ext
3024 +fi
3025 +{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
3026 +echo "${ECHO_T}$ac_cv_objext" >&6; }
3027 +OBJEXT=$ac_cv_objext
3028 +ac_objext=$OBJEXT
3029 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
3030 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
3031 +if test "${ac_cv_c_compiler_gnu+set}" = set; then
3032 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3033 +else
3034 +  cat >conftest.$ac_ext <<_ACEOF
3035 +/* confdefs.h.  */
3036 +_ACEOF
3037 +cat confdefs.h >>conftest.$ac_ext
3038 +cat >>conftest.$ac_ext <<_ACEOF
3039 +/* end confdefs.h.  */
3040 +
3041 +int
3042 +main ()
3043 +{
3044 +#ifndef __GNUC__
3045 +       choke me
3046 +#endif
3047 +
3048 +  ;
3049 +  return 0;
3050 +}
3051 +_ACEOF
3052 +rm -f conftest.$ac_objext
3053 +if { (ac_try="$ac_compile"
3054 +case "(($ac_try" in
3055 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3056 +  *) ac_try_echo=$ac_try;;
3057 +esac
3058 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3059 +  (eval "$ac_compile") 2>conftest.er1
3060 +  ac_status=$?
3061 +  grep -v '^ *+' conftest.er1 >conftest.err
3062 +  rm -f conftest.er1
3063 +  cat conftest.err >&5
3064 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3065 +  (exit $ac_status); } && {
3066 +        test -z "$ac_c_werror_flag" ||
3067 +        test ! -s conftest.err
3068 +       } && test -s conftest.$ac_objext; then
3069 +  ac_compiler_gnu=yes
3070 +else
3071 +  echo "$as_me: failed program was:" >&5
3072 +sed 's/^/| /' conftest.$ac_ext >&5
3073 +
3074 +       ac_compiler_gnu=no
3075 +fi
3076 +
3077 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3078 +ac_cv_c_compiler_gnu=$ac_compiler_gnu
3079 +
3080 +fi
3081 +{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
3082 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
3083 +GCC=`test $ac_compiler_gnu = yes && echo yes`
3084 +ac_test_CFLAGS=${CFLAGS+set}
3085 +ac_save_CFLAGS=$CFLAGS
3086 +{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
3087 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
3088 +if test "${ac_cv_prog_cc_g+set}" = set; then
3089 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3090 +else
3091 +  ac_save_c_werror_flag=$ac_c_werror_flag
3092 +   ac_c_werror_flag=yes
3093 +   ac_cv_prog_cc_g=no
3094 +   CFLAGS="-g"
3095 +   cat >conftest.$ac_ext <<_ACEOF
3096 +/* confdefs.h.  */
3097 +_ACEOF
3098 +cat confdefs.h >>conftest.$ac_ext
3099 +cat >>conftest.$ac_ext <<_ACEOF
3100 +/* end confdefs.h.  */
3101 +
3102 +int
3103 +main ()
3104 +{
3105 +
3106 +  ;
3107 +  return 0;
3108 +}
3109 +_ACEOF
3110 +rm -f conftest.$ac_objext
3111 +if { (ac_try="$ac_compile"
3112 +case "(($ac_try" in
3113 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3114 +  *) ac_try_echo=$ac_try;;
3115 +esac
3116 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3117 +  (eval "$ac_compile") 2>conftest.er1
3118 +  ac_status=$?
3119 +  grep -v '^ *+' conftest.er1 >conftest.err
3120 +  rm -f conftest.er1
3121 +  cat conftest.err >&5
3122 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3123 +  (exit $ac_status); } && {
3124 +        test -z "$ac_c_werror_flag" ||
3125 +        test ! -s conftest.err
3126 +       } && test -s conftest.$ac_objext; then
3127 +  ac_cv_prog_cc_g=yes
3128 +else
3129 +  echo "$as_me: failed program was:" >&5
3130 +sed 's/^/| /' conftest.$ac_ext >&5
3131 +
3132 +       CFLAGS=""
3133 +      cat >conftest.$ac_ext <<_ACEOF
3134 +/* confdefs.h.  */
3135 +_ACEOF
3136 +cat confdefs.h >>conftest.$ac_ext
3137 +cat >>conftest.$ac_ext <<_ACEOF
3138 +/* end confdefs.h.  */
3139 +
3140 +int
3141 +main ()
3142 +{
3143 +
3144 +  ;
3145 +  return 0;
3146 +}
3147 +_ACEOF
3148 +rm -f conftest.$ac_objext
3149 +if { (ac_try="$ac_compile"
3150 +case "(($ac_try" in
3151 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3152 +  *) ac_try_echo=$ac_try;;
3153 +esac
3154 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3155 +  (eval "$ac_compile") 2>conftest.er1
3156 +  ac_status=$?
3157 +  grep -v '^ *+' conftest.er1 >conftest.err
3158 +  rm -f conftest.er1
3159 +  cat conftest.err >&5
3160 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3161 +  (exit $ac_status); } && {
3162 +        test -z "$ac_c_werror_flag" ||
3163 +        test ! -s conftest.err
3164 +       } && test -s conftest.$ac_objext; then
3165 +  :
3166 +else
3167 +  echo "$as_me: failed program was:" >&5
3168 +sed 's/^/| /' conftest.$ac_ext >&5
3169 +
3170 +       ac_c_werror_flag=$ac_save_c_werror_flag
3171 +        CFLAGS="-g"
3172 +        cat >conftest.$ac_ext <<_ACEOF
3173 +/* confdefs.h.  */
3174 +_ACEOF
3175 +cat confdefs.h >>conftest.$ac_ext
3176 +cat >>conftest.$ac_ext <<_ACEOF
3177 +/* end confdefs.h.  */
3178 +
3179 +int
3180 +main ()
3181 +{
3182 +
3183 +  ;
3184 +  return 0;
3185 +}
3186 +_ACEOF
3187 +rm -f conftest.$ac_objext
3188 +if { (ac_try="$ac_compile"
3189 +case "(($ac_try" in
3190 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3191 +  *) ac_try_echo=$ac_try;;
3192 +esac
3193 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3194 +  (eval "$ac_compile") 2>conftest.er1
3195 +  ac_status=$?
3196 +  grep -v '^ *+' conftest.er1 >conftest.err
3197 +  rm -f conftest.er1
3198 +  cat conftest.err >&5
3199 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3200 +  (exit $ac_status); } && {
3201 +        test -z "$ac_c_werror_flag" ||
3202 +        test ! -s conftest.err
3203 +       } && test -s conftest.$ac_objext; then
3204 +  ac_cv_prog_cc_g=yes
3205 +else
3206 +  echo "$as_me: failed program was:" >&5
3207 +sed 's/^/| /' conftest.$ac_ext >&5
3208 +
3209 +       
3210 +fi
3211 +
3212 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3213 +fi
3214 +
3215 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3216 +fi
3217 +
3218 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3219 +   ac_c_werror_flag=$ac_save_c_werror_flag
3220 +fi
3221 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
3222 +echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
3223 +if test "$ac_test_CFLAGS" = set; then
3224 +  CFLAGS=$ac_save_CFLAGS
3225 +elif test $ac_cv_prog_cc_g = yes; then
3226 +  if test "$GCC" = yes; then
3227 +    CFLAGS="-g -O2"
3228 +  else
3229 +    CFLAGS="-g"
3230 +  fi
3231 +else
3232 +  if test "$GCC" = yes; then
3233 +    CFLAGS="-O2"
3234 +  else
3235 +    CFLAGS=
3236 +  fi
3237 +fi
3238 +{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
3239 +echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
3240 +if test "${ac_cv_prog_cc_c89+set}" = set; then
3241 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3242 +else
3243 +  ac_cv_prog_cc_c89=no
3244 +ac_save_CC=$CC
3245 +cat >conftest.$ac_ext <<_ACEOF
3246 +/* confdefs.h.  */
3247 +_ACEOF
3248 +cat confdefs.h >>conftest.$ac_ext
3249 +cat >>conftest.$ac_ext <<_ACEOF
3250 +/* end confdefs.h.  */
3251 +#include <stdarg.h>
3252 +#include <stdio.h>
3253 +#include <sys/types.h>
3254 +#include <sys/stat.h>
3255 +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
3256 +struct buf { int x; };
3257 +FILE * (*rcsopen) (struct buf *, struct stat *, int);
3258 +static char *e (p, i)
3259 +     char **p;
3260 +     int i;
3261 +{
3262 +  return p[i];
3263 +}
3264 +static char *f (char * (*g) (char **, int), char **p, ...)
3265 +{
3266 +  char *s;
3267 +  va_list v;
3268 +  va_start (v,p);
3269 +  s = g (p, va_arg (v,int));
3270 +  va_end (v);
3271 +  return s;
3272 +}
3273 +
3274 +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
3275 +   function prototypes and stuff, but not '\xHH' hex character constants.
3276 +   These don't provoke an error unfortunately, instead are silently treated
3277 +   as 'x'.  The following induces an error, until -std is added to get
3278 +   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
3279 +   array size at least.  It's necessary to write '\x00'==0 to get something
3280 +   that's true only with -std.  */
3281 +int osf4_cc_array ['\x00' == 0 ? 1 : -1];
3282 +
3283 +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
3284 +   inside strings and character constants.  */
3285 +#define FOO(x) 'x'
3286 +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
3287 +
3288 +int test (int i, double x);
3289 +struct s1 {int (*f) (int a);};
3290 +struct s2 {int (*f) (double a);};
3291 +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
3292 +int argc;
3293 +char **argv;
3294 +int
3295 +main ()
3296 +{
3297 +return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
3298 +  ;
3299 +  return 0;
3300 +}
3301 +_ACEOF
3302 +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
3303 +       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
3304 +do
3305 +  CC="$ac_save_CC $ac_arg"
3306 +  rm -f conftest.$ac_objext
3307 +if { (ac_try="$ac_compile"
3308 +case "(($ac_try" in
3309 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3310 +  *) ac_try_echo=$ac_try;;
3311 +esac
3312 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3313 +  (eval "$ac_compile") 2>conftest.er1
3314 +  ac_status=$?
3315 +  grep -v '^ *+' conftest.er1 >conftest.err
3316 +  rm -f conftest.er1
3317 +  cat conftest.err >&5
3318 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3319 +  (exit $ac_status); } && {
3320 +        test -z "$ac_c_werror_flag" ||
3321 +        test ! -s conftest.err
3322 +       } && test -s conftest.$ac_objext; then
3323 +  ac_cv_prog_cc_c89=$ac_arg
3324 +else
3325 +  echo "$as_me: failed program was:" >&5
3326 +sed 's/^/| /' conftest.$ac_ext >&5
3327 +
3328 +       
3329 +fi
3330 +
3331 +rm -f core conftest.err conftest.$ac_objext 
3332 +  test "x$ac_cv_prog_cc_c89" != "xno" && break
3333 +done
3334 +rm -f conftest.$ac_ext
3335 +CC=$ac_save_CC
3336 +
3337 +fi
3338 +# AC_CACHE_VAL
3339 +case "x$ac_cv_prog_cc_c89" in
3340 +  x)
3341 +    { echo "$as_me:$LINENO: result: none needed" >&5
3342 +echo "${ECHO_T}none needed" >&6; } ;;
3343 +  xno)
3344 +    { echo "$as_me:$LINENO: result: unsupported" >&5
3345 +echo "${ECHO_T}unsupported" >&6; } ;;
3346 +  *)
3347 +    CC="$CC $ac_cv_prog_cc_c89"
3348 +    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
3349 +echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
3350 +esac
3351 +
3352 +
3353 +ac_ext=c
3354 +ac_cpp='$CPP $CPPFLAGS'
3355 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3356 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3357 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
3358 +
3359 +
3360 +    
3361 +
3362 +    ac_base_cc="$CC"
3363 +    test -z "$ac_user_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" && \
3364 +       CC="$CC -W -Wall"
3365 +
3366 +    test -z "$ac_user_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" -a -z "$ac_user_depcflags" && \
3367 +       DEPCFLAGS="-MD"
3368 +    
3369 +
3370 +    CFLAGS_NDEBUG=`echo "$CFLAGS" | sed 's/-g//'`
3371 +    
3372 +
3373 +ac_ext=c
3374 +ac_cpp='$CPP $CPPFLAGS'
3375 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3376 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3377 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
3378 +{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
3379 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
3380 +# On Suns, sometimes $CPP names a directory.
3381 +if test -n "$CPP" && test -d "$CPP"; then
3382 +  CPP=
3383 +fi
3384 +if test -z "$CPP"; then
3385 +  if test "${ac_cv_prog_CPP+set}" = set; then
3386 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3387 +else
3388 +      # Double quotes because CPP needs to be expanded
3389 +    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
3390 +    do
3391 +      ac_preproc_ok=false
3392 +for ac_c_preproc_warn_flag in '' yes
3393 +do
3394 +  # Use a header file that comes with gcc, so configuring glibc
3395 +  # with a fresh cross-compiler works.
3396 +  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
3397 +  # <limits.h> exists even on freestanding compilers.
3398 +  # On the NeXT, cc -E runs the code through the compiler's parser,
3399 +  # not just through cpp. "Syntax error" is here to catch this case.
3400 +  cat >conftest.$ac_ext <<_ACEOF
3401 +/* confdefs.h.  */
3402 +_ACEOF
3403 +cat confdefs.h >>conftest.$ac_ext
3404 +cat >>conftest.$ac_ext <<_ACEOF
3405 +/* end confdefs.h.  */
3406 +@%:@ifdef __STDC__
3407 +@%:@ include <limits.h>
3408 +@%:@else
3409 +@%:@ include <assert.h>
3410 +@%:@endif
3411 +                    Syntax error
3412 +_ACEOF
3413 +if { (ac_try="$ac_cpp conftest.$ac_ext"
3414 +case "(($ac_try" in
3415 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3416 +  *) ac_try_echo=$ac_try;;
3417 +esac
3418 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3419 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3420 +  ac_status=$?
3421 +  grep -v '^ *+' conftest.er1 >conftest.err
3422 +  rm -f conftest.er1
3423 +  cat conftest.err >&5
3424 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3425 +  (exit $ac_status); } >/dev/null && {
3426 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3427 +        test ! -s conftest.err
3428 +       }; then
3429 +  :
3430 +else
3431 +  echo "$as_me: failed program was:" >&5
3432 +sed 's/^/| /' conftest.$ac_ext >&5
3433 +
3434 +  # Broken: fails on valid input.
3435 +continue
3436 +fi
3437 +
3438 +rm -f conftest.err conftest.$ac_ext
3439 +
3440 +  # OK, works on sane cases.  Now check whether nonexistent headers
3441 +  # can be detected and how.
3442 +  cat >conftest.$ac_ext <<_ACEOF
3443 +/* confdefs.h.  */
3444 +_ACEOF
3445 +cat confdefs.h >>conftest.$ac_ext
3446 +cat >>conftest.$ac_ext <<_ACEOF
3447 +/* end confdefs.h.  */
3448 +@%:@include <ac_nonexistent.h>
3449 +_ACEOF
3450 +if { (ac_try="$ac_cpp conftest.$ac_ext"
3451 +case "(($ac_try" in
3452 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3453 +  *) ac_try_echo=$ac_try;;
3454 +esac
3455 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3456 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3457 +  ac_status=$?
3458 +  grep -v '^ *+' conftest.er1 >conftest.err
3459 +  rm -f conftest.er1
3460 +  cat conftest.err >&5
3461 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3462 +  (exit $ac_status); } >/dev/null && {
3463 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3464 +        test ! -s conftest.err
3465 +       }; then
3466 +  # Broken: success on invalid input.
3467 +continue
3468 +else
3469 +  echo "$as_me: failed program was:" >&5
3470 +sed 's/^/| /' conftest.$ac_ext >&5
3471 +
3472 +  # Passes both tests.
3473 +ac_preproc_ok=:
3474 +break
3475 +fi
3476 +
3477 +rm -f conftest.err conftest.$ac_ext
3478 +
3479 +done
3480 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
3481 +rm -f conftest.err conftest.$ac_ext
3482 +if $ac_preproc_ok; then
3483 +  break
3484 +fi
3485 +
3486 +    done
3487 +    ac_cv_prog_CPP=$CPP
3488 +  
3489 +fi
3490 +  CPP=$ac_cv_prog_CPP
3491 +else
3492 +  ac_cv_prog_CPP=$CPP
3493 +fi
3494 +{ echo "$as_me:$LINENO: result: $CPP" >&5
3495 +echo "${ECHO_T}$CPP" >&6; }
3496 +ac_preproc_ok=false
3497 +for ac_c_preproc_warn_flag in '' yes
3498 +do
3499 +  # Use a header file that comes with gcc, so configuring glibc
3500 +  # with a fresh cross-compiler works.
3501 +  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
3502 +  # <limits.h> exists even on freestanding compilers.
3503 +  # On the NeXT, cc -E runs the code through the compiler's parser,
3504 +  # not just through cpp. "Syntax error" is here to catch this case.
3505 +  cat >conftest.$ac_ext <<_ACEOF
3506 +/* confdefs.h.  */
3507 +_ACEOF
3508 +cat confdefs.h >>conftest.$ac_ext
3509 +cat >>conftest.$ac_ext <<_ACEOF
3510 +/* end confdefs.h.  */
3511 +@%:@ifdef __STDC__
3512 +@%:@ include <limits.h>
3513 +@%:@else
3514 +@%:@ include <assert.h>
3515 +@%:@endif
3516 +                    Syntax error
3517 +_ACEOF
3518 +if { (ac_try="$ac_cpp conftest.$ac_ext"
3519 +case "(($ac_try" in
3520 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3521 +  *) ac_try_echo=$ac_try;;
3522 +esac
3523 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3524 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3525 +  ac_status=$?
3526 +  grep -v '^ *+' conftest.er1 >conftest.err
3527 +  rm -f conftest.er1
3528 +  cat conftest.err >&5
3529 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3530 +  (exit $ac_status); } >/dev/null && {
3531 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3532 +        test ! -s conftest.err
3533 +       }; then
3534 +  :
3535 +else
3536 +  echo "$as_me: failed program was:" >&5
3537 +sed 's/^/| /' conftest.$ac_ext >&5
3538 +
3539 +  # Broken: fails on valid input.
3540 +continue
3541 +fi
3542 +
3543 +rm -f conftest.err conftest.$ac_ext
3544 +
3545 +  # OK, works on sane cases.  Now check whether nonexistent headers
3546 +  # can be detected and how.
3547 +  cat >conftest.$ac_ext <<_ACEOF
3548 +/* confdefs.h.  */
3549 +_ACEOF
3550 +cat confdefs.h >>conftest.$ac_ext
3551 +cat >>conftest.$ac_ext <<_ACEOF
3552 +/* end confdefs.h.  */
3553 +@%:@include <ac_nonexistent.h>
3554 +_ACEOF
3555 +if { (ac_try="$ac_cpp conftest.$ac_ext"
3556 +case "(($ac_try" in
3557 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3558 +  *) ac_try_echo=$ac_try;;
3559 +esac
3560 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3561 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
3562 +  ac_status=$?
3563 +  grep -v '^ *+' conftest.er1 >conftest.err
3564 +  rm -f conftest.er1
3565 +  cat conftest.err >&5
3566 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3567 +  (exit $ac_status); } >/dev/null && {
3568 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
3569 +        test ! -s conftest.err
3570 +       }; then
3571 +  # Broken: success on invalid input.
3572 +continue
3573 +else
3574 +  echo "$as_me: failed program was:" >&5
3575 +sed 's/^/| /' conftest.$ac_ext >&5
3576 +
3577 +  # Passes both tests.
3578 +ac_preproc_ok=:
3579 +break
3580 +fi
3581 +
3582 +rm -f conftest.err conftest.$ac_ext
3583 +
3584 +done
3585 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
3586 +rm -f conftest.err conftest.$ac_ext
3587 +if $ac_preproc_ok; then
3588 +  :
3589 +else
3590 +  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
3591 +See \`config.log' for more details." >&5
3592 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
3593 +See \`config.log' for more details." >&2;}
3594 +   { (exit 1); exit 1; }; }
3595 +fi
3596 +
3597 +ac_ext=c
3598 +ac_cpp='$CPP $CPPFLAGS'
3599 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3600 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3601 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
3602 +
3603 +
3604 +{ echo "$as_me:$LINENO: checking for inline" >&5
3605 +echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
3606 +if test "${ac_cv_c_inline+set}" = set; then
3607 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3608 +else
3609 +  ac_cv_c_inline=no
3610 +for ac_kw in inline __inline__ __inline; do
3611 +  cat >conftest.$ac_ext <<_ACEOF
3612 +/* confdefs.h.  */
3613 +_ACEOF
3614 +cat confdefs.h >>conftest.$ac_ext
3615 +cat >>conftest.$ac_ext <<_ACEOF
3616 +/* end confdefs.h.  */
3617 +#ifndef __cplusplus
3618 +typedef int foo_t;
3619 +static $ac_kw foo_t static_foo () {return 0; }
3620 +$ac_kw foo_t foo () {return 0; }
3621 +#endif
3622 +
3623 +_ACEOF
3624 +rm -f conftest.$ac_objext
3625 +if { (ac_try="$ac_compile"
3626 +case "(($ac_try" in
3627 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3628 +  *) ac_try_echo=$ac_try;;
3629 +esac
3630 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3631 +  (eval "$ac_compile") 2>conftest.er1
3632 +  ac_status=$?
3633 +  grep -v '^ *+' conftest.er1 >conftest.err
3634 +  rm -f conftest.er1
3635 +  cat conftest.err >&5
3636 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3637 +  (exit $ac_status); } && {
3638 +        test -z "$ac_c_werror_flag" ||
3639 +        test ! -s conftest.err
3640 +       } && test -s conftest.$ac_objext; then
3641 +  ac_cv_c_inline=$ac_kw
3642 +else
3643 +  echo "$as_me: failed program was:" >&5
3644 +sed 's/^/| /' conftest.$ac_ext >&5
3645 +
3646 +       
3647 +fi
3648 +
3649 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3650 +  test "$ac_cv_c_inline" != no && break
3651 +done
3652 +
3653 +fi
3654 +{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
3655 +echo "${ECHO_T}$ac_cv_c_inline" >&6; }
3656 +
3657 +
3658 +case $ac_cv_c_inline in
3659 +  inline | yes) ;;
3660 +  *)
3661 +    case $ac_cv_c_inline in
3662 +      no) ac_val=;;
3663 +      *) ac_val=$ac_cv_c_inline;;
3664 +    esac
3665 +    cat >>confdefs.h <<_ACEOF
3666 +#ifndef __cplusplus
3667 +#define inline $ac_val
3668 +#endif
3669 +_ACEOF
3670 +    ;;
3671 +esac
3672 +
3673 +
3674 +ac_ext=cpp
3675 +ac_cpp='$CXXCPP $CPPFLAGS'
3676 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
3677 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
3678 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
3679 +if test -z "$CXX"; then
3680 +  if test -n "$CCC"; then
3681 +    CXX=$CCC
3682 +  else
3683 +    if test -n "$ac_tool_prefix"; then
3684 +  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
3685 +  do
3686 +    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
3687 +set dummy $ac_tool_prefix$ac_prog; ac_word=$2
3688 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
3689 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3690 +if test "${ac_cv_prog_CXX+set}" = set; then
3691 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3692 +else
3693 +  if test -n "$CXX"; then
3694 +  ac_cv_prog_CXX="$CXX" # Let the user override the test.
3695 +else
3696 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3697 +for as_dir in $PATH
3698 +do
3699 +  IFS=$as_save_IFS
3700 +  test -z "$as_dir" && as_dir=.
3701 +  for ac_exec_ext in '' $ac_executable_extensions; do
3702 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3703 +    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
3704 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3705 +    break 2
3706 +  fi
3707 +done
3708 +done
3709 +IFS=$as_save_IFS
3710 +
3711 +fi
3712 +fi
3713 +CXX=$ac_cv_prog_CXX
3714 +if test -n "$CXX"; then
3715 +  { echo "$as_me:$LINENO: result: $CXX" >&5
3716 +echo "${ECHO_T}$CXX" >&6; }
3717 +else
3718 +  { echo "$as_me:$LINENO: result: no" >&5
3719 +echo "${ECHO_T}no" >&6; }
3720 +fi
3721 +
3722 +
3723 +    test -n "$CXX" && break
3724 +  done
3725 +fi
3726 +if test -z "$CXX"; then
3727 +  ac_ct_CXX=$CXX
3728 +  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
3729 +do
3730 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
3731 +set dummy $ac_prog; ac_word=$2
3732 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
3733 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
3734 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
3735 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3736 +else
3737 +  if test -n "$ac_ct_CXX"; then
3738 +  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
3739 +else
3740 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3741 +for as_dir in $PATH
3742 +do
3743 +  IFS=$as_save_IFS
3744 +  test -z "$as_dir" && as_dir=.
3745 +  for ac_exec_ext in '' $ac_executable_extensions; do
3746 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
3747 +    ac_cv_prog_ac_ct_CXX="$ac_prog"
3748 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
3749 +    break 2
3750 +  fi
3751 +done
3752 +done
3753 +IFS=$as_save_IFS
3754 +
3755 +fi
3756 +fi
3757 +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
3758 +if test -n "$ac_ct_CXX"; then
3759 +  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
3760 +echo "${ECHO_T}$ac_ct_CXX" >&6; }
3761 +else
3762 +  { echo "$as_me:$LINENO: result: no" >&5
3763 +echo "${ECHO_T}no" >&6; }
3764 +fi
3765 +
3766 +
3767 +  test -n "$ac_ct_CXX" && break
3768 +done
3769 +
3770 +  if test "x$ac_ct_CXX" = x; then
3771 +    CXX="g++"
3772 +  else
3773 +    case $cross_compiling:$ac_tool_warned in
3774 +yes:)
3775 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
3776 +whose name does not start with the host triplet.  If you think this
3777 +configuration is useful to you, please write to autoconf@gnu.org." >&5
3778 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
3779 +whose name does not start with the host triplet.  If you think this
3780 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
3781 +ac_tool_warned=yes ;;
3782 +esac
3783 +    CXX=$ac_ct_CXX
3784 +  fi
3785 +fi
3786 +
3787 +  fi
3788 +fi
3789 +# Provide some information about the compiler.
3790 +echo "$as_me:$LINENO: checking for C++ compiler version" >&5
3791 +ac_compiler=`set X $ac_compile; echo $2`
3792 +{ (ac_try="$ac_compiler --version >&5"
3793 +case "(($ac_try" in
3794 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3795 +  *) ac_try_echo=$ac_try;;
3796 +esac
3797 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3798 +  (eval "$ac_compiler --version >&5") 2>&5
3799 +  ac_status=$?
3800 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3801 +  (exit $ac_status); }
3802 +{ (ac_try="$ac_compiler -v >&5"
3803 +case "(($ac_try" in
3804 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3805 +  *) ac_try_echo=$ac_try;;
3806 +esac
3807 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3808 +  (eval "$ac_compiler -v >&5") 2>&5
3809 +  ac_status=$?
3810 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3811 +  (exit $ac_status); }
3812 +{ (ac_try="$ac_compiler -V >&5"
3813 +case "(($ac_try" in
3814 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3815 +  *) ac_try_echo=$ac_try;;
3816 +esac
3817 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3818 +  (eval "$ac_compiler -V >&5") 2>&5
3819 +  ac_status=$?
3820 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3821 +  (exit $ac_status); }
3822 +
3823 +{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
3824 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
3825 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
3826 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3827 +else
3828 +  cat >conftest.$ac_ext <<_ACEOF
3829 +/* confdefs.h.  */
3830 +_ACEOF
3831 +cat confdefs.h >>conftest.$ac_ext
3832 +cat >>conftest.$ac_ext <<_ACEOF
3833 +/* end confdefs.h.  */
3834 +
3835 +int
3836 +main ()
3837 +{
3838 +#ifndef __GNUC__
3839 +       choke me
3840 +#endif
3841 +
3842 +  ;
3843 +  return 0;
3844 +}
3845 +_ACEOF
3846 +rm -f conftest.$ac_objext
3847 +if { (ac_try="$ac_compile"
3848 +case "(($ac_try" in
3849 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3850 +  *) ac_try_echo=$ac_try;;
3851 +esac
3852 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3853 +  (eval "$ac_compile") 2>conftest.er1
3854 +  ac_status=$?
3855 +  grep -v '^ *+' conftest.er1 >conftest.err
3856 +  rm -f conftest.er1
3857 +  cat conftest.err >&5
3858 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3859 +  (exit $ac_status); } && {
3860 +        test -z "$ac_cxx_werror_flag" ||
3861 +        test ! -s conftest.err
3862 +       } && test -s conftest.$ac_objext; then
3863 +  ac_compiler_gnu=yes
3864 +else
3865 +  echo "$as_me: failed program was:" >&5
3866 +sed 's/^/| /' conftest.$ac_ext >&5
3867 +
3868 +       ac_compiler_gnu=no
3869 +fi
3870 +
3871 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
3872 +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
3873 +
3874 +fi
3875 +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
3876 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
3877 +GXX=`test $ac_compiler_gnu = yes && echo yes`
3878 +ac_test_CXXFLAGS=${CXXFLAGS+set}
3879 +ac_save_CXXFLAGS=$CXXFLAGS
3880 +{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
3881 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
3882 +if test "${ac_cv_prog_cxx_g+set}" = set; then
3883 +  echo $ECHO_N "(cached) $ECHO_C" >&6
3884 +else
3885 +  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
3886 +   ac_cxx_werror_flag=yes
3887 +   ac_cv_prog_cxx_g=no
3888 +   CXXFLAGS="-g"
3889 +   cat >conftest.$ac_ext <<_ACEOF
3890 +/* confdefs.h.  */
3891 +_ACEOF
3892 +cat confdefs.h >>conftest.$ac_ext
3893 +cat >>conftest.$ac_ext <<_ACEOF
3894 +/* end confdefs.h.  */
3895 +
3896 +int
3897 +main ()
3898 +{
3899 +
3900 +  ;
3901 +  return 0;
3902 +}
3903 +_ACEOF
3904 +rm -f conftest.$ac_objext
3905 +if { (ac_try="$ac_compile"
3906 +case "(($ac_try" in
3907 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3908 +  *) ac_try_echo=$ac_try;;
3909 +esac
3910 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3911 +  (eval "$ac_compile") 2>conftest.er1
3912 +  ac_status=$?
3913 +  grep -v '^ *+' conftest.er1 >conftest.err
3914 +  rm -f conftest.er1
3915 +  cat conftest.err >&5
3916 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3917 +  (exit $ac_status); } && {
3918 +        test -z "$ac_cxx_werror_flag" ||
3919 +        test ! -s conftest.err
3920 +       } && test -s conftest.$ac_objext; then
3921 +  ac_cv_prog_cxx_g=yes
3922 +else
3923 +  echo "$as_me: failed program was:" >&5
3924 +sed 's/^/| /' conftest.$ac_ext >&5
3925 +
3926 +       CXXFLAGS=""
3927 +      cat >conftest.$ac_ext <<_ACEOF
3928 +/* confdefs.h.  */
3929 +_ACEOF
3930 +cat confdefs.h >>conftest.$ac_ext
3931 +cat >>conftest.$ac_ext <<_ACEOF
3932 +/* end confdefs.h.  */
3933 +
3934 +int
3935 +main ()
3936 +{
3937 +
3938 +  ;
3939 +  return 0;
3940 +}
3941 +_ACEOF
3942 +rm -f conftest.$ac_objext
3943 +if { (ac_try="$ac_compile"
3944 +case "(($ac_try" in
3945 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3946 +  *) ac_try_echo=$ac_try;;
3947 +esac
3948 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3949 +  (eval "$ac_compile") 2>conftest.er1
3950 +  ac_status=$?
3951 +  grep -v '^ *+' conftest.er1 >conftest.err
3952 +  rm -f conftest.er1
3953 +  cat conftest.err >&5
3954 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3955 +  (exit $ac_status); } && {
3956 +        test -z "$ac_cxx_werror_flag" ||
3957 +        test ! -s conftest.err
3958 +       } && test -s conftest.$ac_objext; then
3959 +  :
3960 +else
3961 +  echo "$as_me: failed program was:" >&5
3962 +sed 's/^/| /' conftest.$ac_ext >&5
3963 +
3964 +       ac_cxx_werror_flag=$ac_save_cxx_werror_flag
3965 +        CXXFLAGS="-g"
3966 +        cat >conftest.$ac_ext <<_ACEOF
3967 +/* confdefs.h.  */
3968 +_ACEOF
3969 +cat confdefs.h >>conftest.$ac_ext
3970 +cat >>conftest.$ac_ext <<_ACEOF
3971 +/* end confdefs.h.  */
3972 +
3973 +int
3974 +main ()
3975 +{
3976 +
3977 +  ;
3978 +  return 0;
3979 +}
3980 +_ACEOF
3981 +rm -f conftest.$ac_objext
3982 +if { (ac_try="$ac_compile"
3983 +case "(($ac_try" in
3984 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
3985 +  *) ac_try_echo=$ac_try;;
3986 +esac
3987 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
3988 +  (eval "$ac_compile") 2>conftest.er1
3989 +  ac_status=$?
3990 +  grep -v '^ *+' conftest.er1 >conftest.err
3991 +  rm -f conftest.er1
3992 +  cat conftest.err >&5
3993 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
3994 +  (exit $ac_status); } && {
3995 +        test -z "$ac_cxx_werror_flag" ||
3996 +        test ! -s conftest.err
3997 +       } && test -s conftest.$ac_objext; then
3998 +  ac_cv_prog_cxx_g=yes
3999 +else
4000 +  echo "$as_me: failed program was:" >&5
4001 +sed 's/^/| /' conftest.$ac_ext >&5
4002 +
4003 +       
4004 +fi
4005 +
4006 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4007 +fi
4008 +
4009 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4010 +fi
4011 +
4012 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
4013 +   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
4014 +fi
4015 +{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
4016 +echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
4017 +if test "$ac_test_CXXFLAGS" = set; then
4018 +  CXXFLAGS=$ac_save_CXXFLAGS
4019 +elif test $ac_cv_prog_cxx_g = yes; then
4020 +  if test "$GXX" = yes; then
4021 +    CXXFLAGS="-g -O2"
4022 +  else
4023 +    CXXFLAGS="-g"
4024 +  fi
4025 +else
4026 +  if test "$GXX" = yes; then
4027 +    CXXFLAGS="-O2"
4028 +  else
4029 +    CXXFLAGS=
4030 +  fi
4031 +fi
4032 +ac_ext=c
4033 +ac_cpp='$CPP $CPPFLAGS'
4034 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4035 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4036 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
4037 +
4038 +
4039 +
4040 +    
4041 +
4042 +        if grep __cplusplus confdefs.h >/dev/null 2>&1; then
4043 +       sed 's/#ifdef __cplusplus/#if defined(__cplusplus) \&\& !defined(__KERNEL__)/' < confdefs.h > confdefs.h~
4044 +       mv confdefs.h~ confdefs.h
4045 +    fi
4046 +
4047 +    if test -z "$GXX"; then
4048 +       { echo "$as_me:$LINENO: WARNING: 
4049 +=========================================
4050 +
4051 +Your C++ compiler ($CXX) is not a GNU C++ compiler!
4052 +Either set the 'CXX' environment variable to tell me where
4053 +a GNU C++ compiler is, or compile at your own risk.
4054 +(This code uses a few GCC extensions and GCC-specific compiler options,
4055 +and Linux header files are GCC-specific.)
4056 +
4057 +=========================================" >&5
4058 +echo "$as_me: WARNING: 
4059 +=========================================
4060 +
4061 +Your C++ compiler ($CXX) is not a GNU C++ compiler!
4062 +Either set the 'CXX' environment variable to tell me where
4063 +a GNU C++ compiler is, or compile at your own risk.
4064 +(This code uses a few GCC extensions and GCC-specific compiler options,
4065 +and Linux header files are GCC-specific.)
4066 +
4067 +=========================================" >&2;}
4068 +    fi
4069 +
4070 +    ac_ext=cpp
4071 +ac_cpp='$CXXCPP $CPPFLAGS'
4072 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4073 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4074 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
4075 +
4076 +    if test -n "$GXX"; then
4077 +       GXX_VERSION=`$CXX --version | head -n 1 | sed 's/^[^0-9]*\([0-9.]*\).*/\1/'`
4078 +       GXX_MAJOR=`echo $GXX_VERSION | sed 's/\..*//'`
4079 +       GXX_MINOR=`echo $GXX_VERSION | sed 's/^[^.]*\.\([^.]*\).*/\1/'`
4080 +
4081 +       if test $GXX_MAJOR -lt 2 -o \( $GXX_MAJOR -eq 2 -a $GXX_MINOR -le 7 \); then
4082 +           { { echo "$as_me:$LINENO: error: 
4083 +=========================================
4084 +
4085 +Your GNU C++ compiler ($CXX) is too old!
4086 +Either download a newer compiler, or tell me to use a different compiler
4087 +by setting the 'CXX' environment variable and rerunning me.
4088 +
4089 +=========================================" >&5
4090 +echo "$as_me: error: 
4091 +=========================================
4092 +
4093 +Your GNU C++ compiler ($CXX) is too old!
4094 +Either download a newer compiler, or tell me to use a different compiler
4095 +by setting the 'CXX' environment variable and rerunning me.
4096 +
4097 +=========================================" >&2;}
4098 +   { (exit 1); exit 1; }; }
4099 +       fi
4100 +    fi
4101 +
4102 +    
4103 +    { echo "$as_me:$LINENO: checking whether <new> works" >&5
4104 +echo $ECHO_N "checking whether <new> works... $ECHO_C" >&6; }
4105 +if test "${ac_cv_good_new_hdr+set}" = set; then
4106 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4107 +else
4108 +  
4109 +       cat >conftest.$ac_ext <<_ACEOF
4110 +/* confdefs.h.  */
4111 +_ACEOF
4112 +cat confdefs.h >>conftest.$ac_ext
4113 +cat >>conftest.$ac_ext <<_ACEOF
4114 +/* end confdefs.h.  */
4115 +#include <new>
4116 +int
4117 +main ()
4118 +{
4119 +
4120 +    int a;
4121 +    int *b = new(&a) int;
4122 +    return 0;
4123 +
4124 +  ;
4125 +  return 0;
4126 +}
4127 +_ACEOF
4128 +rm -f conftest.$ac_objext conftest$ac_exeext
4129 +if { (ac_try="$ac_link"
4130 +case "(($ac_try" in
4131 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4132 +  *) ac_try_echo=$ac_try;;
4133 +esac
4134 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4135 +  (eval "$ac_link") 2>conftest.er1
4136 +  ac_status=$?
4137 +  grep -v '^ *+' conftest.er1 >conftest.err
4138 +  rm -f conftest.er1
4139 +  cat conftest.err >&5
4140 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4141 +  (exit $ac_status); } && {
4142 +        test -z "$ac_cxx_werror_flag" ||
4143 +        test ! -s conftest.err
4144 +       } && test -s conftest$ac_exeext &&
4145 +       $as_test_x conftest$ac_exeext; then
4146 +  ac_cv_good_new_hdr=yes
4147 +else
4148 +  echo "$as_me: failed program was:" >&5
4149 +sed 's/^/| /' conftest.$ac_ext >&5
4150 +
4151 +       ac_cv_good_new_hdr=no
4152 +fi
4153 +
4154 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
4155 +      conftest$ac_exeext conftest.$ac_ext
4156 +fi
4157 +{ echo "$as_me:$LINENO: result: $ac_cv_good_new_hdr" >&5
4158 +echo "${ECHO_T}$ac_cv_good_new_hdr" >&6; }
4159 +    if test "$ac_cv_good_new_hdr" = yes; then
4160 +       
4161 +cat >>confdefs.h <<\_ACEOF
4162 +@%:@define HAVE_NEW_HDR 1
4163 +_ACEOF
4164 +
4165 +    else
4166 +       { echo "$as_me:$LINENO: checking whether <new.h> works" >&5
4167 +echo $ECHO_N "checking whether <new.h> works... $ECHO_C" >&6; }
4168 +if test "${ac_cv_good_new_h+set}" = set; then
4169 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4170 +else
4171 +  
4172 +           cat >conftest.$ac_ext <<_ACEOF
4173 +/* confdefs.h.  */
4174 +_ACEOF
4175 +cat confdefs.h >>conftest.$ac_ext
4176 +cat >>conftest.$ac_ext <<_ACEOF
4177 +/* end confdefs.h.  */
4178 +#include <new.h>
4179 +int
4180 +main ()
4181 +{
4182 +
4183 +    int a;
4184 +    int *b = new(&a) int;
4185 +    return 0;
4186 +
4187 +  ;
4188 +  return 0;
4189 +}
4190 +_ACEOF
4191 +rm -f conftest.$ac_objext conftest$ac_exeext
4192 +if { (ac_try="$ac_link"
4193 +case "(($ac_try" in
4194 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4195 +  *) ac_try_echo=$ac_try;;
4196 +esac
4197 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4198 +  (eval "$ac_link") 2>conftest.er1
4199 +  ac_status=$?
4200 +  grep -v '^ *+' conftest.er1 >conftest.err
4201 +  rm -f conftest.er1
4202 +  cat conftest.err >&5
4203 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4204 +  (exit $ac_status); } && {
4205 +        test -z "$ac_cxx_werror_flag" ||
4206 +        test ! -s conftest.err
4207 +       } && test -s conftest$ac_exeext &&
4208 +       $as_test_x conftest$ac_exeext; then
4209 +  ac_cv_good_new_h=yes
4210 +else
4211 +  echo "$as_me: failed program was:" >&5
4212 +sed 's/^/| /' conftest.$ac_ext >&5
4213 +
4214 +       ac_cv_good_new_h=no
4215 +fi
4216 +
4217 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
4218 +      conftest$ac_exeext conftest.$ac_ext
4219 +fi
4220 +{ echo "$as_me:$LINENO: result: $ac_cv_good_new_h" >&5
4221 +echo "${ECHO_T}$ac_cv_good_new_h" >&6; }
4222 +       if test "$ac_cv_good_new_h" = yes; then
4223 +           
4224 +cat >>confdefs.h <<\_ACEOF
4225 +@%:@define HAVE_NEW_H 1
4226 +_ACEOF
4227 +
4228 +       fi
4229 +    fi
4230 +
4231 +    
4232 +    VTABLE_THUNKS=
4233 +    test -n "$GXX" && test "$GXX_MAJOR" -lt 3 && VTABLE_THUNKS=-fvtable-thunks
4234 +
4235 +    
4236 +    CXX_WARNINGS=
4237 +    test -z "$ac_user_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \
4238 +       CXX_WARNINGS='-W -Wall'
4239 +
4240 +    ac_base_cxx="$CXX"
4241 +    test -z "$ac_user_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \
4242 +       CXX="$CXX $CXX_WARNINGS $VTABLE_THUNKS"
4243 +
4244 +    CXXFLAGS_NDEBUG=`echo "$CXXFLAGS" | sed 's/-g//'`
4245 +    
4246 +
4247 +ac_ext=cpp
4248 +ac_cpp='$CXXCPP $CPPFLAGS'
4249 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4250 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4251 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
4252 +{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
4253 +echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
4254 +if test -z "$CXXCPP"; then
4255 +  if test "${ac_cv_prog_CXXCPP+set}" = set; then
4256 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4257 +else
4258 +      # Double quotes because CXXCPP needs to be expanded
4259 +    for CXXCPP in "$CXX -E" "/lib/cpp"
4260 +    do
4261 +      ac_preproc_ok=false
4262 +for ac_cxx_preproc_warn_flag in '' yes
4263 +do
4264 +  # Use a header file that comes with gcc, so configuring glibc
4265 +  # with a fresh cross-compiler works.
4266 +  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4267 +  # <limits.h> exists even on freestanding compilers.
4268 +  # On the NeXT, cc -E runs the code through the compiler's parser,
4269 +  # not just through cpp. "Syntax error" is here to catch this case.
4270 +  cat >conftest.$ac_ext <<_ACEOF
4271 +/* confdefs.h.  */
4272 +_ACEOF
4273 +cat confdefs.h >>conftest.$ac_ext
4274 +cat >>conftest.$ac_ext <<_ACEOF
4275 +/* end confdefs.h.  */
4276 +@%:@ifdef __STDC__
4277 +@%:@ include <limits.h>
4278 +@%:@else
4279 +@%:@ include <assert.h>
4280 +@%:@endif
4281 +                    Syntax error
4282 +_ACEOF
4283 +if { (ac_try="$ac_cpp conftest.$ac_ext"
4284 +case "(($ac_try" in
4285 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4286 +  *) ac_try_echo=$ac_try;;
4287 +esac
4288 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4289 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
4290 +  ac_status=$?
4291 +  grep -v '^ *+' conftest.er1 >conftest.err
4292 +  rm -f conftest.er1
4293 +  cat conftest.err >&5
4294 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4295 +  (exit $ac_status); } >/dev/null && {
4296 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
4297 +        test ! -s conftest.err
4298 +       }; then
4299 +  :
4300 +else
4301 +  echo "$as_me: failed program was:" >&5
4302 +sed 's/^/| /' conftest.$ac_ext >&5
4303 +
4304 +  # Broken: fails on valid input.
4305 +continue
4306 +fi
4307 +
4308 +rm -f conftest.err conftest.$ac_ext
4309 +
4310 +  # OK, works on sane cases.  Now check whether nonexistent headers
4311 +  # can be detected and how.
4312 +  cat >conftest.$ac_ext <<_ACEOF
4313 +/* confdefs.h.  */
4314 +_ACEOF
4315 +cat confdefs.h >>conftest.$ac_ext
4316 +cat >>conftest.$ac_ext <<_ACEOF
4317 +/* end confdefs.h.  */
4318 +@%:@include <ac_nonexistent.h>
4319 +_ACEOF
4320 +if { (ac_try="$ac_cpp conftest.$ac_ext"
4321 +case "(($ac_try" in
4322 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4323 +  *) ac_try_echo=$ac_try;;
4324 +esac
4325 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4326 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
4327 +  ac_status=$?
4328 +  grep -v '^ *+' conftest.er1 >conftest.err
4329 +  rm -f conftest.er1
4330 +  cat conftest.err >&5
4331 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4332 +  (exit $ac_status); } >/dev/null && {
4333 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
4334 +        test ! -s conftest.err
4335 +       }; then
4336 +  # Broken: success on invalid input.
4337 +continue
4338 +else
4339 +  echo "$as_me: failed program was:" >&5
4340 +sed 's/^/| /' conftest.$ac_ext >&5
4341 +
4342 +  # Passes both tests.
4343 +ac_preproc_ok=:
4344 +break
4345 +fi
4346 +
4347 +rm -f conftest.err conftest.$ac_ext
4348 +
4349 +done
4350 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4351 +rm -f conftest.err conftest.$ac_ext
4352 +if $ac_preproc_ok; then
4353 +  break
4354 +fi
4355 +
4356 +    done
4357 +    ac_cv_prog_CXXCPP=$CXXCPP
4358 +  
4359 +fi
4360 +  CXXCPP=$ac_cv_prog_CXXCPP
4361 +else
4362 +  ac_cv_prog_CXXCPP=$CXXCPP
4363 +fi
4364 +{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
4365 +echo "${ECHO_T}$CXXCPP" >&6; }
4366 +ac_preproc_ok=false
4367 +for ac_cxx_preproc_warn_flag in '' yes
4368 +do
4369 +  # Use a header file that comes with gcc, so configuring glibc
4370 +  # with a fresh cross-compiler works.
4371 +  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
4372 +  # <limits.h> exists even on freestanding compilers.
4373 +  # On the NeXT, cc -E runs the code through the compiler's parser,
4374 +  # not just through cpp. "Syntax error" is here to catch this case.
4375 +  cat >conftest.$ac_ext <<_ACEOF
4376 +/* confdefs.h.  */
4377 +_ACEOF
4378 +cat confdefs.h >>conftest.$ac_ext
4379 +cat >>conftest.$ac_ext <<_ACEOF
4380 +/* end confdefs.h.  */
4381 +@%:@ifdef __STDC__
4382 +@%:@ include <limits.h>
4383 +@%:@else
4384 +@%:@ include <assert.h>
4385 +@%:@endif
4386 +                    Syntax error
4387 +_ACEOF
4388 +if { (ac_try="$ac_cpp conftest.$ac_ext"
4389 +case "(($ac_try" in
4390 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4391 +  *) ac_try_echo=$ac_try;;
4392 +esac
4393 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4394 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
4395 +  ac_status=$?
4396 +  grep -v '^ *+' conftest.er1 >conftest.err
4397 +  rm -f conftest.er1
4398 +  cat conftest.err >&5
4399 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4400 +  (exit $ac_status); } >/dev/null && {
4401 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
4402 +        test ! -s conftest.err
4403 +       }; then
4404 +  :
4405 +else
4406 +  echo "$as_me: failed program was:" >&5
4407 +sed 's/^/| /' conftest.$ac_ext >&5
4408 +
4409 +  # Broken: fails on valid input.
4410 +continue
4411 +fi
4412 +
4413 +rm -f conftest.err conftest.$ac_ext
4414 +
4415 +  # OK, works on sane cases.  Now check whether nonexistent headers
4416 +  # can be detected and how.
4417 +  cat >conftest.$ac_ext <<_ACEOF
4418 +/* confdefs.h.  */
4419 +_ACEOF
4420 +cat confdefs.h >>conftest.$ac_ext
4421 +cat >>conftest.$ac_ext <<_ACEOF
4422 +/* end confdefs.h.  */
4423 +@%:@include <ac_nonexistent.h>
4424 +_ACEOF
4425 +if { (ac_try="$ac_cpp conftest.$ac_ext"
4426 +case "(($ac_try" in
4427 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
4428 +  *) ac_try_echo=$ac_try;;
4429 +esac
4430 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
4431 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
4432 +  ac_status=$?
4433 +  grep -v '^ *+' conftest.er1 >conftest.err
4434 +  rm -f conftest.er1
4435 +  cat conftest.err >&5
4436 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
4437 +  (exit $ac_status); } >/dev/null && {
4438 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
4439 +        test ! -s conftest.err
4440 +       }; then
4441 +  # Broken: success on invalid input.
4442 +continue
4443 +else
4444 +  echo "$as_me: failed program was:" >&5
4445 +sed 's/^/| /' conftest.$ac_ext >&5
4446 +
4447 +  # Passes both tests.
4448 +ac_preproc_ok=:
4449 +break
4450 +fi
4451 +
4452 +rm -f conftest.err conftest.$ac_ext
4453 +
4454 +done
4455 +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
4456 +rm -f conftest.err conftest.$ac_ext
4457 +if $ac_preproc_ok; then
4458 +  :
4459 +else
4460 +  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4461 +See \`config.log' for more details." >&5
4462 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
4463 +See \`config.log' for more details." >&2;}
4464 +   { (exit 1); exit 1; }; }
4465 +fi
4466 +
4467 +ac_ext=cpp
4468 +ac_cpp='$CXXCPP $CPPFLAGS'
4469 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
4470 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
4471 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
4472 +
4473 +
4474 +
4475 +    
4476 +    test -z "$ac_user_kernel_cc" && \
4477 +       KERNEL_CC="$ac_base_cc"
4478 +    test -z "$ac_user_kernel_cc" -a -n "$GCC" -a -n "$ac_compile_with_warnings" && \
4479 +       KERNEL_CC="$ac_base_cc -w $CXX_WARNINGS"
4480 +    
4481 +
4482 +
4483 +    
4484 +    test -z "$ac_user_kernel_cxx" && \
4485 +       KERNEL_CXX="$ac_base_cxx"
4486 +    test -z "$ac_user_kernel_cxx" -a -n "$GXX" -a -n "$ac_compile_with_warnings" && \
4487 +       KERNEL_CXX="$ac_base_cxx -w $CXX_WARNINGS -fno-exceptions -fno-rtti $VTABLE_THUNKS"
4488 +    
4489 +
4490 +
4491 +ac_preset_ar="$AR"
4492 +if test -n "$ac_tool_prefix"; then
4493 +  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
4494 +set dummy ${ac_tool_prefix}ar; ac_word=$2
4495 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4496 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4497 +if test "${ac_cv_prog_AR+set}" = set; then
4498 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4499 +else
4500 +  if test -n "$AR"; then
4501 +  ac_cv_prog_AR="$AR" # Let the user override the test.
4502 +else
4503 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4504 +for as_dir in $PATH
4505 +do
4506 +  IFS=$as_save_IFS
4507 +  test -z "$as_dir" && as_dir=.
4508 +  for ac_exec_ext in '' $ac_executable_extensions; do
4509 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4510 +    ac_cv_prog_AR="${ac_tool_prefix}ar"
4511 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4512 +    break 2
4513 +  fi
4514 +done
4515 +done
4516 +IFS=$as_save_IFS
4517 +
4518 +fi
4519 +fi
4520 +AR=$ac_cv_prog_AR
4521 +if test -n "$AR"; then
4522 +  { echo "$as_me:$LINENO: result: $AR" >&5
4523 +echo "${ECHO_T}$AR" >&6; }
4524 +else
4525 +  { echo "$as_me:$LINENO: result: no" >&5
4526 +echo "${ECHO_T}no" >&6; }
4527 +fi
4528 +
4529 +
4530 +fi
4531 +if test -z "$ac_cv_prog_AR"; then
4532 +  ac_ct_AR=$AR
4533 +  # Extract the first word of "ar", so it can be a program name with args.
4534 +set dummy ar; ac_word=$2
4535 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4536 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4537 +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
4538 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4539 +else
4540 +  if test -n "$ac_ct_AR"; then
4541 +  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
4542 +else
4543 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4544 +for as_dir in $PATH
4545 +do
4546 +  IFS=$as_save_IFS
4547 +  test -z "$as_dir" && as_dir=.
4548 +  for ac_exec_ext in '' $ac_executable_extensions; do
4549 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4550 +    ac_cv_prog_ac_ct_AR="ar"
4551 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4552 +    break 2
4553 +  fi
4554 +done
4555 +done
4556 +IFS=$as_save_IFS
4557 +
4558 +fi
4559 +fi
4560 +ac_ct_AR=$ac_cv_prog_ac_ct_AR
4561 +if test -n "$ac_ct_AR"; then
4562 +  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
4563 +echo "${ECHO_T}$ac_ct_AR" >&6; }
4564 +else
4565 +  { echo "$as_me:$LINENO: result: no" >&5
4566 +echo "${ECHO_T}no" >&6; }
4567 +fi
4568 +
4569 +  if test "x$ac_ct_AR" = x; then
4570 +    AR=""
4571 +  else
4572 +    case $cross_compiling:$ac_tool_warned in
4573 +yes:)
4574 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
4575 +whose name does not start with the host triplet.  If you think this
4576 +configuration is useful to you, please write to autoconf@gnu.org." >&5
4577 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4578 +whose name does not start with the host triplet.  If you think this
4579 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4580 +ac_tool_warned=yes ;;
4581 +esac
4582 +    AR=$ac_ct_AR
4583 +  fi
4584 +else
4585 +  AR="$ac_cv_prog_AR"
4586 +fi
4587 +
4588 +if test -n "$ac_tool_prefix"; then
4589 +  # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args.
4590 +set dummy ${ac_tool_prefix}ld; ac_word=$2
4591 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4592 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4593 +if test "${ac_cv_prog_LD+set}" = set; then
4594 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4595 +else
4596 +  if test -n "$LD"; then
4597 +  ac_cv_prog_LD="$LD" # Let the user override the test.
4598 +else
4599 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4600 +for as_dir in $PATH
4601 +do
4602 +  IFS=$as_save_IFS
4603 +  test -z "$as_dir" && as_dir=.
4604 +  for ac_exec_ext in '' $ac_executable_extensions; do
4605 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4606 +    ac_cv_prog_LD="${ac_tool_prefix}ld"
4607 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4608 +    break 2
4609 +  fi
4610 +done
4611 +done
4612 +IFS=$as_save_IFS
4613 +
4614 +fi
4615 +fi
4616 +LD=$ac_cv_prog_LD
4617 +if test -n "$LD"; then
4618 +  { echo "$as_me:$LINENO: result: $LD" >&5
4619 +echo "${ECHO_T}$LD" >&6; }
4620 +else
4621 +  { echo "$as_me:$LINENO: result: no" >&5
4622 +echo "${ECHO_T}no" >&6; }
4623 +fi
4624 +
4625 +
4626 +fi
4627 +if test -z "$ac_cv_prog_LD"; then
4628 +  ac_ct_LD=$LD
4629 +  # Extract the first word of "ld", so it can be a program name with args.
4630 +set dummy ld; ac_word=$2
4631 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4632 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4633 +if test "${ac_cv_prog_ac_ct_LD+set}" = set; then
4634 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4635 +else
4636 +  if test -n "$ac_ct_LD"; then
4637 +  ac_cv_prog_ac_ct_LD="$ac_ct_LD" # Let the user override the test.
4638 +else
4639 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4640 +for as_dir in $PATH
4641 +do
4642 +  IFS=$as_save_IFS
4643 +  test -z "$as_dir" && as_dir=.
4644 +  for ac_exec_ext in '' $ac_executable_extensions; do
4645 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4646 +    ac_cv_prog_ac_ct_LD="ld"
4647 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4648 +    break 2
4649 +  fi
4650 +done
4651 +done
4652 +IFS=$as_save_IFS
4653 +
4654 +fi
4655 +fi
4656 +ac_ct_LD=$ac_cv_prog_ac_ct_LD
4657 +if test -n "$ac_ct_LD"; then
4658 +  { echo "$as_me:$LINENO: result: $ac_ct_LD" >&5
4659 +echo "${ECHO_T}$ac_ct_LD" >&6; }
4660 +else
4661 +  { echo "$as_me:$LINENO: result: no" >&5
4662 +echo "${ECHO_T}no" >&6; }
4663 +fi
4664 +
4665 +  if test "x$ac_ct_LD" = x; then
4666 +    LD=""
4667 +  else
4668 +    case $cross_compiling:$ac_tool_warned in
4669 +yes:)
4670 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
4671 +whose name does not start with the host triplet.  If you think this
4672 +configuration is useful to you, please write to autoconf@gnu.org." >&5
4673 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4674 +whose name does not start with the host triplet.  If you think this
4675 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4676 +ac_tool_warned=yes ;;
4677 +esac
4678 +    LD=$ac_ct_LD
4679 +  fi
4680 +else
4681 +  LD="$ac_cv_prog_LD"
4682 +fi
4683 +
4684 +if test -n "$ac_tool_prefix"; then
4685 +  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
4686 +set dummy ${ac_tool_prefix}ranlib; ac_word=$2
4687 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4688 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4689 +if test "${ac_cv_prog_RANLIB+set}" = set; then
4690 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4691 +else
4692 +  if test -n "$RANLIB"; then
4693 +  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
4694 +else
4695 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4696 +for as_dir in $PATH
4697 +do
4698 +  IFS=$as_save_IFS
4699 +  test -z "$as_dir" && as_dir=.
4700 +  for ac_exec_ext in '' $ac_executable_extensions; do
4701 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4702 +    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
4703 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4704 +    break 2
4705 +  fi
4706 +done
4707 +done
4708 +IFS=$as_save_IFS
4709 +
4710 +fi
4711 +fi
4712 +RANLIB=$ac_cv_prog_RANLIB
4713 +if test -n "$RANLIB"; then
4714 +  { echo "$as_me:$LINENO: result: $RANLIB" >&5
4715 +echo "${ECHO_T}$RANLIB" >&6; }
4716 +else
4717 +  { echo "$as_me:$LINENO: result: no" >&5
4718 +echo "${ECHO_T}no" >&6; }
4719 +fi
4720 +
4721 +
4722 +fi
4723 +if test -z "$ac_cv_prog_RANLIB"; then
4724 +  ac_ct_RANLIB=$RANLIB
4725 +  # Extract the first word of "ranlib", so it can be a program name with args.
4726 +set dummy ranlib; ac_word=$2
4727 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4728 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4729 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
4730 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4731 +else
4732 +  if test -n "$ac_ct_RANLIB"; then
4733 +  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
4734 +else
4735 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4736 +for as_dir in $PATH
4737 +do
4738 +  IFS=$as_save_IFS
4739 +  test -z "$as_dir" && as_dir=.
4740 +  for ac_exec_ext in '' $ac_executable_extensions; do
4741 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4742 +    ac_cv_prog_ac_ct_RANLIB="ranlib"
4743 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4744 +    break 2
4745 +  fi
4746 +done
4747 +done
4748 +IFS=$as_save_IFS
4749 +
4750 +fi
4751 +fi
4752 +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
4753 +if test -n "$ac_ct_RANLIB"; then
4754 +  { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
4755 +echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
4756 +else
4757 +  { echo "$as_me:$LINENO: result: no" >&5
4758 +echo "${ECHO_T}no" >&6; }
4759 +fi
4760 +
4761 +  if test "x$ac_ct_RANLIB" = x; then
4762 +    RANLIB=":"
4763 +  else
4764 +    case $cross_compiling:$ac_tool_warned in
4765 +yes:)
4766 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
4767 +whose name does not start with the host triplet.  If you think this
4768 +configuration is useful to you, please write to autoconf@gnu.org." >&5
4769 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4770 +whose name does not start with the host triplet.  If you think this
4771 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4772 +ac_tool_warned=yes ;;
4773 +esac
4774 +    RANLIB=$ac_ct_RANLIB
4775 +  fi
4776 +else
4777 +  RANLIB="$ac_cv_prog_RANLIB"
4778 +fi
4779 +
4780 +if test -n "$ac_tool_prefix"; then
4781 +  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
4782 +set dummy ${ac_tool_prefix}strip; ac_word=$2
4783 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4784 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4785 +if test "${ac_cv_prog_STRIP+set}" = set; then
4786 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4787 +else
4788 +  if test -n "$STRIP"; then
4789 +  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
4790 +else
4791 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4792 +for as_dir in $PATH
4793 +do
4794 +  IFS=$as_save_IFS
4795 +  test -z "$as_dir" && as_dir=.
4796 +  for ac_exec_ext in '' $ac_executable_extensions; do
4797 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4798 +    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
4799 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4800 +    break 2
4801 +  fi
4802 +done
4803 +done
4804 +IFS=$as_save_IFS
4805 +
4806 +fi
4807 +fi
4808 +STRIP=$ac_cv_prog_STRIP
4809 +if test -n "$STRIP"; then
4810 +  { echo "$as_me:$LINENO: result: $STRIP" >&5
4811 +echo "${ECHO_T}$STRIP" >&6; }
4812 +else
4813 +  { echo "$as_me:$LINENO: result: no" >&5
4814 +echo "${ECHO_T}no" >&6; }
4815 +fi
4816 +
4817 +
4818 +fi
4819 +if test -z "$ac_cv_prog_STRIP"; then
4820 +  ac_ct_STRIP=$STRIP
4821 +  # Extract the first word of "strip", so it can be a program name with args.
4822 +set dummy strip; ac_word=$2
4823 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
4824 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
4825 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
4826 +  echo $ECHO_N "(cached) $ECHO_C" >&6
4827 +else
4828 +  if test -n "$ac_ct_STRIP"; then
4829 +  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
4830 +else
4831 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
4832 +for as_dir in $PATH
4833 +do
4834 +  IFS=$as_save_IFS
4835 +  test -z "$as_dir" && as_dir=.
4836 +  for ac_exec_ext in '' $ac_executable_extensions; do
4837 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
4838 +    ac_cv_prog_ac_ct_STRIP="strip"
4839 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
4840 +    break 2
4841 +  fi
4842 +done
4843 +done
4844 +IFS=$as_save_IFS
4845 +
4846 +fi
4847 +fi
4848 +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
4849 +if test -n "$ac_ct_STRIP"; then
4850 +  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
4851 +echo "${ECHO_T}$ac_ct_STRIP" >&6; }
4852 +else
4853 +  { echo "$as_me:$LINENO: result: no" >&5
4854 +echo "${ECHO_T}no" >&6; }
4855 +fi
4856 +
4857 +  if test "x$ac_ct_STRIP" = x; then
4858 +    STRIP=":"
4859 +  else
4860 +    case $cross_compiling:$ac_tool_warned in
4861 +yes:)
4862 +{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
4863 +whose name does not start with the host triplet.  If you think this
4864 +configuration is useful to you, please write to autoconf@gnu.org." >&5
4865 +echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
4866 +whose name does not start with the host triplet.  If you think this
4867 +configuration is useful to you, please write to autoconf@gnu.org." >&2;}
4868 +ac_tool_warned=yes ;;
4869 +esac
4870 +    STRIP=$ac_ct_STRIP
4871 +  fi
4872 +else
4873 +  STRIP="$ac_cv_prog_STRIP"
4874 +fi
4875 +
4876 +
4877 +conf_auxdir='$(top_srcdir)'
4878 +
4879 +
4880 +test -z "$AR_CREATEFLAGS" && AR_CREATEFLAGS=cru
4881 +
4882 +
4883 +
4884 +
4885 +
4886 +# Check whether --enable-userlevel was given.
4887 +if test "${enable_userlevel+set}" = set; then
4888 +  enableval=$enable_userlevel; :
4889 +else
4890 +  enable_userlevel=yes
4891 +fi
4892 +
4893 +
4894 +# Check whether --enable-user-multithread was given.
4895 +if test "${enable_user_multithread+set}" = set; then
4896 +  enableval=$enable_user_multithread; :
4897 +else
4898 +  enable_user_multithread=no
4899 +fi
4900 +
4901 +if test "x$enable_user_multithread" = xyes; then
4902 +    cat >>confdefs.h <<\_ACEOF
4903 +@%:@define HAVE_USER_MULTITHREAD 1
4904 +_ACEOF
4905 +
4906 +fi
4907 +
4908 +
4909 +
4910 +# Check whether --enable-linuxmodule was given.
4911 +if test "${enable_linuxmodule+set}" = set; then
4912 +  enableval=$enable_linuxmodule; :
4913 +else
4914 +  enable_linuxmodule=yes; enable_linuxmodule_default=yes
4915 +fi
4916 +
4917 +
4918 +# Check whether --enable-multithread was given.
4919 +if test "${enable_multithread+set}" = set; then
4920 +  enableval=$enable_multithread; :
4921 +else
4922 +  enable_multithread=no
4923 +fi
4924 +
4925 +
4926 +test "$enable_multithread" = yes && enable_multithread=4
4927 +test "$enable_multithread" = no && enable_multithread=1
4928 +if test "$enable_multithread" -gt 1; then
4929 +    cat >>confdefs.h <<_ACEOF
4930 +@%:@define NUM_CLICK_CPUS $enable_multithread
4931 +_ACEOF
4932 +
4933 +    cat >>confdefs.h <<_ACEOF
4934 +@%:@define __MTCLICK__ 1
4935 +_ACEOF
4936 +
4937 +    saveflags="$CPPFLAGS"
4938 +    CPPFLAGS="$saveflags -D__MTCLICK__"
4939 +else
4940 +    cat >>confdefs.h <<_ACEOF
4941 +@%:@define NUM_CLICK_CPUS 1
4942 +_ACEOF
4943 +
4944 +fi
4945 +
4946 +# Check whether --enable-warp9 was given.
4947 +if test "${enable_warp9+set}" = set; then
4948 +  enableval=$enable_warp9; :
4949 +else
4950 +  enable_warp9=no
4951 +fi
4952 +
4953 +if test "x$enable_warp9" = xyes; then
4954 +    cat >>confdefs.h <<\_ACEOF
4955 +@%:@define CLICK_WARP9 1
4956 +_ACEOF
4957 +
4958 +fi
4959 +
4960 +cat >>confdefs.h <<\_ACEOF
4961 +@%:@define HAVE_CLICKFS 1
4962 +_ACEOF
4963 +
4964 +
4965 +# Check whether --enable-kassert was given.
4966 +if test "${enable_kassert+set}" = set; then
4967 +  enableval=$enable_kassert; :
4968 +else
4969 +  enable_kassert=no
4970 +fi
4971 +
4972 +if test $enable_kassert = yes; then
4973 +    cat >>confdefs.h <<\_ACEOF
4974 +@%:@define HAVE_KERNEL_ASSERT 1
4975 +_ACEOF
4976 +
4977 +fi
4978 +
4979 +# Check whether --enable-adaptive was given.
4980 +if test "${enable_adaptive+set}" = set; then
4981 +  enableval=$enable_adaptive; :
4982 +else
4983 +  enable_adaptive=no
4984 +fi
4985 +
4986 +if test "x$enable_adaptive" = xyes; then
4987 +    cat >>confdefs.h <<\_ACEOF
4988 +@%:@define HAVE_ADAPTIVE_SCHEDULER 1
4989 +_ACEOF
4990 +
4991 +fi
4992 +
4993 +
4994 +
4995 +
4996 +# Check whether --enable-bsdmodule was given.
4997 +if test "${enable_bsdmodule+set}" = set; then
4998 +  enableval=$enable_bsdmodule; :
4999 +else
5000 +  enable_bsdmodule=no
5001 +fi
5002 +
5003 +
5004 +
5005 +# Check whether --enable-nsclick was given.
5006 +if test "${enable_nsclick+set}" = set; then
5007 +  enableval=$enable_nsclick; :
5008 +else
5009 +  enable_nsclick=no
5010 +fi
5011 +
5012 +
5013 +
5014 +
5015 +
5016 +# Check whether --with-linux was given.
5017 +if test "${with_linux+set}" = set; then
5018 +  withval=$with_linux; linuxdir=$withval
5019 +else
5020 +  linuxdir=NONE
5021 +fi
5022 +
5023 +test -z "$linuxdir" -o "$linuxdir" = yes && linuxdir=yes
5024 +
5025 +
5026 +# Check whether --with-linux-map was given.
5027 +if test "${with_linux_map+set}" = set; then
5028 +  withval=$with_linux_map; linux_system_map=$withval; if test -z "$withval" -o "$withval" = yes; then linux_system_map=NONE; fi
5029 +else
5030 +  linux_system_map=NONE
5031 +fi
5032 +
5033 +
5034 +linux_system_map_boot=no
5035 +
5036 +if test "x$linuxdir" = xNONE -o "x$linuxdir" = xyes; then
5037 +    if uname -r 2>/dev/null | grep '^2\.6' >/dev/null 2>&1; then
5038 +       linuxdir=/lib/modules/"`uname -r`"/build
5039 +       linux_system_map_boot="`uname -r`"
5040 +    else
5041 +       linuxdir=/usr/src/linux
5042 +    fi
5043 +    if test ! -d "$linuxdir" -a "x$enable_linuxmodule" = xyes; then
5044 +       if test "x$enable_linuxmodule_default" = xyes; then
5045 +           linuxdir=NONE; enable_linuxmodule=no
5046 +       else
5047 +           { { echo "$as_me:$LINENO: error: 
5048 +=========================================
5049 +
5050 +Can't find $linuxdir, so I can't compile the linuxmodule driver!
5051 +(You may need the --with-linux=DIR option.)
5052 +
5053 +=========================================" >&5
5054 +echo "$as_me: error: 
5055 +=========================================
5056 +
5057 +Can't find $linuxdir, so I can't compile the linuxmodule driver!
5058 +(You may need the --with-linux=DIR option.)
5059 +
5060 +=========================================" >&2;}
5061 +   { (exit 1); exit 1; }; }
5062 +       fi
5063 +    fi
5064 +fi
5065 +
5066 +if test "x$linuxdir" = xNONE -o "x$linuxdir" = xno -o "x$enable_linuxmodule" != xyes; then
5067 +    ac_have_linux_kernel=n
5068 +    linuxdir=NONE
5069 +elif expr "_$linuxdir" : '_[^/\\]' >/dev/null; then 
5070 +    { { echo "$as_me:$LINENO: error: 
5071 +=========================================
5072 +
5073 +The --with-linux directory $linuxdir is relative.
5074 +You must supply an absolute path starting with /.
5075 +
5076 +=========================================" >&5
5077 +echo "$as_me: error: 
5078 +=========================================
5079 +
5080 +The --with-linux directory $linuxdir is relative.
5081 +You must supply an absolute path starting with /.
5082 +
5083 +=========================================" >&2;}
5084 +   { (exit 1); exit 1; }; }
5085 +elif test -r $linuxdir/include/linux/skbuff.h; then
5086 +    ac_have_linux_kernel=y
5087 +else
5088 +    { { echo "$as_me:$LINENO: error: 
5089 +=========================================
5090 +
5091 +Can't find $linuxdir/include/linux/skbuff.h.
5092 +Are you sure $linuxdir contains Linux kernel source?
5093 +
5094 +=========================================" >&5
5095 +echo "$as_me: error: 
5096 +=========================================
5097 +
5098 +Can't find $linuxdir/include/linux/skbuff.h.
5099 +Are you sure $linuxdir contains Linux kernel source?
5100 +
5101 +=========================================" >&2;}
5102 +   { (exit 1); exit 1; }; }
5103 +fi
5104 +
5105 +cat >>confdefs.h <<_ACEOF
5106 +@%:@define LINUX_SRCDIR "${linuxdir}"
5107 +_ACEOF
5108 +
5109 +
5110 +
5111 +
5112 +
5113 +# Check whether --enable-all-elements was given.
5114 +if test "${enable_all_elements+set}" = set; then
5115 +  enableval=$enable_all_elements; 
5116 +fi
5117 +
5118 +
5119 +element_groups=""
5120 +
5121 +
5122 +
5123 +# Check whether --enable-analysis was given.
5124 +if test "${enable_analysis+set}" = set; then
5125 +  enableval=$enable_analysis; 
5126 +else
5127 +  enable_analysis=NO
5128 +fi
5129 +test "x$enable_all_elements" = xyes -a "x$enable_analysis" = xNO && enable_analysis=yes
5130 +if test "x$enable_analysis" = xyes; then
5131 +    :
5132 +    
5133 +fi
5134 +# Check whether --enable-app was given.
5135 +if test "${enable_app+set}" = set; then
5136 +  enableval=$enable_app; 
5137 +else
5138 +  enable_app=yes
5139 +fi
5140 +test "x$enable_all_elements" = xyes -a "x$enable_app" = xNO && enable_app=yes
5141 +if test "x$enable_app" = xyes; then
5142 +    :
5143 +    
5144 +fi
5145 +# Check whether --enable-aqm was given.
5146 +if test "${enable_aqm+set}" = set; then
5147 +  enableval=$enable_aqm; 
5148 +else
5149 +  enable_aqm=yes
5150 +fi
5151 +test "x$enable_all_elements" = xyes -a "x$enable_aqm" = xNO && enable_aqm=yes
5152 +if test "x$enable_aqm" = xyes; then
5153 +    :
5154 +    
5155 +fi
5156 +# Check whether --enable-ethernet was given.
5157 +if test "${enable_ethernet+set}" = set; then
5158 +  enableval=$enable_ethernet; 
5159 +else
5160 +  enable_ethernet=yes
5161 +fi
5162 +test "x$enable_all_elements" = xyes -a "x$enable_ethernet" = xNO && enable_ethernet=yes
5163 +if test "x$enable_ethernet" = xyes; then
5164 +    :
5165 +    
5166 +fi
5167 +# Check whether --enable-etherswitch was given.
5168 +if test "${enable_etherswitch+set}" = set; then
5169 +  enableval=$enable_etherswitch; 
5170 +else
5171 +  enable_etherswitch=NO
5172 +fi
5173 +test "x$enable_all_elements" = xyes -a "x$enable_etherswitch" = xNO && enable_etherswitch=yes
5174 +if test "x$enable_etherswitch" = xyes; then
5175 +    :
5176 +    
5177 +fi
5178 +# Check whether --enable-grid was given.
5179 +if test "${enable_grid+set}" = set; then
5180 +  enableval=$enable_grid; 
5181 +else
5182 +  enable_grid=NO
5183 +fi
5184 +test "x$enable_all_elements" = xyes -a "x$enable_grid" = xNO && enable_grid=yes
5185 +if test "x$enable_grid" = xyes; then
5186 +    :
5187 +    
5188 +fi
5189 +# Check whether --enable-icmp was given.
5190 +if test "${enable_icmp+set}" = set; then
5191 +  enableval=$enable_icmp; 
5192 +else
5193 +  enable_icmp=yes
5194 +fi
5195 +test "x$enable_all_elements" = xyes -a "x$enable_icmp" = xNO && enable_icmp=yes
5196 +if test "x$enable_icmp" = xyes; then
5197 +    :
5198 +    
5199 +fi
5200 +# Check whether --enable-ip was given.
5201 +if test "${enable_ip+set}" = set; then
5202 +  enableval=$enable_ip; 
5203 +else
5204 +  enable_ip=yes
5205 +fi
5206 +test "x$enable_all_elements" = xyes -a "x$enable_ip" = xNO && enable_ip=yes
5207 +if test "x$enable_ip" = xyes; then
5208 +    :
5209 +    
5210 +fi
5211 +# Check whether --enable-ip6 was given.
5212 +if test "${enable_ip6+set}" = set; then
5213 +  enableval=$enable_ip6; 
5214 +else
5215 +  enable_ip6=NO
5216 +fi
5217 +test "x$enable_all_elements" = xyes -a "x$enable_ip6" = xNO && enable_ip6=yes
5218 +if test "x$enable_ip6" = xyes; then
5219 +    :
5220 +    cat >>confdefs.h <<\_ACEOF
5221 +@%:@define HAVE_IP6 1
5222 +_ACEOF
5223 +
5224 +fi
5225 +# Check whether --enable-ipsec was given.
5226 +if test "${enable_ipsec+set}" = set; then
5227 +  enableval=$enable_ipsec; 
5228 +else
5229 +  enable_ipsec=NO
5230 +fi
5231 +test "x$enable_all_elements" = xyes -a "x$enable_ipsec" = xNO && enable_ipsec=yes
5232 +if test "x$enable_ipsec" = xyes; then
5233 +    :
5234 +    cat >>confdefs.h <<\_ACEOF
5235 +@%:@define HAVE_IPSEC 1
5236 +_ACEOF
5237 +
5238 +fi
5239 +# Check whether --enable-local was given.
5240 +if test "${enable_local+set}" = set; then
5241 +  enableval=$enable_local; 
5242 +else
5243 +  enable_local=NO
5244 +fi
5245 +test "x$enable_all_elements" = xyes -a "x$enable_local" = xNO && enable_local=yes
5246 +if test "x$enable_local" = xyes; then
5247 +    :
5248 +    
5249 +fi
5250 +# Check whether --enable-radio was given.
5251 +if test "${enable_radio+set}" = set; then
5252 +  enableval=$enable_radio; 
5253 +else
5254 +  enable_radio=NO
5255 +fi
5256 +test "x$enable_all_elements" = xyes -a "x$enable_radio" = xNO && enable_radio=yes
5257 +if test "x$enable_radio" = xyes; then
5258 +    :
5259 +    
5260 +fi
5261 +# Check whether --enable-simple was given.
5262 +if test "${enable_simple+set}" = set; then
5263 +  enableval=$enable_simple; 
5264 +else
5265 +  enable_simple=NO
5266 +fi
5267 +test "x$enable_all_elements" = xyes -a "x$enable_simple" = xNO && enable_simple=yes
5268 +if test "x$enable_simple" = xyes; then
5269 +    :
5270 +    
5271 +fi
5272 +# Check whether --enable-standard was given.
5273 +if test "${enable_standard+set}" = set; then
5274 +  enableval=$enable_standard; 
5275 +else
5276 +  enable_standard=yes
5277 +fi
5278 +test "x$enable_all_elements" = xyes -a "x$enable_standard" = xNO && enable_standard=yes
5279 +if test "x$enable_standard" = xyes; then
5280 +    :
5281 +    
5282 +fi
5283 +# Check whether --enable-tcpudp was given.
5284 +if test "${enable_tcpudp+set}" = set; then
5285 +  enableval=$enable_tcpudp; 
5286 +else
5287 +  enable_tcpudp=yes
5288 +fi
5289 +test "x$enable_all_elements" = xyes -a "x$enable_tcpudp" = xNO && enable_tcpudp=yes
5290 +if test "x$enable_tcpudp" = xyes; then
5291 +    :
5292 +    
5293 +fi
5294 +# Check whether --enable-test was given.
5295 +if test "${enable_test+set}" = set; then
5296 +  enableval=$enable_test; 
5297 +else
5298 +  enable_test=NO
5299 +fi
5300 +test "x$enable_all_elements" = xyes -a "x$enable_test" = xNO && enable_test=yes
5301 +if test "x$enable_test" = xyes; then
5302 +    :
5303 +    
5304 +fi
5305 +# Check whether --enable-wifi was given.
5306 +if test "${enable_wifi+set}" = set; then
5307 +  enableval=$enable_wifi; 
5308 +else
5309 +  enable_wifi=NO
5310 +fi
5311 +test "x$enable_all_elements" = xyes -a "x$enable_wifi" = xNO && enable_wifi=yes
5312 +if test "x$enable_wifi" = xyes; then
5313 +    :
5314 +    
5315 +fi
5316 +# Check whether --enable-experimental was given.
5317 +if test "${enable_experimental+set}" = set; then
5318 +  enableval=$enable_experimental; :
5319 +else
5320 +  enable_experimental=no
5321 +fi
5322 +
5323 +
5324 +for i in `(cd $srcdir/elements; ls | sed '/^CVS$/d;/^bsdmodule$/d;/^exopc$/d;/^linuxmodule$/d;/^ns$/d;/^userlevel$/d')`; do
5325 +    enableval=`eval 'echo $'"enable_$i"`
5326 +    test "x$enable_all_elements" = xyes -a "x$enableval" '!=' 'no' && enableval=yes
5327 +    test -d "$srcdir/elements/$i" -a "$enableval" = "yes" && element_groups="$element_groups $i"
5328 +done
5329 +
5330 +
5331 +
5332 +
5333 +
5334 +# Check whether --with-freebsd was given.
5335 +if test "${with_freebsd+set}" = set; then
5336 +  withval=$with_freebsd; freebsddir=$withval; if test -z "$withval" -o "$withval" = yes; then freebsddir=/usr/src/sys,/usr/include; fi
5337 +else
5338 +  freebsddir=NONE
5339 +fi
5340 +
5341 +
5342 +if test "x$freebsddir" = xNONE; then
5343 +  if test -d /usr/src/sys -a -d /usr/include; then
5344 +    freebsddir=/usr/src/sys,/usr/include
5345 +  elif test "x$enable_bsdmodule" = xyes; then
5346 +    { echo "$as_me:$LINENO: WARNING: 
5347 +=========================================
5348 +
5349 +Can't find /usr/src/sys and/or /usr/include, so I'm not compiling
5350 +the bsdmodule driver.  (You may need the --with-freebsd=DIR option.)
5351 +
5352 +=========================================" >&5
5353 +echo "$as_me: WARNING: 
5354 +=========================================
5355 +
5356 +Can't find /usr/src/sys and/or /usr/include, so I'm not compiling
5357 +the bsdmodule driver.  (You may need the --with-freebsd=DIR option.)
5358 +
5359 +=========================================" >&2;}
5360 +  fi
5361 +fi
5362 +
5363 +freebsd_srcdir=`echo "$freebsddir," | sed -e 's/,.*//'`
5364 +freebsd_includedir=`echo "$freebsddir,/usr/include," | sed -e 's/^[^,]*,\([^,]*\),.*$/\1/'`
5365 +
5366 +if test "x$freebsddir" = xNONE -o "x$freebsddir" = xno -o "x$enable_bsdmodule" != xyes; then
5367 +  ac_have_bsd_kernel=n
5368 +  freebsddir=NONE
5369 +elif expr '(' "_$freebsd_includedir" : '_[^/\\]' ')' '|' '(' "_$freebsd_srcdir" : '_[^/\\]' ')'; then 
5370 +  { { echo "$as_me:$LINENO: error: 
5371 +=========================================
5372 +
5373 +The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir
5374 +are relative.  You must supply absolute paths starting with /.
5375 +
5376 +=========================================" >&5
5377 +echo "$as_me: error: 
5378 +=========================================
5379 +
5380 +The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir
5381 +are relative.  You must supply absolute paths starting with /.
5382 +
5383 +=========================================" >&2;}
5384 +   { (exit 1); exit 1; }; }
5385 +elif test -r $freebsd_includedir/net/if_var.h -a -r $freebsd_srcdir/kern/vnode_if.src; then
5386 +  ac_have_bsd_kernel=y
5387 +else
5388 +  { { echo "$as_me:$LINENO: error: 
5389 +=========================================
5390 +
5391 +Can't find $freebsd_includedir/net/if_var.h and/or
5392 +$freebsd_srcdir/kern/vnode_if.src.  Are you sure $freebsd_srcdir
5393 +and $freebsd_includedir contain FreeBSD kernel source?
5394 +
5395 +=========================================" >&5
5396 +echo "$as_me: error: 
5397 +=========================================
5398 +
5399 +Can't find $freebsd_includedir/net/if_var.h and/or
5400 +$freebsd_srcdir/kern/vnode_if.src.  Are you sure $freebsd_srcdir
5401 +and $freebsd_includedir contain FreeBSD kernel source?
5402 +
5403 +=========================================" >&2;}
5404 +   { (exit 1); exit 1; }; }
5405 +fi
5406 +
5407 +
5408 +
5409 +cat >>confdefs.h <<_ACEOF
5410 +@%:@define FREEBSD_INCLUDEDIR "${freebsd_includedir}"
5411 +_ACEOF
5412 +
5413 +
5414 +
5415 +
5416 +{ echo "$as_me:$LINENO: checking whether we are compiling for Linux" >&5
5417 +echo $ECHO_N "checking whether we are compiling for Linux... $ECHO_C" >&6; }
5418 +if test "${ac_cv_under_linux+set}" = set; then
5419 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5420 +else
5421 +  cat >conftest.$ac_ext <<_ACEOF
5422 +/* confdefs.h.  */
5423 +_ACEOF
5424 +cat confdefs.h >>conftest.$ac_ext
5425 +cat >>conftest.$ac_ext <<_ACEOF
5426 +/* end confdefs.h.  */
5427 +
5428 +int
5429 +main ()
5430 +{
5431 +#ifndef __linux__
5432 +#error "fuckers! fuckers!"
5433 +#endif
5434 +return 0;
5435 +  ;
5436 +  return 0;
5437 +}
5438 +_ACEOF
5439 +rm -f conftest.$ac_objext
5440 +if { (ac_try="$ac_compile"
5441 +case "(($ac_try" in
5442 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5443 +  *) ac_try_echo=$ac_try;;
5444 +esac
5445 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5446 +  (eval "$ac_compile") 2>conftest.er1
5447 +  ac_status=$?
5448 +  grep -v '^ *+' conftest.er1 >conftest.err
5449 +  rm -f conftest.er1
5450 +  cat conftest.err >&5
5451 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5452 +  (exit $ac_status); } && {
5453 +        test -z "$ac_cxx_werror_flag" ||
5454 +        test ! -s conftest.err
5455 +       } && test -s conftest.$ac_objext; then
5456 +  ac_cv_under_linux=yes
5457 +else
5458 +  echo "$as_me: failed program was:" >&5
5459 +sed 's/^/| /' conftest.$ac_ext >&5
5460 +
5461 +       ac_cv_under_linux=no
5462 +fi
5463 +
5464 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5465 +fi
5466 +{ echo "$as_me:$LINENO: result: $ac_cv_under_linux" >&5
5467 +echo "${ECHO_T}$ac_cv_under_linux" >&6; }
5468 +
5469 +
5470 +
5471 +ac_ext=c
5472 +ac_cpp='$CPP $CPPFLAGS'
5473 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5474 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5475 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
5476 +
5477 +
5478 +for ac_func in strerror
5479 +do
5480 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
5481 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
5482 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
5483 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
5484 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5485 +else
5486 +  cat >conftest.$ac_ext <<_ACEOF
5487 +/* confdefs.h.  */
5488 +_ACEOF
5489 +cat confdefs.h >>conftest.$ac_ext
5490 +cat >>conftest.$ac_ext <<_ACEOF
5491 +/* end confdefs.h.  */
5492 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
5493 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
5494 +#define $ac_func innocuous_$ac_func
5495 +
5496 +/* System header to define __stub macros and hopefully few prototypes,
5497 +    which can conflict with char $ac_func (); below.
5498 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
5499 +    <limits.h> exists even on freestanding compilers.  */
5500 +
5501 +#ifdef __STDC__
5502 +# include <limits.h>
5503 +#else
5504 +# include <assert.h>
5505 +#endif
5506 +
5507 +#undef $ac_func
5508 +
5509 +/* Override any GCC internal prototype to avoid an error.
5510 +   Use char because int might match the return type of a GCC
5511 +   builtin and then its argument prototype would still apply.  */
5512 +#ifdef __cplusplus
5513 +extern "C"
5514 +#endif
5515 +char $ac_func ();
5516 +/* The GNU C library defines this for functions which it implements
5517 +    to always fail with ENOSYS.  Some functions are actually named
5518 +    something starting with __ and the normal name is an alias.  */
5519 +#if defined __stub_$ac_func || defined __stub___$ac_func
5520 +choke me
5521 +#endif
5522 +
5523 +int
5524 +main ()
5525 +{
5526 +return $ac_func ();
5527 +  ;
5528 +  return 0;
5529 +}
5530 +_ACEOF
5531 +rm -f conftest.$ac_objext conftest$ac_exeext
5532 +if { (ac_try="$ac_link"
5533 +case "(($ac_try" in
5534 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5535 +  *) ac_try_echo=$ac_try;;
5536 +esac
5537 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5538 +  (eval "$ac_link") 2>conftest.er1
5539 +  ac_status=$?
5540 +  grep -v '^ *+' conftest.er1 >conftest.err
5541 +  rm -f conftest.er1
5542 +  cat conftest.err >&5
5543 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5544 +  (exit $ac_status); } && {
5545 +        test -z "$ac_c_werror_flag" ||
5546 +        test ! -s conftest.err
5547 +       } && test -s conftest$ac_exeext &&
5548 +       $as_test_x conftest$ac_exeext; then
5549 +  eval "$as_ac_var=yes"
5550 +else
5551 +  echo "$as_me: failed program was:" >&5
5552 +sed 's/^/| /' conftest.$ac_ext >&5
5553 +
5554 +       eval "$as_ac_var=no"
5555 +fi
5556 +
5557 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
5558 +      conftest$ac_exeext conftest.$ac_ext
5559 +fi
5560 +ac_res=`eval echo '${'$as_ac_var'}'`
5561 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
5562 +echo "${ECHO_T}$ac_res" >&6; }
5563 +if test `eval echo '${'$as_ac_var'}'` = yes; then
5564 +  cat >>confdefs.h <<_ACEOF
5565 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
5566 +_ACEOF
5567
5568 +else
5569 +  case " $LIB@&t@OBJS " in
5570 +  *" $ac_func.$ac_objext "* ) ;;
5571 +  *) LIB@&t@OBJS="$LIB@&t@OBJS $ac_func.$ac_objext"
5572 + ;;
5573 +esac
5574 +
5575 +fi
5576 +done
5577 +
5578 +
5579 +
5580 +
5581 +
5582 +
5583 +for ac_func in snprintf strtoul tcgetpgrp vsnprintf
5584 +do
5585 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
5586 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
5587 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
5588 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
5589 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5590 +else
5591 +  cat >conftest.$ac_ext <<_ACEOF
5592 +/* confdefs.h.  */
5593 +_ACEOF
5594 +cat confdefs.h >>conftest.$ac_ext
5595 +cat >>conftest.$ac_ext <<_ACEOF
5596 +/* end confdefs.h.  */
5597 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
5598 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
5599 +#define $ac_func innocuous_$ac_func
5600 +
5601 +/* System header to define __stub macros and hopefully few prototypes,
5602 +    which can conflict with char $ac_func (); below.
5603 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
5604 +    <limits.h> exists even on freestanding compilers.  */
5605 +
5606 +#ifdef __STDC__
5607 +# include <limits.h>
5608 +#else
5609 +# include <assert.h>
5610 +#endif
5611 +
5612 +#undef $ac_func
5613 +
5614 +/* Override any GCC internal prototype to avoid an error.
5615 +   Use char because int might match the return type of a GCC
5616 +   builtin and then its argument prototype would still apply.  */
5617 +#ifdef __cplusplus
5618 +extern "C"
5619 +#endif
5620 +char $ac_func ();
5621 +/* The GNU C library defines this for functions which it implements
5622 +    to always fail with ENOSYS.  Some functions are actually named
5623 +    something starting with __ and the normal name is an alias.  */
5624 +#if defined __stub_$ac_func || defined __stub___$ac_func
5625 +choke me
5626 +#endif
5627 +
5628 +int
5629 +main ()
5630 +{
5631 +return $ac_func ();
5632 +  ;
5633 +  return 0;
5634 +}
5635 +_ACEOF
5636 +rm -f conftest.$ac_objext conftest$ac_exeext
5637 +if { (ac_try="$ac_link"
5638 +case "(($ac_try" in
5639 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5640 +  *) ac_try_echo=$ac_try;;
5641 +esac
5642 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5643 +  (eval "$ac_link") 2>conftest.er1
5644 +  ac_status=$?
5645 +  grep -v '^ *+' conftest.er1 >conftest.err
5646 +  rm -f conftest.er1
5647 +  cat conftest.err >&5
5648 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5649 +  (exit $ac_status); } && {
5650 +        test -z "$ac_c_werror_flag" ||
5651 +        test ! -s conftest.err
5652 +       } && test -s conftest$ac_exeext &&
5653 +       $as_test_x conftest$ac_exeext; then
5654 +  eval "$as_ac_var=yes"
5655 +else
5656 +  echo "$as_me: failed program was:" >&5
5657 +sed 's/^/| /' conftest.$ac_ext >&5
5658 +
5659 +       eval "$as_ac_var=no"
5660 +fi
5661 +
5662 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
5663 +      conftest$ac_exeext conftest.$ac_ext
5664 +fi
5665 +ac_res=`eval echo '${'$as_ac_var'}'`
5666 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
5667 +echo "${ECHO_T}$ac_res" >&6; }
5668 +if test `eval echo '${'$as_ac_var'}'` = yes; then
5669 +  cat >>confdefs.h <<_ACEOF
5670 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
5671 +_ACEOF
5672
5673 +fi
5674 +done
5675 +
5676 +ac_ext=cpp
5677 +ac_cpp='$CXXCPP $CPPFLAGS'
5678 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
5679 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
5680 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
5681 +
5682 +
5683 +
5684 +
5685 +# Check whether --enable-int64 was given.
5686 +if test "${enable_int64+set}" = set; then
5687 +  enableval=$enable_int64; :
5688 +else
5689 +  enable_int64=yes
5690 +fi
5691 +
5692 +
5693 +
5694 +{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
5695 +echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
5696 +if test "${ac_cv_path_GREP+set}" = set; then
5697 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5698 +else
5699 +  # Extract the first word of "grep ggrep" to use in msg output
5700 +if test -z "$GREP"; then
5701 +set dummy grep ggrep; ac_prog_name=$2
5702 +if test "${ac_cv_path_GREP+set}" = set; then
5703 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5704 +else
5705 +  ac_path_GREP_found=false
5706 +# Loop through the user's path and test for each of PROGNAME-LIST
5707 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5708 +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
5709 +do
5710 +  IFS=$as_save_IFS
5711 +  test -z "$as_dir" && as_dir=.
5712 +  for ac_prog in grep ggrep; do
5713 +  for ac_exec_ext in '' $ac_executable_extensions; do
5714 +    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
5715 +    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
5716 +    # Check for GNU ac_path_GREP and select it if it is found.
5717 +  # Check for GNU $ac_path_GREP
5718 +case `"$ac_path_GREP" --version 2>&1` in
5719 +*GNU*)
5720 +  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
5721 +*)
5722 +  ac_count=0
5723 +  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
5724 +  while :
5725 +  do
5726 +    cat "conftest.in" "conftest.in" >"conftest.tmp"
5727 +    mv "conftest.tmp" "conftest.in"
5728 +    cp "conftest.in" "conftest.nl"
5729 +    echo 'GREP' >> "conftest.nl"
5730 +    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
5731 +    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
5732 +    ac_count=`expr $ac_count + 1`
5733 +    if test $ac_count -gt ${ac_path_GREP_max-0}; then
5734 +      # Best one so far, save it but keep looking for a better one
5735 +      ac_cv_path_GREP="$ac_path_GREP"
5736 +      ac_path_GREP_max=$ac_count
5737 +    fi
5738 +    # 10*(2^10) chars as input seems more than enough
5739 +    test $ac_count -gt 10 && break
5740 +  done
5741 +  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
5742 +esac
5743 +
5744 +
5745 +    $ac_path_GREP_found && break 3
5746 +  done
5747 +done
5748 +
5749 +done
5750 +IFS=$as_save_IFS
5751 +
5752 +
5753 +fi
5754 +
5755 +GREP="$ac_cv_path_GREP"
5756 +if test -z "$GREP"; then
5757 +  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
5758 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
5759 +   { (exit 1); exit 1; }; }
5760 +fi
5761 +
5762 +else
5763 +  ac_cv_path_GREP=$GREP
5764 +fi
5765 +
5766 +
5767 +fi
5768 +{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
5769 +echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
5770 + GREP="$ac_cv_path_GREP"
5771
5772 +
5773 +{ echo "$as_me:$LINENO: checking for egrep" >&5
5774 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
5775 +if test "${ac_cv_path_EGREP+set}" = set; then
5776 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5777 +else
5778 +  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
5779 +   then ac_cv_path_EGREP="$GREP -E"
5780 +   else
5781 +     # Extract the first word of "egrep" to use in msg output
5782 +if test -z "$EGREP"; then
5783 +set dummy egrep; ac_prog_name=$2
5784 +if test "${ac_cv_path_EGREP+set}" = set; then
5785 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5786 +else
5787 +  ac_path_EGREP_found=false
5788 +# Loop through the user's path and test for each of PROGNAME-LIST
5789 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
5790 +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
5791 +do
5792 +  IFS=$as_save_IFS
5793 +  test -z "$as_dir" && as_dir=.
5794 +  for ac_prog in egrep; do
5795 +  for ac_exec_ext in '' $ac_executable_extensions; do
5796 +    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
5797 +    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
5798 +    # Check for GNU ac_path_EGREP and select it if it is found.
5799 +  # Check for GNU $ac_path_EGREP
5800 +case `"$ac_path_EGREP" --version 2>&1` in
5801 +*GNU*)
5802 +  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
5803 +*)
5804 +  ac_count=0
5805 +  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
5806 +  while :
5807 +  do
5808 +    cat "conftest.in" "conftest.in" >"conftest.tmp"
5809 +    mv "conftest.tmp" "conftest.in"
5810 +    cp "conftest.in" "conftest.nl"
5811 +    echo 'EGREP' >> "conftest.nl"
5812 +    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
5813 +    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
5814 +    ac_count=`expr $ac_count + 1`
5815 +    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
5816 +      # Best one so far, save it but keep looking for a better one
5817 +      ac_cv_path_EGREP="$ac_path_EGREP"
5818 +      ac_path_EGREP_max=$ac_count
5819 +    fi
5820 +    # 10*(2^10) chars as input seems more than enough
5821 +    test $ac_count -gt 10 && break
5822 +  done
5823 +  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
5824 +esac
5825 +
5826 +
5827 +    $ac_path_EGREP_found && break 3
5828 +  done
5829 +done
5830 +
5831 +done
5832 +IFS=$as_save_IFS
5833 +
5834 +
5835 +fi
5836 +
5837 +EGREP="$ac_cv_path_EGREP"
5838 +if test -z "$EGREP"; then
5839 +  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
5840 +echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
5841 +   { (exit 1); exit 1; }; }
5842 +fi
5843 +
5844 +else
5845 +  ac_cv_path_EGREP=$EGREP
5846 +fi
5847 +
5848 +
5849 +   fi
5850 +fi
5851 +{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
5852 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
5853 + EGREP="$ac_cv_path_EGREP"
5854
5855 +
5856 +{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
5857 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
5858 +if test "${ac_cv_header_stdc+set}" = set; then
5859 +  echo $ECHO_N "(cached) $ECHO_C" >&6
5860 +else
5861 +  cat >conftest.$ac_ext <<_ACEOF
5862 +/* confdefs.h.  */
5863 +_ACEOF
5864 +cat confdefs.h >>conftest.$ac_ext
5865 +cat >>conftest.$ac_ext <<_ACEOF
5866 +/* end confdefs.h.  */
5867 +#include <stdlib.h>
5868 +#include <stdarg.h>
5869 +#include <string.h>
5870 +#include <float.h>
5871 +
5872 +int
5873 +main ()
5874 +{
5875 +
5876 +  ;
5877 +  return 0;
5878 +}
5879 +_ACEOF
5880 +rm -f conftest.$ac_objext
5881 +if { (ac_try="$ac_compile"
5882 +case "(($ac_try" in
5883 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5884 +  *) ac_try_echo=$ac_try;;
5885 +esac
5886 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5887 +  (eval "$ac_compile") 2>conftest.er1
5888 +  ac_status=$?
5889 +  grep -v '^ *+' conftest.er1 >conftest.err
5890 +  rm -f conftest.er1
5891 +  cat conftest.err >&5
5892 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5893 +  (exit $ac_status); } && {
5894 +        test -z "$ac_cxx_werror_flag" ||
5895 +        test ! -s conftest.err
5896 +       } && test -s conftest.$ac_objext; then
5897 +  ac_cv_header_stdc=yes
5898 +else
5899 +  echo "$as_me: failed program was:" >&5
5900 +sed 's/^/| /' conftest.$ac_ext >&5
5901 +
5902 +       ac_cv_header_stdc=no
5903 +fi
5904 +
5905 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
5906 +
5907 +if test $ac_cv_header_stdc = yes; then
5908 +  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
5909 +  cat >conftest.$ac_ext <<_ACEOF
5910 +/* confdefs.h.  */
5911 +_ACEOF
5912 +cat confdefs.h >>conftest.$ac_ext
5913 +cat >>conftest.$ac_ext <<_ACEOF
5914 +/* end confdefs.h.  */
5915 +#include <string.h>
5916 +
5917 +_ACEOF
5918 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5919 +  $EGREP "memchr" >/dev/null 2>&1; then
5920 +  :
5921 +else
5922 +  ac_cv_header_stdc=no
5923 +fi
5924 +rm -f conftest*
5925 +
5926 +fi
5927 +
5928 +if test $ac_cv_header_stdc = yes; then
5929 +  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
5930 +  cat >conftest.$ac_ext <<_ACEOF
5931 +/* confdefs.h.  */
5932 +_ACEOF
5933 +cat confdefs.h >>conftest.$ac_ext
5934 +cat >>conftest.$ac_ext <<_ACEOF
5935 +/* end confdefs.h.  */
5936 +#include <stdlib.h>
5937 +
5938 +_ACEOF
5939 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
5940 +  $EGREP "free" >/dev/null 2>&1; then
5941 +  :
5942 +else
5943 +  ac_cv_header_stdc=no
5944 +fi
5945 +rm -f conftest*
5946 +
5947 +fi
5948 +
5949 +if test $ac_cv_header_stdc = yes; then
5950 +  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
5951 +  if test "$cross_compiling" = yes; then
5952 +  :
5953 +else
5954 +  cat >conftest.$ac_ext <<_ACEOF
5955 +/* confdefs.h.  */
5956 +_ACEOF
5957 +cat confdefs.h >>conftest.$ac_ext
5958 +cat >>conftest.$ac_ext <<_ACEOF
5959 +/* end confdefs.h.  */
5960 +#include <ctype.h>
5961 +#include <stdlib.h>
5962 +#if ((' ' & 0x0FF) == 0x020)
5963 +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
5964 +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
5965 +#else
5966 +# define ISLOWER(c) \
5967 +                  (('a' <= (c) && (c) <= 'i') \
5968 +                    || ('j' <= (c) && (c) <= 'r') \
5969 +                    || ('s' <= (c) && (c) <= 'z'))
5970 +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
5971 +#endif
5972 +
5973 +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
5974 +int
5975 +main ()
5976 +{
5977 +  int i;
5978 +  for (i = 0; i < 256; i++)
5979 +    if (XOR (islower (i), ISLOWER (i))
5980 +       || toupper (i) != TOUPPER (i))
5981 +      return 2;
5982 +  return 0;
5983 +}
5984 +_ACEOF
5985 +rm -f conftest$ac_exeext
5986 +if { (ac_try="$ac_link"
5987 +case "(($ac_try" in
5988 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5989 +  *) ac_try_echo=$ac_try;;
5990 +esac
5991 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
5992 +  (eval "$ac_link") 2>&5
5993 +  ac_status=$?
5994 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
5995 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
5996 +  { (case "(($ac_try" in
5997 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
5998 +  *) ac_try_echo=$ac_try;;
5999 +esac
6000 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6001 +  (eval "$ac_try") 2>&5
6002 +  ac_status=$?
6003 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6004 +  (exit $ac_status); }; }; then
6005 +  :
6006 +else
6007 +  echo "$as_me: program exited with status $ac_status" >&5
6008 +echo "$as_me: failed program was:" >&5
6009 +sed 's/^/| /' conftest.$ac_ext >&5
6010 +
6011 +( exit $ac_status )
6012 +ac_cv_header_stdc=no
6013 +fi
6014 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
6015 +fi
6016 +
6017 +
6018 +fi
6019 +fi
6020 +{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
6021 +echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
6022 +if test $ac_cv_header_stdc = yes; then
6023 +  
6024 +cat >>confdefs.h <<\_ACEOF
6025 +@%:@define STDC_HEADERS 1
6026 +_ACEOF
6027 +
6028 +fi
6029 +
6030 +# On IRIX 5.3, sys/types and inttypes.h are conflicting.
6031 +
6032 +
6033 +
6034 +
6035 +
6036 +
6037 +
6038 +
6039 +
6040 +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
6041 +                 inttypes.h stdint.h unistd.h
6042 +do
6043 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
6044 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
6045 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
6046 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
6047 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6048 +else
6049 +  cat >conftest.$ac_ext <<_ACEOF
6050 +/* confdefs.h.  */
6051 +_ACEOF
6052 +cat confdefs.h >>conftest.$ac_ext
6053 +cat >>conftest.$ac_ext <<_ACEOF
6054 +/* end confdefs.h.  */
6055 +$ac_includes_default
6056 +
6057 +@%:@include <$ac_header>
6058 +_ACEOF
6059 +rm -f conftest.$ac_objext
6060 +if { (ac_try="$ac_compile"
6061 +case "(($ac_try" in
6062 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6063 +  *) ac_try_echo=$ac_try;;
6064 +esac
6065 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6066 +  (eval "$ac_compile") 2>conftest.er1
6067 +  ac_status=$?
6068 +  grep -v '^ *+' conftest.er1 >conftest.err
6069 +  rm -f conftest.er1
6070 +  cat conftest.err >&5
6071 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6072 +  (exit $ac_status); } && {
6073 +        test -z "$ac_cxx_werror_flag" ||
6074 +        test ! -s conftest.err
6075 +       } && test -s conftest.$ac_objext; then
6076 +  eval "$as_ac_Header=yes"
6077 +else
6078 +  echo "$as_me: failed program was:" >&5
6079 +sed 's/^/| /' conftest.$ac_ext >&5
6080 +
6081 +       eval "$as_ac_Header=no"
6082 +fi
6083 +
6084 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6085 +fi
6086 +ac_res=`eval echo '${'$as_ac_Header'}'`
6087 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
6088 +echo "${ECHO_T}$ac_res" >&6; }
6089 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
6090 +  cat >>confdefs.h <<_ACEOF
6091 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
6092 +_ACEOF
6093
6094 +fi
6095 +
6096 +done
6097 +
6098 +
6099 +{ echo "$as_me:$LINENO: checking for int" >&5
6100 +echo $ECHO_N "checking for int... $ECHO_C" >&6; }
6101 +if test "${ac_cv_type_int+set}" = set; then
6102 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6103 +else
6104 +  cat >conftest.$ac_ext <<_ACEOF
6105 +/* confdefs.h.  */
6106 +_ACEOF
6107 +cat confdefs.h >>conftest.$ac_ext
6108 +cat >>conftest.$ac_ext <<_ACEOF
6109 +/* end confdefs.h.  */
6110 +$ac_includes_default
6111 +typedef int ac__type_new_;
6112 +int
6113 +main ()
6114 +{
6115 +if ((ac__type_new_ *) 0)
6116 +  return 0;
6117 +if (sizeof (ac__type_new_))
6118 +  return 0;
6119 +  ;
6120 +  return 0;
6121 +}
6122 +_ACEOF
6123 +rm -f conftest.$ac_objext
6124 +if { (ac_try="$ac_compile"
6125 +case "(($ac_try" in
6126 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6127 +  *) ac_try_echo=$ac_try;;
6128 +esac
6129 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6130 +  (eval "$ac_compile") 2>conftest.er1
6131 +  ac_status=$?
6132 +  grep -v '^ *+' conftest.er1 >conftest.err
6133 +  rm -f conftest.er1
6134 +  cat conftest.err >&5
6135 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6136 +  (exit $ac_status); } && {
6137 +        test -z "$ac_cxx_werror_flag" ||
6138 +        test ! -s conftest.err
6139 +       } && test -s conftest.$ac_objext; then
6140 +  ac_cv_type_int=yes
6141 +else
6142 +  echo "$as_me: failed program was:" >&5
6143 +sed 's/^/| /' conftest.$ac_ext >&5
6144 +
6145 +       ac_cv_type_int=no
6146 +fi
6147 +
6148 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6149 +fi
6150 +{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
6151 +echo "${ECHO_T}$ac_cv_type_int" >&6; }
6152 +
6153 +# The cast to long int works around a bug in the HP C Compiler
6154 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
6155 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
6156 +# This bug is HP SR number 8606223364.
6157 +{ echo "$as_me:$LINENO: checking size of int" >&5
6158 +echo $ECHO_N "checking size of int... $ECHO_C" >&6; }
6159 +if test "${ac_cv_sizeof_int+set}" = set; then
6160 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6161 +else
6162 +  if test "$cross_compiling" = yes; then
6163 +  # Depending upon the size, compute the lo and hi bounds.
6164 +cat >conftest.$ac_ext <<_ACEOF
6165 +/* confdefs.h.  */
6166 +_ACEOF
6167 +cat confdefs.h >>conftest.$ac_ext
6168 +cat >>conftest.$ac_ext <<_ACEOF
6169 +/* end confdefs.h.  */
6170 +$ac_includes_default
6171 +   typedef int ac__type_sizeof_;
6172 +int
6173 +main ()
6174 +{
6175 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
6176 +test_array @<:@0@:>@ = 0
6177 +
6178 +  ;
6179 +  return 0;
6180 +}
6181 +_ACEOF
6182 +rm -f conftest.$ac_objext
6183 +if { (ac_try="$ac_compile"
6184 +case "(($ac_try" in
6185 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6186 +  *) ac_try_echo=$ac_try;;
6187 +esac
6188 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6189 +  (eval "$ac_compile") 2>conftest.er1
6190 +  ac_status=$?
6191 +  grep -v '^ *+' conftest.er1 >conftest.err
6192 +  rm -f conftest.er1
6193 +  cat conftest.err >&5
6194 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6195 +  (exit $ac_status); } && {
6196 +        test -z "$ac_cxx_werror_flag" ||
6197 +        test ! -s conftest.err
6198 +       } && test -s conftest.$ac_objext; then
6199 +  ac_lo=0 ac_mid=0
6200 +  while :; do
6201 +    cat >conftest.$ac_ext <<_ACEOF
6202 +/* confdefs.h.  */
6203 +_ACEOF
6204 +cat confdefs.h >>conftest.$ac_ext
6205 +cat >>conftest.$ac_ext <<_ACEOF
6206 +/* end confdefs.h.  */
6207 +$ac_includes_default
6208 +   typedef int ac__type_sizeof_;
6209 +int
6210 +main ()
6211 +{
6212 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
6213 +test_array @<:@0@:>@ = 0
6214 +
6215 +  ;
6216 +  return 0;
6217 +}
6218 +_ACEOF
6219 +rm -f conftest.$ac_objext
6220 +if { (ac_try="$ac_compile"
6221 +case "(($ac_try" in
6222 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6223 +  *) ac_try_echo=$ac_try;;
6224 +esac
6225 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6226 +  (eval "$ac_compile") 2>conftest.er1
6227 +  ac_status=$?
6228 +  grep -v '^ *+' conftest.er1 >conftest.err
6229 +  rm -f conftest.er1
6230 +  cat conftest.err >&5
6231 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6232 +  (exit $ac_status); } && {
6233 +        test -z "$ac_cxx_werror_flag" ||
6234 +        test ! -s conftest.err
6235 +       } && test -s conftest.$ac_objext; then
6236 +  ac_hi=$ac_mid; break
6237 +else
6238 +  echo "$as_me: failed program was:" >&5
6239 +sed 's/^/| /' conftest.$ac_ext >&5
6240 +
6241 +       ac_lo=`expr $ac_mid + 1`
6242 +                       if test $ac_lo -le $ac_mid; then
6243 +                         ac_lo= ac_hi=
6244 +                         break
6245 +                       fi
6246 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
6247 +fi
6248 +
6249 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6250 +  done
6251 +else
6252 +  echo "$as_me: failed program was:" >&5
6253 +sed 's/^/| /' conftest.$ac_ext >&5
6254 +
6255 +       cat >conftest.$ac_ext <<_ACEOF
6256 +/* confdefs.h.  */
6257 +_ACEOF
6258 +cat confdefs.h >>conftest.$ac_ext
6259 +cat >>conftest.$ac_ext <<_ACEOF
6260 +/* end confdefs.h.  */
6261 +$ac_includes_default
6262 +   typedef int ac__type_sizeof_;
6263 +int
6264 +main ()
6265 +{
6266 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
6267 +test_array @<:@0@:>@ = 0
6268 +
6269 +  ;
6270 +  return 0;
6271 +}
6272 +_ACEOF
6273 +rm -f conftest.$ac_objext
6274 +if { (ac_try="$ac_compile"
6275 +case "(($ac_try" in
6276 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6277 +  *) ac_try_echo=$ac_try;;
6278 +esac
6279 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6280 +  (eval "$ac_compile") 2>conftest.er1
6281 +  ac_status=$?
6282 +  grep -v '^ *+' conftest.er1 >conftest.err
6283 +  rm -f conftest.er1
6284 +  cat conftest.err >&5
6285 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6286 +  (exit $ac_status); } && {
6287 +        test -z "$ac_cxx_werror_flag" ||
6288 +        test ! -s conftest.err
6289 +       } && test -s conftest.$ac_objext; then
6290 +  ac_hi=-1 ac_mid=-1
6291 +  while :; do
6292 +    cat >conftest.$ac_ext <<_ACEOF
6293 +/* confdefs.h.  */
6294 +_ACEOF
6295 +cat confdefs.h >>conftest.$ac_ext
6296 +cat >>conftest.$ac_ext <<_ACEOF
6297 +/* end confdefs.h.  */
6298 +$ac_includes_default
6299 +   typedef int ac__type_sizeof_;
6300 +int
6301 +main ()
6302 +{
6303 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
6304 +test_array @<:@0@:>@ = 0
6305 +
6306 +  ;
6307 +  return 0;
6308 +}
6309 +_ACEOF
6310 +rm -f conftest.$ac_objext
6311 +if { (ac_try="$ac_compile"
6312 +case "(($ac_try" in
6313 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6314 +  *) ac_try_echo=$ac_try;;
6315 +esac
6316 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6317 +  (eval "$ac_compile") 2>conftest.er1
6318 +  ac_status=$?
6319 +  grep -v '^ *+' conftest.er1 >conftest.err
6320 +  rm -f conftest.er1
6321 +  cat conftest.err >&5
6322 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6323 +  (exit $ac_status); } && {
6324 +        test -z "$ac_cxx_werror_flag" ||
6325 +        test ! -s conftest.err
6326 +       } && test -s conftest.$ac_objext; then
6327 +  ac_lo=$ac_mid; break
6328 +else
6329 +  echo "$as_me: failed program was:" >&5
6330 +sed 's/^/| /' conftest.$ac_ext >&5
6331 +
6332 +       ac_hi=`expr '(' $ac_mid ')' - 1`
6333 +                       if test $ac_mid -le $ac_hi; then
6334 +                         ac_lo= ac_hi=
6335 +                         break
6336 +                       fi
6337 +                       ac_mid=`expr 2 '*' $ac_mid`
6338 +fi
6339 +
6340 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6341 +  done
6342 +else
6343 +  echo "$as_me: failed program was:" >&5
6344 +sed 's/^/| /' conftest.$ac_ext >&5
6345 +
6346 +       ac_lo= ac_hi=
6347 +fi
6348 +
6349 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6350 +fi
6351 +
6352 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6353 +# Binary search between lo and hi bounds.
6354 +while test "x$ac_lo" != "x$ac_hi"; do
6355 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
6356 +  cat >conftest.$ac_ext <<_ACEOF
6357 +/* confdefs.h.  */
6358 +_ACEOF
6359 +cat confdefs.h >>conftest.$ac_ext
6360 +cat >>conftest.$ac_ext <<_ACEOF
6361 +/* end confdefs.h.  */
6362 +$ac_includes_default
6363 +   typedef int ac__type_sizeof_;
6364 +int
6365 +main ()
6366 +{
6367 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
6368 +test_array @<:@0@:>@ = 0
6369 +
6370 +  ;
6371 +  return 0;
6372 +}
6373 +_ACEOF
6374 +rm -f conftest.$ac_objext
6375 +if { (ac_try="$ac_compile"
6376 +case "(($ac_try" in
6377 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6378 +  *) ac_try_echo=$ac_try;;
6379 +esac
6380 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6381 +  (eval "$ac_compile") 2>conftest.er1
6382 +  ac_status=$?
6383 +  grep -v '^ *+' conftest.er1 >conftest.err
6384 +  rm -f conftest.er1
6385 +  cat conftest.err >&5
6386 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6387 +  (exit $ac_status); } && {
6388 +        test -z "$ac_cxx_werror_flag" ||
6389 +        test ! -s conftest.err
6390 +       } && test -s conftest.$ac_objext; then
6391 +  ac_hi=$ac_mid
6392 +else
6393 +  echo "$as_me: failed program was:" >&5
6394 +sed 's/^/| /' conftest.$ac_ext >&5
6395 +
6396 +       ac_lo=`expr '(' $ac_mid ')' + 1`
6397 +fi
6398 +
6399 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6400 +done
6401 +case $ac_lo in
6402 +?*) ac_cv_sizeof_int=$ac_lo;;
6403 +'') if test "$ac_cv_type_int" = yes; then
6404 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
6405 +See \`config.log' for more details." >&5
6406 +echo "$as_me: error: cannot compute sizeof (int)
6407 +See \`config.log' for more details." >&2;}
6408 +   { (exit 77); exit 77; }; }
6409 +   else
6410 +     ac_cv_sizeof_int=0
6411 +   fi ;;
6412 +esac
6413 +else
6414 +  cat >conftest.$ac_ext <<_ACEOF
6415 +/* confdefs.h.  */
6416 +_ACEOF
6417 +cat confdefs.h >>conftest.$ac_ext
6418 +cat >>conftest.$ac_ext <<_ACEOF
6419 +/* end confdefs.h.  */
6420 +$ac_includes_default
6421 +   typedef int ac__type_sizeof_;
6422 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
6423 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
6424 +@%:@include <stdio.h>
6425 +@%:@include <stdlib.h>
6426 +int
6427 +main ()
6428 +{
6429 +
6430 +  FILE *f = fopen ("conftest.val", "w");
6431 +  if (! f)
6432 +    return 1;
6433 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
6434 +    {
6435 +      long int i = longval ();
6436 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
6437 +       return 1;
6438 +      fprintf (f, "%ld\n", i);
6439 +    }
6440 +  else
6441 +    {
6442 +      unsigned long int i = ulongval ();
6443 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
6444 +       return 1;
6445 +      fprintf (f, "%lu\n", i);
6446 +    }
6447 +  return ferror (f) || fclose (f) != 0;
6448 +
6449 +  ;
6450 +  return 0;
6451 +}
6452 +_ACEOF
6453 +rm -f conftest$ac_exeext
6454 +if { (ac_try="$ac_link"
6455 +case "(($ac_try" in
6456 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6457 +  *) ac_try_echo=$ac_try;;
6458 +esac
6459 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6460 +  (eval "$ac_link") 2>&5
6461 +  ac_status=$?
6462 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6463 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
6464 +  { (case "(($ac_try" in
6465 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6466 +  *) ac_try_echo=$ac_try;;
6467 +esac
6468 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6469 +  (eval "$ac_try") 2>&5
6470 +  ac_status=$?
6471 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6472 +  (exit $ac_status); }; }; then
6473 +  ac_cv_sizeof_int=`cat conftest.val`
6474 +else
6475 +  echo "$as_me: program exited with status $ac_status" >&5
6476 +echo "$as_me: failed program was:" >&5
6477 +sed 's/^/| /' conftest.$ac_ext >&5
6478 +
6479 +( exit $ac_status )
6480 +if test "$ac_cv_type_int" = yes; then
6481 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
6482 +See \`config.log' for more details." >&5
6483 +echo "$as_me: error: cannot compute sizeof (int)
6484 +See \`config.log' for more details." >&2;}
6485 +   { (exit 77); exit 77; }; }
6486 +   else
6487 +     ac_cv_sizeof_int=0
6488 +   fi
6489 +fi
6490 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
6491 +fi
6492 +rm -f conftest.val
6493 +fi
6494 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
6495 +echo "${ECHO_T}$ac_cv_sizeof_int" >&6; }
6496 +
6497 +
6498 +
6499 +cat >>confdefs.h <<_ACEOF
6500 +@%:@define SIZEOF_INT $ac_cv_sizeof_int
6501 +_ACEOF
6502 +
6503 +
6504 +{ echo "$as_me:$LINENO: checking for long" >&5
6505 +echo $ECHO_N "checking for long... $ECHO_C" >&6; }
6506 +if test "${ac_cv_type_long+set}" = set; then
6507 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6508 +else
6509 +  cat >conftest.$ac_ext <<_ACEOF
6510 +/* confdefs.h.  */
6511 +_ACEOF
6512 +cat confdefs.h >>conftest.$ac_ext
6513 +cat >>conftest.$ac_ext <<_ACEOF
6514 +/* end confdefs.h.  */
6515 +$ac_includes_default
6516 +typedef long ac__type_new_;
6517 +int
6518 +main ()
6519 +{
6520 +if ((ac__type_new_ *) 0)
6521 +  return 0;
6522 +if (sizeof (ac__type_new_))
6523 +  return 0;
6524 +  ;
6525 +  return 0;
6526 +}
6527 +_ACEOF
6528 +rm -f conftest.$ac_objext
6529 +if { (ac_try="$ac_compile"
6530 +case "(($ac_try" in
6531 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6532 +  *) ac_try_echo=$ac_try;;
6533 +esac
6534 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6535 +  (eval "$ac_compile") 2>conftest.er1
6536 +  ac_status=$?
6537 +  grep -v '^ *+' conftest.er1 >conftest.err
6538 +  rm -f conftest.er1
6539 +  cat conftest.err >&5
6540 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6541 +  (exit $ac_status); } && {
6542 +        test -z "$ac_cxx_werror_flag" ||
6543 +        test ! -s conftest.err
6544 +       } && test -s conftest.$ac_objext; then
6545 +  ac_cv_type_long=yes
6546 +else
6547 +  echo "$as_me: failed program was:" >&5
6548 +sed 's/^/| /' conftest.$ac_ext >&5
6549 +
6550 +       ac_cv_type_long=no
6551 +fi
6552 +
6553 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6554 +fi
6555 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
6556 +echo "${ECHO_T}$ac_cv_type_long" >&6; }
6557 +
6558 +# The cast to long int works around a bug in the HP C Compiler
6559 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
6560 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
6561 +# This bug is HP SR number 8606223364.
6562 +{ echo "$as_me:$LINENO: checking size of long" >&5
6563 +echo $ECHO_N "checking size of long... $ECHO_C" >&6; }
6564 +if test "${ac_cv_sizeof_long+set}" = set; then
6565 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6566 +else
6567 +  if test "$cross_compiling" = yes; then
6568 +  # Depending upon the size, compute the lo and hi bounds.
6569 +cat >conftest.$ac_ext <<_ACEOF
6570 +/* confdefs.h.  */
6571 +_ACEOF
6572 +cat confdefs.h >>conftest.$ac_ext
6573 +cat >>conftest.$ac_ext <<_ACEOF
6574 +/* end confdefs.h.  */
6575 +$ac_includes_default
6576 +   typedef long ac__type_sizeof_;
6577 +int
6578 +main ()
6579 +{
6580 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
6581 +test_array @<:@0@:>@ = 0
6582 +
6583 +  ;
6584 +  return 0;
6585 +}
6586 +_ACEOF
6587 +rm -f conftest.$ac_objext
6588 +if { (ac_try="$ac_compile"
6589 +case "(($ac_try" in
6590 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6591 +  *) ac_try_echo=$ac_try;;
6592 +esac
6593 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6594 +  (eval "$ac_compile") 2>conftest.er1
6595 +  ac_status=$?
6596 +  grep -v '^ *+' conftest.er1 >conftest.err
6597 +  rm -f conftest.er1
6598 +  cat conftest.err >&5
6599 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6600 +  (exit $ac_status); } && {
6601 +        test -z "$ac_cxx_werror_flag" ||
6602 +        test ! -s conftest.err
6603 +       } && test -s conftest.$ac_objext; then
6604 +  ac_lo=0 ac_mid=0
6605 +  while :; do
6606 +    cat >conftest.$ac_ext <<_ACEOF
6607 +/* confdefs.h.  */
6608 +_ACEOF
6609 +cat confdefs.h >>conftest.$ac_ext
6610 +cat >>conftest.$ac_ext <<_ACEOF
6611 +/* end confdefs.h.  */
6612 +$ac_includes_default
6613 +   typedef long ac__type_sizeof_;
6614 +int
6615 +main ()
6616 +{
6617 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
6618 +test_array @<:@0@:>@ = 0
6619 +
6620 +  ;
6621 +  return 0;
6622 +}
6623 +_ACEOF
6624 +rm -f conftest.$ac_objext
6625 +if { (ac_try="$ac_compile"
6626 +case "(($ac_try" in
6627 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6628 +  *) ac_try_echo=$ac_try;;
6629 +esac
6630 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6631 +  (eval "$ac_compile") 2>conftest.er1
6632 +  ac_status=$?
6633 +  grep -v '^ *+' conftest.er1 >conftest.err
6634 +  rm -f conftest.er1
6635 +  cat conftest.err >&5
6636 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6637 +  (exit $ac_status); } && {
6638 +        test -z "$ac_cxx_werror_flag" ||
6639 +        test ! -s conftest.err
6640 +       } && test -s conftest.$ac_objext; then
6641 +  ac_hi=$ac_mid; break
6642 +else
6643 +  echo "$as_me: failed program was:" >&5
6644 +sed 's/^/| /' conftest.$ac_ext >&5
6645 +
6646 +       ac_lo=`expr $ac_mid + 1`
6647 +                       if test $ac_lo -le $ac_mid; then
6648 +                         ac_lo= ac_hi=
6649 +                         break
6650 +                       fi
6651 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
6652 +fi
6653 +
6654 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6655 +  done
6656 +else
6657 +  echo "$as_me: failed program was:" >&5
6658 +sed 's/^/| /' conftest.$ac_ext >&5
6659 +
6660 +       cat >conftest.$ac_ext <<_ACEOF
6661 +/* confdefs.h.  */
6662 +_ACEOF
6663 +cat confdefs.h >>conftest.$ac_ext
6664 +cat >>conftest.$ac_ext <<_ACEOF
6665 +/* end confdefs.h.  */
6666 +$ac_includes_default
6667 +   typedef long ac__type_sizeof_;
6668 +int
6669 +main ()
6670 +{
6671 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
6672 +test_array @<:@0@:>@ = 0
6673 +
6674 +  ;
6675 +  return 0;
6676 +}
6677 +_ACEOF
6678 +rm -f conftest.$ac_objext
6679 +if { (ac_try="$ac_compile"
6680 +case "(($ac_try" in
6681 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6682 +  *) ac_try_echo=$ac_try;;
6683 +esac
6684 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6685 +  (eval "$ac_compile") 2>conftest.er1
6686 +  ac_status=$?
6687 +  grep -v '^ *+' conftest.er1 >conftest.err
6688 +  rm -f conftest.er1
6689 +  cat conftest.err >&5
6690 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6691 +  (exit $ac_status); } && {
6692 +        test -z "$ac_cxx_werror_flag" ||
6693 +        test ! -s conftest.err
6694 +       } && test -s conftest.$ac_objext; then
6695 +  ac_hi=-1 ac_mid=-1
6696 +  while :; do
6697 +    cat >conftest.$ac_ext <<_ACEOF
6698 +/* confdefs.h.  */
6699 +_ACEOF
6700 +cat confdefs.h >>conftest.$ac_ext
6701 +cat >>conftest.$ac_ext <<_ACEOF
6702 +/* end confdefs.h.  */
6703 +$ac_includes_default
6704 +   typedef long ac__type_sizeof_;
6705 +int
6706 +main ()
6707 +{
6708 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
6709 +test_array @<:@0@:>@ = 0
6710 +
6711 +  ;
6712 +  return 0;
6713 +}
6714 +_ACEOF
6715 +rm -f conftest.$ac_objext
6716 +if { (ac_try="$ac_compile"
6717 +case "(($ac_try" in
6718 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6719 +  *) ac_try_echo=$ac_try;;
6720 +esac
6721 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6722 +  (eval "$ac_compile") 2>conftest.er1
6723 +  ac_status=$?
6724 +  grep -v '^ *+' conftest.er1 >conftest.err
6725 +  rm -f conftest.er1
6726 +  cat conftest.err >&5
6727 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6728 +  (exit $ac_status); } && {
6729 +        test -z "$ac_cxx_werror_flag" ||
6730 +        test ! -s conftest.err
6731 +       } && test -s conftest.$ac_objext; then
6732 +  ac_lo=$ac_mid; break
6733 +else
6734 +  echo "$as_me: failed program was:" >&5
6735 +sed 's/^/| /' conftest.$ac_ext >&5
6736 +
6737 +       ac_hi=`expr '(' $ac_mid ')' - 1`
6738 +                       if test $ac_mid -le $ac_hi; then
6739 +                         ac_lo= ac_hi=
6740 +                         break
6741 +                       fi
6742 +                       ac_mid=`expr 2 '*' $ac_mid`
6743 +fi
6744 +
6745 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6746 +  done
6747 +else
6748 +  echo "$as_me: failed program was:" >&5
6749 +sed 's/^/| /' conftest.$ac_ext >&5
6750 +
6751 +       ac_lo= ac_hi=
6752 +fi
6753 +
6754 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6755 +fi
6756 +
6757 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6758 +# Binary search between lo and hi bounds.
6759 +while test "x$ac_lo" != "x$ac_hi"; do
6760 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
6761 +  cat >conftest.$ac_ext <<_ACEOF
6762 +/* confdefs.h.  */
6763 +_ACEOF
6764 +cat confdefs.h >>conftest.$ac_ext
6765 +cat >>conftest.$ac_ext <<_ACEOF
6766 +/* end confdefs.h.  */
6767 +$ac_includes_default
6768 +   typedef long ac__type_sizeof_;
6769 +int
6770 +main ()
6771 +{
6772 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
6773 +test_array @<:@0@:>@ = 0
6774 +
6775 +  ;
6776 +  return 0;
6777 +}
6778 +_ACEOF
6779 +rm -f conftest.$ac_objext
6780 +if { (ac_try="$ac_compile"
6781 +case "(($ac_try" in
6782 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6783 +  *) ac_try_echo=$ac_try;;
6784 +esac
6785 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6786 +  (eval "$ac_compile") 2>conftest.er1
6787 +  ac_status=$?
6788 +  grep -v '^ *+' conftest.er1 >conftest.err
6789 +  rm -f conftest.er1
6790 +  cat conftest.err >&5
6791 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6792 +  (exit $ac_status); } && {
6793 +        test -z "$ac_cxx_werror_flag" ||
6794 +        test ! -s conftest.err
6795 +       } && test -s conftest.$ac_objext; then
6796 +  ac_hi=$ac_mid
6797 +else
6798 +  echo "$as_me: failed program was:" >&5
6799 +sed 's/^/| /' conftest.$ac_ext >&5
6800 +
6801 +       ac_lo=`expr '(' $ac_mid ')' + 1`
6802 +fi
6803 +
6804 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6805 +done
6806 +case $ac_lo in
6807 +?*) ac_cv_sizeof_long=$ac_lo;;
6808 +'') if test "$ac_cv_type_long" = yes; then
6809 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
6810 +See \`config.log' for more details." >&5
6811 +echo "$as_me: error: cannot compute sizeof (long)
6812 +See \`config.log' for more details." >&2;}
6813 +   { (exit 77); exit 77; }; }
6814 +   else
6815 +     ac_cv_sizeof_long=0
6816 +   fi ;;
6817 +esac
6818 +else
6819 +  cat >conftest.$ac_ext <<_ACEOF
6820 +/* confdefs.h.  */
6821 +_ACEOF
6822 +cat confdefs.h >>conftest.$ac_ext
6823 +cat >>conftest.$ac_ext <<_ACEOF
6824 +/* end confdefs.h.  */
6825 +$ac_includes_default
6826 +   typedef long ac__type_sizeof_;
6827 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
6828 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
6829 +@%:@include <stdio.h>
6830 +@%:@include <stdlib.h>
6831 +int
6832 +main ()
6833 +{
6834 +
6835 +  FILE *f = fopen ("conftest.val", "w");
6836 +  if (! f)
6837 +    return 1;
6838 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
6839 +    {
6840 +      long int i = longval ();
6841 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
6842 +       return 1;
6843 +      fprintf (f, "%ld\n", i);
6844 +    }
6845 +  else
6846 +    {
6847 +      unsigned long int i = ulongval ();
6848 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
6849 +       return 1;
6850 +      fprintf (f, "%lu\n", i);
6851 +    }
6852 +  return ferror (f) || fclose (f) != 0;
6853 +
6854 +  ;
6855 +  return 0;
6856 +}
6857 +_ACEOF
6858 +rm -f conftest$ac_exeext
6859 +if { (ac_try="$ac_link"
6860 +case "(($ac_try" in
6861 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6862 +  *) ac_try_echo=$ac_try;;
6863 +esac
6864 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6865 +  (eval "$ac_link") 2>&5
6866 +  ac_status=$?
6867 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6868 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
6869 +  { (case "(($ac_try" in
6870 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6871 +  *) ac_try_echo=$ac_try;;
6872 +esac
6873 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6874 +  (eval "$ac_try") 2>&5
6875 +  ac_status=$?
6876 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6877 +  (exit $ac_status); }; }; then
6878 +  ac_cv_sizeof_long=`cat conftest.val`
6879 +else
6880 +  echo "$as_me: program exited with status $ac_status" >&5
6881 +echo "$as_me: failed program was:" >&5
6882 +sed 's/^/| /' conftest.$ac_ext >&5
6883 +
6884 +( exit $ac_status )
6885 +if test "$ac_cv_type_long" = yes; then
6886 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
6887 +See \`config.log' for more details." >&5
6888 +echo "$as_me: error: cannot compute sizeof (long)
6889 +See \`config.log' for more details." >&2;}
6890 +   { (exit 77); exit 77; }; }
6891 +   else
6892 +     ac_cv_sizeof_long=0
6893 +   fi
6894 +fi
6895 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
6896 +fi
6897 +rm -f conftest.val
6898 +fi
6899 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
6900 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6; }
6901 +
6902 +
6903 +
6904 +cat >>confdefs.h <<_ACEOF
6905 +@%:@define SIZEOF_LONG $ac_cv_sizeof_long
6906 +_ACEOF
6907 +
6908 +
6909 +
6910 +    
6911 +for ac_header in inttypes.h
6912 +do
6913 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
6914 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
6915 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
6916 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
6917 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
6918 +  echo $ECHO_N "(cached) $ECHO_C" >&6
6919 +fi
6920 +ac_res=`eval echo '${'$as_ac_Header'}'`
6921 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
6922 +echo "${ECHO_T}$ac_res" >&6; }
6923 +else
6924 +  # Is the header compilable?
6925 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
6926 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
6927 +cat >conftest.$ac_ext <<_ACEOF
6928 +/* confdefs.h.  */
6929 +_ACEOF
6930 +cat confdefs.h >>conftest.$ac_ext
6931 +cat >>conftest.$ac_ext <<_ACEOF
6932 +/* end confdefs.h.  */
6933 +$ac_includes_default
6934 +@%:@include <$ac_header>
6935 +_ACEOF
6936 +rm -f conftest.$ac_objext
6937 +if { (ac_try="$ac_compile"
6938 +case "(($ac_try" in
6939 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6940 +  *) ac_try_echo=$ac_try;;
6941 +esac
6942 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6943 +  (eval "$ac_compile") 2>conftest.er1
6944 +  ac_status=$?
6945 +  grep -v '^ *+' conftest.er1 >conftest.err
6946 +  rm -f conftest.er1
6947 +  cat conftest.err >&5
6948 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6949 +  (exit $ac_status); } && {
6950 +        test -z "$ac_cxx_werror_flag" ||
6951 +        test ! -s conftest.err
6952 +       } && test -s conftest.$ac_objext; then
6953 +  ac_header_compiler=yes
6954 +else
6955 +  echo "$as_me: failed program was:" >&5
6956 +sed 's/^/| /' conftest.$ac_ext >&5
6957 +
6958 +       ac_header_compiler=no
6959 +fi
6960 +
6961 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
6962 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
6963 +echo "${ECHO_T}$ac_header_compiler" >&6; }
6964 +
6965 +# Is the header present?
6966 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
6967 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
6968 +cat >conftest.$ac_ext <<_ACEOF
6969 +/* confdefs.h.  */
6970 +_ACEOF
6971 +cat confdefs.h >>conftest.$ac_ext
6972 +cat >>conftest.$ac_ext <<_ACEOF
6973 +/* end confdefs.h.  */
6974 +@%:@include <$ac_header>
6975 +_ACEOF
6976 +if { (ac_try="$ac_cpp conftest.$ac_ext"
6977 +case "(($ac_try" in
6978 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
6979 +  *) ac_try_echo=$ac_try;;
6980 +esac
6981 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
6982 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
6983 +  ac_status=$?
6984 +  grep -v '^ *+' conftest.er1 >conftest.err
6985 +  rm -f conftest.er1
6986 +  cat conftest.err >&5
6987 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
6988 +  (exit $ac_status); } >/dev/null && {
6989 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
6990 +        test ! -s conftest.err
6991 +       }; then
6992 +  ac_header_preproc=yes
6993 +else
6994 +  echo "$as_me: failed program was:" >&5
6995 +sed 's/^/| /' conftest.$ac_ext >&5
6996 +
6997 +  ac_header_preproc=no
6998 +fi
6999 +
7000 +rm -f conftest.err conftest.$ac_ext
7001 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
7002 +echo "${ECHO_T}$ac_header_preproc" >&6; }
7003 +
7004 +# So?  What about this header?
7005 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
7006 +  yes:no: )
7007 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
7008 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
7009 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
7010 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
7011 +    ac_header_preproc=yes
7012 +    ;;
7013 +  no:yes:* )
7014 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
7015 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
7016 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
7017 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
7018 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
7019 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
7020 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
7021 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
7022 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
7023 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
7024 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
7025 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
7026 +    
7027 +    ;;
7028 +esac
7029 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
7030 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
7031 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
7032 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7033 +else
7034 +  eval "$as_ac_Header=\$ac_header_preproc"
7035 +fi
7036 +ac_res=`eval echo '${'$as_ac_Header'}'`
7037 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
7038 +echo "${ECHO_T}$ac_res" >&6; }
7039 +
7040 +fi
7041 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
7042 +  cat >>confdefs.h <<_ACEOF
7043 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
7044 +_ACEOF
7045 + have_inttypes_h=yes
7046 +else
7047 +  have_inttypes_h=no
7048 +fi
7049 +
7050 +done
7051 +
7052 +
7053 +    if test $have_inttypes_h = no; then
7054 +       { echo "$as_me:$LINENO: checking for uintXX_t typedefs" >&5
7055 +echo $ECHO_N "checking for uintXX_t typedefs... $ECHO_C" >&6; }
7056 +if test "${ac_cv_uint_t+set}" = set; then
7057 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7058 +else
7059 +  cat >conftest.$ac_ext <<_ACEOF
7060 +/* confdefs.h.  */
7061 +_ACEOF
7062 +cat confdefs.h >>conftest.$ac_ext
7063 +cat >>conftest.$ac_ext <<_ACEOF
7064 +/* end confdefs.h.  */
7065 +#include <sys/types.h>
7066 +
7067 +_ACEOF
7068 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7069 +  $EGREP "(^|[^a-zA-Z_0-9])uint32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
7070 +  ac_cv_uint_t=yes
7071 +else
7072 +  ac_cv_uint_t=no
7073 +fi
7074 +rm -f conftest*
7075 +
7076 +fi
7077 +{ echo "$as_me:$LINENO: result: $ac_cv_uint_t" >&5
7078 +echo "${ECHO_T}$ac_cv_uint_t" >&6; }
7079 +    fi
7080 +    if test $have_inttypes_h = no -a "$ac_cv_uint_t" = no; then
7081 +       { echo "$as_me:$LINENO: checking for u_intXX_t typedefs" >&5
7082 +echo $ECHO_N "checking for u_intXX_t typedefs... $ECHO_C" >&6; }
7083 +if test "${ac_cv_u_int_t+set}" = set; then
7084 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7085 +else
7086 +  cat >conftest.$ac_ext <<_ACEOF
7087 +/* confdefs.h.  */
7088 +_ACEOF
7089 +cat confdefs.h >>conftest.$ac_ext
7090 +cat >>conftest.$ac_ext <<_ACEOF
7091 +/* end confdefs.h.  */
7092 +#include <sys/types.h>
7093 +
7094 +_ACEOF
7095 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7096 +  $EGREP "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
7097 +  ac_cv_u_int_t=yes
7098 +else
7099 +  ac_cv_u_int_t=no
7100 +fi
7101 +rm -f conftest*
7102 +
7103 +fi
7104 +{ echo "$as_me:$LINENO: result: $ac_cv_u_int_t" >&5
7105 +echo "${ECHO_T}$ac_cv_u_int_t" >&6; }
7106 +    fi
7107 +    if test $have_inttypes_h = yes -o "$ac_cv_uint_t" = yes; then :
7108 +    elif test "$ac_cv_u_int_t" = yes; then
7109 +       
7110 +cat >>confdefs.h <<\_ACEOF
7111 +@%:@define HAVE_U_INT_TYPES 1
7112 +_ACEOF
7113 +
7114 +    else
7115 +       { { echo "$as_me:$LINENO: error: 
7116 +=========================================
7117 +
7118 +Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
7119 +
7120 +=========================================" >&5
7121 +echo "$as_me: error: 
7122 +=========================================
7123 +
7124 +Neither uint32_t nor u_int32_t defined by <inttypes.h> or <sys/types.h>!
7125 +
7126 +=========================================" >&2;}
7127 +   { (exit 1); exit 1; }; }
7128 +    fi
7129 +
7130 +    { echo "$as_me:$LINENO: checking whether machine is indifferent to alignment" >&5
7131 +echo $ECHO_N "checking whether machine is indifferent to alignment... $ECHO_C" >&6; }
7132 +if test "${ac_cv_alignment_indifferent+set}" = set; then
7133 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7134 +else
7135 +  if test "x$have_inttypes_h" = xyes; then inttypes_hdr='inttypes.h'; else inttypes_hdr='sys/types.h'; fi
7136 +
7137 +    if test "$cross_compiling" = yes; then
7138 +  ac_cv_alignment_indifferent=no
7139 +else
7140 +  cat >conftest.$ac_ext <<_ACEOF
7141 +/* confdefs.h.  */
7142 +_ACEOF
7143 +cat confdefs.h >>conftest.$ac_ext
7144 +cat >>conftest.$ac_ext <<_ACEOF
7145 +/* end confdefs.h.  */
7146 +#include <$inttypes_hdr>
7147 +#include <stdlib.h>
7148 +void get_value(char *buf, int offset, int32_t *value) {
7149 +    int i;
7150 +    for (i = 0; i < 4; i++)
7151 +       buf[i + offset] = i;
7152 +    *value = *((int32_t *)(buf + offset));
7153 +}
7154 +int main(int argc, char *argv[]) {
7155 +    char buf[12];
7156 +    int i;
7157 +    int32_t value, try_value;
7158 +    get_value(buf, 0, &value);
7159 +    for (i = 1; i < 4; i++) {
7160 +       get_value(buf, i, &try_value);
7161 +       if (value != try_value)
7162 +           exit(1);
7163 +    }
7164 +    exit(0);
7165 +}
7166 +_ACEOF
7167 +rm -f conftest$ac_exeext
7168 +if { (ac_try="$ac_link"
7169 +case "(($ac_try" in
7170 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7171 +  *) ac_try_echo=$ac_try;;
7172 +esac
7173 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7174 +  (eval "$ac_link") 2>&5
7175 +  ac_status=$?
7176 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7177 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
7178 +  { (case "(($ac_try" in
7179 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7180 +  *) ac_try_echo=$ac_try;;
7181 +esac
7182 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7183 +  (eval "$ac_try") 2>&5
7184 +  ac_status=$?
7185 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7186 +  (exit $ac_status); }; }; then
7187 +  ac_cv_alignment_indifferent=yes
7188 +else
7189 +  echo "$as_me: program exited with status $ac_status" >&5
7190 +echo "$as_me: failed program was:" >&5
7191 +sed 's/^/| /' conftest.$ac_ext >&5
7192 +
7193 +( exit $ac_status )
7194 +ac_cv_alignment_indifferent=no
7195 +fi
7196 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
7197 +fi
7198 +
7199 +
7200 +fi
7201 +{ echo "$as_me:$LINENO: result: $ac_cv_alignment_indifferent" >&5
7202 +echo "${ECHO_T}$ac_cv_alignment_indifferent" >&6; }
7203 +    if test "x$ac_cv_alignment_indifferent" = xyes; then
7204 +       
7205 +cat >>confdefs.h <<\_ACEOF
7206 +@%:@define HAVE_INDIFFERENT_ALIGNMENT 1
7207 +_ACEOF
7208 +
7209 +    fi
7210 +if test "x$enable_int64" = xyes; then
7211 +    { echo "$as_me:$LINENO: checking for long long" >&5
7212 +echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
7213 +if test "${ac_cv_type_long_long+set}" = set; then
7214 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7215 +else
7216 +  cat >conftest.$ac_ext <<_ACEOF
7217 +/* confdefs.h.  */
7218 +_ACEOF
7219 +cat confdefs.h >>conftest.$ac_ext
7220 +cat >>conftest.$ac_ext <<_ACEOF
7221 +/* end confdefs.h.  */
7222 +$ac_includes_default
7223 +typedef long long ac__type_new_;
7224 +int
7225 +main ()
7226 +{
7227 +if ((ac__type_new_ *) 0)
7228 +  return 0;
7229 +if (sizeof (ac__type_new_))
7230 +  return 0;
7231 +  ;
7232 +  return 0;
7233 +}
7234 +_ACEOF
7235 +rm -f conftest.$ac_objext
7236 +if { (ac_try="$ac_compile"
7237 +case "(($ac_try" in
7238 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7239 +  *) ac_try_echo=$ac_try;;
7240 +esac
7241 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7242 +  (eval "$ac_compile") 2>conftest.er1
7243 +  ac_status=$?
7244 +  grep -v '^ *+' conftest.er1 >conftest.err
7245 +  rm -f conftest.er1
7246 +  cat conftest.err >&5
7247 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7248 +  (exit $ac_status); } && {
7249 +        test -z "$ac_cxx_werror_flag" ||
7250 +        test ! -s conftest.err
7251 +       } && test -s conftest.$ac_objext; then
7252 +  ac_cv_type_long_long=yes
7253 +else
7254 +  echo "$as_me: failed program was:" >&5
7255 +sed 's/^/| /' conftest.$ac_ext >&5
7256 +
7257 +       ac_cv_type_long_long=no
7258 +fi
7259 +
7260 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7261 +fi
7262 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
7263 +echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
7264 +
7265 +# The cast to long int works around a bug in the HP C Compiler
7266 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
7267 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
7268 +# This bug is HP SR number 8606223364.
7269 +{ echo "$as_me:$LINENO: checking size of long long" >&5
7270 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6; }
7271 +if test "${ac_cv_sizeof_long_long+set}" = set; then
7272 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7273 +else
7274 +  if test "$cross_compiling" = yes; then
7275 +  # Depending upon the size, compute the lo and hi bounds.
7276 +cat >conftest.$ac_ext <<_ACEOF
7277 +/* confdefs.h.  */
7278 +_ACEOF
7279 +cat confdefs.h >>conftest.$ac_ext
7280 +cat >>conftest.$ac_ext <<_ACEOF
7281 +/* end confdefs.h.  */
7282 +$ac_includes_default
7283 +   typedef long long ac__type_sizeof_;
7284 +int
7285 +main ()
7286 +{
7287 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
7288 +test_array @<:@0@:>@ = 0
7289 +
7290 +  ;
7291 +  return 0;
7292 +}
7293 +_ACEOF
7294 +rm -f conftest.$ac_objext
7295 +if { (ac_try="$ac_compile"
7296 +case "(($ac_try" in
7297 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7298 +  *) ac_try_echo=$ac_try;;
7299 +esac
7300 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7301 +  (eval "$ac_compile") 2>conftest.er1
7302 +  ac_status=$?
7303 +  grep -v '^ *+' conftest.er1 >conftest.err
7304 +  rm -f conftest.er1
7305 +  cat conftest.err >&5
7306 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7307 +  (exit $ac_status); } && {
7308 +        test -z "$ac_cxx_werror_flag" ||
7309 +        test ! -s conftest.err
7310 +       } && test -s conftest.$ac_objext; then
7311 +  ac_lo=0 ac_mid=0
7312 +  while :; do
7313 +    cat >conftest.$ac_ext <<_ACEOF
7314 +/* confdefs.h.  */
7315 +_ACEOF
7316 +cat confdefs.h >>conftest.$ac_ext
7317 +cat >>conftest.$ac_ext <<_ACEOF
7318 +/* end confdefs.h.  */
7319 +$ac_includes_default
7320 +   typedef long long ac__type_sizeof_;
7321 +int
7322 +main ()
7323 +{
7324 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
7325 +test_array @<:@0@:>@ = 0
7326 +
7327 +  ;
7328 +  return 0;
7329 +}
7330 +_ACEOF
7331 +rm -f conftest.$ac_objext
7332 +if { (ac_try="$ac_compile"
7333 +case "(($ac_try" in
7334 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7335 +  *) ac_try_echo=$ac_try;;
7336 +esac
7337 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7338 +  (eval "$ac_compile") 2>conftest.er1
7339 +  ac_status=$?
7340 +  grep -v '^ *+' conftest.er1 >conftest.err
7341 +  rm -f conftest.er1
7342 +  cat conftest.err >&5
7343 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7344 +  (exit $ac_status); } && {
7345 +        test -z "$ac_cxx_werror_flag" ||
7346 +        test ! -s conftest.err
7347 +       } && test -s conftest.$ac_objext; then
7348 +  ac_hi=$ac_mid; break
7349 +else
7350 +  echo "$as_me: failed program was:" >&5
7351 +sed 's/^/| /' conftest.$ac_ext >&5
7352 +
7353 +       ac_lo=`expr $ac_mid + 1`
7354 +                       if test $ac_lo -le $ac_mid; then
7355 +                         ac_lo= ac_hi=
7356 +                         break
7357 +                       fi
7358 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
7359 +fi
7360 +
7361 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7362 +  done
7363 +else
7364 +  echo "$as_me: failed program was:" >&5
7365 +sed 's/^/| /' conftest.$ac_ext >&5
7366 +
7367 +       cat >conftest.$ac_ext <<_ACEOF
7368 +/* confdefs.h.  */
7369 +_ACEOF
7370 +cat confdefs.h >>conftest.$ac_ext
7371 +cat >>conftest.$ac_ext <<_ACEOF
7372 +/* end confdefs.h.  */
7373 +$ac_includes_default
7374 +   typedef long long ac__type_sizeof_;
7375 +int
7376 +main ()
7377 +{
7378 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
7379 +test_array @<:@0@:>@ = 0
7380 +
7381 +  ;
7382 +  return 0;
7383 +}
7384 +_ACEOF
7385 +rm -f conftest.$ac_objext
7386 +if { (ac_try="$ac_compile"
7387 +case "(($ac_try" in
7388 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7389 +  *) ac_try_echo=$ac_try;;
7390 +esac
7391 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7392 +  (eval "$ac_compile") 2>conftest.er1
7393 +  ac_status=$?
7394 +  grep -v '^ *+' conftest.er1 >conftest.err
7395 +  rm -f conftest.er1
7396 +  cat conftest.err >&5
7397 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7398 +  (exit $ac_status); } && {
7399 +        test -z "$ac_cxx_werror_flag" ||
7400 +        test ! -s conftest.err
7401 +       } && test -s conftest.$ac_objext; then
7402 +  ac_hi=-1 ac_mid=-1
7403 +  while :; do
7404 +    cat >conftest.$ac_ext <<_ACEOF
7405 +/* confdefs.h.  */
7406 +_ACEOF
7407 +cat confdefs.h >>conftest.$ac_ext
7408 +cat >>conftest.$ac_ext <<_ACEOF
7409 +/* end confdefs.h.  */
7410 +$ac_includes_default
7411 +   typedef long long ac__type_sizeof_;
7412 +int
7413 +main ()
7414 +{
7415 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
7416 +test_array @<:@0@:>@ = 0
7417 +
7418 +  ;
7419 +  return 0;
7420 +}
7421 +_ACEOF
7422 +rm -f conftest.$ac_objext
7423 +if { (ac_try="$ac_compile"
7424 +case "(($ac_try" in
7425 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7426 +  *) ac_try_echo=$ac_try;;
7427 +esac
7428 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7429 +  (eval "$ac_compile") 2>conftest.er1
7430 +  ac_status=$?
7431 +  grep -v '^ *+' conftest.er1 >conftest.err
7432 +  rm -f conftest.er1
7433 +  cat conftest.err >&5
7434 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7435 +  (exit $ac_status); } && {
7436 +        test -z "$ac_cxx_werror_flag" ||
7437 +        test ! -s conftest.err
7438 +       } && test -s conftest.$ac_objext; then
7439 +  ac_lo=$ac_mid; break
7440 +else
7441 +  echo "$as_me: failed program was:" >&5
7442 +sed 's/^/| /' conftest.$ac_ext >&5
7443 +
7444 +       ac_hi=`expr '(' $ac_mid ')' - 1`
7445 +                       if test $ac_mid -le $ac_hi; then
7446 +                         ac_lo= ac_hi=
7447 +                         break
7448 +                       fi
7449 +                       ac_mid=`expr 2 '*' $ac_mid`
7450 +fi
7451 +
7452 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7453 +  done
7454 +else
7455 +  echo "$as_me: failed program was:" >&5
7456 +sed 's/^/| /' conftest.$ac_ext >&5
7457 +
7458 +       ac_lo= ac_hi=
7459 +fi
7460 +
7461 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7462 +fi
7463 +
7464 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7465 +# Binary search between lo and hi bounds.
7466 +while test "x$ac_lo" != "x$ac_hi"; do
7467 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
7468 +  cat >conftest.$ac_ext <<_ACEOF
7469 +/* confdefs.h.  */
7470 +_ACEOF
7471 +cat confdefs.h >>conftest.$ac_ext
7472 +cat >>conftest.$ac_ext <<_ACEOF
7473 +/* end confdefs.h.  */
7474 +$ac_includes_default
7475 +   typedef long long ac__type_sizeof_;
7476 +int
7477 +main ()
7478 +{
7479 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
7480 +test_array @<:@0@:>@ = 0
7481 +
7482 +  ;
7483 +  return 0;
7484 +}
7485 +_ACEOF
7486 +rm -f conftest.$ac_objext
7487 +if { (ac_try="$ac_compile"
7488 +case "(($ac_try" in
7489 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7490 +  *) ac_try_echo=$ac_try;;
7491 +esac
7492 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7493 +  (eval "$ac_compile") 2>conftest.er1
7494 +  ac_status=$?
7495 +  grep -v '^ *+' conftest.er1 >conftest.err
7496 +  rm -f conftest.er1
7497 +  cat conftest.err >&5
7498 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7499 +  (exit $ac_status); } && {
7500 +        test -z "$ac_cxx_werror_flag" ||
7501 +        test ! -s conftest.err
7502 +       } && test -s conftest.$ac_objext; then
7503 +  ac_hi=$ac_mid
7504 +else
7505 +  echo "$as_me: failed program was:" >&5
7506 +sed 's/^/| /' conftest.$ac_ext >&5
7507 +
7508 +       ac_lo=`expr '(' $ac_mid ')' + 1`
7509 +fi
7510 +
7511 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7512 +done
7513 +case $ac_lo in
7514 +?*) ac_cv_sizeof_long_long=$ac_lo;;
7515 +'') if test "$ac_cv_type_long_long" = yes; then
7516 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
7517 +See \`config.log' for more details." >&5
7518 +echo "$as_me: error: cannot compute sizeof (long long)
7519 +See \`config.log' for more details." >&2;}
7520 +   { (exit 77); exit 77; }; }
7521 +   else
7522 +     ac_cv_sizeof_long_long=0
7523 +   fi ;;
7524 +esac
7525 +else
7526 +  cat >conftest.$ac_ext <<_ACEOF
7527 +/* confdefs.h.  */
7528 +_ACEOF
7529 +cat confdefs.h >>conftest.$ac_ext
7530 +cat >>conftest.$ac_ext <<_ACEOF
7531 +/* end confdefs.h.  */
7532 +$ac_includes_default
7533 +   typedef long long ac__type_sizeof_;
7534 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
7535 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
7536 +@%:@include <stdio.h>
7537 +@%:@include <stdlib.h>
7538 +int
7539 +main ()
7540 +{
7541 +
7542 +  FILE *f = fopen ("conftest.val", "w");
7543 +  if (! f)
7544 +    return 1;
7545 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
7546 +    {
7547 +      long int i = longval ();
7548 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
7549 +       return 1;
7550 +      fprintf (f, "%ld\n", i);
7551 +    }
7552 +  else
7553 +    {
7554 +      unsigned long int i = ulongval ();
7555 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
7556 +       return 1;
7557 +      fprintf (f, "%lu\n", i);
7558 +    }
7559 +  return ferror (f) || fclose (f) != 0;
7560 +
7561 +  ;
7562 +  return 0;
7563 +}
7564 +_ACEOF
7565 +rm -f conftest$ac_exeext
7566 +if { (ac_try="$ac_link"
7567 +case "(($ac_try" in
7568 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7569 +  *) ac_try_echo=$ac_try;;
7570 +esac
7571 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7572 +  (eval "$ac_link") 2>&5
7573 +  ac_status=$?
7574 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7575 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
7576 +  { (case "(($ac_try" in
7577 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7578 +  *) ac_try_echo=$ac_try;;
7579 +esac
7580 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7581 +  (eval "$ac_try") 2>&5
7582 +  ac_status=$?
7583 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7584 +  (exit $ac_status); }; }; then
7585 +  ac_cv_sizeof_long_long=`cat conftest.val`
7586 +else
7587 +  echo "$as_me: program exited with status $ac_status" >&5
7588 +echo "$as_me: failed program was:" >&5
7589 +sed 's/^/| /' conftest.$ac_ext >&5
7590 +
7591 +( exit $ac_status )
7592 +if test "$ac_cv_type_long_long" = yes; then
7593 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long)
7594 +See \`config.log' for more details." >&5
7595 +echo "$as_me: error: cannot compute sizeof (long long)
7596 +See \`config.log' for more details." >&2;}
7597 +   { (exit 77); exit 77; }; }
7598 +   else
7599 +     ac_cv_sizeof_long_long=0
7600 +   fi
7601 +fi
7602 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
7603 +fi
7604 +rm -f conftest.val
7605 +fi
7606 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5
7607 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6; }
7608 +
7609 +
7610 +
7611 +cat >>confdefs.h <<_ACEOF
7612 +@%:@define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
7613 +_ACEOF
7614 +
7615 +
7616 +    
7617 +    if test "x$have_inttypes_h" = xyes; then
7618 +       inttypes_hdr='inttypes.h'
7619 +    else
7620 +       inttypes_hdr='sys/types.h'
7621 +    fi
7622 +
7623 +    { echo "$as_me:$LINENO: checking for long long" >&5
7624 +echo $ECHO_N "checking for long long... $ECHO_C" >&6; }
7625 +if test "${ac_cv_type_long_long+set}" = set; then
7626 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7627 +else
7628 +  cat >conftest.$ac_ext <<_ACEOF
7629 +/* confdefs.h.  */
7630 +_ACEOF
7631 +cat confdefs.h >>conftest.$ac_ext
7632 +cat >>conftest.$ac_ext <<_ACEOF
7633 +/* end confdefs.h.  */
7634 +$ac_includes_default
7635 +typedef long long ac__type_new_;
7636 +int
7637 +main ()
7638 +{
7639 +if ((ac__type_new_ *) 0)
7640 +  return 0;
7641 +if (sizeof (ac__type_new_))
7642 +  return 0;
7643 +  ;
7644 +  return 0;
7645 +}
7646 +_ACEOF
7647 +rm -f conftest.$ac_objext
7648 +if { (ac_try="$ac_compile"
7649 +case "(($ac_try" in
7650 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7651 +  *) ac_try_echo=$ac_try;;
7652 +esac
7653 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7654 +  (eval "$ac_compile") 2>conftest.er1
7655 +  ac_status=$?
7656 +  grep -v '^ *+' conftest.er1 >conftest.err
7657 +  rm -f conftest.er1
7658 +  cat conftest.err >&5
7659 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7660 +  (exit $ac_status); } && {
7661 +        test -z "$ac_cxx_werror_flag" ||
7662 +        test ! -s conftest.err
7663 +       } && test -s conftest.$ac_objext; then
7664 +  ac_cv_type_long_long=yes
7665 +else
7666 +  echo "$as_me: failed program was:" >&5
7667 +sed 's/^/| /' conftest.$ac_ext >&5
7668 +
7669 +       ac_cv_type_long_long=no
7670 +fi
7671 +
7672 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7673 +fi
7674 +{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5
7675 +echo "${ECHO_T}$ac_cv_type_long_long" >&6; }
7676 +if test $ac_cv_type_long_long = yes; then
7677 +  
7678 +cat >>confdefs.h <<_ACEOF
7679 +@%:@define HAVE_LONG_LONG 1
7680 +_ACEOF
7681 +
7682 +
7683 +fi
7684 +
7685 +    { echo "$as_me:$LINENO: checking for int64_t typedef" >&5
7686 +echo $ECHO_N "checking for int64_t typedef... $ECHO_C" >&6; }
7687 +if test "${ac_cv_int64_t+set}" = set; then
7688 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7689 +else
7690 +  cat >conftest.$ac_ext <<_ACEOF
7691 +/* confdefs.h.  */
7692 +_ACEOF
7693 +cat confdefs.h >>conftest.$ac_ext
7694 +cat >>conftest.$ac_ext <<_ACEOF
7695 +/* end confdefs.h.  */
7696 +#include <$inttypes_hdr>
7697 +
7698 +_ACEOF
7699 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7700 +  $EGREP "(^|[^a-zA-Z_0-9])int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
7701 +  ac_cv_int64_t=yes
7702 +else
7703 +  ac_cv_int64_t=no
7704 +fi
7705 +rm -f conftest*
7706 +
7707 +fi
7708 +{ echo "$as_me:$LINENO: result: $ac_cv_int64_t" >&5
7709 +echo "${ECHO_T}$ac_cv_int64_t" >&6; }
7710 +    { echo "$as_me:$LINENO: checking for uint64_t typedef" >&5
7711 +echo $ECHO_N "checking for uint64_t typedef... $ECHO_C" >&6; }
7712 +if test "${ac_cv_uint64_t+set}" = set; then
7713 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7714 +else
7715 +  cat >conftest.$ac_ext <<_ACEOF
7716 +/* confdefs.h.  */
7717 +_ACEOF
7718 +cat confdefs.h >>conftest.$ac_ext
7719 +cat >>conftest.$ac_ext <<_ACEOF
7720 +/* end confdefs.h.  */
7721 +#include <$inttypes_hdr>
7722 +
7723 +_ACEOF
7724 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
7725 +  $EGREP "(^|[^a-zA-Z_0-9])u_?int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
7726 +  ac_cv_uint64_t=yes
7727 +else
7728 +  ac_cv_uint64_t=no
7729 +fi
7730 +rm -f conftest*
7731 +
7732 +fi
7733 +{ echo "$as_me:$LINENO: result: $ac_cv_uint64_t" >&5
7734 +echo "${ECHO_T}$ac_cv_uint64_t" >&6; }
7735 +
7736 +    have_int64_types=
7737 +    if test $ac_cv_int64_t = no -o $ac_cv_uint64_t = no; then
7738 +       { { echo "$as_me:$LINENO: error: 
7739 +=========================================
7740 +
7741 +int64_t types not defined by $inttypes_hdr!
7742 +Compile with '--disable-int64'.
7743 +
7744 +=========================================" >&5
7745 +echo "$as_me: error: 
7746 +=========================================
7747 +
7748 +int64_t types not defined by $inttypes_hdr!
7749 +Compile with '--disable-int64'.
7750 +
7751 +=========================================" >&2;}
7752 +   { (exit 1); exit 1; }; }
7753 +    else
7754 +       
7755 +cat >>confdefs.h <<\_ACEOF
7756 +@%:@define HAVE_INT64_TYPES 1
7757 +_ACEOF
7758 +
7759 +       have_int64_types=yes
7760 +
7761 +       { echo "$as_me:$LINENO: checking whether long and int64_t are the same type" >&5
7762 +echo $ECHO_N "checking whether long and int64_t are the same type... $ECHO_C" >&6; }
7763 +if test "${ac_cv_long_64+set}" = set; then
7764 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7765 +else
7766 +  ac_ext=cpp
7767 +ac_cpp='$CXXCPP $CPPFLAGS'
7768 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7769 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7770 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
7771 +
7772 +           cat >conftest.$ac_ext <<_ACEOF
7773 +/* confdefs.h.  */
7774 +_ACEOF
7775 +cat confdefs.h >>conftest.$ac_ext
7776 +cat >>conftest.$ac_ext <<_ACEOF
7777 +/* end confdefs.h.  */
7778 +#include <$inttypes_hdr>
7779 +void f1(long) {
7780 +}
7781 +void f1(int64_t) { // will fail if long and int64_t are the same type
7782 +}
7783 +int
7784 +main ()
7785 +{
7786 +
7787 +  ;
7788 +  return 0;
7789 +}
7790 +_ACEOF
7791 +rm -f conftest.$ac_objext
7792 +if { (ac_try="$ac_compile"
7793 +case "(($ac_try" in
7794 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7795 +  *) ac_try_echo=$ac_try;;
7796 +esac
7797 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7798 +  (eval "$ac_compile") 2>conftest.er1
7799 +  ac_status=$?
7800 +  grep -v '^ *+' conftest.er1 >conftest.err
7801 +  rm -f conftest.er1
7802 +  cat conftest.err >&5
7803 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7804 +  (exit $ac_status); } && {
7805 +        test -z "$ac_cxx_werror_flag" ||
7806 +        test ! -s conftest.err
7807 +       } && test -s conftest.$ac_objext; then
7808 +  ac_cv_long_64=no
7809 +else
7810 +  echo "$as_me: failed program was:" >&5
7811 +sed 's/^/| /' conftest.$ac_ext >&5
7812 +
7813 +       ac_cv_long_64=yes
7814 +fi
7815 +
7816 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7817 +fi
7818 +{ echo "$as_me:$LINENO: result: $ac_cv_long_64" >&5
7819 +echo "${ECHO_T}$ac_cv_long_64" >&6; }
7820 +       if test $ac_cv_long_64 = yes; then
7821 +           
7822 +cat >>confdefs.h <<\_ACEOF
7823 +@%:@define HAVE_INT64_IS_LONG_USERLEVEL 1
7824 +_ACEOF
7825 +
7826 +       fi
7827 +
7828 +       { echo "$as_me:$LINENO: checking whether long long and int64_t are the same type" >&5
7829 +echo $ECHO_N "checking whether long long and int64_t are the same type... $ECHO_C" >&6; }
7830 +if test "${ac_cv_long_long_64+set}" = set; then
7831 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7832 +else
7833 +  ac_ext=cpp
7834 +ac_cpp='$CXXCPP $CPPFLAGS'
7835 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
7836 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
7837 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
7838 +
7839 +           cat >conftest.$ac_ext <<_ACEOF
7840 +/* confdefs.h.  */
7841 +_ACEOF
7842 +cat confdefs.h >>conftest.$ac_ext
7843 +cat >>conftest.$ac_ext <<_ACEOF
7844 +/* end confdefs.h.  */
7845 +#include <$inttypes_hdr>
7846 +void f1(long long) {
7847 +}
7848 +void f1(int64_t) { // will fail if long long and int64_t are the same type
7849 +}
7850 +int
7851 +main ()
7852 +{
7853 +
7854 +  ;
7855 +  return 0;
7856 +}
7857 +_ACEOF
7858 +rm -f conftest.$ac_objext
7859 +if { (ac_try="$ac_compile"
7860 +case "(($ac_try" in
7861 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7862 +  *) ac_try_echo=$ac_try;;
7863 +esac
7864 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7865 +  (eval "$ac_compile") 2>conftest.er1
7866 +  ac_status=$?
7867 +  grep -v '^ *+' conftest.er1 >conftest.err
7868 +  rm -f conftest.er1
7869 +  cat conftest.err >&5
7870 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7871 +  (exit $ac_status); } && {
7872 +        test -z "$ac_cxx_werror_flag" ||
7873 +        test ! -s conftest.err
7874 +       } && test -s conftest.$ac_objext; then
7875 +  ac_cv_long_long_64=no
7876 +else
7877 +  echo "$as_me: failed program was:" >&5
7878 +sed 's/^/| /' conftest.$ac_ext >&5
7879 +
7880 +       ac_cv_long_long_64=yes
7881 +fi
7882 +
7883 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7884 +fi
7885 +{ echo "$as_me:$LINENO: result: $ac_cv_long_long_64" >&5
7886 +echo "${ECHO_T}$ac_cv_long_long_64" >&6; }
7887 +       if test $ac_cv_long_long_64 = yes; then
7888 +           
7889 +cat >>confdefs.h <<\_ACEOF
7890 +@%:@define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
7891 +_ACEOF
7892 +
7893 +       fi
7894 +    fi
7895 +fi
7896 +{ echo "$as_me:$LINENO: checking for struct timeval" >&5
7897 +echo $ECHO_N "checking for struct timeval... $ECHO_C" >&6; }
7898 +if test "${ac_cv_type_struct_timeval+set}" = set; then
7899 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7900 +else
7901 +  cat >conftest.$ac_ext <<_ACEOF
7902 +/* confdefs.h.  */
7903 +_ACEOF
7904 +cat confdefs.h >>conftest.$ac_ext
7905 +cat >>conftest.$ac_ext <<_ACEOF
7906 +/* end confdefs.h.  */
7907 +$ac_includes_default
7908 +typedef struct timeval ac__type_new_;
7909 +int
7910 +main ()
7911 +{
7912 +if ((ac__type_new_ *) 0)
7913 +  return 0;
7914 +if (sizeof (ac__type_new_))
7915 +  return 0;
7916 +  ;
7917 +  return 0;
7918 +}
7919 +_ACEOF
7920 +rm -f conftest.$ac_objext
7921 +if { (ac_try="$ac_compile"
7922 +case "(($ac_try" in
7923 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7924 +  *) ac_try_echo=$ac_try;;
7925 +esac
7926 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7927 +  (eval "$ac_compile") 2>conftest.er1
7928 +  ac_status=$?
7929 +  grep -v '^ *+' conftest.er1 >conftest.err
7930 +  rm -f conftest.er1
7931 +  cat conftest.err >&5
7932 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7933 +  (exit $ac_status); } && {
7934 +        test -z "$ac_cxx_werror_flag" ||
7935 +        test ! -s conftest.err
7936 +       } && test -s conftest.$ac_objext; then
7937 +  ac_cv_type_struct_timeval=yes
7938 +else
7939 +  echo "$as_me: failed program was:" >&5
7940 +sed 's/^/| /' conftest.$ac_ext >&5
7941 +
7942 +       ac_cv_type_struct_timeval=no
7943 +fi
7944 +
7945 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
7946 +fi
7947 +{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timeval" >&5
7948 +echo "${ECHO_T}$ac_cv_type_struct_timeval" >&6; }
7949 +
7950 +# The cast to long int works around a bug in the HP C Compiler
7951 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
7952 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
7953 +# This bug is HP SR number 8606223364.
7954 +{ echo "$as_me:$LINENO: checking size of struct timeval" >&5
7955 +echo $ECHO_N "checking size of struct timeval... $ECHO_C" >&6; }
7956 +if test "${ac_cv_sizeof_struct_timeval+set}" = set; then
7957 +  echo $ECHO_N "(cached) $ECHO_C" >&6
7958 +else
7959 +  if test "$cross_compiling" = yes; then
7960 +  # Depending upon the size, compute the lo and hi bounds.
7961 +cat >conftest.$ac_ext <<_ACEOF
7962 +/* confdefs.h.  */
7963 +_ACEOF
7964 +cat confdefs.h >>conftest.$ac_ext
7965 +cat >>conftest.$ac_ext <<_ACEOF
7966 +/* end confdefs.h.  */
7967 +$ac_includes_default
7968 +   typedef struct timeval ac__type_sizeof_;
7969 +int
7970 +main ()
7971 +{
7972 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
7973 +test_array @<:@0@:>@ = 0
7974 +
7975 +  ;
7976 +  return 0;
7977 +}
7978 +_ACEOF
7979 +rm -f conftest.$ac_objext
7980 +if { (ac_try="$ac_compile"
7981 +case "(($ac_try" in
7982 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
7983 +  *) ac_try_echo=$ac_try;;
7984 +esac
7985 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
7986 +  (eval "$ac_compile") 2>conftest.er1
7987 +  ac_status=$?
7988 +  grep -v '^ *+' conftest.er1 >conftest.err
7989 +  rm -f conftest.er1
7990 +  cat conftest.err >&5
7991 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
7992 +  (exit $ac_status); } && {
7993 +        test -z "$ac_cxx_werror_flag" ||
7994 +        test ! -s conftest.err
7995 +       } && test -s conftest.$ac_objext; then
7996 +  ac_lo=0 ac_mid=0
7997 +  while :; do
7998 +    cat >conftest.$ac_ext <<_ACEOF
7999 +/* confdefs.h.  */
8000 +_ACEOF
8001 +cat confdefs.h >>conftest.$ac_ext
8002 +cat >>conftest.$ac_ext <<_ACEOF
8003 +/* end confdefs.h.  */
8004 +$ac_includes_default
8005 +   typedef struct timeval ac__type_sizeof_;
8006 +int
8007 +main ()
8008 +{
8009 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
8010 +test_array @<:@0@:>@ = 0
8011 +
8012 +  ;
8013 +  return 0;
8014 +}
8015 +_ACEOF
8016 +rm -f conftest.$ac_objext
8017 +if { (ac_try="$ac_compile"
8018 +case "(($ac_try" in
8019 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8020 +  *) ac_try_echo=$ac_try;;
8021 +esac
8022 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8023 +  (eval "$ac_compile") 2>conftest.er1
8024 +  ac_status=$?
8025 +  grep -v '^ *+' conftest.er1 >conftest.err
8026 +  rm -f conftest.er1
8027 +  cat conftest.err >&5
8028 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8029 +  (exit $ac_status); } && {
8030 +        test -z "$ac_cxx_werror_flag" ||
8031 +        test ! -s conftest.err
8032 +       } && test -s conftest.$ac_objext; then
8033 +  ac_hi=$ac_mid; break
8034 +else
8035 +  echo "$as_me: failed program was:" >&5
8036 +sed 's/^/| /' conftest.$ac_ext >&5
8037 +
8038 +       ac_lo=`expr $ac_mid + 1`
8039 +                       if test $ac_lo -le $ac_mid; then
8040 +                         ac_lo= ac_hi=
8041 +                         break
8042 +                       fi
8043 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
8044 +fi
8045 +
8046 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8047 +  done
8048 +else
8049 +  echo "$as_me: failed program was:" >&5
8050 +sed 's/^/| /' conftest.$ac_ext >&5
8051 +
8052 +       cat >conftest.$ac_ext <<_ACEOF
8053 +/* confdefs.h.  */
8054 +_ACEOF
8055 +cat confdefs.h >>conftest.$ac_ext
8056 +cat >>conftest.$ac_ext <<_ACEOF
8057 +/* end confdefs.h.  */
8058 +$ac_includes_default
8059 +   typedef struct timeval ac__type_sizeof_;
8060 +int
8061 +main ()
8062 +{
8063 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
8064 +test_array @<:@0@:>@ = 0
8065 +
8066 +  ;
8067 +  return 0;
8068 +}
8069 +_ACEOF
8070 +rm -f conftest.$ac_objext
8071 +if { (ac_try="$ac_compile"
8072 +case "(($ac_try" in
8073 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8074 +  *) ac_try_echo=$ac_try;;
8075 +esac
8076 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8077 +  (eval "$ac_compile") 2>conftest.er1
8078 +  ac_status=$?
8079 +  grep -v '^ *+' conftest.er1 >conftest.err
8080 +  rm -f conftest.er1
8081 +  cat conftest.err >&5
8082 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8083 +  (exit $ac_status); } && {
8084 +        test -z "$ac_cxx_werror_flag" ||
8085 +        test ! -s conftest.err
8086 +       } && test -s conftest.$ac_objext; then
8087 +  ac_hi=-1 ac_mid=-1
8088 +  while :; do
8089 +    cat >conftest.$ac_ext <<_ACEOF
8090 +/* confdefs.h.  */
8091 +_ACEOF
8092 +cat confdefs.h >>conftest.$ac_ext
8093 +cat >>conftest.$ac_ext <<_ACEOF
8094 +/* end confdefs.h.  */
8095 +$ac_includes_default
8096 +   typedef struct timeval ac__type_sizeof_;
8097 +int
8098 +main ()
8099 +{
8100 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
8101 +test_array @<:@0@:>@ = 0
8102 +
8103 +  ;
8104 +  return 0;
8105 +}
8106 +_ACEOF
8107 +rm -f conftest.$ac_objext
8108 +if { (ac_try="$ac_compile"
8109 +case "(($ac_try" in
8110 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8111 +  *) ac_try_echo=$ac_try;;
8112 +esac
8113 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8114 +  (eval "$ac_compile") 2>conftest.er1
8115 +  ac_status=$?
8116 +  grep -v '^ *+' conftest.er1 >conftest.err
8117 +  rm -f conftest.er1
8118 +  cat conftest.err >&5
8119 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8120 +  (exit $ac_status); } && {
8121 +        test -z "$ac_cxx_werror_flag" ||
8122 +        test ! -s conftest.err
8123 +       } && test -s conftest.$ac_objext; then
8124 +  ac_lo=$ac_mid; break
8125 +else
8126 +  echo "$as_me: failed program was:" >&5
8127 +sed 's/^/| /' conftest.$ac_ext >&5
8128 +
8129 +       ac_hi=`expr '(' $ac_mid ')' - 1`
8130 +                       if test $ac_mid -le $ac_hi; then
8131 +                         ac_lo= ac_hi=
8132 +                         break
8133 +                       fi
8134 +                       ac_mid=`expr 2 '*' $ac_mid`
8135 +fi
8136 +
8137 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8138 +  done
8139 +else
8140 +  echo "$as_me: failed program was:" >&5
8141 +sed 's/^/| /' conftest.$ac_ext >&5
8142 +
8143 +       ac_lo= ac_hi=
8144 +fi
8145 +
8146 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8147 +fi
8148 +
8149 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8150 +# Binary search between lo and hi bounds.
8151 +while test "x$ac_lo" != "x$ac_hi"; do
8152 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
8153 +  cat >conftest.$ac_ext <<_ACEOF
8154 +/* confdefs.h.  */
8155 +_ACEOF
8156 +cat confdefs.h >>conftest.$ac_ext
8157 +cat >>conftest.$ac_ext <<_ACEOF
8158 +/* end confdefs.h.  */
8159 +$ac_includes_default
8160 +   typedef struct timeval ac__type_sizeof_;
8161 +int
8162 +main ()
8163 +{
8164 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
8165 +test_array @<:@0@:>@ = 0
8166 +
8167 +  ;
8168 +  return 0;
8169 +}
8170 +_ACEOF
8171 +rm -f conftest.$ac_objext
8172 +if { (ac_try="$ac_compile"
8173 +case "(($ac_try" in
8174 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8175 +  *) ac_try_echo=$ac_try;;
8176 +esac
8177 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8178 +  (eval "$ac_compile") 2>conftest.er1
8179 +  ac_status=$?
8180 +  grep -v '^ *+' conftest.er1 >conftest.err
8181 +  rm -f conftest.er1
8182 +  cat conftest.err >&5
8183 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8184 +  (exit $ac_status); } && {
8185 +        test -z "$ac_cxx_werror_flag" ||
8186 +        test ! -s conftest.err
8187 +       } && test -s conftest.$ac_objext; then
8188 +  ac_hi=$ac_mid
8189 +else
8190 +  echo "$as_me: failed program was:" >&5
8191 +sed 's/^/| /' conftest.$ac_ext >&5
8192 +
8193 +       ac_lo=`expr '(' $ac_mid ')' + 1`
8194 +fi
8195 +
8196 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8197 +done
8198 +case $ac_lo in
8199 +?*) ac_cv_sizeof_struct_timeval=$ac_lo;;
8200 +'') if test "$ac_cv_type_struct_timeval" = yes; then
8201 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timeval)
8202 +See \`config.log' for more details." >&5
8203 +echo "$as_me: error: cannot compute sizeof (struct timeval)
8204 +See \`config.log' for more details." >&2;}
8205 +   { (exit 77); exit 77; }; }
8206 +   else
8207 +     ac_cv_sizeof_struct_timeval=0
8208 +   fi ;;
8209 +esac
8210 +else
8211 +  cat >conftest.$ac_ext <<_ACEOF
8212 +/* confdefs.h.  */
8213 +_ACEOF
8214 +cat confdefs.h >>conftest.$ac_ext
8215 +cat >>conftest.$ac_ext <<_ACEOF
8216 +/* end confdefs.h.  */
8217 +$ac_includes_default
8218 +   typedef struct timeval ac__type_sizeof_;
8219 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
8220 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
8221 +@%:@include <stdio.h>
8222 +@%:@include <stdlib.h>
8223 +int
8224 +main ()
8225 +{
8226 +
8227 +  FILE *f = fopen ("conftest.val", "w");
8228 +  if (! f)
8229 +    return 1;
8230 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
8231 +    {
8232 +      long int i = longval ();
8233 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
8234 +       return 1;
8235 +      fprintf (f, "%ld\n", i);
8236 +    }
8237 +  else
8238 +    {
8239 +      unsigned long int i = ulongval ();
8240 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
8241 +       return 1;
8242 +      fprintf (f, "%lu\n", i);
8243 +    }
8244 +  return ferror (f) || fclose (f) != 0;
8245 +
8246 +  ;
8247 +  return 0;
8248 +}
8249 +_ACEOF
8250 +rm -f conftest$ac_exeext
8251 +if { (ac_try="$ac_link"
8252 +case "(($ac_try" in
8253 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8254 +  *) ac_try_echo=$ac_try;;
8255 +esac
8256 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8257 +  (eval "$ac_link") 2>&5
8258 +  ac_status=$?
8259 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8260 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
8261 +  { (case "(($ac_try" in
8262 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8263 +  *) ac_try_echo=$ac_try;;
8264 +esac
8265 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8266 +  (eval "$ac_try") 2>&5
8267 +  ac_status=$?
8268 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8269 +  (exit $ac_status); }; }; then
8270 +  ac_cv_sizeof_struct_timeval=`cat conftest.val`
8271 +else
8272 +  echo "$as_me: program exited with status $ac_status" >&5
8273 +echo "$as_me: failed program was:" >&5
8274 +sed 's/^/| /' conftest.$ac_ext >&5
8275 +
8276 +( exit $ac_status )
8277 +if test "$ac_cv_type_struct_timeval" = yes; then
8278 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timeval)
8279 +See \`config.log' for more details." >&5
8280 +echo "$as_me: error: cannot compute sizeof (struct timeval)
8281 +See \`config.log' for more details." >&2;}
8282 +   { (exit 77); exit 77; }; }
8283 +   else
8284 +     ac_cv_sizeof_struct_timeval=0
8285 +   fi
8286 +fi
8287 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
8288 +fi
8289 +rm -f conftest.val
8290 +fi
8291 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_struct_timeval" >&5
8292 +echo "${ECHO_T}$ac_cv_sizeof_struct_timeval" >&6; }
8293 +
8294 +
8295 +
8296 +cat >>confdefs.h <<_ACEOF
8297 +@%:@define SIZEOF_STRUCT_TIMEVAL $ac_cv_sizeof_struct_timeval
8298 +_ACEOF
8299 +
8300 +
8301 +{ echo "$as_me:$LINENO: checking for struct timespec" >&5
8302 +echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6; }
8303 +if test "${ac_cv_type_struct_timespec+set}" = set; then
8304 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8305 +else
8306 +  cat >conftest.$ac_ext <<_ACEOF
8307 +/* confdefs.h.  */
8308 +_ACEOF
8309 +cat confdefs.h >>conftest.$ac_ext
8310 +cat >>conftest.$ac_ext <<_ACEOF
8311 +/* end confdefs.h.  */
8312 +$ac_includes_default
8313 +typedef struct timespec ac__type_new_;
8314 +int
8315 +main ()
8316 +{
8317 +if ((ac__type_new_ *) 0)
8318 +  return 0;
8319 +if (sizeof (ac__type_new_))
8320 +  return 0;
8321 +  ;
8322 +  return 0;
8323 +}
8324 +_ACEOF
8325 +rm -f conftest.$ac_objext
8326 +if { (ac_try="$ac_compile"
8327 +case "(($ac_try" in
8328 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8329 +  *) ac_try_echo=$ac_try;;
8330 +esac
8331 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8332 +  (eval "$ac_compile") 2>conftest.er1
8333 +  ac_status=$?
8334 +  grep -v '^ *+' conftest.er1 >conftest.err
8335 +  rm -f conftest.er1
8336 +  cat conftest.err >&5
8337 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8338 +  (exit $ac_status); } && {
8339 +        test -z "$ac_cxx_werror_flag" ||
8340 +        test ! -s conftest.err
8341 +       } && test -s conftest.$ac_objext; then
8342 +  ac_cv_type_struct_timespec=yes
8343 +else
8344 +  echo "$as_me: failed program was:" >&5
8345 +sed 's/^/| /' conftest.$ac_ext >&5
8346 +
8347 +       ac_cv_type_struct_timespec=no
8348 +fi
8349 +
8350 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8351 +fi
8352 +{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timespec" >&5
8353 +echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6; }
8354 +if test $ac_cv_type_struct_timespec = yes; then
8355 +  
8356 +cat >>confdefs.h <<_ACEOF
8357 +@%:@define HAVE_STRUCT_TIMESPEC 1
8358 +_ACEOF
8359 +
8360 +have_timespec=yes
8361 +else
8362 +  have_timespec=no
8363 +fi
8364 +
8365 +if test "x$have_timespec" = xyes; then
8366 +    { echo "$as_me:$LINENO: checking for struct timespec" >&5
8367 +echo $ECHO_N "checking for struct timespec... $ECHO_C" >&6; }
8368 +if test "${ac_cv_type_struct_timespec+set}" = set; then
8369 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8370 +else
8371 +  cat >conftest.$ac_ext <<_ACEOF
8372 +/* confdefs.h.  */
8373 +_ACEOF
8374 +cat confdefs.h >>conftest.$ac_ext
8375 +cat >>conftest.$ac_ext <<_ACEOF
8376 +/* end confdefs.h.  */
8377 +$ac_includes_default
8378 +typedef struct timespec ac__type_new_;
8379 +int
8380 +main ()
8381 +{
8382 +if ((ac__type_new_ *) 0)
8383 +  return 0;
8384 +if (sizeof (ac__type_new_))
8385 +  return 0;
8386 +  ;
8387 +  return 0;
8388 +}
8389 +_ACEOF
8390 +rm -f conftest.$ac_objext
8391 +if { (ac_try="$ac_compile"
8392 +case "(($ac_try" in
8393 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8394 +  *) ac_try_echo=$ac_try;;
8395 +esac
8396 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8397 +  (eval "$ac_compile") 2>conftest.er1
8398 +  ac_status=$?
8399 +  grep -v '^ *+' conftest.er1 >conftest.err
8400 +  rm -f conftest.er1
8401 +  cat conftest.err >&5
8402 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8403 +  (exit $ac_status); } && {
8404 +        test -z "$ac_cxx_werror_flag" ||
8405 +        test ! -s conftest.err
8406 +       } && test -s conftest.$ac_objext; then
8407 +  ac_cv_type_struct_timespec=yes
8408 +else
8409 +  echo "$as_me: failed program was:" >&5
8410 +sed 's/^/| /' conftest.$ac_ext >&5
8411 +
8412 +       ac_cv_type_struct_timespec=no
8413 +fi
8414 +
8415 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8416 +fi
8417 +{ echo "$as_me:$LINENO: result: $ac_cv_type_struct_timespec" >&5
8418 +echo "${ECHO_T}$ac_cv_type_struct_timespec" >&6; }
8419 +
8420 +# The cast to long int works around a bug in the HP C Compiler
8421 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
8422 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
8423 +# This bug is HP SR number 8606223364.
8424 +{ echo "$as_me:$LINENO: checking size of struct timespec" >&5
8425 +echo $ECHO_N "checking size of struct timespec... $ECHO_C" >&6; }
8426 +if test "${ac_cv_sizeof_struct_timespec+set}" = set; then
8427 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8428 +else
8429 +  if test "$cross_compiling" = yes; then
8430 +  # Depending upon the size, compute the lo and hi bounds.
8431 +cat >conftest.$ac_ext <<_ACEOF
8432 +/* confdefs.h.  */
8433 +_ACEOF
8434 +cat confdefs.h >>conftest.$ac_ext
8435 +cat >>conftest.$ac_ext <<_ACEOF
8436 +/* end confdefs.h.  */
8437 +$ac_includes_default
8438 +   typedef struct timespec ac__type_sizeof_;
8439 +int
8440 +main ()
8441 +{
8442 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
8443 +test_array @<:@0@:>@ = 0
8444 +
8445 +  ;
8446 +  return 0;
8447 +}
8448 +_ACEOF
8449 +rm -f conftest.$ac_objext
8450 +if { (ac_try="$ac_compile"
8451 +case "(($ac_try" in
8452 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8453 +  *) ac_try_echo=$ac_try;;
8454 +esac
8455 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8456 +  (eval "$ac_compile") 2>conftest.er1
8457 +  ac_status=$?
8458 +  grep -v '^ *+' conftest.er1 >conftest.err
8459 +  rm -f conftest.er1
8460 +  cat conftest.err >&5
8461 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8462 +  (exit $ac_status); } && {
8463 +        test -z "$ac_cxx_werror_flag" ||
8464 +        test ! -s conftest.err
8465 +       } && test -s conftest.$ac_objext; then
8466 +  ac_lo=0 ac_mid=0
8467 +  while :; do
8468 +    cat >conftest.$ac_ext <<_ACEOF
8469 +/* confdefs.h.  */
8470 +_ACEOF
8471 +cat confdefs.h >>conftest.$ac_ext
8472 +cat >>conftest.$ac_ext <<_ACEOF
8473 +/* end confdefs.h.  */
8474 +$ac_includes_default
8475 +   typedef struct timespec ac__type_sizeof_;
8476 +int
8477 +main ()
8478 +{
8479 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
8480 +test_array @<:@0@:>@ = 0
8481 +
8482 +  ;
8483 +  return 0;
8484 +}
8485 +_ACEOF
8486 +rm -f conftest.$ac_objext
8487 +if { (ac_try="$ac_compile"
8488 +case "(($ac_try" in
8489 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8490 +  *) ac_try_echo=$ac_try;;
8491 +esac
8492 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8493 +  (eval "$ac_compile") 2>conftest.er1
8494 +  ac_status=$?
8495 +  grep -v '^ *+' conftest.er1 >conftest.err
8496 +  rm -f conftest.er1
8497 +  cat conftest.err >&5
8498 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8499 +  (exit $ac_status); } && {
8500 +        test -z "$ac_cxx_werror_flag" ||
8501 +        test ! -s conftest.err
8502 +       } && test -s conftest.$ac_objext; then
8503 +  ac_hi=$ac_mid; break
8504 +else
8505 +  echo "$as_me: failed program was:" >&5
8506 +sed 's/^/| /' conftest.$ac_ext >&5
8507 +
8508 +       ac_lo=`expr $ac_mid + 1`
8509 +                       if test $ac_lo -le $ac_mid; then
8510 +                         ac_lo= ac_hi=
8511 +                         break
8512 +                       fi
8513 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
8514 +fi
8515 +
8516 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8517 +  done
8518 +else
8519 +  echo "$as_me: failed program was:" >&5
8520 +sed 's/^/| /' conftest.$ac_ext >&5
8521 +
8522 +       cat >conftest.$ac_ext <<_ACEOF
8523 +/* confdefs.h.  */
8524 +_ACEOF
8525 +cat confdefs.h >>conftest.$ac_ext
8526 +cat >>conftest.$ac_ext <<_ACEOF
8527 +/* end confdefs.h.  */
8528 +$ac_includes_default
8529 +   typedef struct timespec ac__type_sizeof_;
8530 +int
8531 +main ()
8532 +{
8533 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
8534 +test_array @<:@0@:>@ = 0
8535 +
8536 +  ;
8537 +  return 0;
8538 +}
8539 +_ACEOF
8540 +rm -f conftest.$ac_objext
8541 +if { (ac_try="$ac_compile"
8542 +case "(($ac_try" in
8543 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8544 +  *) ac_try_echo=$ac_try;;
8545 +esac
8546 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8547 +  (eval "$ac_compile") 2>conftest.er1
8548 +  ac_status=$?
8549 +  grep -v '^ *+' conftest.er1 >conftest.err
8550 +  rm -f conftest.er1
8551 +  cat conftest.err >&5
8552 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8553 +  (exit $ac_status); } && {
8554 +        test -z "$ac_cxx_werror_flag" ||
8555 +        test ! -s conftest.err
8556 +       } && test -s conftest.$ac_objext; then
8557 +  ac_hi=-1 ac_mid=-1
8558 +  while :; do
8559 +    cat >conftest.$ac_ext <<_ACEOF
8560 +/* confdefs.h.  */
8561 +_ACEOF
8562 +cat confdefs.h >>conftest.$ac_ext
8563 +cat >>conftest.$ac_ext <<_ACEOF
8564 +/* end confdefs.h.  */
8565 +$ac_includes_default
8566 +   typedef struct timespec ac__type_sizeof_;
8567 +int
8568 +main ()
8569 +{
8570 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
8571 +test_array @<:@0@:>@ = 0
8572 +
8573 +  ;
8574 +  return 0;
8575 +}
8576 +_ACEOF
8577 +rm -f conftest.$ac_objext
8578 +if { (ac_try="$ac_compile"
8579 +case "(($ac_try" in
8580 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8581 +  *) ac_try_echo=$ac_try;;
8582 +esac
8583 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8584 +  (eval "$ac_compile") 2>conftest.er1
8585 +  ac_status=$?
8586 +  grep -v '^ *+' conftest.er1 >conftest.err
8587 +  rm -f conftest.er1
8588 +  cat conftest.err >&5
8589 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8590 +  (exit $ac_status); } && {
8591 +        test -z "$ac_cxx_werror_flag" ||
8592 +        test ! -s conftest.err
8593 +       } && test -s conftest.$ac_objext; then
8594 +  ac_lo=$ac_mid; break
8595 +else
8596 +  echo "$as_me: failed program was:" >&5
8597 +sed 's/^/| /' conftest.$ac_ext >&5
8598 +
8599 +       ac_hi=`expr '(' $ac_mid ')' - 1`
8600 +                       if test $ac_mid -le $ac_hi; then
8601 +                         ac_lo= ac_hi=
8602 +                         break
8603 +                       fi
8604 +                       ac_mid=`expr 2 '*' $ac_mid`
8605 +fi
8606 +
8607 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8608 +  done
8609 +else
8610 +  echo "$as_me: failed program was:" >&5
8611 +sed 's/^/| /' conftest.$ac_ext >&5
8612 +
8613 +       ac_lo= ac_hi=
8614 +fi
8615 +
8616 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8617 +fi
8618 +
8619 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8620 +# Binary search between lo and hi bounds.
8621 +while test "x$ac_lo" != "x$ac_hi"; do
8622 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
8623 +  cat >conftest.$ac_ext <<_ACEOF
8624 +/* confdefs.h.  */
8625 +_ACEOF
8626 +cat confdefs.h >>conftest.$ac_ext
8627 +cat >>conftest.$ac_ext <<_ACEOF
8628 +/* end confdefs.h.  */
8629 +$ac_includes_default
8630 +   typedef struct timespec ac__type_sizeof_;
8631 +int
8632 +main ()
8633 +{
8634 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
8635 +test_array @<:@0@:>@ = 0
8636 +
8637 +  ;
8638 +  return 0;
8639 +}
8640 +_ACEOF
8641 +rm -f conftest.$ac_objext
8642 +if { (ac_try="$ac_compile"
8643 +case "(($ac_try" in
8644 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8645 +  *) ac_try_echo=$ac_try;;
8646 +esac
8647 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8648 +  (eval "$ac_compile") 2>conftest.er1
8649 +  ac_status=$?
8650 +  grep -v '^ *+' conftest.er1 >conftest.err
8651 +  rm -f conftest.er1
8652 +  cat conftest.err >&5
8653 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8654 +  (exit $ac_status); } && {
8655 +        test -z "$ac_cxx_werror_flag" ||
8656 +        test ! -s conftest.err
8657 +       } && test -s conftest.$ac_objext; then
8658 +  ac_hi=$ac_mid
8659 +else
8660 +  echo "$as_me: failed program was:" >&5
8661 +sed 's/^/| /' conftest.$ac_ext >&5
8662 +
8663 +       ac_lo=`expr '(' $ac_mid ')' + 1`
8664 +fi
8665 +
8666 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8667 +done
8668 +case $ac_lo in
8669 +?*) ac_cv_sizeof_struct_timespec=$ac_lo;;
8670 +'') if test "$ac_cv_type_struct_timespec" = yes; then
8671 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timespec)
8672 +See \`config.log' for more details." >&5
8673 +echo "$as_me: error: cannot compute sizeof (struct timespec)
8674 +See \`config.log' for more details." >&2;}
8675 +   { (exit 77); exit 77; }; }
8676 +   else
8677 +     ac_cv_sizeof_struct_timespec=0
8678 +   fi ;;
8679 +esac
8680 +else
8681 +  cat >conftest.$ac_ext <<_ACEOF
8682 +/* confdefs.h.  */
8683 +_ACEOF
8684 +cat confdefs.h >>conftest.$ac_ext
8685 +cat >>conftest.$ac_ext <<_ACEOF
8686 +/* end confdefs.h.  */
8687 +$ac_includes_default
8688 +   typedef struct timespec ac__type_sizeof_;
8689 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
8690 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
8691 +@%:@include <stdio.h>
8692 +@%:@include <stdlib.h>
8693 +int
8694 +main ()
8695 +{
8696 +
8697 +  FILE *f = fopen ("conftest.val", "w");
8698 +  if (! f)
8699 +    return 1;
8700 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
8701 +    {
8702 +      long int i = longval ();
8703 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
8704 +       return 1;
8705 +      fprintf (f, "%ld\n", i);
8706 +    }
8707 +  else
8708 +    {
8709 +      unsigned long int i = ulongval ();
8710 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
8711 +       return 1;
8712 +      fprintf (f, "%lu\n", i);
8713 +    }
8714 +  return ferror (f) || fclose (f) != 0;
8715 +
8716 +  ;
8717 +  return 0;
8718 +}
8719 +_ACEOF
8720 +rm -f conftest$ac_exeext
8721 +if { (ac_try="$ac_link"
8722 +case "(($ac_try" in
8723 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8724 +  *) ac_try_echo=$ac_try;;
8725 +esac
8726 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8727 +  (eval "$ac_link") 2>&5
8728 +  ac_status=$?
8729 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8730 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
8731 +  { (case "(($ac_try" in
8732 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8733 +  *) ac_try_echo=$ac_try;;
8734 +esac
8735 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8736 +  (eval "$ac_try") 2>&5
8737 +  ac_status=$?
8738 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8739 +  (exit $ac_status); }; }; then
8740 +  ac_cv_sizeof_struct_timespec=`cat conftest.val`
8741 +else
8742 +  echo "$as_me: program exited with status $ac_status" >&5
8743 +echo "$as_me: failed program was:" >&5
8744 +sed 's/^/| /' conftest.$ac_ext >&5
8745 +
8746 +( exit $ac_status )
8747 +if test "$ac_cv_type_struct_timespec" = yes; then
8748 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (struct timespec)
8749 +See \`config.log' for more details." >&5
8750 +echo "$as_me: error: cannot compute sizeof (struct timespec)
8751 +See \`config.log' for more details." >&2;}
8752 +   { (exit 77); exit 77; }; }
8753 +   else
8754 +     ac_cv_sizeof_struct_timespec=0
8755 +   fi
8756 +fi
8757 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
8758 +fi
8759 +rm -f conftest.val
8760 +fi
8761 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_struct_timespec" >&5
8762 +echo "${ECHO_T}$ac_cv_sizeof_struct_timespec" >&6; }
8763 +
8764 +
8765 +
8766 +cat >>confdefs.h <<_ACEOF
8767 +@%:@define SIZEOF_STRUCT_TIMESPEC $ac_cv_sizeof_struct_timespec
8768 +_ACEOF
8769 +
8770 +
8771 +fi
8772 +
8773 +    
8774 +
8775 +for ac_header in endian.h machine/endian.h
8776 +do
8777 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
8778 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
8779 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
8780 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
8781 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
8782 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8783 +fi
8784 +ac_res=`eval echo '${'$as_ac_Header'}'`
8785 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
8786 +echo "${ECHO_T}$ac_res" >&6; }
8787 +else
8788 +  # Is the header compilable?
8789 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
8790 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
8791 +cat >conftest.$ac_ext <<_ACEOF
8792 +/* confdefs.h.  */
8793 +_ACEOF
8794 +cat confdefs.h >>conftest.$ac_ext
8795 +cat >>conftest.$ac_ext <<_ACEOF
8796 +/* end confdefs.h.  */
8797 +$ac_includes_default
8798 +@%:@include <$ac_header>
8799 +_ACEOF
8800 +rm -f conftest.$ac_objext
8801 +if { (ac_try="$ac_compile"
8802 +case "(($ac_try" in
8803 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8804 +  *) ac_try_echo=$ac_try;;
8805 +esac
8806 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8807 +  (eval "$ac_compile") 2>conftest.er1
8808 +  ac_status=$?
8809 +  grep -v '^ *+' conftest.er1 >conftest.err
8810 +  rm -f conftest.er1
8811 +  cat conftest.err >&5
8812 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8813 +  (exit $ac_status); } && {
8814 +        test -z "$ac_cxx_werror_flag" ||
8815 +        test ! -s conftest.err
8816 +       } && test -s conftest.$ac_objext; then
8817 +  ac_header_compiler=yes
8818 +else
8819 +  echo "$as_me: failed program was:" >&5
8820 +sed 's/^/| /' conftest.$ac_ext >&5
8821 +
8822 +       ac_header_compiler=no
8823 +fi
8824 +
8825 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
8826 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
8827 +echo "${ECHO_T}$ac_header_compiler" >&6; }
8828 +
8829 +# Is the header present?
8830 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
8831 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
8832 +cat >conftest.$ac_ext <<_ACEOF
8833 +/* confdefs.h.  */
8834 +_ACEOF
8835 +cat confdefs.h >>conftest.$ac_ext
8836 +cat >>conftest.$ac_ext <<_ACEOF
8837 +/* end confdefs.h.  */
8838 +@%:@include <$ac_header>
8839 +_ACEOF
8840 +if { (ac_try="$ac_cpp conftest.$ac_ext"
8841 +case "(($ac_try" in
8842 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8843 +  *) ac_try_echo=$ac_try;;
8844 +esac
8845 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8846 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
8847 +  ac_status=$?
8848 +  grep -v '^ *+' conftest.er1 >conftest.err
8849 +  rm -f conftest.er1
8850 +  cat conftest.err >&5
8851 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8852 +  (exit $ac_status); } >/dev/null && {
8853 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
8854 +        test ! -s conftest.err
8855 +       }; then
8856 +  ac_header_preproc=yes
8857 +else
8858 +  echo "$as_me: failed program was:" >&5
8859 +sed 's/^/| /' conftest.$ac_ext >&5
8860 +
8861 +  ac_header_preproc=no
8862 +fi
8863 +
8864 +rm -f conftest.err conftest.$ac_ext
8865 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
8866 +echo "${ECHO_T}$ac_header_preproc" >&6; }
8867 +
8868 +# So?  What about this header?
8869 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
8870 +  yes:no: )
8871 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
8872 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
8873 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
8874 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
8875 +    ac_header_preproc=yes
8876 +    ;;
8877 +  no:yes:* )
8878 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
8879 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
8880 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
8881 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
8882 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
8883 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
8884 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
8885 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
8886 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
8887 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
8888 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
8889 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
8890 +    
8891 +    ;;
8892 +esac
8893 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
8894 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
8895 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
8896 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8897 +else
8898 +  eval "$as_ac_Header=\$ac_header_preproc"
8899 +fi
8900 +ac_res=`eval echo '${'$as_ac_Header'}'`
8901 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
8902 +echo "${ECHO_T}$ac_res" >&6; }
8903 +
8904 +fi
8905 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
8906 +  cat >>confdefs.h <<_ACEOF
8907 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
8908 +_ACEOF
8909 +                   if test "x$ac_header" != x; then
8910 +                       endian_hdr=$ac_header
8911 +                   else
8912 +                       endian_hdr=$ac_hdr
8913 +                   fi
8914 +                   break
8915 +else
8916 +  endian_hdr=no
8917 +fi
8918 +
8919 +done
8920 +
8921 +    if test "x$endian_hdr" != xno; then
8922 +       { echo "$as_me:$LINENO: checking endianness" >&5
8923 +echo $ECHO_N "checking endianness... $ECHO_C" >&6; }
8924 +if test "${ac_cv_endian+set}" = set; then
8925 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8926 +else
8927 +  
8928 +                   ac_cv_endian=0
8929 +           cat > conftest.$ac_ext <<EOF
8930 +#line __oline__ "configure"
8931 +#include "confdefs.h"
8932 +#include <$endian_hdr>
8933 +#ifdef __BYTE_ORDER
8934 +__BYTE_ORDER
8935 +#elif defined(BYTE_ORDER)
8936 +BYTE_ORDER
8937 +#else
8938 +0
8939 +#endif
8940 +EOF
8941 +           ac_try="$ac_cpp conftest.$ac_ext >conftest.result 2>conftest.out"
8942 +           { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
8943 +  (eval $ac_try) 2>&5
8944 +  ac_status=$?
8945 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8946 +  (exit $ac_status); }
8947 +           ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
8948 +           if test -z "$ac_err"; then
8949 +               ac_cv_endian=`grep '^[1234]' conftest.result`
8950 +               test -z "$ac_cv_endian" && ac_cv_endian=0
8951 +           else
8952 +               echo "$ac_err" >&5
8953 +               echo "configure: failed program was:" >&5
8954 +               cat conftest.$ac_ext >&5
8955 +           fi
8956 +           rm -f conftest*
8957 +fi
8958 +{ echo "$as_me:$LINENO: result: $ac_cv_endian" >&5
8959 +echo "${ECHO_T}$ac_cv_endian" >&6; }
8960 +    elif test "x$cross_compiling" != xyes ; then
8961 +       { echo "$as_me:$LINENO: checking endianness" >&5
8962 +echo $ECHO_N "checking endianness... $ECHO_C" >&6; }
8963 +if test "${ac_cv_endian+set}" = set; then
8964 +  echo $ECHO_N "(cached) $ECHO_C" >&6
8965 +else
8966 +  if test "$cross_compiling" = yes; then
8967 +  ac_cv_endian=0
8968 +else
8969 +  cat >conftest.$ac_ext <<_ACEOF
8970 +/* confdefs.h.  */
8971 +_ACEOF
8972 +cat confdefs.h >>conftest.$ac_ext
8973 +cat >>conftest.$ac_ext <<_ACEOF
8974 +/* end confdefs.h.  */
8975 +#include <stdlib.h>
8976 +#include <stdio.h>
8977 +int main(int argc, char *argv[]) {
8978 +    union { int i; char c[4]; } u;
8979 +    FILE *f = fopen("conftestdata", "w");
8980 +    if (!f)
8981 +       exit(1);
8982 +    u.i = ('1') | ('2' << 8) | ('3' << 16) | ('4' << 24);
8983 +    fprintf(f, "%4.4s\n", u.c);
8984 +    exit(0);
8985 +}
8986 +_ACEOF
8987 +rm -f conftest$ac_exeext
8988 +if { (ac_try="$ac_link"
8989 +case "(($ac_try" in
8990 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
8991 +  *) ac_try_echo=$ac_try;;
8992 +esac
8993 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
8994 +  (eval "$ac_link") 2>&5
8995 +  ac_status=$?
8996 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
8997 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
8998 +  { (case "(($ac_try" in
8999 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9000 +  *) ac_try_echo=$ac_try;;
9001 +esac
9002 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9003 +  (eval "$ac_try") 2>&5
9004 +  ac_status=$?
9005 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9006 +  (exit $ac_status); }; }; then
9007 +  ac_cv_endian=`cat conftestdata`
9008 +else
9009 +  echo "$as_me: program exited with status $ac_status" >&5
9010 +echo "$as_me: failed program was:" >&5
9011 +sed 's/^/| /' conftest.$ac_ext >&5
9012 +
9013 +( exit $ac_status )
9014 +ac_cv_endian=0
9015 +fi
9016 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
9017 +fi
9018 +
9019 +
9020 +fi
9021 +{ echo "$as_me:$LINENO: result: $ac_cv_endian" >&5
9022 +echo "${ECHO_T}$ac_cv_endian" >&6; }
9023 +    else
9024 +       ac_cv_endian=0
9025 +    fi
9026 +    
9027 +cat >>confdefs.h <<_ACEOF
9028 +@%:@define CLICK_BYTE_ORDER $ac_cv_endian
9029 +_ACEOF
9030 +
9031 +    
9032 +for ac_header in byteswap.h
9033 +do
9034 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
9035 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9036 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
9037 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9038 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9039 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9040 +fi
9041 +ac_res=`eval echo '${'$as_ac_Header'}'`
9042 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
9043 +echo "${ECHO_T}$ac_res" >&6; }
9044 +else
9045 +  # Is the header compilable?
9046 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
9047 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
9048 +cat >conftest.$ac_ext <<_ACEOF
9049 +/* confdefs.h.  */
9050 +_ACEOF
9051 +cat confdefs.h >>conftest.$ac_ext
9052 +cat >>conftest.$ac_ext <<_ACEOF
9053 +/* end confdefs.h.  */
9054 +$ac_includes_default
9055 +@%:@include <$ac_header>
9056 +_ACEOF
9057 +rm -f conftest.$ac_objext
9058 +if { (ac_try="$ac_compile"
9059 +case "(($ac_try" in
9060 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9061 +  *) ac_try_echo=$ac_try;;
9062 +esac
9063 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9064 +  (eval "$ac_compile") 2>conftest.er1
9065 +  ac_status=$?
9066 +  grep -v '^ *+' conftest.er1 >conftest.err
9067 +  rm -f conftest.er1
9068 +  cat conftest.err >&5
9069 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9070 +  (exit $ac_status); } && {
9071 +        test -z "$ac_cxx_werror_flag" ||
9072 +        test ! -s conftest.err
9073 +       } && test -s conftest.$ac_objext; then
9074 +  ac_header_compiler=yes
9075 +else
9076 +  echo "$as_me: failed program was:" >&5
9077 +sed 's/^/| /' conftest.$ac_ext >&5
9078 +
9079 +       ac_header_compiler=no
9080 +fi
9081 +
9082 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9083 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
9084 +echo "${ECHO_T}$ac_header_compiler" >&6; }
9085 +
9086 +# Is the header present?
9087 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
9088 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
9089 +cat >conftest.$ac_ext <<_ACEOF
9090 +/* confdefs.h.  */
9091 +_ACEOF
9092 +cat confdefs.h >>conftest.$ac_ext
9093 +cat >>conftest.$ac_ext <<_ACEOF
9094 +/* end confdefs.h.  */
9095 +@%:@include <$ac_header>
9096 +_ACEOF
9097 +if { (ac_try="$ac_cpp conftest.$ac_ext"
9098 +case "(($ac_try" in
9099 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9100 +  *) ac_try_echo=$ac_try;;
9101 +esac
9102 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9103 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
9104 +  ac_status=$?
9105 +  grep -v '^ *+' conftest.er1 >conftest.err
9106 +  rm -f conftest.er1
9107 +  cat conftest.err >&5
9108 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9109 +  (exit $ac_status); } >/dev/null && {
9110 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
9111 +        test ! -s conftest.err
9112 +       }; then
9113 +  ac_header_preproc=yes
9114 +else
9115 +  echo "$as_me: failed program was:" >&5
9116 +sed 's/^/| /' conftest.$ac_ext >&5
9117 +
9118 +  ac_header_preproc=no
9119 +fi
9120 +
9121 +rm -f conftest.err conftest.$ac_ext
9122 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
9123 +echo "${ECHO_T}$ac_header_preproc" >&6; }
9124 +
9125 +# So?  What about this header?
9126 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
9127 +  yes:no: )
9128 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
9129 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
9130 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
9131 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
9132 +    ac_header_preproc=yes
9133 +    ;;
9134 +  no:yes:* )
9135 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
9136 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
9137 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
9138 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
9139 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
9140 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
9141 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
9142 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
9143 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
9144 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
9145 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
9146 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
9147 +    
9148 +    ;;
9149 +esac
9150 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
9151 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9152 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9153 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9154 +else
9155 +  eval "$as_ac_Header=\$ac_header_preproc"
9156 +fi
9157 +ac_res=`eval echo '${'$as_ac_Header'}'`
9158 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
9159 +echo "${ECHO_T}$ac_res" >&6; }
9160 +
9161 +fi
9162 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
9163 +  cat >>confdefs.h <<_ACEOF
9164 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
9165 +_ACEOF
9166
9167 +fi
9168 +
9169 +done
9170 +
9171 +
9172 +
9173 +    { echo "$as_me:$LINENO: checking whether signed right shift is arithmetic" >&5
9174 +echo $ECHO_N "checking whether signed right shift is arithmetic... $ECHO_C" >&6; }
9175 +if test "${ac_cv_arithmetic_right_shift+set}" = set; then
9176 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9177 +else
9178 +  cat >conftest.$ac_ext <<_ACEOF
9179 +/* confdefs.h.  */
9180 +_ACEOF
9181 +cat confdefs.h >>conftest.$ac_ext
9182 +cat >>conftest.$ac_ext <<_ACEOF
9183 +/* end confdefs.h.  */
9184 +int f(int x[((int) -1) >> 15]) { return x[0]; }
9185 +int
9186 +main ()
9187 +{
9188 +
9189 +  ;
9190 +  return 0;
9191 +}
9192 +_ACEOF
9193 +rm -f conftest.$ac_objext
9194 +if { (ac_try="$ac_compile"
9195 +case "(($ac_try" in
9196 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9197 +  *) ac_try_echo=$ac_try;;
9198 +esac
9199 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9200 +  (eval "$ac_compile") 2>conftest.er1
9201 +  ac_status=$?
9202 +  grep -v '^ *+' conftest.er1 >conftest.err
9203 +  rm -f conftest.er1
9204 +  cat conftest.err >&5
9205 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9206 +  (exit $ac_status); } && {
9207 +        test -z "$ac_cxx_werror_flag" ||
9208 +        test ! -s conftest.err
9209 +       } && test -s conftest.$ac_objext; then
9210 +  ac_cv_arithmetic_right_shift=no
9211 +else
9212 +  echo "$as_me: failed program was:" >&5
9213 +sed 's/^/| /' conftest.$ac_ext >&5
9214 +
9215 +       ac_cv_arithmetic_right_shift=yes
9216 +fi
9217 +
9218 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9219 +fi
9220 +{ echo "$as_me:$LINENO: result: $ac_cv_arithmetic_right_shift" >&5
9221 +echo "${ECHO_T}$ac_cv_arithmetic_right_shift" >&6; }
9222 +    if test $ac_cv_arithmetic_right_shift = yes; then
9223 +       
9224 +cat >>confdefs.h <<\_ACEOF
9225 +@%:@define HAVE_ARITHMETIC_RIGHT_SHIFT 1
9226 +_ACEOF
9227 +
9228 +    fi
9229 +
9230 +    ac_ext=cpp
9231 +ac_cpp='$CXXCPP $CPPFLAGS'
9232 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
9233 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
9234 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
9235 +
9236 +    { echo "$as_me:$LINENO: checking for addressable va_list type" >&5
9237 +echo $ECHO_N "checking for addressable va_list type... $ECHO_C" >&6; }
9238 +if test "${ac_cv_va_list_addr+set}" = set; then
9239 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9240 +else
9241 +  cat >conftest.$ac_ext <<_ACEOF
9242 +/* confdefs.h.  */
9243 +_ACEOF
9244 +cat confdefs.h >>conftest.$ac_ext
9245 +cat >>conftest.$ac_ext <<_ACEOF
9246 +/* end confdefs.h.  */
9247 +#include <stdarg.h>
9248 +void f(va_list *) {
9249 +}
9250 +void g(va_list val) {
9251 +    f(&val);
9252 +}
9253 +void h(int a, ...) {
9254 +    va_list val;
9255 +    va_start(val, a);
9256 +    g(val);
9257 +    va_end(val);
9258 +}
9259 +int
9260 +main ()
9261 +{
9262 +h(2, 3, 4);
9263 +  ;
9264 +  return 0;
9265 +}
9266 +_ACEOF
9267 +rm -f conftest.$ac_objext
9268 +if { (ac_try="$ac_compile"
9269 +case "(($ac_try" in
9270 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9271 +  *) ac_try_echo=$ac_try;;
9272 +esac
9273 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9274 +  (eval "$ac_compile") 2>conftest.er1
9275 +  ac_status=$?
9276 +  grep -v '^ *+' conftest.er1 >conftest.err
9277 +  rm -f conftest.er1
9278 +  cat conftest.err >&5
9279 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9280 +  (exit $ac_status); } && {
9281 +        test -z "$ac_cxx_werror_flag" ||
9282 +        test ! -s conftest.err
9283 +       } && test -s conftest.$ac_objext; then
9284 +  ac_cv_va_list_addr=yes
9285 +else
9286 +  echo "$as_me: failed program was:" >&5
9287 +sed 's/^/| /' conftest.$ac_ext >&5
9288 +
9289 +       ac_cv_va_list_addr=no
9290 +fi
9291 +
9292 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9293 +fi
9294 +{ echo "$as_me:$LINENO: result: $ac_cv_va_list_addr" >&5
9295 +echo "${ECHO_T}$ac_cv_va_list_addr" >&6; }
9296 +    if test "x$ac_cv_va_list_addr" = xyes; then
9297 +       
9298 +cat >>confdefs.h <<\_ACEOF
9299 +@%:@define HAVE_ADDRESSABLE_VA_LIST 1
9300 +_ACEOF
9301 +
9302 +    fi
9303 +
9304 +
9305 +    { echo "$as_me:$LINENO: checking for __builtin_clz" >&5
9306 +echo $ECHO_N "checking for __builtin_clz... $ECHO_C" >&6; }
9307 +if test "${ac_cv_have___builtin_clz+set}" = set; then
9308 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9309 +else
9310 +  cat >conftest.$ac_ext <<_ACEOF
9311 +/* confdefs.h.  */
9312 +_ACEOF
9313 +cat confdefs.h >>conftest.$ac_ext
9314 +cat >>conftest.$ac_ext <<_ACEOF
9315 +/* end confdefs.h.  */
9316 +volatile int x = 11;
9317 +int
9318 +main ()
9319 +{
9320 +int y = __builtin_clz(x);
9321 +  ;
9322 +  return 0;
9323 +}
9324 +_ACEOF
9325 +rm -f conftest.$ac_objext
9326 +if { (ac_try="$ac_compile"
9327 +case "(($ac_try" in
9328 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9329 +  *) ac_try_echo=$ac_try;;
9330 +esac
9331 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9332 +  (eval "$ac_compile") 2>conftest.er1
9333 +  ac_status=$?
9334 +  grep -v '^ *+' conftest.er1 >conftest.err
9335 +  rm -f conftest.er1
9336 +  cat conftest.err >&5
9337 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9338 +  (exit $ac_status); } && {
9339 +        test -z "$ac_cxx_werror_flag" ||
9340 +        test ! -s conftest.err
9341 +       } && test -s conftest.$ac_objext; then
9342 +  ac_cv_have___builtin_clz=yes
9343 +else
9344 +  echo "$as_me: failed program was:" >&5
9345 +sed 's/^/| /' conftest.$ac_ext >&5
9346 +
9347 +       ac_cv_have___builtin_clz=no
9348 +fi
9349 +
9350 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9351 +fi
9352 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clz" >&5
9353 +echo "${ECHO_T}$ac_cv_have___builtin_clz" >&6; }
9354 +    if test $ac_cv_have___builtin_clz = yes; then
9355 +       
9356 +cat >>confdefs.h <<\_ACEOF
9357 +@%:@define HAVE___BUILTIN_CLZ 1
9358 +_ACEOF
9359 +
9360 +    fi
9361 +    { echo "$as_me:$LINENO: checking for __builtin_clzl" >&5
9362 +echo $ECHO_N "checking for __builtin_clzl... $ECHO_C" >&6; }
9363 +if test "${ac_cv_have___builtin_clzl+set}" = set; then
9364 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9365 +else
9366 +  cat >conftest.$ac_ext <<_ACEOF
9367 +/* confdefs.h.  */
9368 +_ACEOF
9369 +cat confdefs.h >>conftest.$ac_ext
9370 +cat >>conftest.$ac_ext <<_ACEOF
9371 +/* end confdefs.h.  */
9372 +volatile long x = 11;
9373 +int
9374 +main ()
9375 +{
9376 +int y = __builtin_clzl(x);
9377 +  ;
9378 +  return 0;
9379 +}
9380 +_ACEOF
9381 +rm -f conftest.$ac_objext
9382 +if { (ac_try="$ac_compile"
9383 +case "(($ac_try" in
9384 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9385 +  *) ac_try_echo=$ac_try;;
9386 +esac
9387 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9388 +  (eval "$ac_compile") 2>conftest.er1
9389 +  ac_status=$?
9390 +  grep -v '^ *+' conftest.er1 >conftest.err
9391 +  rm -f conftest.er1
9392 +  cat conftest.err >&5
9393 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9394 +  (exit $ac_status); } && {
9395 +        test -z "$ac_cxx_werror_flag" ||
9396 +        test ! -s conftest.err
9397 +       } && test -s conftest.$ac_objext; then
9398 +  ac_cv_have___builtin_clzl=yes
9399 +else
9400 +  echo "$as_me: failed program was:" >&5
9401 +sed 's/^/| /' conftest.$ac_ext >&5
9402 +
9403 +       ac_cv_have___builtin_clzl=no
9404 +fi
9405 +
9406 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9407 +fi
9408 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clzl" >&5
9409 +echo "${ECHO_T}$ac_cv_have___builtin_clzl" >&6; }
9410 +    if test $ac_cv_have___builtin_clzl = yes; then
9411 +       
9412 +cat >>confdefs.h <<\_ACEOF
9413 +@%:@define HAVE___BUILTIN_CLZL 1
9414 +_ACEOF
9415 +
9416 +    fi
9417 +    { echo "$as_me:$LINENO: checking for __builtin_clzll" >&5
9418 +echo $ECHO_N "checking for __builtin_clzll... $ECHO_C" >&6; }
9419 +if test "${ac_cv_have___builtin_clzll+set}" = set; then
9420 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9421 +else
9422 +  cat >conftest.$ac_ext <<_ACEOF
9423 +/* confdefs.h.  */
9424 +_ACEOF
9425 +cat confdefs.h >>conftest.$ac_ext
9426 +cat >>conftest.$ac_ext <<_ACEOF
9427 +/* end confdefs.h.  */
9428 +volatile long long x = 11;
9429 +int
9430 +main ()
9431 +{
9432 +int y = __builtin_clzll(x);
9433 +  ;
9434 +  return 0;
9435 +}
9436 +_ACEOF
9437 +rm -f conftest.$ac_objext
9438 +if { (ac_try="$ac_compile"
9439 +case "(($ac_try" in
9440 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9441 +  *) ac_try_echo=$ac_try;;
9442 +esac
9443 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9444 +  (eval "$ac_compile") 2>conftest.er1
9445 +  ac_status=$?
9446 +  grep -v '^ *+' conftest.er1 >conftest.err
9447 +  rm -f conftest.er1
9448 +  cat conftest.err >&5
9449 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9450 +  (exit $ac_status); } && {
9451 +        test -z "$ac_cxx_werror_flag" ||
9452 +        test ! -s conftest.err
9453 +       } && test -s conftest.$ac_objext; then
9454 +  ac_cv_have___builtin_clzll=yes
9455 +else
9456 +  echo "$as_me: failed program was:" >&5
9457 +sed 's/^/| /' conftest.$ac_ext >&5
9458 +
9459 +       ac_cv_have___builtin_clzll=no
9460 +fi
9461 +
9462 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9463 +fi
9464 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_clzll" >&5
9465 +echo "${ECHO_T}$ac_cv_have___builtin_clzll" >&6; }
9466 +    if test $ac_cv_have___builtin_clzll = yes; then
9467 +       
9468 +cat >>confdefs.h <<\_ACEOF
9469 +@%:@define HAVE___BUILTIN_CLZLL 1
9470 +_ACEOF
9471 +
9472 +    fi
9473 +
9474 +    { echo "$as_me:$LINENO: checking for __builtin_ffs" >&5
9475 +echo $ECHO_N "checking for __builtin_ffs... $ECHO_C" >&6; }
9476 +if test "${ac_cv_have___builtin_ffs+set}" = set; then
9477 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9478 +else
9479 +  cat >conftest.$ac_ext <<_ACEOF
9480 +/* confdefs.h.  */
9481 +_ACEOF
9482 +cat confdefs.h >>conftest.$ac_ext
9483 +cat >>conftest.$ac_ext <<_ACEOF
9484 +/* end confdefs.h.  */
9485 +volatile int x = 11;
9486 +int
9487 +main ()
9488 +{
9489 +int y = __builtin_ffs(x);
9490 +  ;
9491 +  return 0;
9492 +}
9493 +_ACEOF
9494 +rm -f conftest.$ac_objext
9495 +if { (ac_try="$ac_compile"
9496 +case "(($ac_try" in
9497 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9498 +  *) ac_try_echo=$ac_try;;
9499 +esac
9500 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9501 +  (eval "$ac_compile") 2>conftest.er1
9502 +  ac_status=$?
9503 +  grep -v '^ *+' conftest.er1 >conftest.err
9504 +  rm -f conftest.er1
9505 +  cat conftest.err >&5
9506 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9507 +  (exit $ac_status); } && {
9508 +        test -z "$ac_cxx_werror_flag" ||
9509 +        test ! -s conftest.err
9510 +       } && test -s conftest.$ac_objext; then
9511 +  ac_cv_have___builtin_ffs=yes
9512 +else
9513 +  echo "$as_me: failed program was:" >&5
9514 +sed 's/^/| /' conftest.$ac_ext >&5
9515 +
9516 +       ac_cv_have___builtin_ffs=no
9517 +fi
9518 +
9519 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9520 +fi
9521 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffs" >&5
9522 +echo "${ECHO_T}$ac_cv_have___builtin_ffs" >&6; }
9523 +    if test $ac_cv_have___builtin_ffs = yes; then
9524 +       
9525 +cat >>confdefs.h <<\_ACEOF
9526 +@%:@define HAVE___BUILTIN_FFS 1
9527 +_ACEOF
9528 +
9529 +    fi
9530 +    { echo "$as_me:$LINENO: checking for __builtin_ffsl" >&5
9531 +echo $ECHO_N "checking for __builtin_ffsl... $ECHO_C" >&6; }
9532 +if test "${ac_cv_have___builtin_ffsl+set}" = set; then
9533 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9534 +else
9535 +  cat >conftest.$ac_ext <<_ACEOF
9536 +/* confdefs.h.  */
9537 +_ACEOF
9538 +cat confdefs.h >>conftest.$ac_ext
9539 +cat >>conftest.$ac_ext <<_ACEOF
9540 +/* end confdefs.h.  */
9541 +volatile long x = 11;
9542 +int
9543 +main ()
9544 +{
9545 +int y = __builtin_ffsl(x);
9546 +  ;
9547 +  return 0;
9548 +}
9549 +_ACEOF
9550 +rm -f conftest.$ac_objext
9551 +if { (ac_try="$ac_compile"
9552 +case "(($ac_try" in
9553 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9554 +  *) ac_try_echo=$ac_try;;
9555 +esac
9556 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9557 +  (eval "$ac_compile") 2>conftest.er1
9558 +  ac_status=$?
9559 +  grep -v '^ *+' conftest.er1 >conftest.err
9560 +  rm -f conftest.er1
9561 +  cat conftest.err >&5
9562 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9563 +  (exit $ac_status); } && {
9564 +        test -z "$ac_cxx_werror_flag" ||
9565 +        test ! -s conftest.err
9566 +       } && test -s conftest.$ac_objext; then
9567 +  ac_cv_have___builtin_ffsl=yes
9568 +else
9569 +  echo "$as_me: failed program was:" >&5
9570 +sed 's/^/| /' conftest.$ac_ext >&5
9571 +
9572 +       ac_cv_have___builtin_ffsl=no
9573 +fi
9574 +
9575 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9576 +fi
9577 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffsl" >&5
9578 +echo "${ECHO_T}$ac_cv_have___builtin_ffsl" >&6; }
9579 +    if test $ac_cv_have___builtin_ffsl = yes; then
9580 +       
9581 +cat >>confdefs.h <<\_ACEOF
9582 +@%:@define HAVE___BUILTIN_FFSL 1
9583 +_ACEOF
9584 +
9585 +    fi
9586 +    { echo "$as_me:$LINENO: checking for __builtin_ffsll" >&5
9587 +echo $ECHO_N "checking for __builtin_ffsll... $ECHO_C" >&6; }
9588 +if test "${ac_cv_have___builtin_ffsll+set}" = set; then
9589 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9590 +else
9591 +  cat >conftest.$ac_ext <<_ACEOF
9592 +/* confdefs.h.  */
9593 +_ACEOF
9594 +cat confdefs.h >>conftest.$ac_ext
9595 +cat >>conftest.$ac_ext <<_ACEOF
9596 +/* end confdefs.h.  */
9597 +volatile long long x = 11;
9598 +int
9599 +main ()
9600 +{
9601 +int y = __builtin_ffsll(x);
9602 +  ;
9603 +  return 0;
9604 +}
9605 +_ACEOF
9606 +rm -f conftest.$ac_objext
9607 +if { (ac_try="$ac_compile"
9608 +case "(($ac_try" in
9609 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9610 +  *) ac_try_echo=$ac_try;;
9611 +esac
9612 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9613 +  (eval "$ac_compile") 2>conftest.er1
9614 +  ac_status=$?
9615 +  grep -v '^ *+' conftest.er1 >conftest.err
9616 +  rm -f conftest.er1
9617 +  cat conftest.err >&5
9618 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9619 +  (exit $ac_status); } && {
9620 +        test -z "$ac_cxx_werror_flag" ||
9621 +        test ! -s conftest.err
9622 +       } && test -s conftest.$ac_objext; then
9623 +  ac_cv_have___builtin_ffsll=yes
9624 +else
9625 +  echo "$as_me: failed program was:" >&5
9626 +sed 's/^/| /' conftest.$ac_ext >&5
9627 +
9628 +       ac_cv_have___builtin_ffsll=no
9629 +fi
9630 +
9631 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9632 +fi
9633 +{ echo "$as_me:$LINENO: result: $ac_cv_have___builtin_ffsll" >&5
9634 +echo "${ECHO_T}$ac_cv_have___builtin_ffsll" >&6; }
9635 +    if test $ac_cv_have___builtin_ffsll = yes; then
9636 +       
9637 +cat >>confdefs.h <<\_ACEOF
9638 +@%:@define HAVE___BUILTIN_FFSLL 1
9639 +_ACEOF
9640 +
9641 +    fi
9642 +
9643 +    
9644 +for ac_header in strings.h
9645 +do
9646 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
9647 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9648 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
9649 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9650 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9651 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9652 +fi
9653 +ac_res=`eval echo '${'$as_ac_Header'}'`
9654 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
9655 +echo "${ECHO_T}$ac_res" >&6; }
9656 +else
9657 +  # Is the header compilable?
9658 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
9659 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
9660 +cat >conftest.$ac_ext <<_ACEOF
9661 +/* confdefs.h.  */
9662 +_ACEOF
9663 +cat confdefs.h >>conftest.$ac_ext
9664 +cat >>conftest.$ac_ext <<_ACEOF
9665 +/* end confdefs.h.  */
9666 +$ac_includes_default
9667 +@%:@include <$ac_header>
9668 +_ACEOF
9669 +rm -f conftest.$ac_objext
9670 +if { (ac_try="$ac_compile"
9671 +case "(($ac_try" in
9672 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9673 +  *) ac_try_echo=$ac_try;;
9674 +esac
9675 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9676 +  (eval "$ac_compile") 2>conftest.er1
9677 +  ac_status=$?
9678 +  grep -v '^ *+' conftest.er1 >conftest.err
9679 +  rm -f conftest.er1
9680 +  cat conftest.err >&5
9681 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9682 +  (exit $ac_status); } && {
9683 +        test -z "$ac_cxx_werror_flag" ||
9684 +        test ! -s conftest.err
9685 +       } && test -s conftest.$ac_objext; then
9686 +  ac_header_compiler=yes
9687 +else
9688 +  echo "$as_me: failed program was:" >&5
9689 +sed 's/^/| /' conftest.$ac_ext >&5
9690 +
9691 +       ac_header_compiler=no
9692 +fi
9693 +
9694 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
9695 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
9696 +echo "${ECHO_T}$ac_header_compiler" >&6; }
9697 +
9698 +# Is the header present?
9699 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
9700 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
9701 +cat >conftest.$ac_ext <<_ACEOF
9702 +/* confdefs.h.  */
9703 +_ACEOF
9704 +cat confdefs.h >>conftest.$ac_ext
9705 +cat >>conftest.$ac_ext <<_ACEOF
9706 +/* end confdefs.h.  */
9707 +@%:@include <$ac_header>
9708 +_ACEOF
9709 +if { (ac_try="$ac_cpp conftest.$ac_ext"
9710 +case "(($ac_try" in
9711 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9712 +  *) ac_try_echo=$ac_try;;
9713 +esac
9714 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9715 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
9716 +  ac_status=$?
9717 +  grep -v '^ *+' conftest.er1 >conftest.err
9718 +  rm -f conftest.er1
9719 +  cat conftest.err >&5
9720 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9721 +  (exit $ac_status); } >/dev/null && {
9722 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
9723 +        test ! -s conftest.err
9724 +       }; then
9725 +  ac_header_preproc=yes
9726 +else
9727 +  echo "$as_me: failed program was:" >&5
9728 +sed 's/^/| /' conftest.$ac_ext >&5
9729 +
9730 +  ac_header_preproc=no
9731 +fi
9732 +
9733 +rm -f conftest.err conftest.$ac_ext
9734 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
9735 +echo "${ECHO_T}$ac_header_preproc" >&6; }
9736 +
9737 +# So?  What about this header?
9738 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
9739 +  yes:no: )
9740 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
9741 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
9742 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
9743 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
9744 +    ac_header_preproc=yes
9745 +    ;;
9746 +  no:yes:* )
9747 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
9748 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
9749 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
9750 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
9751 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
9752 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
9753 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
9754 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
9755 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
9756 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
9757 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
9758 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
9759 +    
9760 +    ;;
9761 +esac
9762 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
9763 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
9764 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
9765 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9766 +else
9767 +  eval "$as_ac_Header=\$ac_header_preproc"
9768 +fi
9769 +ac_res=`eval echo '${'$as_ac_Header'}'`
9770 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
9771 +echo "${ECHO_T}$ac_res" >&6; }
9772 +
9773 +fi
9774 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
9775 +  cat >>confdefs.h <<_ACEOF
9776 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
9777 +_ACEOF
9778
9779 +fi
9780 +
9781 +done
9782 +
9783 +    
9784 +
9785 +
9786 +for ac_func in ffs ffsl ffsll
9787 +do
9788 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
9789 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
9790 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
9791 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
9792 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9793 +else
9794 +  cat >conftest.$ac_ext <<_ACEOF
9795 +/* confdefs.h.  */
9796 +_ACEOF
9797 +cat confdefs.h >>conftest.$ac_ext
9798 +cat >>conftest.$ac_ext <<_ACEOF
9799 +/* end confdefs.h.  */
9800 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
9801 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
9802 +#define $ac_func innocuous_$ac_func
9803 +
9804 +/* System header to define __stub macros and hopefully few prototypes,
9805 +    which can conflict with char $ac_func (); below.
9806 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
9807 +    <limits.h> exists even on freestanding compilers.  */
9808 +
9809 +#ifdef __STDC__
9810 +# include <limits.h>
9811 +#else
9812 +# include <assert.h>
9813 +#endif
9814 +
9815 +#undef $ac_func
9816 +
9817 +/* Override any GCC internal prototype to avoid an error.
9818 +   Use char because int might match the return type of a GCC
9819 +   builtin and then its argument prototype would still apply.  */
9820 +#ifdef __cplusplus
9821 +extern "C"
9822 +#endif
9823 +char $ac_func ();
9824 +/* The GNU C library defines this for functions which it implements
9825 +    to always fail with ENOSYS.  Some functions are actually named
9826 +    something starting with __ and the normal name is an alias.  */
9827 +#if defined __stub_$ac_func || defined __stub___$ac_func
9828 +choke me
9829 +#endif
9830 +
9831 +int
9832 +main ()
9833 +{
9834 +return $ac_func ();
9835 +  ;
9836 +  return 0;
9837 +}
9838 +_ACEOF
9839 +rm -f conftest.$ac_objext conftest$ac_exeext
9840 +if { (ac_try="$ac_link"
9841 +case "(($ac_try" in
9842 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
9843 +  *) ac_try_echo=$ac_try;;
9844 +esac
9845 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
9846 +  (eval "$ac_link") 2>conftest.er1
9847 +  ac_status=$?
9848 +  grep -v '^ *+' conftest.er1 >conftest.err
9849 +  rm -f conftest.er1
9850 +  cat conftest.err >&5
9851 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
9852 +  (exit $ac_status); } && {
9853 +        test -z "$ac_cxx_werror_flag" ||
9854 +        test ! -s conftest.err
9855 +       } && test -s conftest$ac_exeext &&
9856 +       $as_test_x conftest$ac_exeext; then
9857 +  eval "$as_ac_var=yes"
9858 +else
9859 +  echo "$as_me: failed program was:" >&5
9860 +sed 's/^/| /' conftest.$ac_ext >&5
9861 +
9862 +       eval "$as_ac_var=no"
9863 +fi
9864 +
9865 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
9866 +      conftest$ac_exeext conftest.$ac_ext
9867 +fi
9868 +ac_res=`eval echo '${'$as_ac_var'}'`
9869 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
9870 +echo "${ECHO_T}$ac_res" >&6; }
9871 +if test `eval echo '${'$as_ac_var'}'` = yes; then
9872 +  cat >>confdefs.h <<_ACEOF
9873 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
9874 +_ACEOF
9875
9876 +fi
9877 +done
9878 +
9879 +    
9880 +
9881 +
9882 +
9883 +# Check whether --enable-nanotimestamp was given.
9884 +if test "${enable_nanotimestamp+set}" = set; then
9885 +  enableval=$enable_nanotimestamp; 
9886 +fi
9887 +
9888 +if test "x$enable_nanotimestamp" = xyes; then
9889 +    cat >>confdefs.h <<\_ACEOF
9890 +@%:@define HAVE_NANOTIMESTAMP_ENABLED 1
9891 +_ACEOF
9892 +
9893 +fi
9894 +
9895 +
9896 +
9897 +# Check whether --enable-tools was given.
9898 +if test "${enable_tools+set}" = set; then
9899 +  enableval=$enable_tools; :
9900 +else
9901 +  enable_tools=mixed
9902 +fi
9903 +
9904 +
9905 +if test "$enable_tools" != mixed -a "$enable_tools" != host -a "$enable_tools" != build -a "$enable_tools" != no; then
9906 +  { { echo "$as_me:$LINENO: error: 
9907 +=========================================
9908 +
9909 +Bad value for --enable-tools.  Try 'host', 'build', 'mixed', or 'no'.
9910 +
9911 +=========================================" >&5
9912 +echo "$as_me: error: 
9913 +=========================================
9914 +
9915 +Bad value for --enable-tools.  Try 'host', 'build', 'mixed', or 'no'.
9916 +
9917 +=========================================" >&2;}
9918 +   { (exit 1); exit 1; }; }
9919 +elif test "$enable_tools" = no; then
9920 +  HOST_TOOLS=host
9921 +elif test "$cross_compiling" = no -o "$enable_tools" = host; then
9922 +  HOST_TOOLS=host
9923 +else
9924 +    for ac_prog in gcc
9925 +do
9926 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
9927 +set dummy $ac_prog; ac_word=$2
9928 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
9929 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
9930 +if test "${ac_cv_prog_BUILD_CC+set}" = set; then
9931 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9932 +else
9933 +  if test -n "$BUILD_CC"; then
9934 +  ac_cv_prog_BUILD_CC="$BUILD_CC" # Let the user override the test.
9935 +else
9936 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9937 +for as_dir in $PATH
9938 +do
9939 +  IFS=$as_save_IFS
9940 +  test -z "$as_dir" && as_dir=.
9941 +  for ac_exec_ext in '' $ac_executable_extensions; do
9942 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
9943 +    ac_cv_prog_BUILD_CC="$ac_prog"
9944 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9945 +    break 2
9946 +  fi
9947 +done
9948 +done
9949 +IFS=$as_save_IFS
9950 +
9951 +fi
9952 +fi
9953 +BUILD_CC=$ac_cv_prog_BUILD_CC
9954 +if test -n "$BUILD_CC"; then
9955 +  { echo "$as_me:$LINENO: result: $BUILD_CC" >&5
9956 +echo "${ECHO_T}$BUILD_CC" >&6; }
9957 +else
9958 +  { echo "$as_me:$LINENO: result: no" >&5
9959 +echo "${ECHO_T}no" >&6; }
9960 +fi
9961 +
9962 +
9963 +  test -n "$BUILD_CC" && break
9964 +done
9965 +
9966 +  for ac_prog in g++
9967 +do
9968 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
9969 +set dummy $ac_prog; ac_word=$2
9970 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
9971 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
9972 +if test "${ac_cv_prog_BUILD_CXX+set}" = set; then
9973 +  echo $ECHO_N "(cached) $ECHO_C" >&6
9974 +else
9975 +  if test -n "$BUILD_CXX"; then
9976 +  ac_cv_prog_BUILD_CXX="$BUILD_CXX" # Let the user override the test.
9977 +else
9978 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
9979 +for as_dir in $PATH
9980 +do
9981 +  IFS=$as_save_IFS
9982 +  test -z "$as_dir" && as_dir=.
9983 +  for ac_exec_ext in '' $ac_executable_extensions; do
9984 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
9985 +    ac_cv_prog_BUILD_CXX="$ac_prog"
9986 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
9987 +    break 2
9988 +  fi
9989 +done
9990 +done
9991 +IFS=$as_save_IFS
9992 +
9993 +fi
9994 +fi
9995 +BUILD_CXX=$ac_cv_prog_BUILD_CXX
9996 +if test -n "$BUILD_CXX"; then
9997 +  { echo "$as_me:$LINENO: result: $BUILD_CXX" >&5
9998 +echo "${ECHO_T}$BUILD_CXX" >&6; }
9999 +else
10000 +  { echo "$as_me:$LINENO: result: no" >&5
10001 +echo "${ECHO_T}no" >&6; }
10002 +fi
10003 +
10004 +
10005 +  test -n "$BUILD_CXX" && break
10006 +done
10007 +
10008 +  
10009 +        ac_base_build_cxx="$CXX"
10010 +    test -z "$ac_user_build_cxx" -a -n "$ac_compile_with_warnings" && \
10011 +       BUILD_CXX="$BUILD_CXX $CXX_WARNINGS $VTABLE_THUNKS"
10012 +
10013 +  for ac_prog in ar
10014 +do
10015 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
10016 +set dummy $ac_prog; ac_word=$2
10017 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
10018 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
10019 +if test "${ac_cv_prog_BUILD_AR+set}" = set; then
10020 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10021 +else
10022 +  if test -n "$BUILD_AR"; then
10023 +  ac_cv_prog_BUILD_AR="$BUILD_AR" # Let the user override the test.
10024 +else
10025 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
10026 +for as_dir in $PATH
10027 +do
10028 +  IFS=$as_save_IFS
10029 +  test -z "$as_dir" && as_dir=.
10030 +  for ac_exec_ext in '' $ac_executable_extensions; do
10031 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
10032 +    ac_cv_prog_BUILD_AR="$ac_prog"
10033 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
10034 +    break 2
10035 +  fi
10036 +done
10037 +done
10038 +IFS=$as_save_IFS
10039 +
10040 +fi
10041 +fi
10042 +BUILD_AR=$ac_cv_prog_BUILD_AR
10043 +if test -n "$BUILD_AR"; then
10044 +  { echo "$as_me:$LINENO: result: $BUILD_AR" >&5
10045 +echo "${ECHO_T}$BUILD_AR" >&6; }
10046 +else
10047 +  { echo "$as_me:$LINENO: result: no" >&5
10048 +echo "${ECHO_T}no" >&6; }
10049 +fi
10050 +
10051 +
10052 +  test -n "$BUILD_AR" && break
10053 +done
10054 +
10055 +  for ac_prog in ranlib
10056 +do
10057 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
10058 +set dummy $ac_prog; ac_word=$2
10059 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
10060 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
10061 +if test "${ac_cv_prog_BUILD_RANLIB+set}" = set; then
10062 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10063 +else
10064 +  if test -n "$BUILD_RANLIB"; then
10065 +  ac_cv_prog_BUILD_RANLIB="$BUILD_RANLIB" # Let the user override the test.
10066 +else
10067 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
10068 +for as_dir in $PATH
10069 +do
10070 +  IFS=$as_save_IFS
10071 +  test -z "$as_dir" && as_dir=.
10072 +  for ac_exec_ext in '' $ac_executable_extensions; do
10073 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
10074 +    ac_cv_prog_BUILD_RANLIB="$ac_prog"
10075 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
10076 +    break 2
10077 +  fi
10078 +done
10079 +done
10080 +IFS=$as_save_IFS
10081 +
10082 +fi
10083 +fi
10084 +BUILD_RANLIB=$ac_cv_prog_BUILD_RANLIB
10085 +if test -n "$BUILD_RANLIB"; then
10086 +  { echo "$as_me:$LINENO: result: $BUILD_RANLIB" >&5
10087 +echo "${ECHO_T}$BUILD_RANLIB" >&6; }
10088 +else
10089 +  { echo "$as_me:$LINENO: result: no" >&5
10090 +echo "${ECHO_T}no" >&6; }
10091 +fi
10092 +
10093 +
10094 +  test -n "$BUILD_RANLIB" && break
10095 +done
10096 +test -n "$BUILD_RANLIB" || BUILD_RANLIB=":"
10097 +
10098 +  HOST_TOOLS=$enable_tools
10099 +fi
10100 +
10101 +
10102 +
10103 +
10104 +
10105 +
10106 +
10107 +
10108 +
10109 +
10110 +for ac_header in unistd.h termio.h netdb.h sys/event.h pwd.h grp.h
10111 +do
10112 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10113 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10114 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
10115 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10116 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10117 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10118 +fi
10119 +ac_res=`eval echo '${'$as_ac_Header'}'`
10120 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10121 +echo "${ECHO_T}$ac_res" >&6; }
10122 +else
10123 +  # Is the header compilable?
10124 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
10125 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
10126 +cat >conftest.$ac_ext <<_ACEOF
10127 +/* confdefs.h.  */
10128 +_ACEOF
10129 +cat confdefs.h >>conftest.$ac_ext
10130 +cat >>conftest.$ac_ext <<_ACEOF
10131 +/* end confdefs.h.  */
10132 +$ac_includes_default
10133 +@%:@include <$ac_header>
10134 +_ACEOF
10135 +rm -f conftest.$ac_objext
10136 +if { (ac_try="$ac_compile"
10137 +case "(($ac_try" in
10138 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10139 +  *) ac_try_echo=$ac_try;;
10140 +esac
10141 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10142 +  (eval "$ac_compile") 2>conftest.er1
10143 +  ac_status=$?
10144 +  grep -v '^ *+' conftest.er1 >conftest.err
10145 +  rm -f conftest.er1
10146 +  cat conftest.err >&5
10147 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10148 +  (exit $ac_status); } && {
10149 +        test -z "$ac_cxx_werror_flag" ||
10150 +        test ! -s conftest.err
10151 +       } && test -s conftest.$ac_objext; then
10152 +  ac_header_compiler=yes
10153 +else
10154 +  echo "$as_me: failed program was:" >&5
10155 +sed 's/^/| /' conftest.$ac_ext >&5
10156 +
10157 +       ac_header_compiler=no
10158 +fi
10159 +
10160 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10161 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10162 +echo "${ECHO_T}$ac_header_compiler" >&6; }
10163 +
10164 +# Is the header present?
10165 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
10166 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
10167 +cat >conftest.$ac_ext <<_ACEOF
10168 +/* confdefs.h.  */
10169 +_ACEOF
10170 +cat confdefs.h >>conftest.$ac_ext
10171 +cat >>conftest.$ac_ext <<_ACEOF
10172 +/* end confdefs.h.  */
10173 +@%:@include <$ac_header>
10174 +_ACEOF
10175 +if { (ac_try="$ac_cpp conftest.$ac_ext"
10176 +case "(($ac_try" in
10177 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10178 +  *) ac_try_echo=$ac_try;;
10179 +esac
10180 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10181 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10182 +  ac_status=$?
10183 +  grep -v '^ *+' conftest.er1 >conftest.err
10184 +  rm -f conftest.er1
10185 +  cat conftest.err >&5
10186 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10187 +  (exit $ac_status); } >/dev/null && {
10188 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
10189 +        test ! -s conftest.err
10190 +       }; then
10191 +  ac_header_preproc=yes
10192 +else
10193 +  echo "$as_me: failed program was:" >&5
10194 +sed 's/^/| /' conftest.$ac_ext >&5
10195 +
10196 +  ac_header_preproc=no
10197 +fi
10198 +
10199 +rm -f conftest.err conftest.$ac_ext
10200 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10201 +echo "${ECHO_T}$ac_header_preproc" >&6; }
10202 +
10203 +# So?  What about this header?
10204 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
10205 +  yes:no: )
10206 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
10207 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
10208 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
10209 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
10210 +    ac_header_preproc=yes
10211 +    ;;
10212 +  no:yes:* )
10213 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
10214 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
10215 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
10216 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
10217 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
10218 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
10219 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
10220 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
10221 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10222 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
10223 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
10224 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
10225 +    
10226 +    ;;
10227 +esac
10228 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
10229 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10230 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10231 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10232 +else
10233 +  eval "$as_ac_Header=\$ac_header_preproc"
10234 +fi
10235 +ac_res=`eval echo '${'$as_ac_Header'}'`
10236 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10237 +echo "${ECHO_T}$ac_res" >&6; }
10238 +
10239 +fi
10240 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10241 +  cat >>confdefs.h <<_ACEOF
10242 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
10243 +_ACEOF
10244
10245 +fi
10246 +
10247 +done
10248 +
10249 +
10250 +    if test "${ac_cv_header_poll_h+set}" = set; then
10251 +  { echo "$as_me:$LINENO: checking for poll.h" >&5
10252 +echo $ECHO_N "checking for poll.h... $ECHO_C" >&6; }
10253 +if test "${ac_cv_header_poll_h+set}" = set; then
10254 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10255 +fi
10256 +{ echo "$as_me:$LINENO: result: $ac_cv_header_poll_h" >&5
10257 +echo "${ECHO_T}$ac_cv_header_poll_h" >&6; }
10258 +else
10259 +  # Is the header compilable?
10260 +{ echo "$as_me:$LINENO: checking poll.h usability" >&5
10261 +echo $ECHO_N "checking poll.h usability... $ECHO_C" >&6; }
10262 +cat >conftest.$ac_ext <<_ACEOF
10263 +/* confdefs.h.  */
10264 +_ACEOF
10265 +cat confdefs.h >>conftest.$ac_ext
10266 +cat >>conftest.$ac_ext <<_ACEOF
10267 +/* end confdefs.h.  */
10268 +$ac_includes_default
10269 +@%:@include <poll.h>
10270 +_ACEOF
10271 +rm -f conftest.$ac_objext
10272 +if { (ac_try="$ac_compile"
10273 +case "(($ac_try" in
10274 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10275 +  *) ac_try_echo=$ac_try;;
10276 +esac
10277 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10278 +  (eval "$ac_compile") 2>conftest.er1
10279 +  ac_status=$?
10280 +  grep -v '^ *+' conftest.er1 >conftest.err
10281 +  rm -f conftest.er1
10282 +  cat conftest.err >&5
10283 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10284 +  (exit $ac_status); } && {
10285 +        test -z "$ac_cxx_werror_flag" ||
10286 +        test ! -s conftest.err
10287 +       } && test -s conftest.$ac_objext; then
10288 +  ac_header_compiler=yes
10289 +else
10290 +  echo "$as_me: failed program was:" >&5
10291 +sed 's/^/| /' conftest.$ac_ext >&5
10292 +
10293 +       ac_header_compiler=no
10294 +fi
10295 +
10296 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10297 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10298 +echo "${ECHO_T}$ac_header_compiler" >&6; }
10299 +
10300 +# Is the header present?
10301 +{ echo "$as_me:$LINENO: checking poll.h presence" >&5
10302 +echo $ECHO_N "checking poll.h presence... $ECHO_C" >&6; }
10303 +cat >conftest.$ac_ext <<_ACEOF
10304 +/* confdefs.h.  */
10305 +_ACEOF
10306 +cat confdefs.h >>conftest.$ac_ext
10307 +cat >>conftest.$ac_ext <<_ACEOF
10308 +/* end confdefs.h.  */
10309 +@%:@include <poll.h>
10310 +_ACEOF
10311 +if { (ac_try="$ac_cpp conftest.$ac_ext"
10312 +case "(($ac_try" in
10313 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10314 +  *) ac_try_echo=$ac_try;;
10315 +esac
10316 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10317 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10318 +  ac_status=$?
10319 +  grep -v '^ *+' conftest.er1 >conftest.err
10320 +  rm -f conftest.er1
10321 +  cat conftest.err >&5
10322 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10323 +  (exit $ac_status); } >/dev/null && {
10324 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
10325 +        test ! -s conftest.err
10326 +       }; then
10327 +  ac_header_preproc=yes
10328 +else
10329 +  echo "$as_me: failed program was:" >&5
10330 +sed 's/^/| /' conftest.$ac_ext >&5
10331 +
10332 +  ac_header_preproc=no
10333 +fi
10334 +
10335 +rm -f conftest.err conftest.$ac_ext
10336 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10337 +echo "${ECHO_T}$ac_header_preproc" >&6; }
10338 +
10339 +# So?  What about this header?
10340 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
10341 +  yes:no: )
10342 +    { echo "$as_me:$LINENO: WARNING: poll.h: accepted by the compiler, rejected by the preprocessor!" >&5
10343 +echo "$as_me: WARNING: poll.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
10344 +    { echo "$as_me:$LINENO: WARNING: poll.h: proceeding with the compiler's result" >&5
10345 +echo "$as_me: WARNING: poll.h: proceeding with the compiler's result" >&2;}
10346 +    ac_header_preproc=yes
10347 +    ;;
10348 +  no:yes:* )
10349 +    { echo "$as_me:$LINENO: WARNING: poll.h: present but cannot be compiled" >&5
10350 +echo "$as_me: WARNING: poll.h: present but cannot be compiled" >&2;}
10351 +    { echo "$as_me:$LINENO: WARNING: poll.h:     check for missing prerequisite headers?" >&5
10352 +echo "$as_me: WARNING: poll.h:     check for missing prerequisite headers?" >&2;}
10353 +    { echo "$as_me:$LINENO: WARNING: poll.h: see the Autoconf documentation" >&5
10354 +echo "$as_me: WARNING: poll.h: see the Autoconf documentation" >&2;}
10355 +    { echo "$as_me:$LINENO: WARNING: poll.h:     section \"Present But Cannot Be Compiled\"" >&5
10356 +echo "$as_me: WARNING: poll.h:     section \"Present But Cannot Be Compiled\"" >&2;}
10357 +    { echo "$as_me:$LINENO: WARNING: poll.h: proceeding with the preprocessor's result" >&5
10358 +echo "$as_me: WARNING: poll.h: proceeding with the preprocessor's result" >&2;}
10359 +    { echo "$as_me:$LINENO: WARNING: poll.h: in the future, the compiler will take precedence" >&5
10360 +echo "$as_me: WARNING: poll.h: in the future, the compiler will take precedence" >&2;}
10361 +    
10362 +    ;;
10363 +esac
10364 +{ echo "$as_me:$LINENO: checking for poll.h" >&5
10365 +echo $ECHO_N "checking for poll.h... $ECHO_C" >&6; }
10366 +if test "${ac_cv_header_poll_h+set}" = set; then
10367 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10368 +else
10369 +  ac_cv_header_poll_h=$ac_header_preproc
10370 +fi
10371 +{ echo "$as_me:$LINENO: result: $ac_cv_header_poll_h" >&5
10372 +echo "${ECHO_T}$ac_cv_header_poll_h" >&6; }
10373 +
10374 +fi
10375 +if test $ac_cv_header_poll_h = yes; then
10376 +  ac_cv_poll_h=yes
10377 +else
10378 +  ac_cv_poll_h=no
10379 +fi
10380 +
10381 +
10382 +    if test "$ac_cv_poll_h" = yes; then
10383 +       { echo "$as_me:$LINENO: checking whether <poll.h> is emulated" >&5
10384 +echo $ECHO_N "checking whether <poll.h> is emulated... $ECHO_C" >&6; }
10385 +if test "${ac_cv_emulated_poll_h+set}" = set; then
10386 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10387 +else
10388 +  cat >conftest.$ac_ext <<_ACEOF
10389 +/* confdefs.h.  */
10390 +_ACEOF
10391 +cat confdefs.h >>conftest.$ac_ext
10392 +cat >>conftest.$ac_ext <<_ACEOF
10393 +/* end confdefs.h.  */
10394 +#include <poll.h>
10395 +#ifdef _POLL_EMUL_H_
10396 +# error "error"
10397 +#endif
10398 +
10399 +int
10400 +main ()
10401 +{
10402 +
10403 +  ;
10404 +  return 0;
10405 +}
10406 +_ACEOF
10407 +rm -f conftest.$ac_objext
10408 +if { (ac_try="$ac_compile"
10409 +case "(($ac_try" in
10410 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10411 +  *) ac_try_echo=$ac_try;;
10412 +esac
10413 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10414 +  (eval "$ac_compile") 2>conftest.er1
10415 +  ac_status=$?
10416 +  grep -v '^ *+' conftest.er1 >conftest.err
10417 +  rm -f conftest.er1
10418 +  cat conftest.err >&5
10419 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10420 +  (exit $ac_status); } && {
10421 +        test -z "$ac_cxx_werror_flag" ||
10422 +        test ! -s conftest.err
10423 +       } && test -s conftest.$ac_objext; then
10424 +  ac_cv_emulated_poll_h=no
10425 +else
10426 +  echo "$as_me: failed program was:" >&5
10427 +sed 's/^/| /' conftest.$ac_ext >&5
10428 +
10429 +       ac_cv_emulated_poll_h=yes
10430 +fi
10431 +
10432 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10433 +fi
10434 +{ echo "$as_me:$LINENO: result: $ac_cv_emulated_poll_h" >&5
10435 +echo "${ECHO_T}$ac_cv_emulated_poll_h" >&6; }
10436 +       if test "x$ac_cv_emulated_poll_h" = xno; then
10437 +           
10438 +cat >>confdefs.h <<\_ACEOF
10439 +@%:@define HAVE_POLL_H 1
10440 +_ACEOF
10441 +
10442 +       fi
10443 +    fi
10444 +
10445 +
10446 +for ac_func in sigaction
10447 +do
10448 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
10449 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
10450 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
10451 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
10452 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10453 +else
10454 +  cat >conftest.$ac_ext <<_ACEOF
10455 +/* confdefs.h.  */
10456 +_ACEOF
10457 +cat confdefs.h >>conftest.$ac_ext
10458 +cat >>conftest.$ac_ext <<_ACEOF
10459 +/* end confdefs.h.  */
10460 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
10461 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
10462 +#define $ac_func innocuous_$ac_func
10463 +
10464 +/* System header to define __stub macros and hopefully few prototypes,
10465 +    which can conflict with char $ac_func (); below.
10466 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10467 +    <limits.h> exists even on freestanding compilers.  */
10468 +
10469 +#ifdef __STDC__
10470 +# include <limits.h>
10471 +#else
10472 +# include <assert.h>
10473 +#endif
10474 +
10475 +#undef $ac_func
10476 +
10477 +/* Override any GCC internal prototype to avoid an error.
10478 +   Use char because int might match the return type of a GCC
10479 +   builtin and then its argument prototype would still apply.  */
10480 +#ifdef __cplusplus
10481 +extern "C"
10482 +#endif
10483 +char $ac_func ();
10484 +/* The GNU C library defines this for functions which it implements
10485 +    to always fail with ENOSYS.  Some functions are actually named
10486 +    something starting with __ and the normal name is an alias.  */
10487 +#if defined __stub_$ac_func || defined __stub___$ac_func
10488 +choke me
10489 +#endif
10490 +
10491 +int
10492 +main ()
10493 +{
10494 +return $ac_func ();
10495 +  ;
10496 +  return 0;
10497 +}
10498 +_ACEOF
10499 +rm -f conftest.$ac_objext conftest$ac_exeext
10500 +if { (ac_try="$ac_link"
10501 +case "(($ac_try" in
10502 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10503 +  *) ac_try_echo=$ac_try;;
10504 +esac
10505 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10506 +  (eval "$ac_link") 2>conftest.er1
10507 +  ac_status=$?
10508 +  grep -v '^ *+' conftest.er1 >conftest.err
10509 +  rm -f conftest.er1
10510 +  cat conftest.err >&5
10511 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10512 +  (exit $ac_status); } && {
10513 +        test -z "$ac_cxx_werror_flag" ||
10514 +        test ! -s conftest.err
10515 +       } && test -s conftest$ac_exeext &&
10516 +       $as_test_x conftest$ac_exeext; then
10517 +  eval "$as_ac_var=yes"
10518 +else
10519 +  echo "$as_me: failed program was:" >&5
10520 +sed 's/^/| /' conftest.$ac_ext >&5
10521 +
10522 +       eval "$as_ac_var=no"
10523 +fi
10524 +
10525 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10526 +      conftest$ac_exeext conftest.$ac_ext
10527 +fi
10528 +ac_res=`eval echo '${'$as_ac_var'}'`
10529 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10530 +echo "${ECHO_T}$ac_res" >&6; }
10531 +if test `eval echo '${'$as_ac_var'}'` = yes; then
10532 +  cat >>confdefs.h <<_ACEOF
10533 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
10534 +_ACEOF
10535
10536 +fi
10537 +done
10538 +
10539 +
10540 +
10541 +for ac_func in kqueue
10542 +do
10543 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
10544 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
10545 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
10546 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
10547 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10548 +else
10549 +  cat >conftest.$ac_ext <<_ACEOF
10550 +/* confdefs.h.  */
10551 +_ACEOF
10552 +cat confdefs.h >>conftest.$ac_ext
10553 +cat >>conftest.$ac_ext <<_ACEOF
10554 +/* end confdefs.h.  */
10555 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
10556 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
10557 +#define $ac_func innocuous_$ac_func
10558 +
10559 +/* System header to define __stub macros and hopefully few prototypes,
10560 +    which can conflict with char $ac_func (); below.
10561 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10562 +    <limits.h> exists even on freestanding compilers.  */
10563 +
10564 +#ifdef __STDC__
10565 +# include <limits.h>
10566 +#else
10567 +# include <assert.h>
10568 +#endif
10569 +
10570 +#undef $ac_func
10571 +
10572 +/* Override any GCC internal prototype to avoid an error.
10573 +   Use char because int might match the return type of a GCC
10574 +   builtin and then its argument prototype would still apply.  */
10575 +#ifdef __cplusplus
10576 +extern "C"
10577 +#endif
10578 +char $ac_func ();
10579 +/* The GNU C library defines this for functions which it implements
10580 +    to always fail with ENOSYS.  Some functions are actually named
10581 +    something starting with __ and the normal name is an alias.  */
10582 +#if defined __stub_$ac_func || defined __stub___$ac_func
10583 +choke me
10584 +#endif
10585 +
10586 +int
10587 +main ()
10588 +{
10589 +return $ac_func ();
10590 +  ;
10591 +  return 0;
10592 +}
10593 +_ACEOF
10594 +rm -f conftest.$ac_objext conftest$ac_exeext
10595 +if { (ac_try="$ac_link"
10596 +case "(($ac_try" in
10597 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10598 +  *) ac_try_echo=$ac_try;;
10599 +esac
10600 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10601 +  (eval "$ac_link") 2>conftest.er1
10602 +  ac_status=$?
10603 +  grep -v '^ *+' conftest.er1 >conftest.err
10604 +  rm -f conftest.er1
10605 +  cat conftest.err >&5
10606 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10607 +  (exit $ac_status); } && {
10608 +        test -z "$ac_cxx_werror_flag" ||
10609 +        test ! -s conftest.err
10610 +       } && test -s conftest$ac_exeext &&
10611 +       $as_test_x conftest$ac_exeext; then
10612 +  eval "$as_ac_var=yes"
10613 +else
10614 +  echo "$as_me: failed program was:" >&5
10615 +sed 's/^/| /' conftest.$ac_ext >&5
10616 +
10617 +       eval "$as_ac_var=no"
10618 +fi
10619 +
10620 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10621 +      conftest$ac_exeext conftest.$ac_ext
10622 +fi
10623 +ac_res=`eval echo '${'$as_ac_var'}'`
10624 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10625 +echo "${ECHO_T}$ac_res" >&6; }
10626 +if test `eval echo '${'$as_ac_var'}'` = yes; then
10627 +  cat >>confdefs.h <<_ACEOF
10628 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
10629 +_ACEOF
10630 + have_kqueue=yes
10631 +fi
10632 +done
10633 +
10634 +if test "x$have_kqueue" = xyes; then
10635 +    { echo "$as_me:$LINENO: checking whether EV_SET last argument is void *" >&5
10636 +echo $ECHO_N "checking whether EV_SET last argument is void *... $ECHO_C" >&6; }
10637 +if test "${ac_cv_ev_set_udata_pointer+set}" = set; then
10638 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10639 +else
10640 +  cat >conftest.$ac_ext <<_ACEOF
10641 +/* confdefs.h.  */
10642 +_ACEOF
10643 +cat confdefs.h >>conftest.$ac_ext
10644 +cat >>conftest.$ac_ext <<_ACEOF
10645 +/* end confdefs.h.  */
10646 +#include <sys/types.h>
10647 +#include <sys/event.h>
10648 +#include <sys/time.h>
10649 +int
10650 +main ()
10651 +{
10652 +struct kevent kev; EV_SET(&kev, 1, EVFILT_WRITE, EV_ADD, 0, 0, (void *) &kev);
10653 +  ;
10654 +  return 0;
10655 +}
10656 +_ACEOF
10657 +rm -f conftest.$ac_objext
10658 +if { (ac_try="$ac_compile"
10659 +case "(($ac_try" in
10660 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10661 +  *) ac_try_echo=$ac_try;;
10662 +esac
10663 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10664 +  (eval "$ac_compile") 2>conftest.er1
10665 +  ac_status=$?
10666 +  grep -v '^ *+' conftest.er1 >conftest.err
10667 +  rm -f conftest.er1
10668 +  cat conftest.err >&5
10669 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10670 +  (exit $ac_status); } && {
10671 +        test -z "$ac_cxx_werror_flag" ||
10672 +        test ! -s conftest.err
10673 +       } && test -s conftest.$ac_objext; then
10674 +  ac_cv_ev_set_udata_pointer=yes
10675 +else
10676 +  echo "$as_me: failed program was:" >&5
10677 +sed 's/^/| /' conftest.$ac_ext >&5
10678 +
10679 +       ac_cv_ev_set_udata_pointer=no
10680 +fi
10681 +
10682 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10683 +fi
10684 +{ echo "$as_me:$LINENO: result: $ac_cv_ev_set_udata_pointer" >&5
10685 +echo "${ECHO_T}$ac_cv_ev_set_udata_pointer" >&6; }
10686 +    if test $ac_cv_ev_set_udata_pointer = yes; then
10687 +       
10688 +cat >>confdefs.h <<\_ACEOF
10689 +@%:@define HAVE_EV_SET_UDATA_POINTER 1
10690 +_ACEOF
10691 +
10692 +    fi
10693 +fi
10694 +
10695 +# Check whether --enable-dynamic-linking was given.
10696 +if test "${enable_dynamic_linking+set}" = set; then
10697 +  enableval=$enable_dynamic_linking; :
10698 +else
10699 +  enable_dynamic_linking=yes
10700 +fi
10701 +
10702 +
10703 +if test "x$enable_dynamic_linking" = xyes; then
10704 +    
10705 +    DL_LIBS=
10706 +    
10707 +for ac_header in dlfcn.h
10708 +do
10709 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
10710 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10711 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
10712 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10713 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10714 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10715 +fi
10716 +ac_res=`eval echo '${'$as_ac_Header'}'`
10717 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10718 +echo "${ECHO_T}$ac_res" >&6; }
10719 +else
10720 +  # Is the header compilable?
10721 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
10722 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
10723 +cat >conftest.$ac_ext <<_ACEOF
10724 +/* confdefs.h.  */
10725 +_ACEOF
10726 +cat confdefs.h >>conftest.$ac_ext
10727 +cat >>conftest.$ac_ext <<_ACEOF
10728 +/* end confdefs.h.  */
10729 +$ac_includes_default
10730 +@%:@include <$ac_header>
10731 +_ACEOF
10732 +rm -f conftest.$ac_objext
10733 +if { (ac_try="$ac_compile"
10734 +case "(($ac_try" in
10735 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10736 +  *) ac_try_echo=$ac_try;;
10737 +esac
10738 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10739 +  (eval "$ac_compile") 2>conftest.er1
10740 +  ac_status=$?
10741 +  grep -v '^ *+' conftest.er1 >conftest.err
10742 +  rm -f conftest.er1
10743 +  cat conftest.err >&5
10744 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10745 +  (exit $ac_status); } && {
10746 +        test -z "$ac_cxx_werror_flag" ||
10747 +        test ! -s conftest.err
10748 +       } && test -s conftest.$ac_objext; then
10749 +  ac_header_compiler=yes
10750 +else
10751 +  echo "$as_me: failed program was:" >&5
10752 +sed 's/^/| /' conftest.$ac_ext >&5
10753 +
10754 +       ac_header_compiler=no
10755 +fi
10756 +
10757 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
10758 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
10759 +echo "${ECHO_T}$ac_header_compiler" >&6; }
10760 +
10761 +# Is the header present?
10762 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
10763 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
10764 +cat >conftest.$ac_ext <<_ACEOF
10765 +/* confdefs.h.  */
10766 +_ACEOF
10767 +cat confdefs.h >>conftest.$ac_ext
10768 +cat >>conftest.$ac_ext <<_ACEOF
10769 +/* end confdefs.h.  */
10770 +@%:@include <$ac_header>
10771 +_ACEOF
10772 +if { (ac_try="$ac_cpp conftest.$ac_ext"
10773 +case "(($ac_try" in
10774 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10775 +  *) ac_try_echo=$ac_try;;
10776 +esac
10777 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10778 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
10779 +  ac_status=$?
10780 +  grep -v '^ *+' conftest.er1 >conftest.err
10781 +  rm -f conftest.er1
10782 +  cat conftest.err >&5
10783 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10784 +  (exit $ac_status); } >/dev/null && {
10785 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
10786 +        test ! -s conftest.err
10787 +       }; then
10788 +  ac_header_preproc=yes
10789 +else
10790 +  echo "$as_me: failed program was:" >&5
10791 +sed 's/^/| /' conftest.$ac_ext >&5
10792 +
10793 +  ac_header_preproc=no
10794 +fi
10795 +
10796 +rm -f conftest.err conftest.$ac_ext
10797 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
10798 +echo "${ECHO_T}$ac_header_preproc" >&6; }
10799 +
10800 +# So?  What about this header?
10801 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
10802 +  yes:no: )
10803 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
10804 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
10805 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
10806 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
10807 +    ac_header_preproc=yes
10808 +    ;;
10809 +  no:yes:* )
10810 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
10811 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
10812 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
10813 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
10814 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
10815 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
10816 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
10817 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
10818 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
10819 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
10820 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
10821 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
10822 +    
10823 +    ;;
10824 +esac
10825 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
10826 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
10827 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
10828 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10829 +else
10830 +  eval "$as_ac_Header=\$ac_header_preproc"
10831 +fi
10832 +ac_res=`eval echo '${'$as_ac_Header'}'`
10833 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
10834 +echo "${ECHO_T}$ac_res" >&6; }
10835 +
10836 +fi
10837 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
10838 +  cat >>confdefs.h <<_ACEOF
10839 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
10840 +_ACEOF
10841 + ac_have_dlfcn_h=yes
10842 +else
10843 +  ac_have_dlfcn_h=no
10844 +fi
10845 +
10846 +done
10847 +
10848 +    { echo "$as_me:$LINENO: checking for dlopen" >&5
10849 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
10850 +if test "${ac_cv_func_dlopen+set}" = set; then
10851 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10852 +else
10853 +  cat >conftest.$ac_ext <<_ACEOF
10854 +/* confdefs.h.  */
10855 +_ACEOF
10856 +cat confdefs.h >>conftest.$ac_ext
10857 +cat >>conftest.$ac_ext <<_ACEOF
10858 +/* end confdefs.h.  */
10859 +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
10860 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
10861 +#define dlopen innocuous_dlopen
10862 +
10863 +/* System header to define __stub macros and hopefully few prototypes,
10864 +    which can conflict with char dlopen (); below.
10865 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
10866 +    <limits.h> exists even on freestanding compilers.  */
10867 +
10868 +#ifdef __STDC__
10869 +# include <limits.h>
10870 +#else
10871 +# include <assert.h>
10872 +#endif
10873 +
10874 +#undef dlopen
10875 +
10876 +/* Override any GCC internal prototype to avoid an error.
10877 +   Use char because int might match the return type of a GCC
10878 +   builtin and then its argument prototype would still apply.  */
10879 +#ifdef __cplusplus
10880 +extern "C"
10881 +#endif
10882 +char dlopen ();
10883 +/* The GNU C library defines this for functions which it implements
10884 +    to always fail with ENOSYS.  Some functions are actually named
10885 +    something starting with __ and the normal name is an alias.  */
10886 +#if defined __stub_dlopen || defined __stub___dlopen
10887 +choke me
10888 +#endif
10889 +
10890 +int
10891 +main ()
10892 +{
10893 +return dlopen ();
10894 +  ;
10895 +  return 0;
10896 +}
10897 +_ACEOF
10898 +rm -f conftest.$ac_objext conftest$ac_exeext
10899 +if { (ac_try="$ac_link"
10900 +case "(($ac_try" in
10901 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10902 +  *) ac_try_echo=$ac_try;;
10903 +esac
10904 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10905 +  (eval "$ac_link") 2>conftest.er1
10906 +  ac_status=$?
10907 +  grep -v '^ *+' conftest.er1 >conftest.err
10908 +  rm -f conftest.er1
10909 +  cat conftest.err >&5
10910 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10911 +  (exit $ac_status); } && {
10912 +        test -z "$ac_cxx_werror_flag" ||
10913 +        test ! -s conftest.err
10914 +       } && test -s conftest$ac_exeext &&
10915 +       $as_test_x conftest$ac_exeext; then
10916 +  ac_cv_func_dlopen=yes
10917 +else
10918 +  echo "$as_me: failed program was:" >&5
10919 +sed 's/^/| /' conftest.$ac_ext >&5
10920 +
10921 +       ac_cv_func_dlopen=no
10922 +fi
10923 +
10924 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10925 +      conftest$ac_exeext conftest.$ac_ext
10926 +fi
10927 +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
10928 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
10929 +if test $ac_cv_func_dlopen = yes; then
10930 +  ac_have_dlopen=yes
10931 +else
10932 +  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
10933 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
10934 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
10935 +  echo $ECHO_N "(cached) $ECHO_C" >&6
10936 +else
10937 +  ac_check_lib_save_LIBS=$LIBS
10938 +LIBS="-ldl  $LIBS"
10939 +cat >conftest.$ac_ext <<_ACEOF
10940 +/* confdefs.h.  */
10941 +_ACEOF
10942 +cat confdefs.h >>conftest.$ac_ext
10943 +cat >>conftest.$ac_ext <<_ACEOF
10944 +/* end confdefs.h.  */
10945 +
10946 +/* Override any GCC internal prototype to avoid an error.
10947 +   Use char because int might match the return type of a GCC
10948 +   builtin and then its argument prototype would still apply.  */
10949 +#ifdef __cplusplus
10950 +extern "C"
10951 +#endif
10952 +char dlopen ();
10953 +int
10954 +main ()
10955 +{
10956 +return dlopen ();
10957 +  ;
10958 +  return 0;
10959 +}
10960 +_ACEOF
10961 +rm -f conftest.$ac_objext conftest$ac_exeext
10962 +if { (ac_try="$ac_link"
10963 +case "(($ac_try" in
10964 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
10965 +  *) ac_try_echo=$ac_try;;
10966 +esac
10967 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
10968 +  (eval "$ac_link") 2>conftest.er1
10969 +  ac_status=$?
10970 +  grep -v '^ *+' conftest.er1 >conftest.err
10971 +  rm -f conftest.er1
10972 +  cat conftest.err >&5
10973 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
10974 +  (exit $ac_status); } && {
10975 +        test -z "$ac_cxx_werror_flag" ||
10976 +        test ! -s conftest.err
10977 +       } && test -s conftest$ac_exeext &&
10978 +       $as_test_x conftest$ac_exeext; then
10979 +  ac_cv_lib_dl_dlopen=yes
10980 +else
10981 +  echo "$as_me: failed program was:" >&5
10982 +sed 's/^/| /' conftest.$ac_ext >&5
10983 +
10984 +       ac_cv_lib_dl_dlopen=no
10985 +fi
10986 +
10987 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
10988 +      conftest$ac_exeext conftest.$ac_ext
10989 +LIBS=$ac_check_lib_save_LIBS
10990 +fi
10991 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
10992 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
10993 +if test $ac_cv_lib_dl_dlopen = yes; then
10994 +  ac_have_dlopen=yes; DL_LIBS="-ldl"
10995 +else
10996 +  ac_have_dlopen=no
10997 +fi
10998 +
10999 +fi
11000 +
11001 +    if test "x$ac_have_dlopen" = xyes -a "x$ac_have_dlfcn_h" = xyes; then
11002 +       
11003 +cat >>confdefs.h <<\_ACEOF
11004 +@%:@define HAVE_DYNAMIC_LINKING 1
11005 +_ACEOF
11006 +
11007 +       ac_have_dynamic_linking=yes
11008 +    fi
11009 +    
11010 +
11011 +    { echo "$as_me:$LINENO: checking compiler flags for building loadable modules" >&5
11012 +echo $ECHO_N "checking compiler flags for building loadable modules... $ECHO_C" >&6; }
11013 +    LDMODULEFLAGS=-shared
11014 +    if test "x$ac_have_dynamic_linking" = xyes; then
11015 +       if echo "$ac_cv_target" | grep apple-darwin >/dev/null 2>&1; then
11016 +           LDMODULEFLAGS='-bundle -flat_namespace -undefined suppress'
11017 +       fi
11018 +    fi
11019 +    { echo "$as_me:$LINENO: result: $LDMODULEFLAGS" >&5
11020 +echo "${ECHO_T}$LDMODULEFLAGS" >&6; }
11021 +    
11022 +
11023 +    if test "$HOST_TOOLS" != host -a "$enable_tools" != no; then
11024 +       
11025 +    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'"
11026 +    CXX="$BUILD_CXX"; CXXCPP="$BUILD_CXX -E"
11027 +    unset ac_cv_header_dlfcn_h ac_cv_func_dlopen ac_cv_lib_dl_dlopen
11028 +    BUILD_DL_LIBS=
11029 +    
11030 +for ac_header in dlfcn.h
11031 +do
11032 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
11033 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11034 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
11035 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
11036 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11037 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11038 +fi
11039 +ac_res=`eval echo '${'$as_ac_Header'}'`
11040 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
11041 +echo "${ECHO_T}$ac_res" >&6; }
11042 +else
11043 +  # Is the header compilable?
11044 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
11045 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
11046 +cat >conftest.$ac_ext <<_ACEOF
11047 +/* confdefs.h.  */
11048 +_ACEOF
11049 +cat confdefs.h >>conftest.$ac_ext
11050 +cat >>conftest.$ac_ext <<_ACEOF
11051 +/* end confdefs.h.  */
11052 +$ac_includes_default
11053 +@%:@include <$ac_header>
11054 +_ACEOF
11055 +rm -f conftest.$ac_objext
11056 +if { (ac_try="$ac_compile"
11057 +case "(($ac_try" in
11058 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11059 +  *) ac_try_echo=$ac_try;;
11060 +esac
11061 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11062 +  (eval "$ac_compile") 2>conftest.er1
11063 +  ac_status=$?
11064 +  grep -v '^ *+' conftest.er1 >conftest.err
11065 +  rm -f conftest.er1
11066 +  cat conftest.err >&5
11067 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11068 +  (exit $ac_status); } && {
11069 +        test -z "$ac_cxx_werror_flag" ||
11070 +        test ! -s conftest.err
11071 +       } && test -s conftest.$ac_objext; then
11072 +  ac_header_compiler=yes
11073 +else
11074 +  echo "$as_me: failed program was:" >&5
11075 +sed 's/^/| /' conftest.$ac_ext >&5
11076 +
11077 +       ac_header_compiler=no
11078 +fi
11079 +
11080 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11081 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
11082 +echo "${ECHO_T}$ac_header_compiler" >&6; }
11083 +
11084 +# Is the header present?
11085 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
11086 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
11087 +cat >conftest.$ac_ext <<_ACEOF
11088 +/* confdefs.h.  */
11089 +_ACEOF
11090 +cat confdefs.h >>conftest.$ac_ext
11091 +cat >>conftest.$ac_ext <<_ACEOF
11092 +/* end confdefs.h.  */
11093 +@%:@include <$ac_header>
11094 +_ACEOF
11095 +if { (ac_try="$ac_cpp conftest.$ac_ext"
11096 +case "(($ac_try" in
11097 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11098 +  *) ac_try_echo=$ac_try;;
11099 +esac
11100 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11101 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
11102 +  ac_status=$?
11103 +  grep -v '^ *+' conftest.er1 >conftest.err
11104 +  rm -f conftest.er1
11105 +  cat conftest.err >&5
11106 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11107 +  (exit $ac_status); } >/dev/null && {
11108 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
11109 +        test ! -s conftest.err
11110 +       }; then
11111 +  ac_header_preproc=yes
11112 +else
11113 +  echo "$as_me: failed program was:" >&5
11114 +sed 's/^/| /' conftest.$ac_ext >&5
11115 +
11116 +  ac_header_preproc=no
11117 +fi
11118 +
11119 +rm -f conftest.err conftest.$ac_ext
11120 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
11121 +echo "${ECHO_T}$ac_header_preproc" >&6; }
11122 +
11123 +# So?  What about this header?
11124 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
11125 +  yes:no: )
11126 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
11127 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
11128 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
11129 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
11130 +    ac_header_preproc=yes
11131 +    ;;
11132 +  no:yes:* )
11133 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
11134 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
11135 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
11136 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
11137 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
11138 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
11139 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
11140 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
11141 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
11142 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
11143 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
11144 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
11145 +    
11146 +    ;;
11147 +esac
11148 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
11149 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
11150 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
11151 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11152 +else
11153 +  eval "$as_ac_Header=\$ac_header_preproc"
11154 +fi
11155 +ac_res=`eval echo '${'$as_ac_Header'}'`
11156 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
11157 +echo "${ECHO_T}$ac_res" >&6; }
11158 +
11159 +fi
11160 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
11161 +  cat >>confdefs.h <<_ACEOF
11162 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
11163 +_ACEOF
11164 + ac_build_have_dlfcn_h=yes
11165 +else
11166 +  ac_build_have_dlfcn_h=no
11167 +fi
11168 +
11169 +done
11170 +
11171 +    { echo "$as_me:$LINENO: checking for dlopen" >&5
11172 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
11173 +if test "${ac_cv_func_dlopen+set}" = set; then
11174 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11175 +else
11176 +  cat >conftest.$ac_ext <<_ACEOF
11177 +/* confdefs.h.  */
11178 +_ACEOF
11179 +cat confdefs.h >>conftest.$ac_ext
11180 +cat >>conftest.$ac_ext <<_ACEOF
11181 +/* end confdefs.h.  */
11182 +/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
11183 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
11184 +#define dlopen innocuous_dlopen
11185 +
11186 +/* System header to define __stub macros and hopefully few prototypes,
11187 +    which can conflict with char dlopen (); below.
11188 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
11189 +    <limits.h> exists even on freestanding compilers.  */
11190 +
11191 +#ifdef __STDC__
11192 +# include <limits.h>
11193 +#else
11194 +# include <assert.h>
11195 +#endif
11196 +
11197 +#undef dlopen
11198 +
11199 +/* Override any GCC internal prototype to avoid an error.
11200 +   Use char because int might match the return type of a GCC
11201 +   builtin and then its argument prototype would still apply.  */
11202 +#ifdef __cplusplus
11203 +extern "C"
11204 +#endif
11205 +char dlopen ();
11206 +/* The GNU C library defines this for functions which it implements
11207 +    to always fail with ENOSYS.  Some functions are actually named
11208 +    something starting with __ and the normal name is an alias.  */
11209 +#if defined __stub_dlopen || defined __stub___dlopen
11210 +choke me
11211 +#endif
11212 +
11213 +int
11214 +main ()
11215 +{
11216 +return dlopen ();
11217 +  ;
11218 +  return 0;
11219 +}
11220 +_ACEOF
11221 +rm -f conftest.$ac_objext conftest$ac_exeext
11222 +if { (ac_try="$ac_link"
11223 +case "(($ac_try" in
11224 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11225 +  *) ac_try_echo=$ac_try;;
11226 +esac
11227 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11228 +  (eval "$ac_link") 2>conftest.er1
11229 +  ac_status=$?
11230 +  grep -v '^ *+' conftest.er1 >conftest.err
11231 +  rm -f conftest.er1
11232 +  cat conftest.err >&5
11233 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11234 +  (exit $ac_status); } && {
11235 +        test -z "$ac_cxx_werror_flag" ||
11236 +        test ! -s conftest.err
11237 +       } && test -s conftest$ac_exeext &&
11238 +       $as_test_x conftest$ac_exeext; then
11239 +  ac_cv_func_dlopen=yes
11240 +else
11241 +  echo "$as_me: failed program was:" >&5
11242 +sed 's/^/| /' conftest.$ac_ext >&5
11243 +
11244 +       ac_cv_func_dlopen=no
11245 +fi
11246 +
11247 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11248 +      conftest$ac_exeext conftest.$ac_ext
11249 +fi
11250 +{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
11251 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
11252 +if test $ac_cv_func_dlopen = yes; then
11253 +  ac_build_have_dlopen=yes
11254 +else
11255 +  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
11256 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
11257 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then
11258 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11259 +else
11260 +  ac_check_lib_save_LIBS=$LIBS
11261 +LIBS="-ldl  $LIBS"
11262 +cat >conftest.$ac_ext <<_ACEOF
11263 +/* confdefs.h.  */
11264 +_ACEOF
11265 +cat confdefs.h >>conftest.$ac_ext
11266 +cat >>conftest.$ac_ext <<_ACEOF
11267 +/* end confdefs.h.  */
11268 +
11269 +/* Override any GCC internal prototype to avoid an error.
11270 +   Use char because int might match the return type of a GCC
11271 +   builtin and then its argument prototype would still apply.  */
11272 +#ifdef __cplusplus
11273 +extern "C"
11274 +#endif
11275 +char dlopen ();
11276 +int
11277 +main ()
11278 +{
11279 +return dlopen ();
11280 +  ;
11281 +  return 0;
11282 +}
11283 +_ACEOF
11284 +rm -f conftest.$ac_objext conftest$ac_exeext
11285 +if { (ac_try="$ac_link"
11286 +case "(($ac_try" in
11287 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11288 +  *) ac_try_echo=$ac_try;;
11289 +esac
11290 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11291 +  (eval "$ac_link") 2>conftest.er1
11292 +  ac_status=$?
11293 +  grep -v '^ *+' conftest.er1 >conftest.err
11294 +  rm -f conftest.er1
11295 +  cat conftest.err >&5
11296 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11297 +  (exit $ac_status); } && {
11298 +        test -z "$ac_cxx_werror_flag" ||
11299 +        test ! -s conftest.err
11300 +       } && test -s conftest$ac_exeext &&
11301 +       $as_test_x conftest$ac_exeext; then
11302 +  ac_cv_lib_dl_dlopen=yes
11303 +else
11304 +  echo "$as_me: failed program was:" >&5
11305 +sed 's/^/| /' conftest.$ac_ext >&5
11306 +
11307 +       ac_cv_lib_dl_dlopen=no
11308 +fi
11309 +
11310 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11311 +      conftest$ac_exeext conftest.$ac_ext
11312 +LIBS=$ac_check_lib_save_LIBS
11313 +fi
11314 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
11315 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
11316 +if test $ac_cv_lib_dl_dlopen = yes; then
11317 +  ac_build_have_dlopen=yes; BUILD_DL_LIBS="-ldl"
11318 +else
11319 +  ac_have_dlopen=no
11320 +fi
11321 +
11322 +fi
11323 +
11324 +    if test "x$ac_build_have_dlopen" = xyes -a "x$ac_build_have_dlfcn_h" = xyes; then
11325 +       ac_build_have_dynamic_linking=yes
11326 +    fi
11327 +    if test "x$ac_build_have_dynamic_linking" != "x$ac_have_dynamic_linking"; then
11328 +       { { echo "$as_me:$LINENO: error: 
11329 +=========================================
11330 +
11331 +Build system and host system don't have the same dynamic linking state!
11332 +
11333 +=========================================" >&5
11334 +echo "$as_me: error: 
11335 +=========================================
11336 +
11337 +Build system and host system don't have the same dynamic linking state!
11338 +
11339 +=========================================" >&2;}
11340 +   { (exit 1); exit 1; }; }
11341 +    fi
11342 +    
11343 +    eval "$saver"
11344 +
11345 +    fi
11346 +fi
11347 +
11348 +
11349 +
11350 +ac_ext=c
11351 +ac_cpp='$CPP $CPPFLAGS'
11352 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11353 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11354 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11355 +
11356 +SOCKET_LIBS=
11357 +if test "$enable_userlevel" = yes; then
11358 +    savelibs="$LIBS"; LIBS=
11359 +    { echo "$as_me:$LINENO: checking for library containing gethostbyname" >&5
11360 +echo $ECHO_N "checking for library containing gethostbyname... $ECHO_C" >&6; }
11361 +if test "${ac_cv_search_gethostbyname+set}" = set; then
11362 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11363 +else
11364 +  ac_func_search_save_LIBS=$LIBS
11365 +cat >conftest.$ac_ext <<_ACEOF
11366 +/* confdefs.h.  */
11367 +_ACEOF
11368 +cat confdefs.h >>conftest.$ac_ext
11369 +cat >>conftest.$ac_ext <<_ACEOF
11370 +/* end confdefs.h.  */
11371 +
11372 +/* Override any GCC internal prototype to avoid an error.
11373 +   Use char because int might match the return type of a GCC
11374 +   builtin and then its argument prototype would still apply.  */
11375 +#ifdef __cplusplus
11376 +extern "C"
11377 +#endif
11378 +char gethostbyname ();
11379 +int
11380 +main ()
11381 +{
11382 +return gethostbyname ();
11383 +  ;
11384 +  return 0;
11385 +}
11386 +_ACEOF
11387 +for ac_lib in '' nsl; do
11388 +  if test -z "$ac_lib"; then
11389 +    ac_res="none required"
11390 +  else
11391 +    ac_res=-l$ac_lib
11392 +    LIBS="-l$ac_lib $savelibs $ac_func_search_save_LIBS"
11393 +  fi
11394 +  rm -f conftest.$ac_objext conftest$ac_exeext
11395 +if { (ac_try="$ac_link"
11396 +case "(($ac_try" in
11397 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11398 +  *) ac_try_echo=$ac_try;;
11399 +esac
11400 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11401 +  (eval "$ac_link") 2>conftest.er1
11402 +  ac_status=$?
11403 +  grep -v '^ *+' conftest.er1 >conftest.err
11404 +  rm -f conftest.er1
11405 +  cat conftest.err >&5
11406 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11407 +  (exit $ac_status); } && {
11408 +        test -z "$ac_c_werror_flag" ||
11409 +        test ! -s conftest.err
11410 +       } && test -s conftest$ac_exeext &&
11411 +       $as_test_x conftest$ac_exeext; then
11412 +  ac_cv_search_gethostbyname=$ac_res
11413 +else
11414 +  echo "$as_me: failed program was:" >&5
11415 +sed 's/^/| /' conftest.$ac_ext >&5
11416 +
11417 +       
11418 +fi
11419 +
11420 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11421 +      conftest$ac_exeext 
11422 +  if test "${ac_cv_search_gethostbyname+set}" = set; then
11423 +  break
11424 +fi
11425 +done
11426 +if test "${ac_cv_search_gethostbyname+set}" = set; then
11427 +  :
11428 +else
11429 +  ac_cv_search_gethostbyname=no
11430 +fi
11431 +rm conftest.$ac_ext
11432 +LIBS=$ac_func_search_save_LIBS
11433 +fi
11434 +{ echo "$as_me:$LINENO: result: $ac_cv_search_gethostbyname" >&5
11435 +echo "${ECHO_T}$ac_cv_search_gethostbyname" >&6; }
11436 +ac_res=$ac_cv_search_gethostbyname
11437 +if test "$ac_res" != no; then
11438 +  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
11439 +  
11440 +fi
11441 +
11442 +    { echo "$as_me:$LINENO: checking for library containing connect" >&5
11443 +echo $ECHO_N "checking for library containing connect... $ECHO_C" >&6; }
11444 +if test "${ac_cv_search_connect+set}" = set; then
11445 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11446 +else
11447 +  ac_func_search_save_LIBS=$LIBS
11448 +cat >conftest.$ac_ext <<_ACEOF
11449 +/* confdefs.h.  */
11450 +_ACEOF
11451 +cat confdefs.h >>conftest.$ac_ext
11452 +cat >>conftest.$ac_ext <<_ACEOF
11453 +/* end confdefs.h.  */
11454 +
11455 +/* Override any GCC internal prototype to avoid an error.
11456 +   Use char because int might match the return type of a GCC
11457 +   builtin and then its argument prototype would still apply.  */
11458 +#ifdef __cplusplus
11459 +extern "C"
11460 +#endif
11461 +char connect ();
11462 +int
11463 +main ()
11464 +{
11465 +return connect ();
11466 +  ;
11467 +  return 0;
11468 +}
11469 +_ACEOF
11470 +for ac_lib in '' socket; do
11471 +  if test -z "$ac_lib"; then
11472 +    ac_res="none required"
11473 +  else
11474 +    ac_res=-l$ac_lib
11475 +    LIBS="-l$ac_lib $savelibs $ac_func_search_save_LIBS"
11476 +  fi
11477 +  rm -f conftest.$ac_objext conftest$ac_exeext
11478 +if { (ac_try="$ac_link"
11479 +case "(($ac_try" in
11480 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11481 +  *) ac_try_echo=$ac_try;;
11482 +esac
11483 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11484 +  (eval "$ac_link") 2>conftest.er1
11485 +  ac_status=$?
11486 +  grep -v '^ *+' conftest.er1 >conftest.err
11487 +  rm -f conftest.er1
11488 +  cat conftest.err >&5
11489 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11490 +  (exit $ac_status); } && {
11491 +        test -z "$ac_c_werror_flag" ||
11492 +        test ! -s conftest.err
11493 +       } && test -s conftest$ac_exeext &&
11494 +       $as_test_x conftest$ac_exeext; then
11495 +  ac_cv_search_connect=$ac_res
11496 +else
11497 +  echo "$as_me: failed program was:" >&5
11498 +sed 's/^/| /' conftest.$ac_ext >&5
11499 +
11500 +       
11501 +fi
11502 +
11503 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
11504 +      conftest$ac_exeext 
11505 +  if test "${ac_cv_search_connect+set}" = set; then
11506 +  break
11507 +fi
11508 +done
11509 +if test "${ac_cv_search_connect+set}" = set; then
11510 +  :
11511 +else
11512 +  ac_cv_search_connect=no
11513 +fi
11514 +rm conftest.$ac_ext
11515 +LIBS=$ac_func_search_save_LIBS
11516 +fi
11517 +{ echo "$as_me:$LINENO: result: $ac_cv_search_connect" >&5
11518 +echo "${ECHO_T}$ac_cv_search_connect" >&6; }
11519 +ac_res=$ac_cv_search_connect
11520 +if test "$ac_res" != no; then
11521 +  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
11522 +  
11523 +fi
11524 +
11525 +    SOCKET_LIBS="$LIBS"; LIBS="$savelibs"
11526 +
11527 +    { echo "$as_me:$LINENO: checking whether accept() uses socklen_t" >&5
11528 +echo $ECHO_N "checking whether accept() uses socklen_t... $ECHO_C" >&6; }
11529 +if test "${ac_cv_accept_socklen_t+set}" = set; then
11530 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11531 +else
11532 +  cat >conftest.$ac_ext <<_ACEOF
11533 +/* confdefs.h.  */
11534 +_ACEOF
11535 +cat confdefs.h >>conftest.$ac_ext
11536 +cat >>conftest.$ac_ext <<_ACEOF
11537 +/* end confdefs.h.  */
11538 +#include <sys/types.h>
11539 +#include <sys/socket.h>
11540 +
11541 +int
11542 +main ()
11543 +{
11544 +socklen_t sl; (void) accept(0, (struct sockaddr *) 0, &sl);
11545 +  ;
11546 +  return 0;
11547 +}
11548 +_ACEOF
11549 +rm -f conftest.$ac_objext
11550 +if { (ac_try="$ac_compile"
11551 +case "(($ac_try" in
11552 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11553 +  *) ac_try_echo=$ac_try;;
11554 +esac
11555 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11556 +  (eval "$ac_compile") 2>conftest.er1
11557 +  ac_status=$?
11558 +  grep -v '^ *+' conftest.er1 >conftest.err
11559 +  rm -f conftest.er1
11560 +  cat conftest.err >&5
11561 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11562 +  (exit $ac_status); } && {
11563 +        test -z "$ac_c_werror_flag" ||
11564 +        test ! -s conftest.err
11565 +       } && test -s conftest.$ac_objext; then
11566 +  ac_cv_accept_socklen_t=yes
11567 +else
11568 +  echo "$as_me: failed program was:" >&5
11569 +sed 's/^/| /' conftest.$ac_ext >&5
11570 +
11571 +       ac_cv_accept_socklen_t=no
11572 +fi
11573 +
11574 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11575 +fi
11576 +{ echo "$as_me:$LINENO: result: $ac_cv_accept_socklen_t" >&5
11577 +echo "${ECHO_T}$ac_cv_accept_socklen_t" >&6; }
11578 +    if test "$ac_cv_accept_socklen_t" = yes; then
11579 +       
11580 +cat >>confdefs.h <<\_ACEOF
11581 +@%:@define HAVE_ACCEPT_SOCKLEN_T 1
11582 +_ACEOF
11583 +
11584 +    fi
11585 +fi
11586 +
11587 +ac_ext=cpp
11588 +ac_cpp='$CXXCPP $CPPFLAGS'
11589 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11590 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11591 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
11592 +
11593 +
11594 +
11595 +
11596 +
11597 +    ac_ext=c
11598 +ac_cpp='$CPP $CPPFLAGS'
11599 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
11600 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
11601 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
11602 +
11603 +    { echo "$as_me:$LINENO: checking for large file support in C library" >&5
11604 +echo $ECHO_N "checking for large file support in C library... $ECHO_C" >&6; }
11605 +if test "${ac_cv_large_file_support+set}" = set; then
11606 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11607 +else
11608 +  cat >conftest.$ac_ext <<_ACEOF
11609 +/* confdefs.h.  */
11610 +_ACEOF
11611 +cat confdefs.h >>conftest.$ac_ext
11612 +cat >>conftest.$ac_ext <<_ACEOF
11613 +/* end confdefs.h.  */
11614 +#define _LARGEFILE_SOURCE 1
11615 +#define _FILE_OFFSET_BITS 64
11616 +#include <unistd.h>
11617 +#include <sys/types.h>
11618 +#include <sys/stat.h>
11619 +#include <fcntl.h>
11620 +void h(off_t a) {
11621 +    int fd = open("/tmp/whatever", 0);
11622 +    lseek(fd, a, 0);
11623 +}
11624 +int
11625 +main ()
11626 +{
11627 +h(15);
11628 +  ;
11629 +  return 0;
11630 +}
11631 +_ACEOF
11632 +rm -f conftest.$ac_objext
11633 +if { (ac_try="$ac_compile"
11634 +case "(($ac_try" in
11635 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11636 +  *) ac_try_echo=$ac_try;;
11637 +esac
11638 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11639 +  (eval "$ac_compile") 2>conftest.er1
11640 +  ac_status=$?
11641 +  grep -v '^ *+' conftest.er1 >conftest.err
11642 +  rm -f conftest.er1
11643 +  cat conftest.err >&5
11644 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11645 +  (exit $ac_status); } && {
11646 +        test -z "$ac_c_werror_flag" ||
11647 +        test ! -s conftest.err
11648 +       } && test -s conftest.$ac_objext; then
11649 +  ac_cv_large_file_support=yes
11650 +else
11651 +  echo "$as_me: failed program was:" >&5
11652 +sed 's/^/| /' conftest.$ac_ext >&5
11653 +
11654 +       ac_cv_large_file_support=no
11655 +fi
11656 +
11657 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11658 +fi
11659 +{ echo "$as_me:$LINENO: result: $ac_cv_large_file_support" >&5
11660 +echo "${ECHO_T}$ac_cv_large_file_support" >&6; }
11661 +    if test "x$ac_cv_large_file_support" = xyes; then
11662 +       
11663 +cat >>confdefs.h <<\_ACEOF
11664 +@%:@define HAVE_LARGE_FILE_SUPPORT 1
11665 +_ACEOF
11666 +
11667 +    fi
11668 +
11669 +    { echo "$as_me:$LINENO: checking for off_t" >&5
11670 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
11671 +if test "${ac_cv_type_off_t+set}" = set; then
11672 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11673 +else
11674 +  cat >conftest.$ac_ext <<_ACEOF
11675 +/* confdefs.h.  */
11676 +_ACEOF
11677 +cat confdefs.h >>conftest.$ac_ext
11678 +cat >>conftest.$ac_ext <<_ACEOF
11679 +/* end confdefs.h.  */
11680 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11681 +# define _LARGEFILE_SOURCE 1
11682 +# define _FILE_OFFSET_BITS 64
11683 +#endif
11684 +#include <stdio.h>
11685 +#include <sys/types.h>
11686 +
11687 +typedef off_t ac__type_new_;
11688 +int
11689 +main ()
11690 +{
11691 +if ((ac__type_new_ *) 0)
11692 +  return 0;
11693 +if (sizeof (ac__type_new_))
11694 +  return 0;
11695 +  ;
11696 +  return 0;
11697 +}
11698 +_ACEOF
11699 +rm -f conftest.$ac_objext
11700 +if { (ac_try="$ac_compile"
11701 +case "(($ac_try" in
11702 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11703 +  *) ac_try_echo=$ac_try;;
11704 +esac
11705 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11706 +  (eval "$ac_compile") 2>conftest.er1
11707 +  ac_status=$?
11708 +  grep -v '^ *+' conftest.er1 >conftest.err
11709 +  rm -f conftest.er1
11710 +  cat conftest.err >&5
11711 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11712 +  (exit $ac_status); } && {
11713 +        test -z "$ac_c_werror_flag" ||
11714 +        test ! -s conftest.err
11715 +       } && test -s conftest.$ac_objext; then
11716 +  ac_cv_type_off_t=yes
11717 +else
11718 +  echo "$as_me: failed program was:" >&5
11719 +sed 's/^/| /' conftest.$ac_ext >&5
11720 +
11721 +       ac_cv_type_off_t=no
11722 +fi
11723 +
11724 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11725 +fi
11726 +{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
11727 +echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
11728 +
11729 +# The cast to long int works around a bug in the HP C Compiler
11730 +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
11731 +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
11732 +# This bug is HP SR number 8606223364.
11733 +{ echo "$as_me:$LINENO: checking size of off_t" >&5
11734 +echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; }
11735 +if test "${ac_cv_sizeof_off_t+set}" = set; then
11736 +  echo $ECHO_N "(cached) $ECHO_C" >&6
11737 +else
11738 +  if test "$cross_compiling" = yes; then
11739 +  # Depending upon the size, compute the lo and hi bounds.
11740 +cat >conftest.$ac_ext <<_ACEOF
11741 +/* confdefs.h.  */
11742 +_ACEOF
11743 +cat confdefs.h >>conftest.$ac_ext
11744 +cat >>conftest.$ac_ext <<_ACEOF
11745 +/* end confdefs.h.  */
11746 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11747 +# define _LARGEFILE_SOURCE 1
11748 +# define _FILE_OFFSET_BITS 64
11749 +#endif
11750 +#include <stdio.h>
11751 +#include <sys/types.h>
11752 +
11753 +   typedef off_t ac__type_sizeof_;
11754 +int
11755 +main ()
11756 +{
11757 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)@:>@;
11758 +test_array @<:@0@:>@ = 0
11759 +
11760 +  ;
11761 +  return 0;
11762 +}
11763 +_ACEOF
11764 +rm -f conftest.$ac_objext
11765 +if { (ac_try="$ac_compile"
11766 +case "(($ac_try" in
11767 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11768 +  *) ac_try_echo=$ac_try;;
11769 +esac
11770 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11771 +  (eval "$ac_compile") 2>conftest.er1
11772 +  ac_status=$?
11773 +  grep -v '^ *+' conftest.er1 >conftest.err
11774 +  rm -f conftest.er1
11775 +  cat conftest.err >&5
11776 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11777 +  (exit $ac_status); } && {
11778 +        test -z "$ac_c_werror_flag" ||
11779 +        test ! -s conftest.err
11780 +       } && test -s conftest.$ac_objext; then
11781 +  ac_lo=0 ac_mid=0
11782 +  while :; do
11783 +    cat >conftest.$ac_ext <<_ACEOF
11784 +/* confdefs.h.  */
11785 +_ACEOF
11786 +cat confdefs.h >>conftest.$ac_ext
11787 +cat >>conftest.$ac_ext <<_ACEOF
11788 +/* end confdefs.h.  */
11789 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11790 +# define _LARGEFILE_SOURCE 1
11791 +# define _FILE_OFFSET_BITS 64
11792 +#endif
11793 +#include <stdio.h>
11794 +#include <sys/types.h>
11795 +
11796 +   typedef off_t ac__type_sizeof_;
11797 +int
11798 +main ()
11799 +{
11800 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
11801 +test_array @<:@0@:>@ = 0
11802 +
11803 +  ;
11804 +  return 0;
11805 +}
11806 +_ACEOF
11807 +rm -f conftest.$ac_objext
11808 +if { (ac_try="$ac_compile"
11809 +case "(($ac_try" in
11810 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11811 +  *) ac_try_echo=$ac_try;;
11812 +esac
11813 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11814 +  (eval "$ac_compile") 2>conftest.er1
11815 +  ac_status=$?
11816 +  grep -v '^ *+' conftest.er1 >conftest.err
11817 +  rm -f conftest.er1
11818 +  cat conftest.err >&5
11819 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11820 +  (exit $ac_status); } && {
11821 +        test -z "$ac_c_werror_flag" ||
11822 +        test ! -s conftest.err
11823 +       } && test -s conftest.$ac_objext; then
11824 +  ac_hi=$ac_mid; break
11825 +else
11826 +  echo "$as_me: failed program was:" >&5
11827 +sed 's/^/| /' conftest.$ac_ext >&5
11828 +
11829 +       ac_lo=`expr $ac_mid + 1`
11830 +                       if test $ac_lo -le $ac_mid; then
11831 +                         ac_lo= ac_hi=
11832 +                         break
11833 +                       fi
11834 +                       ac_mid=`expr 2 '*' $ac_mid + 1`
11835 +fi
11836 +
11837 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11838 +  done
11839 +else
11840 +  echo "$as_me: failed program was:" >&5
11841 +sed 's/^/| /' conftest.$ac_ext >&5
11842 +
11843 +       cat >conftest.$ac_ext <<_ACEOF
11844 +/* confdefs.h.  */
11845 +_ACEOF
11846 +cat confdefs.h >>conftest.$ac_ext
11847 +cat >>conftest.$ac_ext <<_ACEOF
11848 +/* end confdefs.h.  */
11849 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11850 +# define _LARGEFILE_SOURCE 1
11851 +# define _FILE_OFFSET_BITS 64
11852 +#endif
11853 +#include <stdio.h>
11854 +#include <sys/types.h>
11855 +
11856 +   typedef off_t ac__type_sizeof_;
11857 +int
11858 +main ()
11859 +{
11860 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)@:>@;
11861 +test_array @<:@0@:>@ = 0
11862 +
11863 +  ;
11864 +  return 0;
11865 +}
11866 +_ACEOF
11867 +rm -f conftest.$ac_objext
11868 +if { (ac_try="$ac_compile"
11869 +case "(($ac_try" in
11870 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11871 +  *) ac_try_echo=$ac_try;;
11872 +esac
11873 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11874 +  (eval "$ac_compile") 2>conftest.er1
11875 +  ac_status=$?
11876 +  grep -v '^ *+' conftest.er1 >conftest.err
11877 +  rm -f conftest.er1
11878 +  cat conftest.err >&5
11879 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11880 +  (exit $ac_status); } && {
11881 +        test -z "$ac_c_werror_flag" ||
11882 +        test ! -s conftest.err
11883 +       } && test -s conftest.$ac_objext; then
11884 +  ac_hi=-1 ac_mid=-1
11885 +  while :; do
11886 +    cat >conftest.$ac_ext <<_ACEOF
11887 +/* confdefs.h.  */
11888 +_ACEOF
11889 +cat confdefs.h >>conftest.$ac_ext
11890 +cat >>conftest.$ac_ext <<_ACEOF
11891 +/* end confdefs.h.  */
11892 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11893 +# define _LARGEFILE_SOURCE 1
11894 +# define _FILE_OFFSET_BITS 64
11895 +#endif
11896 +#include <stdio.h>
11897 +#include <sys/types.h>
11898 +
11899 +   typedef off_t ac__type_sizeof_;
11900 +int
11901 +main ()
11902 +{
11903 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)@:>@;
11904 +test_array @<:@0@:>@ = 0
11905 +
11906 +  ;
11907 +  return 0;
11908 +}
11909 +_ACEOF
11910 +rm -f conftest.$ac_objext
11911 +if { (ac_try="$ac_compile"
11912 +case "(($ac_try" in
11913 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11914 +  *) ac_try_echo=$ac_try;;
11915 +esac
11916 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11917 +  (eval "$ac_compile") 2>conftest.er1
11918 +  ac_status=$?
11919 +  grep -v '^ *+' conftest.er1 >conftest.err
11920 +  rm -f conftest.er1
11921 +  cat conftest.err >&5
11922 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11923 +  (exit $ac_status); } && {
11924 +        test -z "$ac_c_werror_flag" ||
11925 +        test ! -s conftest.err
11926 +       } && test -s conftest.$ac_objext; then
11927 +  ac_lo=$ac_mid; break
11928 +else
11929 +  echo "$as_me: failed program was:" >&5
11930 +sed 's/^/| /' conftest.$ac_ext >&5
11931 +
11932 +       ac_hi=`expr '(' $ac_mid ')' - 1`
11933 +                       if test $ac_mid -le $ac_hi; then
11934 +                         ac_lo= ac_hi=
11935 +                         break
11936 +                       fi
11937 +                       ac_mid=`expr 2 '*' $ac_mid`
11938 +fi
11939 +
11940 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11941 +  done
11942 +else
11943 +  echo "$as_me: failed program was:" >&5
11944 +sed 's/^/| /' conftest.$ac_ext >&5
11945 +
11946 +       ac_lo= ac_hi=
11947 +fi
11948 +
11949 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11950 +fi
11951 +
11952 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
11953 +# Binary search between lo and hi bounds.
11954 +while test "x$ac_lo" != "x$ac_hi"; do
11955 +  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
11956 +  cat >conftest.$ac_ext <<_ACEOF
11957 +/* confdefs.h.  */
11958 +_ACEOF
11959 +cat confdefs.h >>conftest.$ac_ext
11960 +cat >>conftest.$ac_ext <<_ACEOF
11961 +/* end confdefs.h.  */
11962 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
11963 +# define _LARGEFILE_SOURCE 1
11964 +# define _FILE_OFFSET_BITS 64
11965 +#endif
11966 +#include <stdio.h>
11967 +#include <sys/types.h>
11968 +
11969 +   typedef off_t ac__type_sizeof_;
11970 +int
11971 +main ()
11972 +{
11973 +static int test_array @<:@1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)@:>@;
11974 +test_array @<:@0@:>@ = 0
11975 +
11976 +  ;
11977 +  return 0;
11978 +}
11979 +_ACEOF
11980 +rm -f conftest.$ac_objext
11981 +if { (ac_try="$ac_compile"
11982 +case "(($ac_try" in
11983 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
11984 +  *) ac_try_echo=$ac_try;;
11985 +esac
11986 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
11987 +  (eval "$ac_compile") 2>conftest.er1
11988 +  ac_status=$?
11989 +  grep -v '^ *+' conftest.er1 >conftest.err
11990 +  rm -f conftest.er1
11991 +  cat conftest.err >&5
11992 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
11993 +  (exit $ac_status); } && {
11994 +        test -z "$ac_c_werror_flag" ||
11995 +        test ! -s conftest.err
11996 +       } && test -s conftest.$ac_objext; then
11997 +  ac_hi=$ac_mid
11998 +else
11999 +  echo "$as_me: failed program was:" >&5
12000 +sed 's/^/| /' conftest.$ac_ext >&5
12001 +
12002 +       ac_lo=`expr '(' $ac_mid ')' + 1`
12003 +fi
12004 +
12005 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12006 +done
12007 +case $ac_lo in
12008 +?*) ac_cv_sizeof_off_t=$ac_lo;;
12009 +'') if test "$ac_cv_type_off_t" = yes; then
12010 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
12011 +See \`config.log' for more details." >&5
12012 +echo "$as_me: error: cannot compute sizeof (off_t)
12013 +See \`config.log' for more details." >&2;}
12014 +   { (exit 77); exit 77; }; }
12015 +   else
12016 +     ac_cv_sizeof_off_t=0
12017 +   fi ;;
12018 +esac
12019 +else
12020 +  cat >conftest.$ac_ext <<_ACEOF
12021 +/* confdefs.h.  */
12022 +_ACEOF
12023 +cat confdefs.h >>conftest.$ac_ext
12024 +cat >>conftest.$ac_ext <<_ACEOF
12025 +/* end confdefs.h.  */
12026 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
12027 +# define _LARGEFILE_SOURCE 1
12028 +# define _FILE_OFFSET_BITS 64
12029 +#endif
12030 +#include <stdio.h>
12031 +#include <sys/types.h>
12032 +
12033 +   typedef off_t ac__type_sizeof_;
12034 +static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
12035 +static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
12036 +@%:@include <stdio.h>
12037 +@%:@include <stdlib.h>
12038 +int
12039 +main ()
12040 +{
12041 +
12042 +  FILE *f = fopen ("conftest.val", "w");
12043 +  if (! f)
12044 +    return 1;
12045 +  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
12046 +    {
12047 +      long int i = longval ();
12048 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
12049 +       return 1;
12050 +      fprintf (f, "%ld\n", i);
12051 +    }
12052 +  else
12053 +    {
12054 +      unsigned long int i = ulongval ();
12055 +      if (i != ((long int) (sizeof (ac__type_sizeof_))))
12056 +       return 1;
12057 +      fprintf (f, "%lu\n", i);
12058 +    }
12059 +  return ferror (f) || fclose (f) != 0;
12060 +
12061 +  ;
12062 +  return 0;
12063 +}
12064 +_ACEOF
12065 +rm -f conftest$ac_exeext
12066 +if { (ac_try="$ac_link"
12067 +case "(($ac_try" in
12068 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12069 +  *) ac_try_echo=$ac_try;;
12070 +esac
12071 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12072 +  (eval "$ac_link") 2>&5
12073 +  ac_status=$?
12074 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12075 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
12076 +  { (case "(($ac_try" in
12077 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12078 +  *) ac_try_echo=$ac_try;;
12079 +esac
12080 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12081 +  (eval "$ac_try") 2>&5
12082 +  ac_status=$?
12083 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12084 +  (exit $ac_status); }; }; then
12085 +  ac_cv_sizeof_off_t=`cat conftest.val`
12086 +else
12087 +  echo "$as_me: program exited with status $ac_status" >&5
12088 +echo "$as_me: failed program was:" >&5
12089 +sed 's/^/| /' conftest.$ac_ext >&5
12090 +
12091 +( exit $ac_status )
12092 +if test "$ac_cv_type_off_t" = yes; then
12093 +     { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
12094 +See \`config.log' for more details." >&5
12095 +echo "$as_me: error: cannot compute sizeof (off_t)
12096 +See \`config.log' for more details." >&2;}
12097 +   { (exit 77); exit 77; }; }
12098 +   else
12099 +     ac_cv_sizeof_off_t=0
12100 +   fi
12101 +fi
12102 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
12103 +fi
12104 +rm -f conftest.val
12105 +fi
12106 +{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
12107 +echo "${ECHO_T}$ac_cv_sizeof_off_t" >&6; }
12108 +
12109 +
12110 +
12111 +cat >>confdefs.h <<_ACEOF
12112 +@%:@define SIZEOF_OFF_T $ac_cv_sizeof_off_t
12113 +_ACEOF
12114 +
12115 +
12116 +
12117 +
12118 +
12119 +
12120 +ac_ext=c
12121 +ac_cpp='$CPP $CPPFLAGS'
12122 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12123 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12124 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
12125 +
12126 +
12127 +
12128 +for ac_header in sys/mman.h
12129 +do
12130 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
12131 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12132 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
12133 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12134 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12135 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12136 +fi
12137 +ac_res=`eval echo '${'$as_ac_Header'}'`
12138 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12139 +echo "${ECHO_T}$ac_res" >&6; }
12140 +else
12141 +  # Is the header compilable?
12142 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
12143 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
12144 +cat >conftest.$ac_ext <<_ACEOF
12145 +/* confdefs.h.  */
12146 +_ACEOF
12147 +cat confdefs.h >>conftest.$ac_ext
12148 +cat >>conftest.$ac_ext <<_ACEOF
12149 +/* end confdefs.h.  */
12150 +$ac_includes_default
12151 +@%:@include <$ac_header>
12152 +_ACEOF
12153 +rm -f conftest.$ac_objext
12154 +if { (ac_try="$ac_compile"
12155 +case "(($ac_try" in
12156 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12157 +  *) ac_try_echo=$ac_try;;
12158 +esac
12159 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12160 +  (eval "$ac_compile") 2>conftest.er1
12161 +  ac_status=$?
12162 +  grep -v '^ *+' conftest.er1 >conftest.err
12163 +  rm -f conftest.er1
12164 +  cat conftest.err >&5
12165 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12166 +  (exit $ac_status); } && {
12167 +        test -z "$ac_c_werror_flag" ||
12168 +        test ! -s conftest.err
12169 +       } && test -s conftest.$ac_objext; then
12170 +  ac_header_compiler=yes
12171 +else
12172 +  echo "$as_me: failed program was:" >&5
12173 +sed 's/^/| /' conftest.$ac_ext >&5
12174 +
12175 +       ac_header_compiler=no
12176 +fi
12177 +
12178 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12179 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
12180 +echo "${ECHO_T}$ac_header_compiler" >&6; }
12181 +
12182 +# Is the header present?
12183 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
12184 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
12185 +cat >conftest.$ac_ext <<_ACEOF
12186 +/* confdefs.h.  */
12187 +_ACEOF
12188 +cat confdefs.h >>conftest.$ac_ext
12189 +cat >>conftest.$ac_ext <<_ACEOF
12190 +/* end confdefs.h.  */
12191 +@%:@include <$ac_header>
12192 +_ACEOF
12193 +if { (ac_try="$ac_cpp conftest.$ac_ext"
12194 +case "(($ac_try" in
12195 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12196 +  *) ac_try_echo=$ac_try;;
12197 +esac
12198 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12199 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
12200 +  ac_status=$?
12201 +  grep -v '^ *+' conftest.er1 >conftest.err
12202 +  rm -f conftest.er1
12203 +  cat conftest.err >&5
12204 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12205 +  (exit $ac_status); } >/dev/null && {
12206 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
12207 +        test ! -s conftest.err
12208 +       }; then
12209 +  ac_header_preproc=yes
12210 +else
12211 +  echo "$as_me: failed program was:" >&5
12212 +sed 's/^/| /' conftest.$ac_ext >&5
12213 +
12214 +  ac_header_preproc=no
12215 +fi
12216 +
12217 +rm -f conftest.err conftest.$ac_ext
12218 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
12219 +echo "${ECHO_T}$ac_header_preproc" >&6; }
12220 +
12221 +# So?  What about this header?
12222 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
12223 +  yes:no: )
12224 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
12225 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
12226 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
12227 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
12228 +    ac_header_preproc=yes
12229 +    ;;
12230 +  no:yes:* )
12231 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
12232 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
12233 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
12234 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
12235 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
12236 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
12237 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
12238 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
12239 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
12240 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
12241 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
12242 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
12243 +    
12244 +    ;;
12245 +esac
12246 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
12247 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12248 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12249 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12250 +else
12251 +  eval "$as_ac_Header=\$ac_header_preproc"
12252 +fi
12253 +ac_res=`eval echo '${'$as_ac_Header'}'`
12254 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12255 +echo "${ECHO_T}$ac_res" >&6; }
12256 +
12257 +fi
12258 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
12259 +  cat >>confdefs.h <<_ACEOF
12260 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
12261 +_ACEOF
12262
12263 +fi
12264 +
12265 +done
12266 +
12267 +
12268 +
12269 +for ac_header in stdlib.h unistd.h
12270 +do
12271 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
12272 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12273 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
12274 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12275 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12276 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12277 +fi
12278 +ac_res=`eval echo '${'$as_ac_Header'}'`
12279 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12280 +echo "${ECHO_T}$ac_res" >&6; }
12281 +else
12282 +  # Is the header compilable?
12283 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
12284 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
12285 +cat >conftest.$ac_ext <<_ACEOF
12286 +/* confdefs.h.  */
12287 +_ACEOF
12288 +cat confdefs.h >>conftest.$ac_ext
12289 +cat >>conftest.$ac_ext <<_ACEOF
12290 +/* end confdefs.h.  */
12291 +$ac_includes_default
12292 +@%:@include <$ac_header>
12293 +_ACEOF
12294 +rm -f conftest.$ac_objext
12295 +if { (ac_try="$ac_compile"
12296 +case "(($ac_try" in
12297 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12298 +  *) ac_try_echo=$ac_try;;
12299 +esac
12300 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12301 +  (eval "$ac_compile") 2>conftest.er1
12302 +  ac_status=$?
12303 +  grep -v '^ *+' conftest.er1 >conftest.err
12304 +  rm -f conftest.er1
12305 +  cat conftest.err >&5
12306 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12307 +  (exit $ac_status); } && {
12308 +        test -z "$ac_c_werror_flag" ||
12309 +        test ! -s conftest.err
12310 +       } && test -s conftest.$ac_objext; then
12311 +  ac_header_compiler=yes
12312 +else
12313 +  echo "$as_me: failed program was:" >&5
12314 +sed 's/^/| /' conftest.$ac_ext >&5
12315 +
12316 +       ac_header_compiler=no
12317 +fi
12318 +
12319 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12320 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
12321 +echo "${ECHO_T}$ac_header_compiler" >&6; }
12322 +
12323 +# Is the header present?
12324 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
12325 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
12326 +cat >conftest.$ac_ext <<_ACEOF
12327 +/* confdefs.h.  */
12328 +_ACEOF
12329 +cat confdefs.h >>conftest.$ac_ext
12330 +cat >>conftest.$ac_ext <<_ACEOF
12331 +/* end confdefs.h.  */
12332 +@%:@include <$ac_header>
12333 +_ACEOF
12334 +if { (ac_try="$ac_cpp conftest.$ac_ext"
12335 +case "(($ac_try" in
12336 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12337 +  *) ac_try_echo=$ac_try;;
12338 +esac
12339 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12340 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
12341 +  ac_status=$?
12342 +  grep -v '^ *+' conftest.er1 >conftest.err
12343 +  rm -f conftest.er1
12344 +  cat conftest.err >&5
12345 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12346 +  (exit $ac_status); } >/dev/null && {
12347 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
12348 +        test ! -s conftest.err
12349 +       }; then
12350 +  ac_header_preproc=yes
12351 +else
12352 +  echo "$as_me: failed program was:" >&5
12353 +sed 's/^/| /' conftest.$ac_ext >&5
12354 +
12355 +  ac_header_preproc=no
12356 +fi
12357 +
12358 +rm -f conftest.err conftest.$ac_ext
12359 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
12360 +echo "${ECHO_T}$ac_header_preproc" >&6; }
12361 +
12362 +# So?  What about this header?
12363 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
12364 +  yes:no: )
12365 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
12366 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
12367 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
12368 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
12369 +    ac_header_preproc=yes
12370 +    ;;
12371 +  no:yes:* )
12372 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
12373 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
12374 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
12375 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
12376 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
12377 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
12378 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
12379 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
12380 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
12381 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
12382 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
12383 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
12384 +    
12385 +    ;;
12386 +esac
12387 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
12388 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
12389 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
12390 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12391 +else
12392 +  eval "$as_ac_Header=\$ac_header_preproc"
12393 +fi
12394 +ac_res=`eval echo '${'$as_ac_Header'}'`
12395 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12396 +echo "${ECHO_T}$ac_res" >&6; }
12397 +
12398 +fi
12399 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
12400 +  cat >>confdefs.h <<_ACEOF
12401 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
12402 +_ACEOF
12403
12404 +fi
12405 +
12406 +done
12407 +
12408 +
12409 +for ac_func in getpagesize
12410 +do
12411 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
12412 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
12413 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
12414 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
12415 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12416 +else
12417 +  cat >conftest.$ac_ext <<_ACEOF
12418 +/* confdefs.h.  */
12419 +_ACEOF
12420 +cat confdefs.h >>conftest.$ac_ext
12421 +cat >>conftest.$ac_ext <<_ACEOF
12422 +/* end confdefs.h.  */
12423 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
12424 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
12425 +#define $ac_func innocuous_$ac_func
12426 +
12427 +/* System header to define __stub macros and hopefully few prototypes,
12428 +    which can conflict with char $ac_func (); below.
12429 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
12430 +    <limits.h> exists even on freestanding compilers.  */
12431 +
12432 +#ifdef __STDC__
12433 +# include <limits.h>
12434 +#else
12435 +# include <assert.h>
12436 +#endif
12437 +
12438 +#undef $ac_func
12439 +
12440 +/* Override any GCC internal prototype to avoid an error.
12441 +   Use char because int might match the return type of a GCC
12442 +   builtin and then its argument prototype would still apply.  */
12443 +#ifdef __cplusplus
12444 +extern "C"
12445 +#endif
12446 +char $ac_func ();
12447 +/* The GNU C library defines this for functions which it implements
12448 +    to always fail with ENOSYS.  Some functions are actually named
12449 +    something starting with __ and the normal name is an alias.  */
12450 +#if defined __stub_$ac_func || defined __stub___$ac_func
12451 +choke me
12452 +#endif
12453 +
12454 +int
12455 +main ()
12456 +{
12457 +return $ac_func ();
12458 +  ;
12459 +  return 0;
12460 +}
12461 +_ACEOF
12462 +rm -f conftest.$ac_objext conftest$ac_exeext
12463 +if { (ac_try="$ac_link"
12464 +case "(($ac_try" in
12465 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12466 +  *) ac_try_echo=$ac_try;;
12467 +esac
12468 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12469 +  (eval "$ac_link") 2>conftest.er1
12470 +  ac_status=$?
12471 +  grep -v '^ *+' conftest.er1 >conftest.err
12472 +  rm -f conftest.er1
12473 +  cat conftest.err >&5
12474 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12475 +  (exit $ac_status); } && {
12476 +        test -z "$ac_c_werror_flag" ||
12477 +        test ! -s conftest.err
12478 +       } && test -s conftest$ac_exeext &&
12479 +       $as_test_x conftest$ac_exeext; then
12480 +  eval "$as_ac_var=yes"
12481 +else
12482 +  echo "$as_me: failed program was:" >&5
12483 +sed 's/^/| /' conftest.$ac_ext >&5
12484 +
12485 +       eval "$as_ac_var=no"
12486 +fi
12487 +
12488 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12489 +      conftest$ac_exeext conftest.$ac_ext
12490 +fi
12491 +ac_res=`eval echo '${'$as_ac_var'}'`
12492 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12493 +echo "${ECHO_T}$ac_res" >&6; }
12494 +if test `eval echo '${'$as_ac_var'}'` = yes; then
12495 +  cat >>confdefs.h <<_ACEOF
12496 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
12497 +_ACEOF
12498
12499 +fi
12500 +done
12501 +
12502 +{ echo "$as_me:$LINENO: checking for working mmap" >&5
12503 +echo $ECHO_N "checking for working mmap... $ECHO_C" >&6; }
12504 +if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then
12505 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12506 +else
12507 +  if test "$cross_compiling" = yes; then
12508 +  ac_cv_func_mmap_fixed_mapped=no
12509 +else
12510 +  cat >conftest.$ac_ext <<_ACEOF
12511 +/* confdefs.h.  */
12512 +_ACEOF
12513 +cat confdefs.h >>conftest.$ac_ext
12514 +cat >>conftest.$ac_ext <<_ACEOF
12515 +/* end confdefs.h.  */
12516 +$ac_includes_default
12517 +/* malloc might have been renamed as rpl_malloc. */
12518 +#undef malloc
12519 +
12520 +/* Thanks to Mike Haertel and Jim Avera for this test.
12521 +   Here is a matrix of mmap possibilities:
12522 +       mmap private not fixed
12523 +       mmap private fixed at somewhere currently unmapped
12524 +       mmap private fixed at somewhere already mapped
12525 +       mmap shared not fixed
12526 +       mmap shared fixed at somewhere currently unmapped
12527 +       mmap shared fixed at somewhere already mapped
12528 +   For private mappings, we should verify that changes cannot be read()
12529 +   back from the file, nor mmap's back from the file at a different
12530 +   address.  (There have been systems where private was not correctly
12531 +   implemented like the infamous i386 svr4.0, and systems where the
12532 +   VM page cache was not coherent with the file system buffer cache
12533 +   like early versions of FreeBSD and possibly contemporary NetBSD.)
12534 +   For shared mappings, we should conversely verify that changes get
12535 +   propagated back to all the places they're supposed to be.
12536 +
12537 +   Grep wants private fixed already mapped.
12538 +   The main things grep needs to know about mmap are:
12539 +   * does it exist and is it safe to write into the mmap'd area
12540 +   * how to use it (BSD variants)  */
12541 +
12542 +#include <fcntl.h>
12543 +#include <sys/mman.h>
12544 +
12545 +#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H
12546 +char *malloc ();
12547 +#endif
12548 +
12549 +/* This mess was copied from the GNU getpagesize.h.  */
12550 +#ifndef HAVE_GETPAGESIZE
12551 +/* Assume that all systems that can run configure have sys/param.h.  */
12552 +# ifndef HAVE_SYS_PARAM_H
12553 +#  define HAVE_SYS_PARAM_H 1
12554 +# endif
12555 +
12556 +# ifdef _SC_PAGESIZE
12557 +#  define getpagesize() sysconf(_SC_PAGESIZE)
12558 +# else /* no _SC_PAGESIZE */
12559 +#  ifdef HAVE_SYS_PARAM_H
12560 +#   include <sys/param.h>
12561 +#   ifdef EXEC_PAGESIZE
12562 +#    define getpagesize() EXEC_PAGESIZE
12563 +#   else /* no EXEC_PAGESIZE */
12564 +#    ifdef NBPG
12565 +#     define getpagesize() NBPG * CLSIZE
12566 +#     ifndef CLSIZE
12567 +#      define CLSIZE 1
12568 +#     endif /* no CLSIZE */
12569 +#    else /* no NBPG */
12570 +#     ifdef NBPC
12571 +#      define getpagesize() NBPC
12572 +#     else /* no NBPC */
12573 +#      ifdef PAGESIZE
12574 +#       define getpagesize() PAGESIZE
12575 +#      endif /* PAGESIZE */
12576 +#     endif /* no NBPC */
12577 +#    endif /* no NBPG */
12578 +#   endif /* no EXEC_PAGESIZE */
12579 +#  else /* no HAVE_SYS_PARAM_H */
12580 +#   define getpagesize() 8192  /* punt totally */
12581 +#  endif /* no HAVE_SYS_PARAM_H */
12582 +# endif /* no _SC_PAGESIZE */
12583 +
12584 +#endif /* no HAVE_GETPAGESIZE */
12585 +
12586 +int
12587 +main ()
12588 +{
12589 +  char *data, *data2, *data3;
12590 +  int i, pagesize;
12591 +  int fd;
12592 +
12593 +  pagesize = getpagesize ();
12594 +
12595 +  /* First, make a file with some known garbage in it. */
12596 +  data = (char *) malloc (pagesize);
12597 +  if (!data)
12598 +    return 1;
12599 +  for (i = 0; i < pagesize; ++i)
12600 +    *(data + i) = rand ();
12601 +  umask (0);
12602 +  fd = creat ("conftest.mmap", 0600);
12603 +  if (fd < 0)
12604 +    return 1;
12605 +  if (write (fd, data, pagesize) != pagesize)
12606 +    return 1;
12607 +  close (fd);
12608 +
12609 +  /* Next, try to mmap the file at a fixed address which already has
12610 +     something else allocated at it.  If we can, also make sure that
12611 +     we see the same garbage.  */
12612 +  fd = open ("conftest.mmap", O_RDWR);
12613 +  if (fd < 0)
12614 +    return 1;
12615 +  data2 = (char *) malloc (2 * pagesize);
12616 +  if (!data2)
12617 +    return 1;
12618 +  data2 += (pagesize - ((long int) data2 & (pagesize - 1))) & (pagesize - 1);
12619 +  if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE,
12620 +                    MAP_PRIVATE | MAP_FIXED, fd, 0L))
12621 +    return 1;
12622 +  for (i = 0; i < pagesize; ++i)
12623 +    if (*(data + i) != *(data2 + i))
12624 +      return 1;
12625 +
12626 +  /* Finally, make sure that changes to the mapped area do not
12627 +     percolate back to the file as seen by read().  (This is a bug on
12628 +     some variants of i386 svr4.0.)  */
12629 +  for (i = 0; i < pagesize; ++i)
12630 +    *(data2 + i) = *(data2 + i) + 1;
12631 +  data3 = (char *) malloc (pagesize);
12632 +  if (!data3)
12633 +    return 1;
12634 +  if (read (fd, data3, pagesize) != pagesize)
12635 +    return 1;
12636 +  for (i = 0; i < pagesize; ++i)
12637 +    if (*(data + i) != *(data3 + i))
12638 +      return 1;
12639 +  close (fd);
12640 +  return 0;
12641 +}
12642 +_ACEOF
12643 +rm -f conftest$ac_exeext
12644 +if { (ac_try="$ac_link"
12645 +case "(($ac_try" in
12646 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12647 +  *) ac_try_echo=$ac_try;;
12648 +esac
12649 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12650 +  (eval "$ac_link") 2>&5
12651 +  ac_status=$?
12652 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12653 +  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
12654 +  { (case "(($ac_try" in
12655 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12656 +  *) ac_try_echo=$ac_try;;
12657 +esac
12658 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12659 +  (eval "$ac_try") 2>&5
12660 +  ac_status=$?
12661 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12662 +  (exit $ac_status); }; }; then
12663 +  ac_cv_func_mmap_fixed_mapped=yes
12664 +else
12665 +  echo "$as_me: program exited with status $ac_status" >&5
12666 +echo "$as_me: failed program was:" >&5
12667 +sed 's/^/| /' conftest.$ac_ext >&5
12668 +
12669 +( exit $ac_status )
12670 +ac_cv_func_mmap_fixed_mapped=no
12671 +fi
12672 +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
12673 +fi
12674 +
12675 +
12676 +fi
12677 +{ echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5
12678 +echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6; }
12679 +if test $ac_cv_func_mmap_fixed_mapped = yes; then
12680 +  
12681 +cat >>confdefs.h <<\_ACEOF
12682 +@%:@define HAVE_MMAP 1
12683 +_ACEOF
12684 +
12685 +fi
12686 +rm -f conftest.mmap
12687 +
12688 +ac_ext=cpp
12689 +ac_cpp='$CXXCPP $CPPFLAGS'
12690 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
12691 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
12692 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
12693 +
12694 +
12695 +for ac_func in madvise
12696 +do
12697 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
12698 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
12699 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
12700 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
12701 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12702 +else
12703 +  cat >conftest.$ac_ext <<_ACEOF
12704 +/* confdefs.h.  */
12705 +_ACEOF
12706 +cat confdefs.h >>conftest.$ac_ext
12707 +cat >>conftest.$ac_ext <<_ACEOF
12708 +/* end confdefs.h.  */
12709 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
12710 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
12711 +#define $ac_func innocuous_$ac_func
12712 +
12713 +/* System header to define __stub macros and hopefully few prototypes,
12714 +    which can conflict with char $ac_func (); below.
12715 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
12716 +    <limits.h> exists even on freestanding compilers.  */
12717 +
12718 +#ifdef __STDC__
12719 +# include <limits.h>
12720 +#else
12721 +# include <assert.h>
12722 +#endif
12723 +
12724 +#undef $ac_func
12725 +
12726 +/* Override any GCC internal prototype to avoid an error.
12727 +   Use char because int might match the return type of a GCC
12728 +   builtin and then its argument prototype would still apply.  */
12729 +#ifdef __cplusplus
12730 +extern "C"
12731 +#endif
12732 +char $ac_func ();
12733 +/* The GNU C library defines this for functions which it implements
12734 +    to always fail with ENOSYS.  Some functions are actually named
12735 +    something starting with __ and the normal name is an alias.  */
12736 +#if defined __stub_$ac_func || defined __stub___$ac_func
12737 +choke me
12738 +#endif
12739 +
12740 +int
12741 +main ()
12742 +{
12743 +return $ac_func ();
12744 +  ;
12745 +  return 0;
12746 +}
12747 +_ACEOF
12748 +rm -f conftest.$ac_objext conftest$ac_exeext
12749 +if { (ac_try="$ac_link"
12750 +case "(($ac_try" in
12751 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12752 +  *) ac_try_echo=$ac_try;;
12753 +esac
12754 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12755 +  (eval "$ac_link") 2>conftest.er1
12756 +  ac_status=$?
12757 +  grep -v '^ *+' conftest.er1 >conftest.err
12758 +  rm -f conftest.er1
12759 +  cat conftest.err >&5
12760 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12761 +  (exit $ac_status); } && {
12762 +        test -z "$ac_cxx_werror_flag" ||
12763 +        test ! -s conftest.err
12764 +       } && test -s conftest$ac_exeext &&
12765 +       $as_test_x conftest$ac_exeext; then
12766 +  eval "$as_ac_var=yes"
12767 +else
12768 +  echo "$as_me: failed program was:" >&5
12769 +sed 's/^/| /' conftest.$ac_ext >&5
12770 +
12771 +       eval "$as_ac_var=no"
12772 +fi
12773 +
12774 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
12775 +      conftest$ac_exeext conftest.$ac_ext
12776 +fi
12777 +ac_res=`eval echo '${'$as_ac_var'}'`
12778 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
12779 +echo "${ECHO_T}$ac_res" >&6; }
12780 +if test `eval echo '${'$as_ac_var'}'` = yes; then
12781 +  cat >>confdefs.h <<_ACEOF
12782 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
12783 +_ACEOF
12784
12785 +fi
12786 +done
12787 +
12788 +{ echo "$as_me:$LINENO: checking whether madvise is declared" >&5
12789 +echo $ECHO_N "checking whether madvise is declared... $ECHO_C" >&6; }
12790 +if test "${ac_cv_have_decl_madvise+set}" = set; then
12791 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12792 +else
12793 +  cat >conftest.$ac_ext <<_ACEOF
12794 +/* confdefs.h.  */
12795 +_ACEOF
12796 +cat confdefs.h >>conftest.$ac_ext
12797 +cat >>conftest.$ac_ext <<_ACEOF
12798 +/* end confdefs.h.  */
12799 +#if HAVE_SYS_MMAN_H
12800 +#include <sys/types.h>
12801 +#include <sys/mman.h>
12802 +#endif
12803 +
12804 +int
12805 +main ()
12806 +{
12807 +#ifndef madvise
12808 +  (void) madvise;
12809 +#endif
12810 +
12811 +  ;
12812 +  return 0;
12813 +}
12814 +_ACEOF
12815 +rm -f conftest.$ac_objext
12816 +if { (ac_try="$ac_compile"
12817 +case "(($ac_try" in
12818 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
12819 +  *) ac_try_echo=$ac_try;;
12820 +esac
12821 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
12822 +  (eval "$ac_compile") 2>conftest.er1
12823 +  ac_status=$?
12824 +  grep -v '^ *+' conftest.er1 >conftest.err
12825 +  rm -f conftest.er1
12826 +  cat conftest.err >&5
12827 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
12828 +  (exit $ac_status); } && {
12829 +        test -z "$ac_cxx_werror_flag" ||
12830 +        test ! -s conftest.err
12831 +       } && test -s conftest.$ac_objext; then
12832 +  ac_cv_have_decl_madvise=yes
12833 +else
12834 +  echo "$as_me: failed program was:" >&5
12835 +sed 's/^/| /' conftest.$ac_ext >&5
12836 +
12837 +       ac_cv_have_decl_madvise=no
12838 +fi
12839 +
12840 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
12841 +fi
12842 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_madvise" >&5
12843 +echo "${ECHO_T}$ac_cv_have_decl_madvise" >&6; }
12844 +if test $ac_cv_have_decl_madvise = yes; then
12845 +  
12846 +cat >>confdefs.h <<_ACEOF
12847 +@%:@define HAVE_DECL_MADVISE 1
12848 +_ACEOF
12849 +
12850 +
12851 +else
12852 +  cat >>confdefs.h <<_ACEOF
12853 +@%:@define HAVE_DECL_MADVISE 0
12854 +_ACEOF
12855 +
12856 +
12857 +fi
12858 +
12859 +
12860 +
12861 +
12862 +
12863 +EXTRA_DRIVER_OBJS=
12864 +EXTRA_TOOL_OBJS=
12865 +if test "x$enable_ip6" = xyes; then
12866 +    EXTRA_DRIVER_OBJS="ip6address.o ip6flowid.o ip6table.o $EXTRA_DRIVER_OBJS"
12867 +    EXTRA_TOOL_OBJS="ip6address.o $EXTRA_TOOL_OBJS"
12868 +fi
12869 +
12870 +
12871 +
12872 +
12873 +
12874 +if test $ac_have_linux_kernel = y; then
12875 +
12876 +
12877 +if test "$linux_system_map" = NONE; then
12878 +    linux_system_map=$linuxdir/System.map
12879 +    if test "x$linux_system_map_boot" != xno -a ! -f "$linux_system_map"; then
12880 +       linux_system_map=/boot/System.map-"$linux_system_map_boot"
12881 +    fi
12882 +fi
12883 +
12884 +if test ! -f "$linux_system_map"; then
12885 +    if test "x$enable_linuxmodule_default" = xyes; then
12886 +       { echo "$as_me:$LINENO: WARNING: 
12887 +=========================================
12888 +
12889 +Can't find Linux System.map file '$linux_system_map',
12890 +so I won't compile the linuxmodule driver.
12891 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
12892 +
12893 +=========================================" >&5
12894 +echo "$as_me: WARNING: 
12895 +=========================================
12896 +
12897 +Can't find Linux System.map file '$linux_system_map',
12898 +so I won't compile the linuxmodule driver.
12899 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
12900 +
12901 +=========================================" >&2;}
12902 +       ac_have_linux_kernel=no
12903 +    else
12904 +       { { echo "$as_me:$LINENO: error: 
12905 +=========================================
12906 +
12907 +Can't find Linux System.map file '$linux_system_map'.
12908 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
12909 +
12910 +=========================================" >&5
12911 +echo "$as_me: error: 
12912 +=========================================
12913 +
12914 +Can't find Linux System.map file '$linux_system_map'.
12915 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
12916 +
12917 +=========================================" >&2;}
12918 +   { (exit 1); exit 1; }; }
12919 +    fi
12920 +fi
12921 +
12922 +fi
12923 +
12924 +
12925 +if test $ac_have_linux_kernel = y; then
12926 +
12927 +{ echo "$as_me:$LINENO: checking for Linux 2.6" >&5
12928 +echo $ECHO_N "checking for Linux 2.6... $ECHO_C" >&6; }
12929 +if test "${ac_cv_linux26+set}" = set; then
12930 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12931 +else
12932 +  if grep '^PATCHLEVEL         *=      *6' $linuxdir/Makefile >/dev/null 2>&1; then ac_cv_linux26=1; else ac_cv_linux26=0; fi
12933 +fi
12934 +{ echo "$as_me:$LINENO: result: $ac_cv_linux26" >&5
12935 +echo "${ECHO_T}$ac_cv_linux26" >&6; }
12936 +LINUXMODULE_2_6=$ac_cv_linux26
12937 +
12938 +if test $LINUXMODULE_2_6 = 1; then
12939 +    
12940 +cat >>confdefs.h <<\_ACEOF
12941 +@%:@define HAVE_LINUXMODULE_2_6 1
12942 +_ACEOF
12943 +
12944 +fi
12945 +
12946 +{ echo "$as_me:$LINENO: checking for Click Linux kernel extensions" >&5
12947 +echo $ECHO_N "checking for Click Linux kernel extensions... $ECHO_C" >&6; }
12948 +if test "${ac_cv_click_kernel+set}" = set; then
12949 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12950 +else
12951 +  if grep register_net_in $linux_system_map >/dev/null 2>&1; then
12952 +    ac_cv_click_kernel=yes
12953 +else ac_cv_click_kernel=no; fi
12954 +fi
12955 +{ echo "$as_me:$LINENO: result: $ac_cv_click_kernel" >&5
12956 +echo "${ECHO_T}$ac_cv_click_kernel" >&6; }
12957 +if test $ac_cv_click_kernel = yes; then
12958 +    cat >>confdefs.h <<\_ACEOF
12959 +@%:@define HAVE_CLICK_KERNEL 1
12960 +_ACEOF
12961 +
12962 +fi
12963 +
12964 +{ echo "$as_me:$LINENO: checking for Click Linux kernel extensions for transmit notification" >&5
12965 +echo $ECHO_N "checking for Click Linux kernel extensions for transmit notification... $ECHO_C" >&6; }
12966 +if test "${ac_cv_click_kernel_tx_notify+set}" = set; then
12967 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12968 +else
12969 +  if grep register_net_tx $linux_system_map >/dev/null 2>&1; then
12970 +    ac_cv_click_kernel_tx_notify=yes
12971 +else ac_cv_click_kernel_tx_notify=no; fi
12972 +fi
12973 +{ echo "$as_me:$LINENO: result: $ac_cv_click_kernel_tx_notify" >&5
12974 +echo "${ECHO_T}$ac_cv_click_kernel_tx_notify" >&6; }
12975 +if test $ac_cv_click_kernel_tx_notify = yes; then
12976 +    cat >>confdefs.h <<\_ACEOF
12977 +@%:@define HAVE_CLICK_KERNEL_TX_NOTIFY 1
12978 +_ACEOF
12979 +
12980 +fi
12981 +
12982 +{ echo "$as_me:$LINENO: checking for read_net_skbcount kernel extension" >&5
12983 +echo $ECHO_N "checking for read_net_skbcount kernel extension... $ECHO_C" >&6; }
12984 +if test "${ac_cv_linux_read_net_skbcount+set}" = set; then
12985 +  echo $ECHO_N "(cached) $ECHO_C" >&6
12986 +else
12987 +  if grep read_net_skbcount $linux_system_map >/dev/null 2>&1; then
12988 +  ac_cv_linux_read_net_skbcount=yes
12989 +else ac_cv_linux_read_net_skbcount=no; fi
12990 +fi
12991 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_read_net_skbcount" >&5
12992 +echo "${ECHO_T}$ac_cv_linux_read_net_skbcount" >&6; }
12993 +if test $ac_cv_linux_read_net_skbcount = yes; then
12994 +    cat >>confdefs.h <<\_ACEOF
12995 +@%:@define HAVE_LINUX_READ_NET_SKBCOUNT 1
12996 +_ACEOF
12997 +
12998 +fi
12999 +
13000 +{ echo "$as_me:$LINENO: checking for strlen kernel symbol" >&5
13001 +echo $ECHO_N "checking for strlen kernel symbol... $ECHO_C" >&6; }
13002 +if test "${ac_cv_linux_strlen_exposed+set}" = set; then
13003 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13004 +else
13005 +  if grep ' strlen' $linux_system_map >/dev/null 2>&1; then
13006 +  ac_cv_linux_strlen_exposed=yes
13007 +else ac_cv_linux_strlen_exposed=no; fi
13008 +fi
13009 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_strlen_exposed" >&5
13010 +echo "${ECHO_T}$ac_cv_linux_strlen_exposed" >&6; }
13011 +if test $ac_cv_linux_strlen_exposed = yes; then
13012 +    cat >>confdefs.h <<\_ACEOF
13013 +@%:@define HAVE_LINUX_STRLEN_EXPOSED 1
13014 +_ACEOF
13015 +
13016 +fi
13017 +
13018 +{ echo "$as_me:$LINENO: checking for tulip_interrupt_hook kernel symbol" >&5
13019 +echo $ECHO_N "checking for tulip_interrupt_hook kernel symbol... $ECHO_C" >&6; }
13020 +if test "${ac_cv_linux_tulip_intr_hook+set}" = set; then
13021 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13022 +else
13023 +  if grep ' tulip_interrupt_hook' $linux_system_map >/dev/null 2>&1; then
13024 +  ac_cv_linux_tulip_intr_hook=yes
13025 +else ac_cv_linux_tulip_intr_hook=no; fi
13026 +fi
13027 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_tulip_intr_hook" >&5
13028 +echo "${ECHO_T}$ac_cv_linux_tulip_intr_hook" >&6; }
13029 +if test $ac_cv_linux_tulip_intr_hook = yes; then
13030 +    cat >>confdefs.h <<\_ACEOF
13031 +@%:@define HAVE_LINUX_TULIP_INTERRUPT_HOOK 1
13032 +_ACEOF
13033 +
13034 +fi
13035 +
13036 +{ echo "$as_me:$LINENO: checking for device polling kernel extension" >&5
13037 +echo $ECHO_N "checking for device polling kernel extension... $ECHO_C" >&6; }
13038 +if test "${ac_cv_linux_poll_extension+set}" = set; then
13039 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13040 +else
13041 +  if grep polling $linuxdir/include/linux/netdevice.h >/dev/null 2>&1; then
13042 +  ac_cv_linux_poll_extension=yes
13043 +else ac_cv_linux_poll_extension=no; fi
13044 +fi
13045 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_poll_extension" >&5
13046 +echo "${ECHO_T}$ac_cv_linux_poll_extension" >&6; }
13047 +if test $ac_cv_linux_poll_extension = yes; then
13048 +    cat >>confdefs.h <<\_ACEOF
13049 +@%:@define HAVE_LINUX_POLLING 1
13050 +_ACEOF
13051 +
13052 +fi
13053 +
13054 +{ echo "$as_me:$LINENO: checking for atomic_set_mask" >&5
13055 +echo $ECHO_N "checking for atomic_set_mask... $ECHO_C" >&6; }
13056 +if test "${ac_cv_linux_atomic_set_mask+set}" = set; then
13057 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13058 +else
13059 +  if grep atomic_set_mask $linuxdir/include/asm/atomic.h >/dev/null 2>&1; then
13060 +  ac_cv_linux_atomic_set_mask=yes
13061 +else ac_cv_linux_atomic_set_mask=no; fi
13062 +fi
13063 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_atomic_set_mask" >&5
13064 +echo "${ECHO_T}$ac_cv_linux_atomic_set_mask" >&6; }
13065 +if test $ac_cv_linux_atomic_set_mask = yes; then
13066 +    cat >>confdefs.h <<\_ACEOF
13067 +@%:@define HAVE_LINUX_ATOMIC_SET_MASK 1
13068 +_ACEOF
13069 +
13070 +fi
13071 +
13072 +{ echo "$as_me:$LINENO: checking for SMP" >&5
13073 +echo $ECHO_N "checking for SMP... $ECHO_C" >&6; }
13074 +if test "${ac_cv_smp+set}" = set; then
13075 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13076 +else
13077 +  if grep "#define CONFIG_SMP 1" $linuxdir/include/linux/autoconf.h >/dev/null 2>&1; then
13078 +  ac_cv_smp=yes
13079 +else ac_cv_smp=no; fi
13080 +fi
13081 +{ echo "$as_me:$LINENO: result: $ac_cv_smp" >&5
13082 +echo "${ECHO_T}$ac_cv_smp" >&6; }
13083 +if test $ac_cv_smp = yes; then
13084 +    cat >>confdefs.h <<\_ACEOF
13085 +@%:@define __SMP__ 1
13086 +_ACEOF
13087 +
13088 +    KERNEL_CXX="$KERNEL_CXX -D__SMP__"
13089 +fi
13090 +
13091 +{ echo "$as_me:$LINENO: checking for <asm/alternative.h>" >&5
13092 +echo $ECHO_N "checking for <asm/alternative.h>... $ECHO_C" >&6; }
13093 +if test "${ac_cv_linux_asm_alternative_h+set}" = set; then
13094 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13095 +else
13096 +  if test -r $linuxdir/include/asm/alternative.h >/dev/null 2>&1; then
13097 +  ac_cv_linux_asm_alternative_h=yes
13098 +else ac_cv_linux_asm_alternative_h=no; fi
13099 +fi
13100 +{ echo "$as_me:$LINENO: result: $ac_cv_linux_asm_alternative_h" >&5
13101 +echo "${ECHO_T}$ac_cv_linux_asm_alternative_h" >&6; }
13102 +if test $ac_cv_linux_asm_alternative_h = yes; then
13103 +    cat >>confdefs.h <<\_ACEOF
13104 +@%:@define HAVE_LINUX_ASM_ALTERNATIVE_H 1
13105 +_ACEOF
13106 +
13107 +fi
13108 +
13109 +fi
13110 +
13111 +
13112 +
13113 +if test $ac_have_bsd_kernel = y; then
13114 +    KERNEL_CXX="$KERNEL_CXX -fpermissive"
13115 +    { echo "$as_me:$LINENO: checking FreeBSD version" >&5
13116 +echo $ECHO_N "checking FreeBSD version... $ECHO_C" >&6; }
13117 +if test "${ac_cv_freebsd_version+set}" = set; then
13118 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13119 +else
13120 +  
13121 +       save_flags="$CPPFLAGS"
13122 +       CPPFLAGS="$CPPFLAGS -I$freebsd_includedir"
13123 +       cat >conftest.$ac_ext <<_ACEOF
13124 +/* confdefs.h.  */
13125 +_ACEOF
13126 +cat confdefs.h >>conftest.$ac_ext
13127 +cat >>conftest.$ac_ext <<_ACEOF
13128 +/* end confdefs.h.  */
13129 +#include <sys/param.h>
13130 +#if __FreeBSD_version < 500000
13131 +#include <NONEXISTENT_FILE>
13132 +#endif
13133 +_ACEOF
13134 +rm -f conftest.$ac_objext
13135 +if { (ac_try="$ac_compile"
13136 +case "(($ac_try" in
13137 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13138 +  *) ac_try_echo=$ac_try;;
13139 +esac
13140 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13141 +  (eval "$ac_compile") 2>conftest.er1
13142 +  ac_status=$?
13143 +  grep -v '^ *+' conftest.er1 >conftest.err
13144 +  rm -f conftest.er1
13145 +  cat conftest.err >&5
13146 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13147 +  (exit $ac_status); } && {
13148 +        test -z "$ac_cxx_werror_flag" ||
13149 +        test ! -s conftest.err
13150 +       } && test -s conftest.$ac_objext; then
13151 +  ac_cv_freebsd_version=yes
13152 +else
13153 +  echo "$as_me: failed program was:" >&5
13154 +sed 's/^/| /' conftest.$ac_ext >&5
13155 +
13156 +       ac_cv_freebsd_version=no
13157 +fi
13158 +
13159 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13160 +       CPPFLAGS="$save_flags"
13161 +fi
13162 +{ echo "$as_me:$LINENO: result: $ac_cv_freebsd_version" >&5
13163 +echo "${ECHO_T}$ac_cv_freebsd_version" >&6; }
13164 +    if test $ac_cv_freebsd_version = yes; then
13165 +       cat >>confdefs.h <<\_ACEOF
13166 +@%:@define HAVE_CLICK_BSD_KERNEL 1
13167 +_ACEOF
13168 +
13169 +       cat >>confdefs.h <<\_ACEOF
13170 +@%:@define HAVE_BSD_POLLING 1
13171 +_ACEOF
13172 +
13173 +    else
13174 +       { echo "$as_me:$LINENO: WARNING: 
13175 +=========================================
13176 +
13177 +Your version of FreeBSD is old.  Click works with FreeBSD 5.x and later.
13178 +
13179 +=========================================" >&5
13180 +echo "$as_me: WARNING: 
13181 +=========================================
13182 +
13183 +Your version of FreeBSD is old.  Click works with FreeBSD 5.x and later.
13184 +
13185 +=========================================" >&2;}
13186 +    fi
13187 +fi
13188 +
13189 +
13190 +
13191 +# Check whether --enable-stride was given.
13192 +if test "${enable_stride+set}" = set; then
13193 +  enableval=$enable_stride; :
13194 +else
13195 +  enable_stride=yes
13196 +fi
13197 +
13198 +if test $enable_stride = yes; then
13199 +    cat >>confdefs.h <<\_ACEOF
13200 +@%:@define HAVE_STRIDE_SCHED 1
13201 +_ACEOF
13202 +
13203 +fi
13204 +
13205 +# Check whether --enable-task-heap was given.
13206 +if test "${enable_task_heap+set}" = set; then
13207 +  enableval=$enable_task_heap; :
13208 +else
13209 +  enable_task_heap=no
13210 +fi
13211 +
13212 +if test $enable_task_heap = yes; then
13213 +    cat >>confdefs.h <<\_ACEOF
13214 +@%:@define HAVE_TASK_HEAP 1
13215 +_ACEOF
13216 +
13217 +fi
13218 +
13219 +
13220 +
13221 +# Check whether --enable-dmalloc was given.
13222 +if test "${enable_dmalloc+set}" = set; then
13223 +  enableval=$enable_dmalloc; :
13224 +else
13225 +  enable_dmalloc=no
13226 +fi
13227 +
13228 +if test $enable_dmalloc = yes; then
13229 +    cat >>confdefs.h <<\_ACEOF
13230 +@%:@define CLICK_DMALLOC 1
13231 +_ACEOF
13232 +
13233 +fi
13234 +
13235 +
13236 +
13237 +# Check whether --enable-intel-cpu was given.
13238 +if test "${enable_intel_cpu+set}" = set; then
13239 +  enableval=$enable_intel_cpu; :
13240 +else
13241 +  enable_intel_cpu=no
13242 +fi
13243 +
13244 +if test $enable_intel_cpu = yes; then
13245 +    cat >>confdefs.h <<\_ACEOF
13246 +@%:@define HAVE_INTEL_CPU 1
13247 +_ACEOF
13248 +
13249 +fi
13250 +
13251 +
13252 +
13253 +
13254 +
13255 +
13256 +
13257 +for ac_header in linux/if_tun.h net/if_tun.h net/if_tap.h net/bpf.h
13258 +do
13259 +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
13260 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13261 +  { echo "$as_me:$LINENO: checking for $ac_header" >&5
13262 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
13263 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13264 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13265 +fi
13266 +ac_res=`eval echo '${'$as_ac_Header'}'`
13267 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
13268 +echo "${ECHO_T}$ac_res" >&6; }
13269 +else
13270 +  # Is the header compilable?
13271 +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
13272 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
13273 +cat >conftest.$ac_ext <<_ACEOF
13274 +/* confdefs.h.  */
13275 +_ACEOF
13276 +cat confdefs.h >>conftest.$ac_ext
13277 +cat >>conftest.$ac_ext <<_ACEOF
13278 +/* end confdefs.h.  */
13279 +$ac_includes_default
13280 +@%:@include <$ac_header>
13281 +_ACEOF
13282 +rm -f conftest.$ac_objext
13283 +if { (ac_try="$ac_compile"
13284 +case "(($ac_try" in
13285 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13286 +  *) ac_try_echo=$ac_try;;
13287 +esac
13288 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13289 +  (eval "$ac_compile") 2>conftest.er1
13290 +  ac_status=$?
13291 +  grep -v '^ *+' conftest.er1 >conftest.err
13292 +  rm -f conftest.er1
13293 +  cat conftest.err >&5
13294 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13295 +  (exit $ac_status); } && {
13296 +        test -z "$ac_cxx_werror_flag" ||
13297 +        test ! -s conftest.err
13298 +       } && test -s conftest.$ac_objext; then
13299 +  ac_header_compiler=yes
13300 +else
13301 +  echo "$as_me: failed program was:" >&5
13302 +sed 's/^/| /' conftest.$ac_ext >&5
13303 +
13304 +       ac_header_compiler=no
13305 +fi
13306 +
13307 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13308 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
13309 +echo "${ECHO_T}$ac_header_compiler" >&6; }
13310 +
13311 +# Is the header present?
13312 +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
13313 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
13314 +cat >conftest.$ac_ext <<_ACEOF
13315 +/* confdefs.h.  */
13316 +_ACEOF
13317 +cat confdefs.h >>conftest.$ac_ext
13318 +cat >>conftest.$ac_ext <<_ACEOF
13319 +/* end confdefs.h.  */
13320 +@%:@include <$ac_header>
13321 +_ACEOF
13322 +if { (ac_try="$ac_cpp conftest.$ac_ext"
13323 +case "(($ac_try" in
13324 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13325 +  *) ac_try_echo=$ac_try;;
13326 +esac
13327 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13328 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
13329 +  ac_status=$?
13330 +  grep -v '^ *+' conftest.er1 >conftest.err
13331 +  rm -f conftest.er1
13332 +  cat conftest.err >&5
13333 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13334 +  (exit $ac_status); } >/dev/null && {
13335 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
13336 +        test ! -s conftest.err
13337 +       }; then
13338 +  ac_header_preproc=yes
13339 +else
13340 +  echo "$as_me: failed program was:" >&5
13341 +sed 's/^/| /' conftest.$ac_ext >&5
13342 +
13343 +  ac_header_preproc=no
13344 +fi
13345 +
13346 +rm -f conftest.err conftest.$ac_ext
13347 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
13348 +echo "${ECHO_T}$ac_header_preproc" >&6; }
13349 +
13350 +# So?  What about this header?
13351 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
13352 +  yes:no: )
13353 +    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
13354 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
13355 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
13356 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
13357 +    ac_header_preproc=yes
13358 +    ;;
13359 +  no:yes:* )
13360 +    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
13361 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
13362 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
13363 +echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
13364 +    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
13365 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
13366 +    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
13367 +echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
13368 +    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
13369 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
13370 +    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
13371 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
13372 +    
13373 +    ;;
13374 +esac
13375 +{ echo "$as_me:$LINENO: checking for $ac_header" >&5
13376 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
13377 +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
13378 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13379 +else
13380 +  eval "$as_ac_Header=\$ac_header_preproc"
13381 +fi
13382 +ac_res=`eval echo '${'$as_ac_Header'}'`
13383 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
13384 +echo "${ECHO_T}$ac_res" >&6; }
13385 +
13386 +fi
13387 +if test `eval echo '${'$as_ac_Header'}'` = yes; then
13388 +  cat >>confdefs.h <<_ACEOF
13389 +@%:@define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
13390 +_ACEOF
13391
13392 +fi
13393 +
13394 +done
13395 +
13396 +
13397 +
13398 +
13399 +POSSIBLE_DRIVERS=
13400 +for i in bsdmodule exopc linuxmodule ns userlevel; do
13401 +    test -f $srcdir/$i/Makefile.in && POSSIBLE_DRIVERS="$POSSIBLE_DRIVERS $i"
13402 +done
13403 +
13404 +
13405 +
13406 +
13407 +DRIVERS=
13408 +
13409 +
13410 +HAVE_USERLEVEL_DRIVER=0
13411 +
13412 +HAVE_LINUXMODULE_DRIVER=0
13413 +
13414 +HAVE_BSDMODULE_DRIVER=0
13415 +
13416 +
13417 +OTHER_TARGETS=
13418 +
13419 +
13420 +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
13421 +    test -d $srcdir/tools/$i &&        \
13422 +       TOOLDIRS="$TOOLDIRS $i" TOOL_TARGETS="$TOOL_TARGETS $i"
13423 +done
13424 +for i in click-install; do
13425 +    test -d $srcdir/tools/$i && TOOLDIRS="$TOOLDIRS $i"
13426 +done
13427 +
13428 +
13429 +
13430 +
13431 +
13432 +if test "$enable_userlevel" = yes; then
13433 +    
13434 +
13435 +    
13436 +    HAVE_PCAP=yes
13437 +    if test "${PCAP_INCLUDES-NO}" = NO; then
13438 +       { echo "$as_me:$LINENO: checking for pcap.h" >&5
13439 +echo $ECHO_N "checking for pcap.h... $ECHO_C" >&6; }
13440 +if test "${ac_cv_pcap_header_path+set}" = set; then
13441 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13442 +else
13443 +  
13444 +           cat >conftest.$ac_ext <<_ACEOF
13445 +/* confdefs.h.  */
13446 +_ACEOF
13447 +cat confdefs.h >>conftest.$ac_ext
13448 +cat >>conftest.$ac_ext <<_ACEOF
13449 +/* end confdefs.h.  */
13450 +#include <pcap.h>
13451 +_ACEOF
13452 +if { (ac_try="$ac_cpp conftest.$ac_ext"
13453 +case "(($ac_try" in
13454 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13455 +  *) ac_try_echo=$ac_try;;
13456 +esac
13457 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13458 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
13459 +  ac_status=$?
13460 +  grep -v '^ *+' conftest.er1 >conftest.err
13461 +  rm -f conftest.er1
13462 +  cat conftest.err >&5
13463 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13464 +  (exit $ac_status); } >/dev/null && {
13465 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
13466 +        test ! -s conftest.err
13467 +       }; then
13468 +  ac_cv_pcap_header_path="found"
13469 +else
13470 +  echo "$as_me: failed program was:" >&5
13471 +sed 's/^/| /' conftest.$ac_ext >&5
13472 +
13473 +  ac_cv_pcap_header_path='not found'
13474 +           test -r /usr/local/include/pcap/pcap.h && \
13475 +               ac_cv_pcap_header_path='-I/usr/local/include/pcap'
13476 +           test -r /usr/include/pcap/pcap.h && \
13477 +               ac_cv_pcap_header_path='-I/usr/include/pcap'
13478 +fi
13479 +
13480 +rm -f conftest.err conftest.$ac_ext
13481 +fi
13482 +{ echo "$as_me:$LINENO: result: $ac_cv_pcap_header_path" >&5
13483 +echo "${ECHO_T}$ac_cv_pcap_header_path" >&6; }
13484 +       if test "$ac_cv_pcap_header_path" = 'not found'; then
13485 +           HAVE_PCAP=
13486 +       elif test "$ac_cv_pcap_header_path" != 'found'; then
13487 +           PCAP_INCLUDES="$ac_cv_pcap_header_path"
13488 +        fi
13489 +    fi
13490 +
13491 +    if test "$HAVE_PCAP" = yes; then
13492 +       { echo "$as_me:$LINENO: checking whether pcap.h works" >&5
13493 +echo $ECHO_N "checking whether pcap.h works... $ECHO_C" >&6; }
13494 +if test "${ac_cv_working_pcap_h+set}" = set; then
13495 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13496 +else
13497 +  
13498 +           saveflags="$CPPFLAGS"
13499 +           CPPFLAGS="$saveflags $PCAP_INCLUDES"
13500 +           cat >conftest.$ac_ext <<_ACEOF
13501 +/* confdefs.h.  */
13502 +_ACEOF
13503 +cat confdefs.h >>conftest.$ac_ext
13504 +cat >>conftest.$ac_ext <<_ACEOF
13505 +/* end confdefs.h.  */
13506 +#include <pcap.h>
13507 +_ACEOF
13508 +if { (ac_try="$ac_cpp conftest.$ac_ext"
13509 +case "(($ac_try" in
13510 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13511 +  *) ac_try_echo=$ac_try;;
13512 +esac
13513 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13514 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
13515 +  ac_status=$?
13516 +  grep -v '^ *+' conftest.er1 >conftest.err
13517 +  rm -f conftest.er1
13518 +  cat conftest.err >&5
13519 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13520 +  (exit $ac_status); } >/dev/null && {
13521 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
13522 +        test ! -s conftest.err
13523 +       }; then
13524 +  ac_cv_working_pcap_h=yes
13525 +else
13526 +  echo "$as_me: failed program was:" >&5
13527 +sed 's/^/| /' conftest.$ac_ext >&5
13528 +
13529 +  ac_cv_working_pcap_h=no
13530 +fi
13531 +
13532 +rm -f conftest.err conftest.$ac_ext
13533 +           CPPFLAGS="$saveflags"
13534 +fi
13535 +{ echo "$as_me:$LINENO: result: $ac_cv_working_pcap_h" >&5
13536 +echo "${ECHO_T}$ac_cv_working_pcap_h" >&6; }
13537 +       test "$ac_cv_working_pcap_h" != yes && HAVE_PCAP=
13538 +    fi
13539 +
13540 +    if test "$HAVE_PCAP" = yes; then
13541 +       saveflags="$CPPFLAGS"
13542 +       CPPFLAGS="$saveflags $PCAP_INCLUDES"
13543 +       { echo "$as_me:$LINENO: checking for bpf_timeval in pcap.h" >&5
13544 +echo $ECHO_N "checking for bpf_timeval in pcap.h... $ECHO_C" >&6; }
13545 +if test "${ac_cv_bpf_timeval+set}" = set; then
13546 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13547 +else
13548 +  cat >conftest.$ac_ext <<_ACEOF
13549 +/* confdefs.h.  */
13550 +_ACEOF
13551 +cat confdefs.h >>conftest.$ac_ext
13552 +cat >>conftest.$ac_ext <<_ACEOF
13553 +/* end confdefs.h.  */
13554 +#include <pcap.h>
13555 +
13556 +_ACEOF
13557 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
13558 +  $EGREP "bpf_timeval" >/dev/null 2>&1; then
13559 +  ac_cv_bpf_timeval=yes
13560 +else
13561 +  ac_cv_bpf_timeval=no
13562 +fi
13563 +rm -f conftest*
13564 +
13565 +fi
13566 +{ echo "$as_me:$LINENO: result: $ac_cv_bpf_timeval" >&5
13567 +echo "${ECHO_T}$ac_cv_bpf_timeval" >&6; }
13568 +       if test "$ac_cv_bpf_timeval" = yes; then
13569 +           
13570 +cat >>confdefs.h <<\_ACEOF
13571 +@%:@define HAVE_BPF_TIMEVAL 1
13572 +_ACEOF
13573 +
13574 +       fi
13575 +       { echo "$as_me:$LINENO: checking whether pcap_setnonblock is declared" >&5
13576 +echo $ECHO_N "checking whether pcap_setnonblock is declared... $ECHO_C" >&6; }
13577 +if test "${ac_cv_have_decl_pcap_setnonblock+set}" = set; then
13578 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13579 +else
13580 +  cat >conftest.$ac_ext <<_ACEOF
13581 +/* confdefs.h.  */
13582 +_ACEOF
13583 +cat confdefs.h >>conftest.$ac_ext
13584 +cat >>conftest.$ac_ext <<_ACEOF
13585 +/* end confdefs.h.  */
13586 +#include <pcap.h>
13587 +
13588 +int
13589 +main ()
13590 +{
13591 +#ifndef pcap_setnonblock
13592 +  (void) pcap_setnonblock;
13593 +#endif
13594 +
13595 +  ;
13596 +  return 0;
13597 +}
13598 +_ACEOF
13599 +rm -f conftest.$ac_objext
13600 +if { (ac_try="$ac_compile"
13601 +case "(($ac_try" in
13602 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13603 +  *) ac_try_echo=$ac_try;;
13604 +esac
13605 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13606 +  (eval "$ac_compile") 2>conftest.er1
13607 +  ac_status=$?
13608 +  grep -v '^ *+' conftest.er1 >conftest.err
13609 +  rm -f conftest.er1
13610 +  cat conftest.err >&5
13611 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13612 +  (exit $ac_status); } && {
13613 +        test -z "$ac_cxx_werror_flag" ||
13614 +        test ! -s conftest.err
13615 +       } && test -s conftest.$ac_objext; then
13616 +  ac_cv_have_decl_pcap_setnonblock=yes
13617 +else
13618 +  echo "$as_me: failed program was:" >&5
13619 +sed 's/^/| /' conftest.$ac_ext >&5
13620 +
13621 +       ac_cv_have_decl_pcap_setnonblock=no
13622 +fi
13623 +
13624 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
13625 +fi
13626 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_pcap_setnonblock" >&5
13627 +echo "${ECHO_T}$ac_cv_have_decl_pcap_setnonblock" >&6; }
13628 +if test $ac_cv_have_decl_pcap_setnonblock = yes; then
13629 +  
13630 +cat >>confdefs.h <<_ACEOF
13631 +@%:@define HAVE_DECL_PCAP_SETNONBLOCK 1
13632 +_ACEOF
13633 +
13634 +
13635 +else
13636 +  cat >>confdefs.h <<_ACEOF
13637 +@%:@define HAVE_DECL_PCAP_SETNONBLOCK 0
13638 +_ACEOF
13639 +
13640 +
13641 +fi
13642 +
13643 +
13644 +       CPPFLAGS="$saveflags"
13645 +    fi
13646 +
13647 +    test "$HAVE_PCAP" != yes && PCAP_INCLUDES=
13648 +    
13649 +
13650 +
13651 +    
13652 +    if test "$HAVE_PCAP" = yes; then
13653 +       if test "${PCAP_LIBS-NO}" = NO; then
13654 +           { echo "$as_me:$LINENO: checking for -lpcap" >&5
13655 +echo $ECHO_N "checking for -lpcap... $ECHO_C" >&6; }
13656 +if test "${ac_cv_pcap_library_path+set}" = set; then
13657 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13658 +else
13659 +  
13660 +               saveflags="$LDFLAGS"
13661 +               savelibs="$LIBS"
13662 +               LIBS="$savelibs -lpcap $SOCKET_LIBS"
13663 +               ac_ext=c
13664 +ac_cpp='$CPP $CPPFLAGS'
13665 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
13666 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
13667 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
13668 +
13669 +               cat >conftest.$ac_ext <<_ACEOF
13670 +/* confdefs.h.  */
13671 +_ACEOF
13672 +cat confdefs.h >>conftest.$ac_ext
13673 +cat >>conftest.$ac_ext <<_ACEOF
13674 +/* end confdefs.h.  */
13675 +
13676 +/* Override any GCC internal prototype to avoid an error.
13677 +   Use char because int might match the return type of a GCC
13678 +   builtin and then its argument prototype would still apply.  */
13679 +#ifdef __cplusplus
13680 +extern "C"
13681 +#endif
13682 +char pcap_open_live ();
13683 +int
13684 +main ()
13685 +{
13686 +return pcap_open_live ();
13687 +  ;
13688 +  return 0;
13689 +}
13690 +_ACEOF
13691 +rm -f conftest.$ac_objext conftest$ac_exeext
13692 +if { (ac_try="$ac_link"
13693 +case "(($ac_try" in
13694 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13695 +  *) ac_try_echo=$ac_try;;
13696 +esac
13697 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13698 +  (eval "$ac_link") 2>conftest.er1
13699 +  ac_status=$?
13700 +  grep -v '^ *+' conftest.er1 >conftest.err
13701 +  rm -f conftest.er1
13702 +  cat conftest.err >&5
13703 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13704 +  (exit $ac_status); } && {
13705 +        test -z "$ac_c_werror_flag" ||
13706 +        test ! -s conftest.err
13707 +       } && test -s conftest$ac_exeext &&
13708 +       $as_test_x conftest$ac_exeext; then
13709 +  ac_cv_pcap_library_path="found"
13710 +else
13711 +  echo "$as_me: failed program was:" >&5
13712 +sed 's/^/| /' conftest.$ac_ext >&5
13713 +
13714 +       LDFLAGS="$saveflags -L/usr/local/lib"
13715 +                               cat >conftest.$ac_ext <<_ACEOF
13716 +/* confdefs.h.  */
13717 +_ACEOF
13718 +cat confdefs.h >>conftest.$ac_ext
13719 +cat >>conftest.$ac_ext <<_ACEOF
13720 +/* end confdefs.h.  */
13721 +
13722 +/* Override any GCC internal prototype to avoid an error.
13723 +   Use char because int might match the return type of a GCC
13724 +   builtin and then its argument prototype would still apply.  */
13725 +#ifdef __cplusplus
13726 +extern "C"
13727 +#endif
13728 +char pcap_open_live ();
13729 +int
13730 +main ()
13731 +{
13732 +return pcap_open_live ();
13733 +  ;
13734 +  return 0;
13735 +}
13736 +_ACEOF
13737 +rm -f conftest.$ac_objext conftest$ac_exeext
13738 +if { (ac_try="$ac_link"
13739 +case "(($ac_try" in
13740 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13741 +  *) ac_try_echo=$ac_try;;
13742 +esac
13743 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13744 +  (eval "$ac_link") 2>conftest.er1
13745 +  ac_status=$?
13746 +  grep -v '^ *+' conftest.er1 >conftest.err
13747 +  rm -f conftest.er1
13748 +  cat conftest.err >&5
13749 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13750 +  (exit $ac_status); } && {
13751 +        test -z "$ac_c_werror_flag" ||
13752 +        test ! -s conftest.err
13753 +       } && test -s conftest$ac_exeext &&
13754 +       $as_test_x conftest$ac_exeext; then
13755 +  ac_cv_pcap_library_path="-L/usr/local/lib"
13756 +else
13757 +  echo "$as_me: failed program was:" >&5
13758 +sed 's/^/| /' conftest.$ac_ext >&5
13759 +
13760 +       ac_cv_pcap_library_path="not found"
13761 +fi
13762 +
13763 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13764 +      conftest$ac_exeext conftest.$ac_ext
13765 +fi
13766 +
13767 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13768 +      conftest$ac_exeext conftest.$ac_ext
13769 +               LDFLAGS="$saveflags"
13770 +               LIBS="$savelibs"
13771 +fi
13772 +{ echo "$as_me:$LINENO: result: $ac_cv_pcap_library_path" >&5
13773 +echo "${ECHO_T}$ac_cv_pcap_library_path" >&6; }
13774 +       else
13775 +           { echo "$as_me:$LINENO: checking for -lpcap in \"$PCAP_LIBS\"" >&5
13776 +echo $ECHO_N "checking for -lpcap in \"$PCAP_LIBS\"... $ECHO_C" >&6; }
13777 +if test "${ac_cv_pcap_library_path+set}" = set; then
13778 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13779 +else
13780 +  
13781 +               saveflags="$LDFLAGS"
13782 +               LDFLAGS="$saveflags $PCAP_LIBS"
13783 +               savelibs="$LIBS"
13784 +               LIBS="$savelibs -lpcap $SOCKET_LIBS"
13785 +               ac_ext=c
13786 +ac_cpp='$CPP $CPPFLAGS'
13787 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
13788 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
13789 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
13790 +
13791 +               cat >conftest.$ac_ext <<_ACEOF
13792 +/* confdefs.h.  */
13793 +_ACEOF
13794 +cat confdefs.h >>conftest.$ac_ext
13795 +cat >>conftest.$ac_ext <<_ACEOF
13796 +/* end confdefs.h.  */
13797 +
13798 +/* Override any GCC internal prototype to avoid an error.
13799 +   Use char because int might match the return type of a GCC
13800 +   builtin and then its argument prototype would still apply.  */
13801 +#ifdef __cplusplus
13802 +extern "C"
13803 +#endif
13804 +char pcap_open_live ();
13805 +int
13806 +main ()
13807 +{
13808 +return pcap_open_live ();
13809 +  ;
13810 +  return 0;
13811 +}
13812 +_ACEOF
13813 +rm -f conftest.$ac_objext conftest$ac_exeext
13814 +if { (ac_try="$ac_link"
13815 +case "(($ac_try" in
13816 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13817 +  *) ac_try_echo=$ac_try;;
13818 +esac
13819 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13820 +  (eval "$ac_link") 2>conftest.er1
13821 +  ac_status=$?
13822 +  grep -v '^ *+' conftest.er1 >conftest.err
13823 +  rm -f conftest.er1
13824 +  cat conftest.err >&5
13825 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13826 +  (exit $ac_status); } && {
13827 +        test -z "$ac_c_werror_flag" ||
13828 +        test ! -s conftest.err
13829 +       } && test -s conftest$ac_exeext &&
13830 +       $as_test_x conftest$ac_exeext; then
13831 +  ac_cv_pcap_library_path="$PCAP_LIBS"
13832 +else
13833 +  echo "$as_me: failed program was:" >&5
13834 +sed 's/^/| /' conftest.$ac_ext >&5
13835 +
13836 +       ac_cv_pcap_library_path="not found"
13837 +fi
13838 +
13839 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13840 +      conftest$ac_exeext conftest.$ac_ext
13841 +               LDFLAGS="$saveflags"
13842 +               LIBS="$savelibs"
13843 +fi
13844 +{ echo "$as_me:$LINENO: result: $ac_cv_pcap_library_path" >&5
13845 +echo "${ECHO_T}$ac_cv_pcap_library_path" >&6; }
13846 +       fi
13847 +        if test "$ac_cv_pcap_library_path" = "found"; then
13848 +           PCAP_LIBS='-lpcap'
13849 +       elif test "$ac_cv_pcap_library_path" != "not found"; then
13850 +           PCAP_LIBS="$ac_cv_pcap_library_path -lpcap"
13851 +       else
13852 +           HAVE_PCAP=
13853 +       fi
13854 +    fi
13855 +
13856 +    test "$HAVE_PCAP" != yes && PCAP_LIBS=
13857 +    
13858 +
13859 +    if test "$HAVE_PCAP" = yes; then
13860 +       
13861 +cat >>confdefs.h <<\_ACEOF
13862 +@%:@define HAVE_PCAP 1
13863 +_ACEOF
13864 +
13865 +
13866 +       saveflags="$LDFLAGS"
13867 +       LDFLAGS="$saveflags $PCAP_LIBS"
13868 +       
13869 +for ac_func in pcap_setnonblock
13870 +do
13871 +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
13872 +{ echo "$as_me:$LINENO: checking for $ac_func" >&5
13873 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
13874 +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
13875 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13876 +else
13877 +  cat >conftest.$ac_ext <<_ACEOF
13878 +/* confdefs.h.  */
13879 +_ACEOF
13880 +cat confdefs.h >>conftest.$ac_ext
13881 +cat >>conftest.$ac_ext <<_ACEOF
13882 +/* end confdefs.h.  */
13883 +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
13884 +   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
13885 +#define $ac_func innocuous_$ac_func
13886 +
13887 +/* System header to define __stub macros and hopefully few prototypes,
13888 +    which can conflict with char $ac_func (); below.
13889 +    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
13890 +    <limits.h> exists even on freestanding compilers.  */
13891 +
13892 +#ifdef __STDC__
13893 +# include <limits.h>
13894 +#else
13895 +# include <assert.h>
13896 +#endif
13897 +
13898 +#undef $ac_func
13899 +
13900 +/* Override any GCC internal prototype to avoid an error.
13901 +   Use char because int might match the return type of a GCC
13902 +   builtin and then its argument prototype would still apply.  */
13903 +#ifdef __cplusplus
13904 +extern "C"
13905 +#endif
13906 +char $ac_func ();
13907 +/* The GNU C library defines this for functions which it implements
13908 +    to always fail with ENOSYS.  Some functions are actually named
13909 +    something starting with __ and the normal name is an alias.  */
13910 +#if defined __stub_$ac_func || defined __stub___$ac_func
13911 +choke me
13912 +#endif
13913 +
13914 +int
13915 +main ()
13916 +{
13917 +return $ac_func ();
13918 +  ;
13919 +  return 0;
13920 +}
13921 +_ACEOF
13922 +rm -f conftest.$ac_objext conftest$ac_exeext
13923 +if { (ac_try="$ac_link"
13924 +case "(($ac_try" in
13925 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
13926 +  *) ac_try_echo=$ac_try;;
13927 +esac
13928 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
13929 +  (eval "$ac_link") 2>conftest.er1
13930 +  ac_status=$?
13931 +  grep -v '^ *+' conftest.er1 >conftest.err
13932 +  rm -f conftest.er1
13933 +  cat conftest.err >&5
13934 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
13935 +  (exit $ac_status); } && {
13936 +        test -z "$ac_c_werror_flag" ||
13937 +        test ! -s conftest.err
13938 +       } && test -s conftest$ac_exeext &&
13939 +       $as_test_x conftest$ac_exeext; then
13940 +  eval "$as_ac_var=yes"
13941 +else
13942 +  echo "$as_me: failed program was:" >&5
13943 +sed 's/^/| /' conftest.$ac_ext >&5
13944 +
13945 +       eval "$as_ac_var=no"
13946 +fi
13947 +
13948 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
13949 +      conftest$ac_exeext conftest.$ac_ext
13950 +fi
13951 +ac_res=`eval echo '${'$as_ac_var'}'`
13952 +              { echo "$as_me:$LINENO: result: $ac_res" >&5
13953 +echo "${ECHO_T}$ac_res" >&6; }
13954 +if test `eval echo '${'$as_ac_var'}'` = yes; then
13955 +  cat >>confdefs.h <<_ACEOF
13956 +@%:@define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
13957 +_ACEOF
13958
13959 +fi
13960 +done
13961 +
13962 +       LDFLAGS="$saveflags"
13963 +    fi
13964 +
13965 +    if test "$HAVE_PCAP" != yes -a "$ac_cv_under_linux" != yes; then
13966 +       { echo "$as_me:$LINENO: WARNING: 
13967 +=========================================
13968 +
13969 +pcap.h and/or -lpcap not found; user-level driver can't steal packets.
13970 +
13971 +=========================================" >&5
13972 +echo "$as_me: WARNING: 
13973 +=========================================
13974 +
13975 +pcap.h and/or -lpcap not found; user-level driver can't steal packets.
13976 +
13977 +=========================================" >&2;}
13978 +    fi
13979 +    DRIVERS="$DRIVERS userlevel"
13980 +    cat >>confdefs.h <<\_ACEOF
13981 +@%:@define HAVE_USERLEVEL_DRIVER 1
13982 +_ACEOF
13983 +
13984 +    HAVE_USERLEVEL_DRIVER=1
13985 +fi
13986 +
13987 +
13988 +
13989 +{ echo "$as_me:$LINENO: checking whether struct if_data has ifi_datalen" >&5
13990 +echo $ECHO_N "checking whether struct if_data has ifi_datalen... $ECHO_C" >&6; }
13991 +if test "${ac_cv_if_data_ifi_datalen+set}" = set; then
13992 +  echo $ECHO_N "(cached) $ECHO_C" >&6
13993 +else
13994 +  cat >conftest.$ac_ext <<_ACEOF
13995 +/* confdefs.h.  */
13996 +_ACEOF
13997 +cat confdefs.h >>conftest.$ac_ext
13998 +cat >>conftest.$ac_ext <<_ACEOF
13999 +/* end confdefs.h.  */
14000 +#include <net/if.h>
14001 +#include <net/if_var.h>
14002 +
14003 +int
14004 +main ()
14005 +{
14006 +struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0;
14007 +  ;
14008 +  return 0;
14009 +}
14010 +_ACEOF
14011 +rm -f conftest.$ac_objext
14012 +if { (ac_try="$ac_compile"
14013 +case "(($ac_try" in
14014 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14015 +  *) ac_try_echo=$ac_try;;
14016 +esac
14017 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14018 +  (eval "$ac_compile") 2>conftest.er1
14019 +  ac_status=$?
14020 +  grep -v '^ *+' conftest.er1 >conftest.err
14021 +  rm -f conftest.er1
14022 +  cat conftest.err >&5
14023 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14024 +  (exit $ac_status); } && {
14025 +        test -z "$ac_c_werror_flag" ||
14026 +        test ! -s conftest.err
14027 +       } && test -s conftest.$ac_objext; then
14028 +  ac_cv_if_data_ifi_datalen=yes
14029 +else
14030 +  echo "$as_me: failed program was:" >&5
14031 +sed 's/^/| /' conftest.$ac_ext >&5
14032 +
14033 +       ac_cv_if_data_ifi_datalen=no
14034 +fi
14035 +
14036 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14037 +fi
14038 +{ echo "$as_me:$LINENO: result: $ac_cv_if_data_ifi_datalen" >&5
14039 +echo "${ECHO_T}$ac_cv_if_data_ifi_datalen" >&6; }
14040 +if test "x$ac_cv_if_data_ifi_datalen" = xyes; then
14041 +    
14042 +cat >>confdefs.h <<\_ACEOF
14043 +@%:@define HAVE_IF_DATA_IFI_DATALEN 1
14044 +_ACEOF
14045 +
14046 +fi
14047 +
14048 +{ echo "$as_me:$LINENO: checking whether struct sockaddr_in has sin_len" >&5
14049 +echo $ECHO_N "checking whether struct sockaddr_in has sin_len... $ECHO_C" >&6; }
14050 +if test "${ac_cv_sockaddr_in_sin_len+set}" = set; then
14051 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14052 +else
14053 +  cat >conftest.$ac_ext <<_ACEOF
14054 +/* confdefs.h.  */
14055 +_ACEOF
14056 +cat confdefs.h >>conftest.$ac_ext
14057 +cat >>conftest.$ac_ext <<_ACEOF
14058 +/* end confdefs.h.  */
14059 +#include <sys/socket.h>
14060 +#include <netinet/in.h>
14061 +
14062 +int
14063 +main ()
14064 +{
14065 +struct sockaddr_in sin; sin.sin_len = 0;
14066 +  ;
14067 +  return 0;
14068 +}
14069 +_ACEOF
14070 +rm -f conftest.$ac_objext
14071 +if { (ac_try="$ac_compile"
14072 +case "(($ac_try" in
14073 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14074 +  *) ac_try_echo=$ac_try;;
14075 +esac
14076 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14077 +  (eval "$ac_compile") 2>conftest.er1
14078 +  ac_status=$?
14079 +  grep -v '^ *+' conftest.er1 >conftest.err
14080 +  rm -f conftest.er1
14081 +  cat conftest.err >&5
14082 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14083 +  (exit $ac_status); } && {
14084 +        test -z "$ac_c_werror_flag" ||
14085 +        test ! -s conftest.err
14086 +       } && test -s conftest.$ac_objext; then
14087 +  ac_cv_sockaddr_in_sin_len=yes
14088 +else
14089 +  echo "$as_me: failed program was:" >&5
14090 +sed 's/^/| /' conftest.$ac_ext >&5
14091 +
14092 +       ac_cv_sockaddr_in_sin_len=no
14093 +fi
14094 +
14095 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14096 +fi
14097 +{ echo "$as_me:$LINENO: result: $ac_cv_sockaddr_in_sin_len" >&5
14098 +echo "${ECHO_T}$ac_cv_sockaddr_in_sin_len" >&6; }
14099 +if test "x$ac_cv_sockaddr_in_sin_len" = xyes; then
14100 +    
14101 +cat >>confdefs.h <<\_ACEOF
14102 +@%:@define HAVE_SOCKADDR_IN_SIN_LEN 1
14103 +_ACEOF
14104 +
14105 +fi
14106 +
14107 +
14108 +
14109 +explicit_proper=yes
14110 +
14111 +# Check whether --with-proper was given.
14112 +if test "${with_proper+set}" = set; then
14113 +  withval=$with_proper; properprefix=$withval; if test -z "$withval" -o "$withval" = yes; then properprefix=; fi
14114 +else
14115 +  properprefix=no; explicit_proper=no
14116 +fi
14117 +
14118 +if test "$properprefix" != no; then
14119 +            
14120 +    saveflags="$CPPFLAGS"; test -n "$properprefix" && CPPFLAGS="$CPPFLAGS -I$properprefix/include"
14121 +    if test "${ac_cv_header_prop_h+set}" = set; then
14122 +  { echo "$as_me:$LINENO: checking for prop.h" >&5
14123 +echo $ECHO_N "checking for prop.h... $ECHO_C" >&6; }
14124 +if test "${ac_cv_header_prop_h+set}" = set; then
14125 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14126 +fi
14127 +{ echo "$as_me:$LINENO: result: $ac_cv_header_prop_h" >&5
14128 +echo "${ECHO_T}$ac_cv_header_prop_h" >&6; }
14129 +else
14130 +  # Is the header compilable?
14131 +{ echo "$as_me:$LINENO: checking prop.h usability" >&5
14132 +echo $ECHO_N "checking prop.h usability... $ECHO_C" >&6; }
14133 +cat >conftest.$ac_ext <<_ACEOF
14134 +/* confdefs.h.  */
14135 +_ACEOF
14136 +cat confdefs.h >>conftest.$ac_ext
14137 +cat >>conftest.$ac_ext <<_ACEOF
14138 +/* end confdefs.h.  */
14139 +$ac_includes_default
14140 +@%:@include <prop.h>
14141 +_ACEOF
14142 +rm -f conftest.$ac_objext
14143 +if { (ac_try="$ac_compile"
14144 +case "(($ac_try" in
14145 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14146 +  *) ac_try_echo=$ac_try;;
14147 +esac
14148 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14149 +  (eval "$ac_compile") 2>conftest.er1
14150 +  ac_status=$?
14151 +  grep -v '^ *+' conftest.er1 >conftest.err
14152 +  rm -f conftest.er1
14153 +  cat conftest.err >&5
14154 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14155 +  (exit $ac_status); } && {
14156 +        test -z "$ac_c_werror_flag" ||
14157 +        test ! -s conftest.err
14158 +       } && test -s conftest.$ac_objext; then
14159 +  ac_header_compiler=yes
14160 +else
14161 +  echo "$as_me: failed program was:" >&5
14162 +sed 's/^/| /' conftest.$ac_ext >&5
14163 +
14164 +       ac_header_compiler=no
14165 +fi
14166 +
14167 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14168 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
14169 +echo "${ECHO_T}$ac_header_compiler" >&6; }
14170 +
14171 +# Is the header present?
14172 +{ echo "$as_me:$LINENO: checking prop.h presence" >&5
14173 +echo $ECHO_N "checking prop.h presence... $ECHO_C" >&6; }
14174 +cat >conftest.$ac_ext <<_ACEOF
14175 +/* confdefs.h.  */
14176 +_ACEOF
14177 +cat confdefs.h >>conftest.$ac_ext
14178 +cat >>conftest.$ac_ext <<_ACEOF
14179 +/* end confdefs.h.  */
14180 +@%:@include <prop.h>
14181 +_ACEOF
14182 +if { (ac_try="$ac_cpp conftest.$ac_ext"
14183 +case "(($ac_try" in
14184 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14185 +  *) ac_try_echo=$ac_try;;
14186 +esac
14187 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14188 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
14189 +  ac_status=$?
14190 +  grep -v '^ *+' conftest.er1 >conftest.err
14191 +  rm -f conftest.er1
14192 +  cat conftest.err >&5
14193 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14194 +  (exit $ac_status); } >/dev/null && {
14195 +        test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
14196 +        test ! -s conftest.err
14197 +       }; then
14198 +  ac_header_preproc=yes
14199 +else
14200 +  echo "$as_me: failed program was:" >&5
14201 +sed 's/^/| /' conftest.$ac_ext >&5
14202 +
14203 +  ac_header_preproc=no
14204 +fi
14205 +
14206 +rm -f conftest.err conftest.$ac_ext
14207 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
14208 +echo "${ECHO_T}$ac_header_preproc" >&6; }
14209 +
14210 +# So?  What about this header?
14211 +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
14212 +  yes:no: )
14213 +    { echo "$as_me:$LINENO: WARNING: prop.h: accepted by the compiler, rejected by the preprocessor!" >&5
14214 +echo "$as_me: WARNING: prop.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
14215 +    { echo "$as_me:$LINENO: WARNING: prop.h: proceeding with the compiler's result" >&5
14216 +echo "$as_me: WARNING: prop.h: proceeding with the compiler's result" >&2;}
14217 +    ac_header_preproc=yes
14218 +    ;;
14219 +  no:yes:* )
14220 +    { echo "$as_me:$LINENO: WARNING: prop.h: present but cannot be compiled" >&5
14221 +echo "$as_me: WARNING: prop.h: present but cannot be compiled" >&2;}
14222 +    { echo "$as_me:$LINENO: WARNING: prop.h:     check for missing prerequisite headers?" >&5
14223 +echo "$as_me: WARNING: prop.h:     check for missing prerequisite headers?" >&2;}
14224 +    { echo "$as_me:$LINENO: WARNING: prop.h: see the Autoconf documentation" >&5
14225 +echo "$as_me: WARNING: prop.h: see the Autoconf documentation" >&2;}
14226 +    { echo "$as_me:$LINENO: WARNING: prop.h:     section \"Present But Cannot Be Compiled\"" >&5
14227 +echo "$as_me: WARNING: prop.h:     section \"Present But Cannot Be Compiled\"" >&2;}
14228 +    { echo "$as_me:$LINENO: WARNING: prop.h: proceeding with the preprocessor's result" >&5
14229 +echo "$as_me: WARNING: prop.h: proceeding with the preprocessor's result" >&2;}
14230 +    { echo "$as_me:$LINENO: WARNING: prop.h: in the future, the compiler will take precedence" >&5
14231 +echo "$as_me: WARNING: prop.h: in the future, the compiler will take precedence" >&2;}
14232 +    
14233 +    ;;
14234 +esac
14235 +{ echo "$as_me:$LINENO: checking for prop.h" >&5
14236 +echo $ECHO_N "checking for prop.h... $ECHO_C" >&6; }
14237 +if test "${ac_cv_header_prop_h+set}" = set; then
14238 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14239 +else
14240 +  ac_cv_header_prop_h=$ac_header_preproc
14241 +fi
14242 +{ echo "$as_me:$LINENO: result: $ac_cv_header_prop_h" >&5
14243 +echo "${ECHO_T}$ac_cv_header_prop_h" >&6; }
14244 +
14245 +fi
14246 +if test $ac_cv_header_prop_h = yes; then
14247 +  have_prop_h=yes
14248 +else
14249 +  have_prop_h=no
14250 +fi
14251 +
14252 +
14253 +    CPPFLAGS="$saveflags"
14254 +    
14255 +    ac_ext=c
14256 +ac_cpp='$CPP $CPPFLAGS'
14257 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14258 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14259 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
14260 +
14261 +    saveflags="$LDFLAGS"; test -n "$properprefix" && LDFLAGS="$LDFLAGS -L$properprefix/lib"
14262 +    { echo "$as_me:$LINENO: checking for prop_open in -lproper" >&5
14263 +echo $ECHO_N "checking for prop_open in -lproper... $ECHO_C" >&6; }
14264 +if test "${ac_cv_lib_proper_prop_open+set}" = set; then
14265 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14266 +else
14267 +  ac_check_lib_save_LIBS=$LIBS
14268 +LIBS="-lproper  $LIBS"
14269 +cat >conftest.$ac_ext <<_ACEOF
14270 +/* confdefs.h.  */
14271 +_ACEOF
14272 +cat confdefs.h >>conftest.$ac_ext
14273 +cat >>conftest.$ac_ext <<_ACEOF
14274 +/* end confdefs.h.  */
14275 +
14276 +/* Override any GCC internal prototype to avoid an error.
14277 +   Use char because int might match the return type of a GCC
14278 +   builtin and then its argument prototype would still apply.  */
14279 +#ifdef __cplusplus
14280 +extern "C"
14281 +#endif
14282 +char prop_open ();
14283 +int
14284 +main ()
14285 +{
14286 +return prop_open ();
14287 +  ;
14288 +  return 0;
14289 +}
14290 +_ACEOF
14291 +rm -f conftest.$ac_objext conftest$ac_exeext
14292 +if { (ac_try="$ac_link"
14293 +case "(($ac_try" in
14294 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14295 +  *) ac_try_echo=$ac_try;;
14296 +esac
14297 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14298 +  (eval "$ac_link") 2>conftest.er1
14299 +  ac_status=$?
14300 +  grep -v '^ *+' conftest.er1 >conftest.err
14301 +  rm -f conftest.er1
14302 +  cat conftest.err >&5
14303 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14304 +  (exit $ac_status); } && {
14305 +        test -z "$ac_c_werror_flag" ||
14306 +        test ! -s conftest.err
14307 +       } && test -s conftest$ac_exeext &&
14308 +       $as_test_x conftest$ac_exeext; then
14309 +  ac_cv_lib_proper_prop_open=yes
14310 +else
14311 +  echo "$as_me: failed program was:" >&5
14312 +sed 's/^/| /' conftest.$ac_ext >&5
14313 +
14314 +       ac_cv_lib_proper_prop_open=no
14315 +fi
14316 +
14317 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14318 +      conftest$ac_exeext conftest.$ac_ext
14319 +LIBS=$ac_check_lib_save_LIBS
14320 +fi
14321 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_proper_prop_open" >&5
14322 +echo "${ECHO_T}$ac_cv_lib_proper_prop_open" >&6; }
14323 +if test $ac_cv_lib_proper_prop_open = yes; then
14324 +  have_libproper=yes
14325 +else
14326 +  have_libproper=no
14327 +fi
14328 +
14329 +    LDFLAGS="$saveflags"
14330 +    ac_ext=cpp
14331 +ac_cpp='$CXXCPP $CPPFLAGS'
14332 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14333 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14334 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
14335 +
14336 +
14337 +    if test $have_prop_h = yes -a $have_libproper = yes; then
14338 +       cat >>confdefs.h <<\_ACEOF
14339 +@%:@define HAVE_PROPER 1
14340 +_ACEOF
14341 +
14342 +       test -n "$properprefix" && PROPER_INCLUDES="-I$properprefix/include" && PROPER_LIBS="-L$properprefix/lib"
14343 +       PROPER_LIBS="$PROPER_LIBS -lproper"
14344 +    elif test $explicit_proper = yes; then
14345 +       PROPER_INCLUDES= PROPER_LIBS=
14346 +       { { echo "$as_me:$LINENO: error: 
14347 +=========================================
14348 +
14349 +You explicitly specified --with-proper, but I can't find the proper headers
14350 +and/or libraries where you said they would be.  Run again supplying
14351 +--without-proper or --with-proper=PREFIX.
14352 +
14353 +=========================================" >&5
14354 +echo "$as_me: error: 
14355 +=========================================
14356 +
14357 +You explicitly specified --with-proper, but I can't find the proper headers
14358 +and/or libraries where you said they would be.  Run again supplying
14359 +--without-proper or --with-proper=PREFIX.
14360 +
14361 +=========================================" >&2;}
14362 +   { (exit 1); exit 1; }; }
14363 +    fi
14364 +fi
14365 +
14366 +
14367 +
14368 +
14369 +
14370 +explicit_expat=yes
14371 +
14372 +# Check whether --with-expat was given.
14373 +if test "${with_expat+set}" = set; then
14374 +  withval=$with_expat; expatprefix=$withval; if test -z "$withval" -o "$withval" = yes; then expatprefix=; fi
14375 +else
14376 +  expatprefix=; explicit_expat=no
14377 +fi
14378 +
14379 +
14380 +XML2CLICK=
14381 +if test "$expatprefix" != no; then
14382 +    saveflags="$CPPFLAGS"; test -n "$expatprefix" && CPPFLAGS="$CPPFLAGS -I$expatprefix/include"
14383 +    if test "${ac_cv_header_expat_h+set}" = set; then
14384 +  { echo "$as_me:$LINENO: checking for expat.h" >&5
14385 +echo $ECHO_N "checking for expat.h... $ECHO_C" >&6; }
14386 +if test "${ac_cv_header_expat_h+set}" = set; then
14387 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14388 +fi
14389 +{ echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5
14390 +echo "${ECHO_T}$ac_cv_header_expat_h" >&6; }
14391 +else
14392 +  # Is the header compilable?
14393 +{ echo "$as_me:$LINENO: checking expat.h usability" >&5
14394 +echo $ECHO_N "checking expat.h usability... $ECHO_C" >&6; }
14395 +cat >conftest.$ac_ext <<_ACEOF
14396 +/* confdefs.h.  */
14397 +_ACEOF
14398 +cat confdefs.h >>conftest.$ac_ext
14399 +cat >>conftest.$ac_ext <<_ACEOF
14400 +/* end confdefs.h.  */
14401 +$ac_includes_default
14402 +@%:@include <expat.h>
14403 +_ACEOF
14404 +rm -f conftest.$ac_objext
14405 +if { (ac_try="$ac_compile"
14406 +case "(($ac_try" in
14407 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14408 +  *) ac_try_echo=$ac_try;;
14409 +esac
14410 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14411 +  (eval "$ac_compile") 2>conftest.er1
14412 +  ac_status=$?
14413 +  grep -v '^ *+' conftest.er1 >conftest.err
14414 +  rm -f conftest.er1
14415 +  cat conftest.err >&5
14416 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14417 +  (exit $ac_status); } && {
14418 +        test -z "$ac_cxx_werror_flag" ||
14419 +        test ! -s conftest.err
14420 +       } && test -s conftest.$ac_objext; then
14421 +  ac_header_compiler=yes
14422 +else
14423 +  echo "$as_me: failed program was:" >&5
14424 +sed 's/^/| /' conftest.$ac_ext >&5
14425 +
14426 +       ac_header_compiler=no
14427 +fi
14428 +
14429 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14430 +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
14431 +echo "${ECHO_T}$ac_header_compiler" >&6; }
14432 +
14433 +# Is the header present?
14434 +{ echo "$as_me:$LINENO: checking expat.h presence" >&5
14435 +echo $ECHO_N "checking expat.h presence... $ECHO_C" >&6; }
14436 +cat >conftest.$ac_ext <<_ACEOF
14437 +/* confdefs.h.  */
14438 +_ACEOF
14439 +cat confdefs.h >>conftest.$ac_ext
14440 +cat >>conftest.$ac_ext <<_ACEOF
14441 +/* end confdefs.h.  */
14442 +@%:@include <expat.h>
14443 +_ACEOF
14444 +if { (ac_try="$ac_cpp conftest.$ac_ext"
14445 +case "(($ac_try" in
14446 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14447 +  *) ac_try_echo=$ac_try;;
14448 +esac
14449 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14450 +  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
14451 +  ac_status=$?
14452 +  grep -v '^ *+' conftest.er1 >conftest.err
14453 +  rm -f conftest.er1
14454 +  cat conftest.err >&5
14455 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14456 +  (exit $ac_status); } >/dev/null && {
14457 +        test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
14458 +        test ! -s conftest.err
14459 +       }; then
14460 +  ac_header_preproc=yes
14461 +else
14462 +  echo "$as_me: failed program was:" >&5
14463 +sed 's/^/| /' conftest.$ac_ext >&5
14464 +
14465 +  ac_header_preproc=no
14466 +fi
14467 +
14468 +rm -f conftest.err conftest.$ac_ext
14469 +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
14470 +echo "${ECHO_T}$ac_header_preproc" >&6; }
14471 +
14472 +# So?  What about this header?
14473 +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in
14474 +  yes:no: )
14475 +    { echo "$as_me:$LINENO: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&5
14476 +echo "$as_me: WARNING: expat.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
14477 +    { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the compiler's result" >&5
14478 +echo "$as_me: WARNING: expat.h: proceeding with the compiler's result" >&2;}
14479 +    ac_header_preproc=yes
14480 +    ;;
14481 +  no:yes:* )
14482 +    { echo "$as_me:$LINENO: WARNING: expat.h: present but cannot be compiled" >&5
14483 +echo "$as_me: WARNING: expat.h: present but cannot be compiled" >&2;}
14484 +    { echo "$as_me:$LINENO: WARNING: expat.h:     check for missing prerequisite headers?" >&5
14485 +echo "$as_me: WARNING: expat.h:     check for missing prerequisite headers?" >&2;}
14486 +    { echo "$as_me:$LINENO: WARNING: expat.h: see the Autoconf documentation" >&5
14487 +echo "$as_me: WARNING: expat.h: see the Autoconf documentation" >&2;}
14488 +    { echo "$as_me:$LINENO: WARNING: expat.h:     section \"Present But Cannot Be Compiled\"" >&5
14489 +echo "$as_me: WARNING: expat.h:     section \"Present But Cannot Be Compiled\"" >&2;}
14490 +    { echo "$as_me:$LINENO: WARNING: expat.h: proceeding with the preprocessor's result" >&5
14491 +echo "$as_me: WARNING: expat.h: proceeding with the preprocessor's result" >&2;}
14492 +    { echo "$as_me:$LINENO: WARNING: expat.h: in the future, the compiler will take precedence" >&5
14493 +echo "$as_me: WARNING: expat.h: in the future, the compiler will take precedence" >&2;}
14494 +    
14495 +    ;;
14496 +esac
14497 +{ echo "$as_me:$LINENO: checking for expat.h" >&5
14498 +echo $ECHO_N "checking for expat.h... $ECHO_C" >&6; }
14499 +if test "${ac_cv_header_expat_h+set}" = set; then
14500 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14501 +else
14502 +  ac_cv_header_expat_h=$ac_header_preproc
14503 +fi
14504 +{ echo "$as_me:$LINENO: result: $ac_cv_header_expat_h" >&5
14505 +echo "${ECHO_T}$ac_cv_header_expat_h" >&6; }
14506 +
14507 +fi
14508 +if test $ac_cv_header_expat_h = yes; then
14509 +  have_expat_h=yes
14510 +else
14511 +  have_expat_h=no
14512 +fi
14513 +
14514 +
14515 +    CPPFLAGS="$saveflags"
14516 +    
14517 +    ac_ext=c
14518 +ac_cpp='$CPP $CPPFLAGS'
14519 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14520 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14521 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
14522 +
14523 +    saveflags="$LDFLAGS"; test -n "$expatprefix" && LDFLAGS="$LDFLAGS -L$expatprefix/lib"
14524 +    { echo "$as_me:$LINENO: checking for XML_ParserCreateNS in -lexpat" >&5
14525 +echo $ECHO_N "checking for XML_ParserCreateNS in -lexpat... $ECHO_C" >&6; }
14526 +if test "${ac_cv_lib_expat_XML_ParserCreateNS+set}" = set; then
14527 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14528 +else
14529 +  ac_check_lib_save_LIBS=$LIBS
14530 +LIBS="-lexpat  $LIBS"
14531 +cat >conftest.$ac_ext <<_ACEOF
14532 +/* confdefs.h.  */
14533 +_ACEOF
14534 +cat confdefs.h >>conftest.$ac_ext
14535 +cat >>conftest.$ac_ext <<_ACEOF
14536 +/* end confdefs.h.  */
14537 +
14538 +/* Override any GCC internal prototype to avoid an error.
14539 +   Use char because int might match the return type of a GCC
14540 +   builtin and then its argument prototype would still apply.  */
14541 +#ifdef __cplusplus
14542 +extern "C"
14543 +#endif
14544 +char XML_ParserCreateNS ();
14545 +int
14546 +main ()
14547 +{
14548 +return XML_ParserCreateNS ();
14549 +  ;
14550 +  return 0;
14551 +}
14552 +_ACEOF
14553 +rm -f conftest.$ac_objext conftest$ac_exeext
14554 +if { (ac_try="$ac_link"
14555 +case "(($ac_try" in
14556 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14557 +  *) ac_try_echo=$ac_try;;
14558 +esac
14559 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14560 +  (eval "$ac_link") 2>conftest.er1
14561 +  ac_status=$?
14562 +  grep -v '^ *+' conftest.er1 >conftest.err
14563 +  rm -f conftest.er1
14564 +  cat conftest.err >&5
14565 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14566 +  (exit $ac_status); } && {
14567 +        test -z "$ac_c_werror_flag" ||
14568 +        test ! -s conftest.err
14569 +       } && test -s conftest$ac_exeext &&
14570 +       $as_test_x conftest$ac_exeext; then
14571 +  ac_cv_lib_expat_XML_ParserCreateNS=yes
14572 +else
14573 +  echo "$as_me: failed program was:" >&5
14574 +sed 's/^/| /' conftest.$ac_ext >&5
14575 +
14576 +       ac_cv_lib_expat_XML_ParserCreateNS=no
14577 +fi
14578 +
14579 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14580 +      conftest$ac_exeext conftest.$ac_ext
14581 +LIBS=$ac_check_lib_save_LIBS
14582 +fi
14583 +{ echo "$as_me:$LINENO: result: $ac_cv_lib_expat_XML_ParserCreateNS" >&5
14584 +echo "${ECHO_T}$ac_cv_lib_expat_XML_ParserCreateNS" >&6; }
14585 +if test $ac_cv_lib_expat_XML_ParserCreateNS = yes; then
14586 +  have_libexpat=yes
14587 +else
14588 +  have_libexpat=no
14589 +fi
14590 +
14591 +    LDFLAGS="$saveflags"
14592 +
14593 +    if test $have_expat_h = yes -a $have_libexpat = yes; then
14594 +       cat >>confdefs.h <<\_ACEOF
14595 +@%:@define HAVE_EXPAT 1
14596 +_ACEOF
14597 +
14598 +       XML2CLICK=xml2click
14599 +       test -n "$expatprefix" && EXPAT_INCLUDES="-I$expatprefix/include" && EXPAT_LIBS="-L$expatprefix/lib"
14600 +       EXPAT_LIBS="$EXPAT_LIBS -lexpat"
14601 +    elif test $explicit_expat = yes; then
14602 +       EXPAT_INCLUDES= EXPAT_LIBS=
14603 +       { { echo "$as_me:$LINENO: error: 
14604 +=========================================
14605 +
14606 +You explicitly specified --with-expat, but I can't find the expat headers
14607 +and/or libraries where you said they would be.  Run again supplying
14608 +--without-expat or --with-expat=PREFIX.
14609 +
14610 +=========================================" >&5
14611 +echo "$as_me: error: 
14612 +=========================================
14613 +
14614 +You explicitly specified --with-expat, but I can't find the expat headers
14615 +and/or libraries where you said they would be.  Run again supplying
14616 +--without-expat or --with-expat=PREFIX.
14617 +
14618 +=========================================" >&2;}
14619 +   { (exit 1); exit 1; }; }
14620 +    fi
14621 +fi
14622 +
14623 +
14624 +
14625 +
14626 +
14627 +
14628 +if test $ac_have_linux_kernel = y; then
14629 +
14630 +        if test $LINUXMODULE_2_6 = 1; then
14631 +       { echo "$as_me:$LINENO: checking for Linux 2.6 compilation flags" >&5
14632 +echo $ECHO_N "checking for Linux 2.6 compilation flags... $ECHO_C" >&6; }
14633 +       echo "include $linuxdir/Makefile
14634 +fwablongie:
14635 +       @echo \$(CFLAGS)" >conftest.mk
14636 +       make -C "${linuxdir}" M="`pwd`" -f "`pwd`/conftest.mk" --no-print-directory fwablongie >conftest.dat
14637 +       if test $? != 0; then
14638 +           { echo "$as_me:$LINENO: result: not found" >&5
14639 +echo "${ECHO_T}not found" >&6; }
14640 +           { { echo "$as_me:$LINENO: error: 
14641 +==============================================
14642 +
14643 +Can't find Linux 2.6 compilation flags.
14644 +
14645 +==============================================" >&5
14646 +echo "$as_me: error: 
14647 +==============================================
14648 +
14649 +Can't find Linux 2.6 compilation flags.
14650 +
14651 +==============================================" >&2;}
14652 +   { (exit 1); exit 1; }; }
14653 +       fi
14654 +       LINUX_CFLAGS="`sed -e s,-Iinclude,-I$linuxdir/include,g \
14655 +           -e 's,-W^ *,,g' \
14656 +           -e 's,-Wno-pointer-sign,,g' \
14657 +           -e s,-fno-unit-at-a-time,,g \
14658 +           -e s,-Wstrict-prototypes,,g \
14659 +           -e s,-Wdeclaration-after-statement,,g \
14660 +           -e s,-fno-common,,g <conftest.dat`"
14661 +       { echo "$as_me:$LINENO: result: $LINUX_CFLAGS" >&5
14662 +echo "${ECHO_T}$LINUX_CFLAGS" >&6; }
14663 +    else
14664 +       LINUX_CFLAGS=""
14665 +    fi
14666 +    
14667 +
14668 +
14669 +    SAVE_CXX="$CXX"
14670 +    CXX="$KERNEL_CXX"
14671 +    saveflags="$CPPFLAGS"
14672 +    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS" 
14673 +
14674 +    # CLICK_LINUXMODULE_PROLOGUE()
14675 +    
14676 +
14677 +
14678 +    { echo "$as_me:$LINENO: checking for C++-includable kernel header files" >&5
14679 +echo $ECHO_N "checking for C++-includable kernel header files... $ECHO_C" >&6; }
14680 +if test "${ac_cv_cxx_aware_system+set}" = set; then
14681 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14682 +else
14683 +  ac_ext=cpp
14684 +ac_cpp='$CXXCPP $CPPFLAGS'
14685 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14686 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14687 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
14688 +
14689 +       cat >conftest.$ac_ext <<_ACEOF
14690 +/* confdefs.h.  */
14691 +_ACEOF
14692 +cat confdefs.h >>conftest.$ac_ext
14693 +cat >>conftest.$ac_ext <<_ACEOF
14694 +/* end confdefs.h.  */
14695 +#if HAVE_LINUXMODULE_2_6
14696 +# define KBUILD_STR(s)         #s
14697 +# define KBUILD_BASENAME       KBUILD_STR(click)
14698 +# define KBUILD_MODNAME                KBUILD_STR(click)
14699 +#endif
14700 +#define new xxx_new
14701 +#define this xxx_this
14702 +#define delete xxx_delete
14703 +#define class xxx_class
14704 +#define virtual xxx_virtual
14705 +#define typename xxx_typename
14706 +#define private xxx_private
14707 +#define protected xxx_protected
14708 +#define public xxx_public
14709 +#define namespace xxx_namespace
14710 +#include <linux/autoconf.h>
14711 +#include <linux/signal.h>
14712 +int
14713 +main ()
14714 +{
14715 +return 0
14716 +  ;
14717 +  return 0;
14718 +}
14719 +_ACEOF
14720 +rm -f conftest.$ac_objext
14721 +if { (ac_try="$ac_compile"
14722 +case "(($ac_try" in
14723 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14724 +  *) ac_try_echo=$ac_try;;
14725 +esac
14726 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14727 +  (eval "$ac_compile") 2>conftest.er1
14728 +  ac_status=$?
14729 +  grep -v '^ *+' conftest.er1 >conftest.err
14730 +  rm -f conftest.er1
14731 +  cat conftest.err >&5
14732 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14733 +  (exit $ac_status); } && {
14734 +        test -z "$ac_cxx_werror_flag" ||
14735 +        test ! -s conftest.err
14736 +       } && test -s conftest.$ac_objext; then
14737 +  ac_cv_cxx_aware_system=yes
14738 +else
14739 +  echo "$as_me: failed program was:" >&5
14740 +sed 's/^/| /' conftest.$ac_ext >&5
14741 +
14742 +       ac_cv_cxx_aware_system=no
14743 +fi
14744 +
14745 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14746 +       
14747 +fi
14748 +{ echo "$as_me:$LINENO: result: $ac_cv_cxx_aware_system" >&5
14749 +echo "${ECHO_T}$ac_cv_cxx_aware_system" >&6; }
14750 +
14751 +
14752 +        if test $ac_cv_cxx_aware_system = yes; then
14753 +
14754 +       { echo "$as_me:$LINENO: checking whether -fpermissive is required" >&5
14755 +echo $ECHO_N "checking whether -fpermissive is required... $ECHO_C" >&6; }
14756 +if test "${ac_cv_f_permissive+set}" = set; then
14757 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14758 +else
14759 +  ac_ext=cpp
14760 +ac_cpp='$CXXCPP $CPPFLAGS'
14761 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14762 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14763 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
14764 +
14765 +           cat >conftest.$ac_ext <<_ACEOF
14766 +/* confdefs.h.  */
14767 +_ACEOF
14768 +cat confdefs.h >>conftest.$ac_ext
14769 +cat >>conftest.$ac_ext <<_ACEOF
14770 +/* end confdefs.h.  */
14771 +#if HAVE_LINUXMODULE_2_6
14772 +# define KBUILD_STR(s)         #s
14773 +# define KBUILD_BASENAME       KBUILD_STR(click)
14774 +# define KBUILD_MODNAME                KBUILD_STR(click)
14775 +#endif
14776 +#define new xxx_new
14777 +#define this xxx_this
14778 +#define delete xxx_delete
14779 +#define class xxx_class
14780 +#define virtual xxx_virtual
14781 +#define typename xxx_typename
14782 +#define private xxx_private
14783 +#define protected xxx_protected
14784 +#define public xxx_public
14785 +#define namespace xxx_namespace
14786 +#include <linux/autoconf.h>
14787 +#include <linux/skbuff.h>
14788 +int
14789 +main ()
14790 +{
14791 +
14792 +  ;
14793 +  return 0;
14794 +}
14795 +_ACEOF
14796 +rm -f conftest.$ac_objext conftest$ac_exeext
14797 +if { (ac_try="$ac_link"
14798 +case "(($ac_try" in
14799 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14800 +  *) ac_try_echo=$ac_try;;
14801 +esac
14802 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14803 +  (eval "$ac_link") 2>conftest.er1
14804 +  ac_status=$?
14805 +  grep -v '^ *+' conftest.er1 >conftest.err
14806 +  rm -f conftest.er1
14807 +  cat conftest.err >&5
14808 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14809 +  (exit $ac_status); } && {
14810 +        test -z "$ac_cxx_werror_flag" ||
14811 +        test ! -s conftest.err
14812 +       } && test -s conftest$ac_exeext &&
14813 +       $as_test_x conftest$ac_exeext; then
14814 +  ac_cv_f_permissive=no
14815 +else
14816 +  echo "$as_me: failed program was:" >&5
14817 +sed 's/^/| /' conftest.$ac_ext >&5
14818 +
14819 +       ac_cv_f_permissive=yes
14820 +fi
14821 +
14822 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14823 +      conftest$ac_exeext conftest.$ac_ext
14824 +fi
14825 +{ echo "$as_me:$LINENO: result: $ac_cv_f_permissive" >&5
14826 +echo "${ECHO_T}$ac_cv_f_permissive" >&6; }
14827 +
14828 +       if test $ac_cv_f_permissive = yes; then
14829 +           CXX="$KERNEL_CXX -fpermissive"
14830 +           { echo "$as_me:$LINENO: checking whether -fpermissive is allowed" >&5
14831 +echo $ECHO_N "checking whether -fpermissive is allowed... $ECHO_C" >&6; }
14832 +if test "${ac_cv_f_permissive_ok+set}" = set; then
14833 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14834 +else
14835 +  ac_ext=cpp
14836 +ac_cpp='$CXXCPP $CPPFLAGS'
14837 +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
14838 +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
14839 +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
14840 +
14841 +               cat >conftest.$ac_ext <<_ACEOF
14842 +/* confdefs.h.  */
14843 +_ACEOF
14844 +cat confdefs.h >>conftest.$ac_ext
14845 +cat >>conftest.$ac_ext <<_ACEOF
14846 +/* end confdefs.h.  */
14847 +#if HAVE_LINUXMODULE_2_6
14848 +# define KBUILD_STR(s)         #s
14849 +# define KBUILD_BASENAME       KBUILD_STR(click)
14850 +# define KBUILD_MODNAME                KBUILD_STR(click)
14851 +#endif
14852 +#define new xxx_new
14853 +#define this xxx_this
14854 +#define delete xxx_delete
14855 +#define class xxx_class
14856 +#define virtual xxx_virtual
14857 +#define typename xxx_typename
14858 +#define private xxx_private
14859 +#define protected xxx_protected
14860 +#define public xxx_public
14861 +#define namespace xxx_namespace
14862 +#include <linux/autoconf.h>
14863 +#include <linux/skbuff.h>
14864 +int
14865 +main ()
14866 +{
14867 +
14868 +  ;
14869 +  return 0;
14870 +}
14871 +_ACEOF
14872 +rm -f conftest.$ac_objext conftest$ac_exeext
14873 +if { (ac_try="$ac_link"
14874 +case "(($ac_try" in
14875 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14876 +  *) ac_try_echo=$ac_try;;
14877 +esac
14878 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14879 +  (eval "$ac_link") 2>conftest.er1
14880 +  ac_status=$?
14881 +  grep -v '^ *+' conftest.er1 >conftest.err
14882 +  rm -f conftest.er1
14883 +  cat conftest.err >&5
14884 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14885 +  (exit $ac_status); } && {
14886 +        test -z "$ac_cxx_werror_flag" ||
14887 +        test ! -s conftest.err
14888 +       } && test -s conftest$ac_exeext &&
14889 +       $as_test_x conftest$ac_exeext; then
14890 +  ac_cv_f_permissive_ok=yes
14891 +else
14892 +  echo "$as_me: failed program was:" >&5
14893 +sed 's/^/| /' conftest.$ac_ext >&5
14894 +
14895 +       ac_cv_f_permissive_ok=no
14896 +fi
14897 +
14898 +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
14899 +      conftest$ac_exeext conftest.$ac_ext
14900 +fi
14901 +{ echo "$as_me:$LINENO: result: $ac_cv_f_permissive_ok" >&5
14902 +echo "${ECHO_T}$ac_cv_f_permissive_ok" >&6; }
14903 +
14904 +           if test $ac_cv_f_permissive_ok = no; then
14905 +               ac_cv_cxx_aware_system=no
14906 +           else
14907 +               KERNEL_CXX="$KERNEL_CXX -fpermissive"
14908 +           fi
14909 +       fi
14910 +    fi
14911 +
14912 +
14913 +    { echo "$as_me:$LINENO: checking whether long and int64_t are the same type in the Linux kernel" >&5
14914 +echo $ECHO_N "checking whether long and int64_t are the same type in the Linux kernel... $ECHO_C" >&6; }
14915 +if test "${ac_cv_long_64_linuxmodule+set}" = set; then
14916 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14917 +else
14918 +  cat >conftest.$ac_ext <<_ACEOF
14919 +/* confdefs.h.  */
14920 +_ACEOF
14921 +cat confdefs.h >>conftest.$ac_ext
14922 +cat >>conftest.$ac_ext <<_ACEOF
14923 +/* end confdefs.h.  */
14924 +#if HAVE_LINUXMODULE_2_6
14925 +# define KBUILD_STR(s)         #s
14926 +# define KBUILD_BASENAME       KBUILD_STR(click)
14927 +# define KBUILD_MODNAME                KBUILD_STR(click)
14928 +#endif
14929 +#define new xxx_new
14930 +#define this xxx_this
14931 +#define delete xxx_delete
14932 +#define class xxx_class
14933 +#define virtual xxx_virtual
14934 +#define typename xxx_typename
14935 +#define private xxx_private
14936 +#define protected xxx_protected
14937 +#define public xxx_public
14938 +#define namespace xxx_namespace
14939 +#include <linux/autoconf.h>
14940 +#include <linux/types.h>
14941 +void f1(long) {
14942 +}
14943 +void f1(int64_t) { // will fail if long and int64_t are the same type
14944 +}
14945 +int
14946 +main ()
14947 +{
14948 +
14949 +  ;
14950 +  return 0;
14951 +}
14952 +_ACEOF
14953 +rm -f conftest.$ac_objext
14954 +if { (ac_try="$ac_compile"
14955 +case "(($ac_try" in
14956 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
14957 +  *) ac_try_echo=$ac_try;;
14958 +esac
14959 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
14960 +  (eval "$ac_compile") 2>conftest.er1
14961 +  ac_status=$?
14962 +  grep -v '^ *+' conftest.er1 >conftest.err
14963 +  rm -f conftest.er1
14964 +  cat conftest.err >&5
14965 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
14966 +  (exit $ac_status); } && {
14967 +        test -z "$ac_cxx_werror_flag" ||
14968 +        test ! -s conftest.err
14969 +       } && test -s conftest.$ac_objext; then
14970 +  ac_cv_long_64_linuxmodule=no
14971 +else
14972 +  echo "$as_me: failed program was:" >&5
14973 +sed 's/^/| /' conftest.$ac_ext >&5
14974 +
14975 +       ac_cv_long_64_linuxmodule=yes
14976 +fi
14977 +
14978 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
14979 +fi
14980 +{ echo "$as_me:$LINENO: result: $ac_cv_long_64_linuxmodule" >&5
14981 +echo "${ECHO_T}$ac_cv_long_64_linuxmodule" >&6; }
14982 +    if test $ac_cv_long_64_linuxmodule = yes; then
14983 +       
14984 +cat >>confdefs.h <<\_ACEOF
14985 +@%:@define HAVE_INT64_IS_LONG_LINUXMODULE 1
14986 +_ACEOF
14987 +
14988 +    fi
14989 +
14990 +
14991 +    { echo "$as_me:$LINENO: checking whether long long and int64_t are the same type in the Linux kernel" >&5
14992 +echo $ECHO_N "checking whether long long and int64_t are the same type in the Linux kernel... $ECHO_C" >&6; }
14993 +if test "${ac_cv_long_long_64_linuxmodule+set}" = set; then
14994 +  echo $ECHO_N "(cached) $ECHO_C" >&6
14995 +else
14996 +  cat >conftest.$ac_ext <<_ACEOF
14997 +/* confdefs.h.  */
14998 +_ACEOF
14999 +cat confdefs.h >>conftest.$ac_ext
15000 +cat >>conftest.$ac_ext <<_ACEOF
15001 +/* end confdefs.h.  */
15002 +#if HAVE_LINUXMODULE_2_6
15003 +# define KBUILD_STR(s)         #s
15004 +# define KBUILD_BASENAME       KBUILD_STR(click)
15005 +# define KBUILD_MODNAME                KBUILD_STR(click)
15006 +#endif
15007 +#define new xxx_new
15008 +#define this xxx_this
15009 +#define delete xxx_delete
15010 +#define class xxx_class
15011 +#define virtual xxx_virtual
15012 +#define typename xxx_typename
15013 +#define private xxx_private
15014 +#define protected xxx_protected
15015 +#define public xxx_public
15016 +#define namespace xxx_namespace
15017 +#include <linux/autoconf.h>
15018 +#include <linux/types.h>
15019 +void f1(long long) {
15020 +}
15021 +void f1(int64_t) { // will fail if long long and int64_t are the same type
15022 +}
15023 +int
15024 +main ()
15025 +{
15026 +
15027 +  ;
15028 +  return 0;
15029 +}
15030 +_ACEOF
15031 +rm -f conftest.$ac_objext
15032 +if { (ac_try="$ac_compile"
15033 +case "(($ac_try" in
15034 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15035 +  *) ac_try_echo=$ac_try;;
15036 +esac
15037 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15038 +  (eval "$ac_compile") 2>conftest.er1
15039 +  ac_status=$?
15040 +  grep -v '^ *+' conftest.er1 >conftest.err
15041 +  rm -f conftest.er1
15042 +  cat conftest.err >&5
15043 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15044 +  (exit $ac_status); } && {
15045 +        test -z "$ac_cxx_werror_flag" ||
15046 +        test ! -s conftest.err
15047 +       } && test -s conftest.$ac_objext; then
15048 +  ac_cv_long_long_64_linuxmodule=no
15049 +else
15050 +  echo "$as_me: failed program was:" >&5
15051 +sed 's/^/| /' conftest.$ac_ext >&5
15052 +
15053 +       ac_cv_long_long_64_linuxmodule=yes
15054 +fi
15055 +
15056 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15057 +fi
15058 +{ echo "$as_me:$LINENO: result: $ac_cv_long_long_64_linuxmodule" >&5
15059 +echo "${ECHO_T}$ac_cv_long_long_64_linuxmodule" >&6; }
15060 +    if test $ac_cv_long_long_64_linuxmodule = yes; then
15061 +       
15062 +cat >>confdefs.h <<\_ACEOF
15063 +@%:@define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
15064 +_ACEOF
15065 +
15066 +    fi
15067 +
15068 +
15069 +    { echo "$as_me:$LINENO: checking whether struct sk_buff has a security member" >&5
15070 +echo $ECHO_N "checking whether struct sk_buff has a security member... $ECHO_C" >&6; }
15071 +if test "${ac_cv_linuxmodule_skbuff_security+set}" = set; then
15072 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15073 +else
15074 +  ac_ext=c
15075 +ac_cpp='$CPP $CPPFLAGS'
15076 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15077 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15078 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15079 +
15080 +       cat >conftest.$ac_ext <<_ACEOF
15081 +/* confdefs.h.  */
15082 +_ACEOF
15083 +cat confdefs.h >>conftest.$ac_ext
15084 +cat >>conftest.$ac_ext <<_ACEOF
15085 +/* end confdefs.h.  */
15086 +#if HAVE_LINUXMODULE_2_6
15087 +# define KBUILD_STR(s)         #s
15088 +# define KBUILD_BASENAME       KBUILD_STR(click)
15089 +# define KBUILD_MODNAME                KBUILD_STR(click)
15090 +#endif
15091 +#define new xxx_new
15092 +#define this xxx_this
15093 +#define delete xxx_delete
15094 +#define class xxx_class
15095 +#define virtual xxx_virtual
15096 +#define typename xxx_typename
15097 +#define private xxx_private
15098 +#define protected xxx_protected
15099 +#define public xxx_public
15100 +#define namespace xxx_namespace
15101 +#include <linux/autoconf.h>
15102 +#include <linux/skbuff.h>
15103 +int
15104 +main ()
15105 +{
15106 +extern struct sk_buff *s; s->security = 0;
15107 +  ;
15108 +  return 0;
15109 +}
15110 +_ACEOF
15111 +rm -f conftest.$ac_objext
15112 +if { (ac_try="$ac_compile"
15113 +case "(($ac_try" in
15114 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15115 +  *) ac_try_echo=$ac_try;;
15116 +esac
15117 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15118 +  (eval "$ac_compile") 2>conftest.er1
15119 +  ac_status=$?
15120 +  grep -v '^ *+' conftest.er1 >conftest.err
15121 +  rm -f conftest.er1
15122 +  cat conftest.err >&5
15123 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15124 +  (exit $ac_status); } && {
15125 +        test -z "$ac_c_werror_flag" ||
15126 +        test ! -s conftest.err
15127 +       } && test -s conftest.$ac_objext; then
15128 +  ac_cv_linuxmodule_skbuff_security=yes
15129 +else
15130 +  echo "$as_me: failed program was:" >&5
15131 +sed 's/^/| /' conftest.$ac_ext >&5
15132 +
15133 +       ac_cv_linuxmodule_skbuff_security=no
15134 +fi
15135 +
15136 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15137 +fi
15138 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skbuff_security" >&5
15139 +echo "${ECHO_T}$ac_cv_linuxmodule_skbuff_security" >&6; }
15140 +    if test $ac_cv_linuxmodule_skbuff_security = yes; then
15141 +       
15142 +cat >>confdefs.h <<\_ACEOF
15143 +@%:@define HAVE_LINUX_SKBUFF_SECURITY 1
15144 +_ACEOF
15145 +
15146 +    fi
15147 +
15148 +    { echo "$as_me:$LINENO: checking whether struct sk_buff has an fclone member" >&5
15149 +echo $ECHO_N "checking whether struct sk_buff has an fclone member... $ECHO_C" >&6; }
15150 +if test "${ac_cv_linuxmodule_skbuff_fclone+set}" = set; then
15151 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15152 +else
15153 +  ac_ext=c
15154 +ac_cpp='$CPP $CPPFLAGS'
15155 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15156 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15157 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15158 +
15159 +       cat >conftest.$ac_ext <<_ACEOF
15160 +/* confdefs.h.  */
15161 +_ACEOF
15162 +cat confdefs.h >>conftest.$ac_ext
15163 +cat >>conftest.$ac_ext <<_ACEOF
15164 +/* end confdefs.h.  */
15165 +#if HAVE_LINUXMODULE_2_6
15166 +# define KBUILD_STR(s)         #s
15167 +# define KBUILD_BASENAME       KBUILD_STR(click)
15168 +# define KBUILD_MODNAME                KBUILD_STR(click)
15169 +#endif
15170 +#define new xxx_new
15171 +#define this xxx_this
15172 +#define delete xxx_delete
15173 +#define class xxx_class
15174 +#define virtual xxx_virtual
15175 +#define typename xxx_typename
15176 +#define private xxx_private
15177 +#define protected xxx_protected
15178 +#define public xxx_public
15179 +#define namespace xxx_namespace
15180 +#include <linux/autoconf.h>
15181 +#include <linux/skbuff.h>
15182 +int
15183 +main ()
15184 +{
15185 +extern struct sk_buff *s; s->fclone = 0;
15186 +  ;
15187 +  return 0;
15188 +}
15189 +_ACEOF
15190 +rm -f conftest.$ac_objext
15191 +if { (ac_try="$ac_compile"
15192 +case "(($ac_try" in
15193 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15194 +  *) ac_try_echo=$ac_try;;
15195 +esac
15196 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15197 +  (eval "$ac_compile") 2>conftest.er1
15198 +  ac_status=$?
15199 +  grep -v '^ *+' conftest.er1 >conftest.err
15200 +  rm -f conftest.er1
15201 +  cat conftest.err >&5
15202 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15203 +  (exit $ac_status); } && {
15204 +        test -z "$ac_c_werror_flag" ||
15205 +        test ! -s conftest.err
15206 +       } && test -s conftest.$ac_objext; then
15207 +  ac_cv_linuxmodule_skbuff_fclone=yes
15208 +else
15209 +  echo "$as_me: failed program was:" >&5
15210 +sed 's/^/| /' conftest.$ac_ext >&5
15211 +
15212 +       ac_cv_linuxmodule_skbuff_fclone=no
15213 +fi
15214 +
15215 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15216 +fi
15217 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skbuff_fclone" >&5
15218 +echo "${ECHO_T}$ac_cv_linuxmodule_skbuff_fclone" >&6; }
15219 +    if test $ac_cv_linuxmodule_skbuff_fclone = yes; then
15220 +       
15221 +cat >>confdefs.h <<\_ACEOF
15222 +@%:@define HAVE_LINUX_SKBUFF_FCLONE 1
15223 +_ACEOF
15224 +
15225 +    fi
15226 +
15227 +    { echo "$as_me:$LINENO: checking whether skb_shinfo has a tso_size member" >&5
15228 +echo $ECHO_N "checking whether skb_shinfo has a tso_size member... $ECHO_C" >&6; }
15229 +if test "${ac_cv_linuxmodule_skb_shinfo_tso_size+set}" = set; then
15230 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15231 +else
15232 +  ac_ext=c
15233 +ac_cpp='$CPP $CPPFLAGS'
15234 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15235 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15236 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15237 +
15238 +       cat >conftest.$ac_ext <<_ACEOF
15239 +/* confdefs.h.  */
15240 +_ACEOF
15241 +cat confdefs.h >>conftest.$ac_ext
15242 +cat >>conftest.$ac_ext <<_ACEOF
15243 +/* end confdefs.h.  */
15244 +#if HAVE_LINUXMODULE_2_6
15245 +# define KBUILD_STR(s)         #s
15246 +# define KBUILD_BASENAME       KBUILD_STR(click)
15247 +# define KBUILD_MODNAME                KBUILD_STR(click)
15248 +#endif
15249 +#define new xxx_new
15250 +#define this xxx_this
15251 +#define delete xxx_delete
15252 +#define class xxx_class
15253 +#define virtual xxx_virtual
15254 +#define typename xxx_typename
15255 +#define private xxx_private
15256 +#define protected xxx_protected
15257 +#define public xxx_public
15258 +#define namespace xxx_namespace
15259 +#include <linux/autoconf.h>
15260 +#include <linux/skbuff.h>
15261 +int
15262 +main ()
15263 +{
15264 +extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0;
15265 +  ;
15266 +  return 0;
15267 +}
15268 +_ACEOF
15269 +rm -f conftest.$ac_objext
15270 +if { (ac_try="$ac_compile"
15271 +case "(($ac_try" in
15272 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15273 +  *) ac_try_echo=$ac_try;;
15274 +esac
15275 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15276 +  (eval "$ac_compile") 2>conftest.er1
15277 +  ac_status=$?
15278 +  grep -v '^ *+' conftest.er1 >conftest.err
15279 +  rm -f conftest.er1
15280 +  cat conftest.err >&5
15281 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15282 +  (exit $ac_status); } && {
15283 +        test -z "$ac_c_werror_flag" ||
15284 +        test ! -s conftest.err
15285 +       } && test -s conftest.$ac_objext; then
15286 +  ac_cv_linuxmodule_skb_shinfo_tso_size=yes
15287 +else
15288 +  echo "$as_me: failed program was:" >&5
15289 +sed 's/^/| /' conftest.$ac_ext >&5
15290 +
15291 +       ac_cv_linuxmodule_skb_shinfo_tso_size=no
15292 +fi
15293 +
15294 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15295 +fi
15296 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_tso_size" >&5
15297 +echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_tso_size" >&6; }
15298 +    if test $ac_cv_linuxmodule_skb_shinfo_tso_size = yes; then
15299 +       
15300 +cat >>confdefs.h <<\_ACEOF
15301 +@%:@define HAVE_LINUX_SKB_SHINFO_TSO_SIZE 1
15302 +_ACEOF
15303 +
15304 +    fi
15305 +
15306 +    { echo "$as_me:$LINENO: checking whether skb_shinfo has a gso_size member" >&5
15307 +echo $ECHO_N "checking whether skb_shinfo has a gso_size member... $ECHO_C" >&6; }
15308 +if test "${ac_cv_linuxmodule_skb_shinfo_gso_size+set}" = set; then
15309 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15310 +else
15311 +  ac_ext=c
15312 +ac_cpp='$CPP $CPPFLAGS'
15313 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15314 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15315 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15316 +
15317 +       cat >conftest.$ac_ext <<_ACEOF
15318 +/* confdefs.h.  */
15319 +_ACEOF
15320 +cat confdefs.h >>conftest.$ac_ext
15321 +cat >>conftest.$ac_ext <<_ACEOF
15322 +/* end confdefs.h.  */
15323 +#if HAVE_LINUXMODULE_2_6
15324 +# define KBUILD_STR(s)         #s
15325 +# define KBUILD_BASENAME       KBUILD_STR(click)
15326 +# define KBUILD_MODNAME                KBUILD_STR(click)
15327 +#endif
15328 +#define new xxx_new
15329 +#define this xxx_this
15330 +#define delete xxx_delete
15331 +#define class xxx_class
15332 +#define virtual xxx_virtual
15333 +#define typename xxx_typename
15334 +#define private xxx_private
15335 +#define protected xxx_protected
15336 +#define public xxx_public
15337 +#define namespace xxx_namespace
15338 +#include <linux/autoconf.h>
15339 +#include <linux/skbuff.h>
15340 +int
15341 +main ()
15342 +{
15343 +extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0;
15344 +  ;
15345 +  return 0;
15346 +}
15347 +_ACEOF
15348 +rm -f conftest.$ac_objext
15349 +if { (ac_try="$ac_compile"
15350 +case "(($ac_try" in
15351 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15352 +  *) ac_try_echo=$ac_try;;
15353 +esac
15354 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15355 +  (eval "$ac_compile") 2>conftest.er1
15356 +  ac_status=$?
15357 +  grep -v '^ *+' conftest.er1 >conftest.err
15358 +  rm -f conftest.er1
15359 +  cat conftest.err >&5
15360 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15361 +  (exit $ac_status); } && {
15362 +        test -z "$ac_c_werror_flag" ||
15363 +        test ! -s conftest.err
15364 +       } && test -s conftest.$ac_objext; then
15365 +  ac_cv_linuxmodule_skb_shinfo_gso_size=yes
15366 +else
15367 +  echo "$as_me: failed program was:" >&5
15368 +sed 's/^/| /' conftest.$ac_ext >&5
15369 +
15370 +       ac_cv_linuxmodule_skb_shinfo_gso_size=no
15371 +fi
15372 +
15373 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15374 +fi
15375 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_gso_size" >&5
15376 +echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_gso_size" >&6; }
15377 +    if test $ac_cv_linuxmodule_skb_shinfo_gso_size = yes; then
15378 +       
15379 +cat >>confdefs.h <<\_ACEOF
15380 +@%:@define HAVE_LINUX_SKB_SHINFO_GSO_SIZE 1
15381 +_ACEOF
15382 +
15383 +    fi
15384 +
15385 +    { echo "$as_me:$LINENO: checking whether skb_shinfo has a ufo_size member" >&5
15386 +echo $ECHO_N "checking whether skb_shinfo has a ufo_size member... $ECHO_C" >&6; }
15387 +if test "${ac_cv_linuxmodule_skb_shinfo_ufo_size+set}" = set; then
15388 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15389 +else
15390 +  ac_ext=c
15391 +ac_cpp='$CPP $CPPFLAGS'
15392 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15393 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15394 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15395 +
15396 +       cat >conftest.$ac_ext <<_ACEOF
15397 +/* confdefs.h.  */
15398 +_ACEOF
15399 +cat confdefs.h >>conftest.$ac_ext
15400 +cat >>conftest.$ac_ext <<_ACEOF
15401 +/* end confdefs.h.  */
15402 +#if HAVE_LINUXMODULE_2_6
15403 +# define KBUILD_STR(s)         #s
15404 +# define KBUILD_BASENAME       KBUILD_STR(click)
15405 +# define KBUILD_MODNAME                KBUILD_STR(click)
15406 +#endif
15407 +#define new xxx_new
15408 +#define this xxx_this
15409 +#define delete xxx_delete
15410 +#define class xxx_class
15411 +#define virtual xxx_virtual
15412 +#define typename xxx_typename
15413 +#define private xxx_private
15414 +#define protected xxx_protected
15415 +#define public xxx_public
15416 +#define namespace xxx_namespace
15417 +#include <linux/autoconf.h>
15418 +#include <linux/skbuff.h>
15419 +int
15420 +main ()
15421 +{
15422 +extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0;
15423 +  ;
15424 +  return 0;
15425 +}
15426 +_ACEOF
15427 +rm -f conftest.$ac_objext
15428 +if { (ac_try="$ac_compile"
15429 +case "(($ac_try" in
15430 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15431 +  *) ac_try_echo=$ac_try;;
15432 +esac
15433 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15434 +  (eval "$ac_compile") 2>conftest.er1
15435 +  ac_status=$?
15436 +  grep -v '^ *+' conftest.er1 >conftest.err
15437 +  rm -f conftest.er1
15438 +  cat conftest.err >&5
15439 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15440 +  (exit $ac_status); } && {
15441 +        test -z "$ac_c_werror_flag" ||
15442 +        test ! -s conftest.err
15443 +       } && test -s conftest.$ac_objext; then
15444 +  ac_cv_linuxmodule_skb_shinfo_ufo_size=yes
15445 +else
15446 +  echo "$as_me: failed program was:" >&5
15447 +sed 's/^/| /' conftest.$ac_ext >&5
15448 +
15449 +       ac_cv_linuxmodule_skb_shinfo_ufo_size=no
15450 +fi
15451 +
15452 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15453 +fi
15454 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_ufo_size" >&5
15455 +echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_ufo_size" >&6; }
15456 +    if test $ac_cv_linuxmodule_skb_shinfo_ufo_size = yes; then
15457 +       
15458 +cat >>confdefs.h <<\_ACEOF
15459 +@%:@define HAVE_LINUX_SKB_SHINFO_UFO_SIZE 1
15460 +_ACEOF
15461 +
15462 +    fi
15463 +
15464 +    { echo "$as_me:$LINENO: checking whether skb_shinfo has an ip6_frag_id member" >&5
15465 +echo $ECHO_N "checking whether skb_shinfo has an ip6_frag_id member... $ECHO_C" >&6; }
15466 +if test "${ac_cv_linuxmodule_skb_shinfo_ip6_frag_id+set}" = set; then
15467 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15468 +else
15469 +  ac_ext=c
15470 +ac_cpp='$CPP $CPPFLAGS'
15471 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15472 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15473 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15474 +
15475 +       cat >conftest.$ac_ext <<_ACEOF
15476 +/* confdefs.h.  */
15477 +_ACEOF
15478 +cat confdefs.h >>conftest.$ac_ext
15479 +cat >>conftest.$ac_ext <<_ACEOF
15480 +/* end confdefs.h.  */
15481 +#if HAVE_LINUXMODULE_2_6
15482 +# define KBUILD_STR(s)         #s
15483 +# define KBUILD_BASENAME       KBUILD_STR(click)
15484 +# define KBUILD_MODNAME                KBUILD_STR(click)
15485 +#endif
15486 +#define new xxx_new
15487 +#define this xxx_this
15488 +#define delete xxx_delete
15489 +#define class xxx_class
15490 +#define virtual xxx_virtual
15491 +#define typename xxx_typename
15492 +#define private xxx_private
15493 +#define protected xxx_protected
15494 +#define public xxx_public
15495 +#define namespace xxx_namespace
15496 +#include <linux/autoconf.h>
15497 +#include <linux/skbuff.h>
15498 +int
15499 +main ()
15500 +{
15501 +extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0;
15502 +  ;
15503 +  return 0;
15504 +}
15505 +_ACEOF
15506 +rm -f conftest.$ac_objext
15507 +if { (ac_try="$ac_compile"
15508 +case "(($ac_try" in
15509 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15510 +  *) ac_try_echo=$ac_try;;
15511 +esac
15512 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15513 +  (eval "$ac_compile") 2>conftest.er1
15514 +  ac_status=$?
15515 +  grep -v '^ *+' conftest.er1 >conftest.err
15516 +  rm -f conftest.er1
15517 +  cat conftest.err >&5
15518 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15519 +  (exit $ac_status); } && {
15520 +        test -z "$ac_c_werror_flag" ||
15521 +        test ! -s conftest.err
15522 +       } && test -s conftest.$ac_objext; then
15523 +  ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=yes
15524 +else
15525 +  echo "$as_me: failed program was:" >&5
15526 +sed 's/^/| /' conftest.$ac_ext >&5
15527 +
15528 +       ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no
15529 +fi
15530 +
15531 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15532 +fi
15533 +{ echo "$as_me:$LINENO: result: $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id" >&5
15534 +echo "${ECHO_T}$ac_cv_linuxmodule_skb_shinfo_ip6_frag_id" >&6; }
15535 +    if test $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id = yes; then
15536 +       
15537 +cat >>confdefs.h <<\_ACEOF
15538 +@%:@define HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID 1
15539 +_ACEOF
15540 +
15541 +    fi
15542 +
15543 +    ac_ext=c
15544 +ac_cpp='$CPP $CPPFLAGS'
15545 +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
15546 +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
15547 +ac_compiler_gnu=$ac_cv_c_compiler_gnu
15548 +
15549 +    { echo "$as_me:$LINENO: checking whether net_enable_timestamp is declared" >&5
15550 +echo $ECHO_N "checking whether net_enable_timestamp is declared... $ECHO_C" >&6; }
15551 +if test "${ac_cv_have_decl_net_enable_timestamp+set}" = set; then
15552 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15553 +else
15554 +  cat >conftest.$ac_ext <<_ACEOF
15555 +/* confdefs.h.  */
15556 +_ACEOF
15557 +cat confdefs.h >>conftest.$ac_ext
15558 +cat >>conftest.$ac_ext <<_ACEOF
15559 +/* end confdefs.h.  */
15560 +#if HAVE_LINUXMODULE_2_6
15561 +# define KBUILD_STR(s)         #s
15562 +# define KBUILD_BASENAME       KBUILD_STR(click)
15563 +# define KBUILD_MODNAME                KBUILD_STR(click)
15564 +#endif
15565 +#define new xxx_new
15566 +#define this xxx_this
15567 +#define delete xxx_delete
15568 +#define class xxx_class
15569 +#define virtual xxx_virtual
15570 +#define typename xxx_typename
15571 +#define private xxx_private
15572 +#define protected xxx_protected
15573 +#define public xxx_public
15574 +#define namespace xxx_namespace
15575 +#include <linux/autoconf.h>
15576 +#include <linux/skbuff.h>
15577 +#include <linux/netdevice.h>
15578 +
15579 +int
15580 +main ()
15581 +{
15582 +#ifndef net_enable_timestamp
15583 +  (void) net_enable_timestamp;
15584 +#endif
15585 +
15586 +  ;
15587 +  return 0;
15588 +}
15589 +_ACEOF
15590 +rm -f conftest.$ac_objext
15591 +if { (ac_try="$ac_compile"
15592 +case "(($ac_try" in
15593 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15594 +  *) ac_try_echo=$ac_try;;
15595 +esac
15596 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15597 +  (eval "$ac_compile") 2>conftest.er1
15598 +  ac_status=$?
15599 +  grep -v '^ *+' conftest.er1 >conftest.err
15600 +  rm -f conftest.er1
15601 +  cat conftest.err >&5
15602 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15603 +  (exit $ac_status); } && {
15604 +        test -z "$ac_c_werror_flag" ||
15605 +        test ! -s conftest.err
15606 +       } && test -s conftest.$ac_objext; then
15607 +  ac_cv_have_decl_net_enable_timestamp=yes
15608 +else
15609 +  echo "$as_me: failed program was:" >&5
15610 +sed 's/^/| /' conftest.$ac_ext >&5
15611 +
15612 +       ac_cv_have_decl_net_enable_timestamp=no
15613 +fi
15614 +
15615 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15616 +fi
15617 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_net_enable_timestamp" >&5
15618 +echo "${ECHO_T}$ac_cv_have_decl_net_enable_timestamp" >&6; }
15619 +if test $ac_cv_have_decl_net_enable_timestamp = yes; then
15620 +  ac_cv_net_enable_timestamp=yes
15621 +else
15622 +  ac_cv_net_enable_timestamp=no
15623 +fi
15624 +
15625 +    if test $ac_cv_net_enable_timestamp = yes; then
15626 +       
15627 +cat >>confdefs.h <<\_ACEOF
15628 +@%:@define HAVE_NET_ENABLE_TIMESTAMP 1
15629 +_ACEOF
15630 +
15631 +    fi
15632 +
15633 +    { echo "$as_me:$LINENO: checking whether netif_tx_lock is declared" >&5
15634 +echo $ECHO_N "checking whether netif_tx_lock is declared... $ECHO_C" >&6; }
15635 +if test "${ac_cv_have_decl_netif_tx_lock+set}" = set; then
15636 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15637 +else
15638 +  cat >conftest.$ac_ext <<_ACEOF
15639 +/* confdefs.h.  */
15640 +_ACEOF
15641 +cat confdefs.h >>conftest.$ac_ext
15642 +cat >>conftest.$ac_ext <<_ACEOF
15643 +/* end confdefs.h.  */
15644 +#if HAVE_LINUXMODULE_2_6
15645 +# define KBUILD_STR(s)         #s
15646 +# define KBUILD_BASENAME       KBUILD_STR(click)
15647 +# define KBUILD_MODNAME                KBUILD_STR(click)
15648 +#endif
15649 +#define new xxx_new
15650 +#define this xxx_this
15651 +#define delete xxx_delete
15652 +#define class xxx_class
15653 +#define virtual xxx_virtual
15654 +#define typename xxx_typename
15655 +#define private xxx_private
15656 +#define protected xxx_protected
15657 +#define public xxx_public
15658 +#define namespace xxx_namespace
15659 +#include <linux/autoconf.h>
15660 +#include <linux/skbuff.h>
15661 +#include <linux/netdevice.h>
15662 +
15663 +int
15664 +main ()
15665 +{
15666 +#ifndef netif_tx_lock
15667 +  (void) netif_tx_lock;
15668 +#endif
15669 +
15670 +  ;
15671 +  return 0;
15672 +}
15673 +_ACEOF
15674 +rm -f conftest.$ac_objext
15675 +if { (ac_try="$ac_compile"
15676 +case "(($ac_try" in
15677 +  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
15678 +  *) ac_try_echo=$ac_try;;
15679 +esac
15680 +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
15681 +  (eval "$ac_compile") 2>conftest.er1
15682 +  ac_status=$?
15683 +  grep -v '^ *+' conftest.er1 >conftest.err
15684 +  rm -f conftest.er1
15685 +  cat conftest.err >&5
15686 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
15687 +  (exit $ac_status); } && {
15688 +        test -z "$ac_c_werror_flag" ||
15689 +        test ! -s conftest.err
15690 +       } && test -s conftest.$ac_objext; then
15691 +  ac_cv_have_decl_netif_tx_lock=yes
15692 +else
15693 +  echo "$as_me: failed program was:" >&5
15694 +sed 's/^/| /' conftest.$ac_ext >&5
15695 +
15696 +       ac_cv_have_decl_netif_tx_lock=no
15697 +fi
15698 +
15699 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
15700 +fi
15701 +{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_netif_tx_lock" >&5
15702 +echo "${ECHO_T}$ac_cv_have_decl_netif_tx_lock" >&6; }
15703 +if test $ac_cv_have_decl_netif_tx_lock = yes; then
15704 +  ac_cv_netif_tx_lock=yes
15705 +else
15706 +  ac_cv_netif_tx_lock=no
15707 +fi
15708 +
15709 +    if test $ac_cv_netif_tx_lock = yes; then
15710 +       
15711 +cat >>confdefs.h <<\_ACEOF
15712 +@%:@define HAVE_NETIF_TX_LOCK 1
15713 +_ACEOF
15714 +
15715 +    fi
15716 +
15717 +
15718 +    CXX="$SAVE_CXX"
15719 +    CPPFLAGS="$saveflags"
15720 +
15721 +    if test $ac_cv_cxx_aware_system = yes; then
15722 +       DRIVERS="$DRIVERS linuxmodule"
15723 +       TOOL_TARGETS="$TOOL_TARGETS click-install"
15724 +       cat >>confdefs.h <<\_ACEOF
15725 +@%:@define HAVE_LINUXMODULE_DRIVER 1
15726 +_ACEOF
15727 +
15728 +       HAVE_LINUXMODULE_DRIVER=1
15729 +    elif test x$enable_linuxmodule_default = xyes; then
15730 +       { echo "$as_me:$LINENO: WARNING: 
15731 +=========================================
15732 +
15733 +Your Linux kernel header files cause errors when included by a C++ program,
15734 +so I won't try to compile the linuxmodule driver.
15735 +
15736 +There are two common reasons for this error:
15737 +1. You have not applied the Linux kernel patch that comes with this
15738 +   distribution.  Apply the right patch and try again.  See the INSTALL
15739 +   file for more information.
15740 +2. Your Linux configuration enables some functionality that is not yet
15741 +   covered by our patches.  Turn off this functionality and try again,
15742 +   or fix the error and tell us how you did it.  See the config.log file
15743 +   for more detailed information on the error.
15744 +
15745 +=========================================" >&5
15746 +echo "$as_me: WARNING: 
15747 +=========================================
15748 +
15749 +Your Linux kernel header files cause errors when included by a C++ program,
15750 +so I won't try to compile the linuxmodule driver.
15751 +
15752 +There are two common reasons for this error:
15753 +1. You have not applied the Linux kernel patch that comes with this
15754 +   distribution.  Apply the right patch and try again.  See the INSTALL
15755 +   file for more information.
15756 +2. Your Linux configuration enables some functionality that is not yet
15757 +   covered by our patches.  Turn off this functionality and try again,
15758 +   or fix the error and tell us how you did it.  See the config.log file
15759 +   for more detailed information on the error.
15760 +
15761 +=========================================" >&2;}
15762 +    else
15763 +       { { echo "$as_me:$LINENO: error: 
15764 +=========================================
15765 +
15766 +Your Linux kernel header files cause errors when included by a C++ program.
15767 +
15768 +There are two common reasons for this error:
15769 +1. You have not applied the Linux kernel patch that comes with this
15770 +   distribution.  Apply the right patch and try again.  See the INSTALL
15771 +   file for more information.
15772 +2. Your Linux configuration enables some functionality that is not yet
15773 +   covered by our patches.  Turn off this functionality and try again,
15774 +   or fix the error and tell us how you did it.  See the config.log file
15775 +   for more detailed information on the error.
15776 +
15777 +=========================================" >&5
15778 +echo "$as_me: error: 
15779 +=========================================
15780 +
15781 +Your Linux kernel header files cause errors when included by a C++ program.
15782 +
15783 +There are two common reasons for this error:
15784 +1. You have not applied the Linux kernel patch that comes with this
15785 +   distribution.  Apply the right patch and try again.  See the INSTALL
15786 +   file for more information.
15787 +2. Your Linux configuration enables some functionality that is not yet
15788 +   covered by our patches.  Turn off this functionality and try again,
15789 +   or fix the error and tell us how you did it.  See the config.log file
15790 +   for more detailed information on the error.
15791 +
15792 +=========================================" >&2;}
15793 +   { (exit 1); exit 1; }; }
15794 +    fi
15795 +fi
15796 +
15797 +
15798 +
15799 +if test $ac_have_bsd_kernel = y; then
15800 +    DRIVERS="$DRIVERS bsdmodule"
15801 +    if echo "$DRIVERS" | grep linuxmodule >/dev/null 2>&1; then :; else
15802 +       TOOL_TARGETS="$TOOL_TARGETS click-install"
15803 +    fi
15804 +    cat >>confdefs.h <<\_ACEOF
15805 +@%:@define HAVE_BSDMODULE_DRIVER 1
15806 +_ACEOF
15807 +
15808 +    HAVE_BSDMODULE_DRIVER=1
15809 +fi
15810 +
15811 +
15812 +
15813 +if test "x$enable_nsclick" = xyes; then
15814 +    DRIVERS="$DRIVERS ns"
15815 +fi
15816 +
15817 +
15818 +
15819 +if test "x$enable_tools" != xno; then
15820 +    OTHER_TARGETS="$OTHER_TARGETS tools"
15821 +fi
15822 +
15823 +
15824 +
15825 +# Find a good install program.  We prefer a C program (faster),
15826 +# so one script is as good as another.  But avoid the broken or
15827 +# incompatible versions:
15828 +# SysV /etc/install, /usr/sbin/install
15829 +# SunOS /usr/etc/install
15830 +# IRIX /sbin/install
15831 +# AIX /bin/install
15832 +# AmigaOS /C/install, which installs bootblocks on floppy discs
15833 +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
15834 +# AFS /usr/afsws/bin/install, which mishandles nonexistent args
15835 +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
15836 +# OS/2's system install, which has a completely different semantic
15837 +# ./install, which can be erroneously created by make from ./install.sh.
15838 +{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
15839 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
15840 +if test -z "$INSTALL"; then
15841 +if test "${ac_cv_path_install+set}" = set; then
15842 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15843 +else
15844 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15845 +for as_dir in $PATH
15846 +do
15847 +  IFS=$as_save_IFS
15848 +  test -z "$as_dir" && as_dir=.
15849 +  # Account for people who put trailing slashes in PATH elements.
15850 +case $as_dir/ in
15851 +  ./ | .// | /cC/* | \
15852 +  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
15853 +  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
15854 +  /usr/ucb/* ) ;;
15855 +  *)
15856 +    # OSF1 and SCO ODT 3.0 have their own names for install.
15857 +    # Don't use installbsd from OSF since it installs stuff as root
15858 +    # by default.
15859 +    for ac_prog in ginstall scoinst install; do
15860 +      for ac_exec_ext in '' $ac_executable_extensions; do
15861 +       if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
15862 +         if test $ac_prog = install &&
15863 +           grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
15864 +           # AIX install.  It has an incompatible calling convention.
15865 +           :
15866 +         elif test $ac_prog = install &&
15867 +           grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
15868 +           # program-specific install script used by HP pwplus--don't use.
15869 +           :
15870 +         else
15871 +           ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
15872 +           break 3
15873 +         fi
15874 +       fi
15875 +      done
15876 +    done
15877 +    ;;
15878 +esac
15879 +done
15880 +IFS=$as_save_IFS
15881 +
15882 +
15883 +fi
15884 +  if test "${ac_cv_path_install+set}" = set; then
15885 +    INSTALL=$ac_cv_path_install
15886 +  else
15887 +    # As a last resort, use the slow shell script.  Don't cache a
15888 +    # value for INSTALL within a source directory, because that will
15889 +    # break other packages using the cache if that directory is
15890 +    # removed, or if the value is a relative name.
15891 +    INSTALL=$ac_install_sh
15892 +  fi
15893 +fi
15894 +{ echo "$as_me:$LINENO: result: $INSTALL" >&5
15895 +echo "${ECHO_T}$INSTALL" >&6; }
15896 +
15897 +# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
15898 +# It thinks the first close brace ends the variable substitution.
15899 +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
15900 +
15901 +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
15902 +
15903 +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
15904 +
15905 +
15906 +    
15907 +    { echo "$as_me:$LINENO: checking whether install accepts -C" >&5
15908 +echo $ECHO_N "checking whether install accepts -C... $ECHO_C" >&6; }
15909 +    echo X > conftest.1
15910 +    if $INSTALL -C conftest.1 conftest.2 >/dev/null 2>&1; then
15911 +       INSTALL_IF_CHANGED='$(INSTALL) -C'
15912 +       { echo "$as_me:$LINENO: result: yes" >&5
15913 +echo "${ECHO_T}yes" >&6; }
15914 +    else
15915 +       INSTALL_IF_CHANGED='$(top_builddir)/installch'
15916 +       { echo "$as_me:$LINENO: result: no" >&5
15917 +echo "${ECHO_T}no" >&6; }
15918 +    fi
15919 +    rm -f conftest.1 conftest.2
15920 +    
15921 +    CLICKINSTALL=`echo "$INSTALL" | sed 's|^\$(.*)/|\$(clickdatadir)/|'`
15922 +    
15923 +
15924 +
15925 +    if test "${GMAKE-NO}" = NO; then
15926 +       { echo "$as_me:$LINENO: checking for GNU make" >&5
15927 +echo $ECHO_N "checking for GNU make... $ECHO_C" >&6; }
15928 +if test "${ac_cv_gnu_make+set}" = set; then
15929 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15930 +else
15931 +  if /bin/sh -c 'make -f /dev/null -n --version | grep GNU' >/dev/null 2>&1; then
15932 +           ac_cv_gnu_make='make'
15933 +       elif /bin/sh -c 'gmake -f /dev/null -n --version | grep GNU' >/dev/null 2>&1; then
15934 +           ac_cv_gnu_make='gmake'
15935 +       else
15936 +           ac_cv_gnu_make='not found'
15937 +       fi
15938 +fi
15939 +{ echo "$as_me:$LINENO: result: $ac_cv_gnu_make" >&5
15940 +echo "${ECHO_T}$ac_cv_gnu_make" >&6; }
15941 +       test "$ac_cv_gnu_make" != 'not found' && GMAKE="$ac_cv_gnu_make"
15942 +    else
15943 +       /bin/sh -c '$GMAKE -f /dev/null -n --version | grep GNU' >/dev/null 2>&1 || GMAKE=''
15944 +    fi
15945 +
15946 +    SUBMAKE=''
15947 +    test -n "$GMAKE" -a "$GMAKE" != make && SUBMAKE="MAKE = $GMAKE"
15948 +    
15949 +    
15950 +
15951 +
15952 +    { echo "$as_me:$LINENO: checking for working autoconf" >&5
15953 +echo $ECHO_N "checking for working autoconf... $ECHO_C" >&6; }
15954 +    AUTOCONF="${AUTOCONF-autoconf}"
15955 +    if ($AUTOCONF --version) < /dev/null > conftest.out 2>&1; then
15956 +       if test `head -n 1 conftest.out | sed 's/.*2\.\([0-9]*\).*/\1/'` -ge 13 2>/dev/null; then
15957 +           { echo "$as_me:$LINENO: result: found" >&5
15958 +echo "${ECHO_T}found" >&6; }
15959 +       else
15960 +           AUTOCONF='$(conf_auxdir)/missing autoconf'
15961 +           { echo "$as_me:$LINENO: result: old" >&5
15962 +echo "${ECHO_T}old" >&6; }
15963 +       fi
15964 +    else
15965 +       AUTOCONF='$(conf_auxdir)/missing autoconf'
15966 +       { echo "$as_me:$LINENO: result: missing" >&5
15967 +echo "${ECHO_T}missing" >&6; }
15968 +    fi
15969 +    
15970 +
15971 +
15972 +        ac_foo=`echo 'exit($A<5);' | tr A \135`
15973 +
15974 +    if test "${PERL-NO}" = NO; then
15975 +       for ac_prog in perl5 perl
15976 +do
15977 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
15978 +set dummy $ac_prog; ac_word=$2
15979 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
15980 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
15981 +if test "${ac_cv_prog_perl5+set}" = set; then
15982 +  echo $ECHO_N "(cached) $ECHO_C" >&6
15983 +else
15984 +  if test -n "$perl5"; then
15985 +  ac_cv_prog_perl5="$perl5" # Let the user override the test.
15986 +else
15987 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
15988 +for as_dir in $PATH
15989 +do
15990 +  IFS=$as_save_IFS
15991 +  test -z "$as_dir" && as_dir=.
15992 +  for ac_exec_ext in '' $ac_executable_extensions; do
15993 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
15994 +    ac_cv_prog_perl5="$ac_prog"
15995 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
15996 +    break 2
15997 +  fi
15998 +done
15999 +done
16000 +IFS=$as_save_IFS
16001 +
16002 +fi
16003 +fi
16004 +perl5=$ac_cv_prog_perl5
16005 +if test -n "$perl5"; then
16006 +  { echo "$as_me:$LINENO: result: $perl5" >&5
16007 +echo "${ECHO_T}$perl5" >&6; }
16008 +else
16009 +  { echo "$as_me:$LINENO: result: no" >&5
16010 +echo "${ECHO_T}no" >&6; }
16011 +fi
16012 +
16013 +
16014 +  test -n "$perl5" && break
16015 +done
16016 +test -n "$perl5" || perl5="missing"
16017 +
16018 +       test "$perl5" != missing && $perl5 -e "$ac_foo" && perl5=missing
16019 +       if test "$perl5" = missing; then
16020 +           for ac_prog in perl5 perl
16021 +do
16022 +  # Extract the first word of "$ac_prog", so it can be a program name with args.
16023 +set dummy $ac_prog; ac_word=$2
16024 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
16025 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
16026 +if test "${ac_cv_prog_localperl5+set}" = set; then
16027 +  echo $ECHO_N "(cached) $ECHO_C" >&6
16028 +else
16029 +  if test -n "$localperl5"; then
16030 +  ac_cv_prog_localperl5="$localperl5" # Let the user override the test.
16031 +else
16032 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
16033 +for as_dir in /usr/local/bin
16034 +do
16035 +  IFS=$as_save_IFS
16036 +  test -z "$as_dir" && as_dir=.
16037 +  for ac_exec_ext in '' $ac_executable_extensions; do
16038 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
16039 +    ac_cv_prog_localperl5="$ac_prog"
16040 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
16041 +    break 2
16042 +  fi
16043 +done
16044 +done
16045 +IFS=$as_save_IFS
16046 +
16047 +fi
16048 +fi
16049 +localperl5=$ac_cv_prog_localperl5
16050 +if test -n "$localperl5"; then
16051 +  { echo "$as_me:$LINENO: result: $localperl5" >&5
16052 +echo "${ECHO_T}$localperl5" >&6; }
16053 +else
16054 +  { echo "$as_me:$LINENO: result: no" >&5
16055 +echo "${ECHO_T}no" >&6; }
16056 +fi
16057 +
16058 +
16059 +  test -n "$localperl5" && break
16060 +done
16061 +test -n "$localperl5" || localperl5="missing"
16062 +
16063 +           test "$localperl5" != missing && \
16064 +               perl5="/usr/local/bin/$localperl5"
16065 +       fi
16066 +    else
16067 +       perl5="$PERL"
16068 +    fi
16069 +    
16070 +    test "$perl5" != missing && $perl5 -e "$ac_foo" && perl5=missing
16071 +
16072 +    if test "$perl5" = "missing"; then
16073 +       PERL='$(conf_auxdir)/missing perl'
16074 +    else
16075 +       PERL="$perl5"
16076 +    fi
16077 +    
16078 +
16079 +
16080 +if test -z "$GMAKE"; then
16081 +    { { echo "$as_me:$LINENO: error: 
16082 +==============================================
16083 +
16084 +Can't find GNU make.  Either put 'gmake' on your PATH and
16085 +rerun './configure', or set the GMAKE environment variable to
16086 +GNU make's pathname.
16087 +
16088 +==============================================" >&5
16089 +echo "$as_me: error: 
16090 +==============================================
16091 +
16092 +Can't find GNU make.  Either put 'gmake' on your PATH and
16093 +rerun './configure', or set the GMAKE environment variable to
16094 +GNU make's pathname.
16095 +
16096 +==============================================" >&2;}
16097 +   { (exit 1); exit 1; }; }
16098 +fi
16099 +
16100 +
16101 +
16102 +{ echo "$as_me:$LINENO: checking for working makeinfo" >&5
16103 +echo $ECHO_N "checking for working makeinfo... $ECHO_C" >&6; }
16104 +MAKEINFO=${MAKEINFO-makeinfo}
16105 +if ($MAKEINFO --version) < /dev/null > conftest.out 2>&1; then
16106 +    if test `head -n 1 conftest.out | sed 's/^.* \([0-9][0-9]*\).*$/\1/'` -ge 4; then
16107 +       { echo "$as_me:$LINENO: result: found" >&5
16108 +echo "${ECHO_T}found" >&6; }
16109 +    else
16110 +       MAKEINFO='$(conf_auxdir)/missing makeinfo'
16111 +       { echo "$as_me:$LINENO: result: old" >&5
16112 +echo "${ECHO_T}old" >&6; }
16113 +    fi
16114 +else
16115 +    MAKEINFO='$(conf_auxdir)/missing makeinfo'
16116 +    { echo "$as_me:$LINENO: result: missing" >&5
16117 +echo "${ECHO_T}missing" >&6; }
16118 +fi
16119 +
16120 +{ echo "$as_me:$LINENO: checking for working texi2dvi" >&5
16121 +echo $ECHO_N "checking for working texi2dvi... $ECHO_C" >&6; }
16122 +TEXI2DVI=${TEXI2DVI-texi2dvi}
16123 +if ($TEXI2DVI --version) < /dev/null > conftest.out 2>&1; then
16124 +        if test `head -n 1 conftest.out | sed 's/.*Texinfo \([0-9][0-9]*\).*/\1/'` -ge 4; then
16125 +       { echo "$as_me:$LINENO: result: found" >&5
16126 +echo "${ECHO_T}found" >&6; }
16127 +    else
16128 +       TEXI2DVI='$(conf_auxdir)/missing texi2dvi'
16129 +       { echo "$as_me:$LINENO: result: old" >&5
16130 +echo "${ECHO_T}old" >&6; }
16131 +    fi
16132 +else
16133 +    TEXI2DVI='$(conf_auxdir)/missing texi2dvi'
16134 +    { echo "$as_me:$LINENO: result: missing" >&5
16135 +echo "${ECHO_T}missing" >&6; }
16136 +fi
16137 +
16138 +if test ${INSTALL_INFO-xxx} = xxx; then
16139 +    # Extract the first word of "install-info", so it can be a program name with args.
16140 +set dummy install-info; ac_word=$2
16141 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5
16142 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
16143 +if test "${ac_cv_path_INSTALL_INFO+set}" = set; then
16144 +  echo $ECHO_N "(cached) $ECHO_C" >&6
16145 +else
16146 +  case $INSTALL_INFO in
16147 +  [\\/]* | ?:[\\/]*)
16148 +  ac_cv_path_INSTALL_INFO="$INSTALL_INFO" # Let the user override the test with a path.
16149 +  ;;
16150 +  *)
16151 +  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
16152 +as_dummy="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
16153 +for as_dir in $as_dummy
16154 +do
16155 +  IFS=$as_save_IFS
16156 +  test -z "$as_dir" && as_dir=.
16157 +  for ac_exec_ext in '' $ac_executable_extensions; do
16158 +  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
16159 +    ac_cv_path_INSTALL_INFO="$as_dir/$ac_word$ac_exec_ext"
16160 +    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
16161 +    break 2
16162 +  fi
16163 +done
16164 +done
16165 +IFS=$as_save_IFS
16166 +
16167 +  test -z "$ac_cv_path_INSTALL_INFO" && ac_cv_path_INSTALL_INFO="'$(conf_auxdir)/missing install-info'"
16168 +  ;;
16169 +esac
16170 +fi
16171 +INSTALL_INFO=$ac_cv_path_INSTALL_INFO
16172 +if test -n "$INSTALL_INFO"; then
16173 +  { echo "$as_me:$LINENO: result: $INSTALL_INFO" >&5
16174 +echo "${ECHO_T}$INSTALL_INFO" >&6; }
16175 +else
16176 +  { echo "$as_me:$LINENO: result: no" >&5
16177 +echo "${ECHO_T}no" >&6; }
16178 +fi
16179 +
16180 +
16181 +fi
16182 +{ echo "$as_me:$LINENO: checking for working install-info" >&5
16183 +echo $ECHO_N "checking for working install-info... $ECHO_C" >&6; }
16184 +if ($INSTALL_INFO --version) < /dev/null > conftest.out 2>&1; then
16185 +    { echo "$as_me:$LINENO: result: found" >&5
16186 +echo "${ECHO_T}found" >&6; }
16187 +else
16188 +    INSTALL_INFO='$(conf_auxdir)/missing install-info'
16189 +    { echo "$as_me:$LINENO: result: missing" >&5
16190 +echo "${ECHO_T}missing" >&6; }
16191 +fi
16192 +
16193 +{ echo "$as_me:$LINENO: checking for working pod2man" >&5
16194 +echo $ECHO_N "checking for working pod2man... $ECHO_C" >&6; }
16195 +POD2MAN=${POD2MAN-pod2man}
16196 +if ($POD2MAN --help) < /dev/null > conftest.out 2>&1 && grep pod2man conftest.out >/dev/null 2>&1; then
16197 +    { echo "$as_me:$LINENO: result: found" >&5
16198 +echo "${ECHO_T}found" >&6; }
16199 +else
16200 +    POD2MAN='$(conf_auxdir)/missing pod2man'
16201 +    { echo "$as_me:$LINENO: result: missing" >&5
16202 +echo "${ECHO_T}missing" >&6; }
16203 +fi
16204 +
16205 +
16206 +
16207 +
16208 +
16209 +
16210 +
16211 +
16212 +
16213 +shell_expand () {
16214 +    val=`eval echo '$'"$1"`
16215 +    while echo "x$val" | fgrep '$' >/dev/null 2>&1; do val=`eval echo "$val"`; done
16216 +    eval "$1='$val'"
16217 +}
16218 +
16219 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
16220 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
16221 +
16222 +if test x$infodir = 'x${prefix}/info'; then
16223 +    test ! -d ${prefix}/info && test -d ${prefix}/share/info && infodir='${prefix}/share/info'
16224 +fi
16225 +
16226 +shell_expand bindir
16227 +shell_expand sbindir
16228 +shell_expand libdir
16229 +shell_expand datarootdir
16230 +shell_expand datadir
16231 +shell_expand includedir
16232 +
16233 +clickdatadir="$datadir/click"
16234 +
16235 +
16236 +cat >>confdefs.h <<_ACEOF
16237 +@%:@define CLICK_BINDIR "$bindir"
16238 +_ACEOF
16239 +
16240 +cat >>confdefs.h <<_ACEOF
16241 +@%:@define CLICK_LIBDIR "$libdir"
16242 +_ACEOF
16243 +
16244 +cat >>confdefs.h <<_ACEOF
16245 +@%:@define CLICK_DATADIR "$clickdatadir"
16246 +_ACEOF
16247 +
16248 +
16249 +
16250 +
16251 +provisions="$target_cpu"
16252 +case "$target_cpu" in
16253 +    i386) :;;
16254 +    i486|i586) provisions="$provisions i386";;
16255 +    i686|i786) provisions="$provisions i386 i586";;
16256 +esac
16257 +
16258 +if test "x$enable_analysis" = xyes; then
16259 +    provisions="$provisions analysis"
16260 +fi
16261 +
16262 +if test "x$enable_experimental" = xyes; then
16263 +    provisions="$provisions experimental"
16264 +fi
16265 +
16266 +if test "x$have_int64_types" = xyes; then
16267 +    provisions="$provisions int64"
16268 +fi
16269 +
16270 +if test "x$enable_ip6" = xyes; then
16271 +    provisions="$provisions ip6"
16272 +fi
16273 +
16274 +if test "x$ac_cv_under_linux" = xyes; then
16275 +    provisions="$provisions linux"
16276 +fi
16277 +
16278 +if test $ac_have_linux_kernel = y; then
16279 +    ac_linux_version_code=`grep LINUX_VERSION_CODE $linuxdir/include/linux/version.h | sed 's/^.*CODE //'`
16280 +    if test $ac_linux_version_code -ge 131584 -a $ac_linux_version_code -lt 131840; then
16281 +       provisions="$provisions linux_2_2"
16282 +    elif test $ac_linux_version_code -ge 132096 -a $ac_linux_version_code -lt 132352; then
16283 +       provisions="$provisions linux_2_4"
16284 +    elif test $ac_linux_version_code -ge 132608 -a $ac_linux_version_code -lt 132864; then
16285 +       provisions="$provisions linux_2_6"
16286 +    fi
16287 +fi
16288 +
16289 +if test "x$HAVE_PCAP" = xyes; then
16290 +    provisions="$provisions pcap"
16291 +fi
16292 +
16293 +if test "$enable_multithread" -gt 1; then
16294 +    provisions="$provisions smpclick"
16295 +fi
16296 +
16297 +if test "x$enable_user_multithread" = xyes; then
16298 +    provisions="$provisions umultithread"
16299 +fi
16300 +
16301 +if test "x$enable_wifi" = xyes; then
16302 +    provisions="$provisions wifi"
16303 +fi
16304 +
16305 +
16306 +
16307 +
16308 +config_files="Makefile click-buildtool click-compile config.mk installch tools/Makefile tools/lib/Makefile doc/Makefile etc/libclick/Makefile etc/pkg-config.mk"
16309 +for ac_dir in $POSSIBLE_DRIVERS; do
16310 +    config_files="$config_files $ac_dir/Makefile"
16311 +done
16312 +for ac_dir in $TOOLDIRS; do
16313 +    config_files="$config_files tools/$ac_dir/Makefile"
16314 +done
16315 +for ac_dir in etc include; do
16316 +    test ! -d "$ac_dir" && mkdir "$ac_dir"
16317 +done
16318 +
16319 +ac_config_commands="$ac_config_commands default-1"
16320 +
16321 +ac_config_files="$ac_config_files $config_files"
16322 +
16323 +cat >confcache <<\_ACEOF
16324 +# This file is a shell script that caches the results of configure
16325 +# tests run on this system so they can be shared between configure
16326 +# scripts and configure runs, see configure's option --config-cache.
16327 +# It is not useful on other systems.  If it contains results you don't
16328 +# want to keep, you may remove or edit it.
16329 +#
16330 +# config.status only pays attention to the cache file if you give it
16331 +# the --recheck option to rerun configure.
16332 +#
16333 +# `ac_cv_env_foo' variables (set or unset) will be overridden when
16334 +# loading this file, other *unset* `ac_cv_foo' will be assigned the
16335 +# following values.
16336 +
16337 +_ACEOF
16338 +
16339 +# The following way of writing the cache mishandles newlines in values,
16340 +# but we know of no workaround that is simple, portable, and efficient.
16341 +# So, we kill variables containing newlines.
16342 +# Ultrix sh set writes to stderr and can't be redirected directly,
16343 +# and sets the high bit in the cache file unless we assign to the vars.
16344 +(
16345 +  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
16346 +    eval ac_val=\$$ac_var
16347 +    case $ac_val in #(
16348 +    *${as_nl}*)
16349 +      case $ac_var in #(
16350 +      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
16351 +echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
16352 +      esac
16353 +      case $ac_var in #(
16354 +      _ | IFS | as_nl) ;; #(
16355 +      *) $as_unset $ac_var ;;
16356 +      esac ;;
16357 +    esac
16358 +  done
16359 +
16360 +  (set) 2>&1 |
16361 +    case $as_nl`(ac_space=' '; set) 2>&1` in #(
16362 +    *${as_nl}ac_space=\ *)
16363 +      # `set' does not quote correctly, so add quotes (double-quote
16364 +      # substitution turns \\\\ into \\, and sed turns \\ into \).
16365 +      sed -n \
16366 +       "s/'/'\\\\''/g;
16367 +         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
16368 +      ;; #(
16369 +    *)
16370 +      # `set' quotes correctly as required by POSIX, so do not add quotes.
16371 +      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
16372 +      ;;
16373 +    esac |
16374 +    sort
16375 +) |
16376 +  sed '
16377 +     /^ac_cv_env_/b end
16378 +     t clear
16379 +     :clear
16380 +     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
16381 +     t end
16382 +     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
16383 +     :end' >>confcache
16384 +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
16385 +  if test -w "$cache_file"; then
16386 +    test "x$cache_file" != "x/dev/null" &&
16387 +      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
16388 +echo "$as_me: updating cache $cache_file" >&6;}
16389 +    cat confcache >$cache_file
16390 +  else
16391 +    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
16392 +echo "$as_me: not updating unwritable cache $cache_file" >&6;}
16393 +  fi
16394 +fi
16395 +rm -f confcache
16396 +
16397 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
16398 +# Let make expand exec_prefix.
16399 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
16400 +
16401 +DEFS=-DHAVE_CONFIG_H
16402 +
16403 +ac_libobjs=
16404 +ac_ltlibobjs=
16405 +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue
16406 +  # 1. Remove the extension, and $U if already installed.
16407 +  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
16408 +  ac_i=`echo "$ac_i" | sed "$ac_script"`
16409 +  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
16410 +  #    will be set to the directory where LIBOBJS objects are built.
16411 +  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
16412 +  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
16413 +done
16414 +LIB@&t@OBJS=$ac_libobjs
16415 +
16416 +LTLIBOBJS=$ac_ltlibobjs
16417 +
16418 +
16419 +
16420 +: ${CONFIG_STATUS=./config.status}
16421 +ac_clean_files_save=$ac_clean_files
16422 +ac_clean_files="$ac_clean_files $CONFIG_STATUS"
16423 +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
16424 +echo "$as_me: creating $CONFIG_STATUS" >&6;}
16425 +cat >$CONFIG_STATUS <<_ACEOF
16426 +#! $SHELL
16427 +# Generated by $as_me.
16428 +# Run this file to recreate the current configuration.
16429 +# Compiler output produced by configure, useful for debugging
16430 +# configure, is in config.log if it exists.
16431 +
16432 +debug=false
16433 +ac_cs_recheck=false
16434 +ac_cs_silent=false
16435 +SHELL=\${CONFIG_SHELL-$SHELL}
16436 +_ACEOF
16437 +
16438 +cat >>$CONFIG_STATUS <<\_ACEOF
16439 +## --------------------- ##
16440 +## M4sh Initialization.  ##
16441 +## --------------------- ##
16442 +
16443 +# Be more Bourne compatible
16444 +DUALCASE=1; export DUALCASE # for MKS sh
16445 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
16446 +  emulate sh
16447 +  NULLCMD=:
16448 +  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
16449 +  # is contrary to our usage.  Disable this feature.
16450 +  alias -g '${1+"$@"}'='"$@"'
16451 +  setopt NO_GLOB_SUBST
16452 +else
16453 +  case `(set -o) 2>/dev/null` in
16454 +  *posix*) set -o posix ;;
16455 +esac
16456 +
16457 +fi
16458 +
16459 +
16460 +
16461 +
16462 +# PATH needs CR
16463 +# Avoid depending upon Character Ranges.
16464 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
16465 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
16466 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
16467 +as_cr_digits='0123456789'
16468 +as_cr_alnum=$as_cr_Letters$as_cr_digits
16469 +
16470 +# The user is always right.
16471 +if test "${PATH_SEPARATOR+set}" != set; then
16472 +  echo "#! /bin/sh" >conf$$.sh
16473 +  echo  "exit 0"   >>conf$$.sh
16474 +  chmod +x conf$$.sh
16475 +  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
16476 +    PATH_SEPARATOR=';'
16477 +  else
16478 +    PATH_SEPARATOR=:
16479 +  fi
16480 +  rm -f conf$$.sh
16481 +fi
16482 +
16483 +# Support unset when possible.
16484 +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
16485 +  as_unset=unset
16486 +else
16487 +  as_unset=false
16488 +fi
16489 +
16490 +
16491 +# IFS
16492 +# We need space, tab and new line, in precisely that order.  Quoting is
16493 +# there to prevent editors from complaining about space-tab.
16494 +# (If _AS_PATH_WALK were called with IFS unset, it would disable word
16495 +# splitting by setting IFS to empty value.)
16496 +as_nl='
16497 +'
16498 +IFS=" ""       $as_nl"
16499 +
16500 +# Find who we are.  Look in the path if we contain no directory separator.
16501 +case $0 in
16502 +  *[\\/]* ) as_myself=$0 ;;
16503 +  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
16504 +for as_dir in $PATH
16505 +do
16506 +  IFS=$as_save_IFS
16507 +  test -z "$as_dir" && as_dir=.
16508 +  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
16509 +done
16510 +IFS=$as_save_IFS
16511 +
16512 +     ;;
16513 +esac
16514 +# We did not find ourselves, most probably we were run as `sh COMMAND'
16515 +# in which case we are not to be found in the path.
16516 +if test "x$as_myself" = x; then
16517 +  as_myself=$0
16518 +fi
16519 +if test ! -f "$as_myself"; then
16520 +  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
16521 +  { (exit 1); exit 1; }
16522 +fi
16523 +
16524 +# Work around bugs in pre-3.0 UWIN ksh.
16525 +for as_var in ENV MAIL MAILPATH
16526 +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
16527 +done
16528 +PS1='$ '
16529 +PS2='> '
16530 +PS4='+ '
16531 +
16532 +# NLS nuisances.
16533 +for as_var in \
16534 +  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
16535 +  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
16536 +  LC_TELEPHONE LC_TIME
16537 +do
16538 +  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
16539 +    eval $as_var=C; export $as_var
16540 +  else
16541 +    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
16542 +  fi
16543 +done
16544 +
16545 +# Required to use basename.
16546 +if expr a : '\(a\)' >/dev/null 2>&1 &&
16547 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
16548 +  as_expr=expr
16549 +else
16550 +  as_expr=false
16551 +fi
16552 +
16553 +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
16554 +  as_basename=basename
16555 +else
16556 +  as_basename=false
16557 +fi
16558 +
16559 +
16560 +# Name of the executable.
16561 +as_me=`$as_basename -- "$0" ||
16562 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
16563 +        X"$0" : 'X\(//\)$' \| \
16564 +        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
16565 +echo X/"$0" |
16566 +    sed '/^.*\/\([^/][^/]*\)\/*$/{
16567 +           s//\1/
16568 +           q
16569 +         }
16570 +         /^X\/\(\/\/\)$/{
16571 +           s//\1/
16572 +           q
16573 +         }
16574 +         /^X\/\(\/\).*/{
16575 +           s//\1/
16576 +           q
16577 +         }
16578 +         s/.*/./; q'`
16579 +
16580 +# CDPATH.
16581 +$as_unset CDPATH
16582 +
16583 +
16584 +
16585 +  as_lineno_1=$LINENO
16586 +  as_lineno_2=$LINENO
16587 +  test "x$as_lineno_1" != "x$as_lineno_2" &&
16588 +  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
16589 +
16590 +  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
16591 +  # uniformly replaced by the line number.  The first 'sed' inserts a
16592 +  # line-number line after each line using $LINENO; the second 'sed'
16593 +  # does the real work.  The second script uses 'N' to pair each
16594 +  # line-number line with the line containing $LINENO, and appends
16595 +  # trailing '-' during substitution so that $LINENO is not a special
16596 +  # case at line end.
16597 +  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
16598 +  # scripts with optimization help from Paolo Bonzini.  Blame Lee
16599 +  # E. McMahon (1931-1989) for sed's syntax.  :-)
16600 +  sed -n '
16601 +    p
16602 +    /[$]LINENO/=
16603 +  ' <$as_myself |
16604 +    sed '
16605 +      s/[$]LINENO.*/&-/
16606 +      t lineno
16607 +      b
16608 +      :lineno
16609 +      N
16610 +      :loop
16611 +      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
16612 +      t loop
16613 +      s/-\n.*//
16614 +    ' >$as_me.lineno &&
16615 +  chmod +x "$as_me.lineno" ||
16616 +    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
16617 +   { (exit 1); exit 1; }; }
16618 +
16619 +  # Don't try to exec as it changes $[0], causing all sort of problems
16620 +  # (the dirname of $[0] is not the place where we might find the
16621 +  # original and so on.  Autoconf is especially sensitive to this).
16622 +  . "./$as_me.lineno"
16623 +  # Exit status is that of the last command.
16624 +  exit
16625 +}
16626 +
16627 +
16628 +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
16629 +  as_dirname=dirname
16630 +else
16631 +  as_dirname=false
16632 +fi
16633 +
16634 +ECHO_C= ECHO_N= ECHO_T=
16635 +case `echo -n x` in
16636 +-n*)
16637 +  case `echo 'x\c'` in
16638 +  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
16639 +  *)   ECHO_C='\c';;
16640 +  esac;;
16641 +*)
16642 +  ECHO_N='-n';;
16643 +esac
16644 +
16645 +if expr a : '\(a\)' >/dev/null 2>&1 &&
16646 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
16647 +  as_expr=expr
16648 +else
16649 +  as_expr=false
16650 +fi
16651 +
16652 +rm -f conf$$ conf$$.exe conf$$.file
16653 +if test -d conf$$.dir; then
16654 +  rm -f conf$$.dir/conf$$.file
16655 +else
16656 +  rm -f conf$$.dir
16657 +  mkdir conf$$.dir
16658 +fi
16659 +echo >conf$$.file
16660 +if ln -s conf$$.file conf$$ 2>/dev/null; then
16661 +  as_ln_s='ln -s'
16662 +  # ... but there are two gotchas:
16663 +  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
16664 +  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
16665 +  # In both cases, we have to default to `cp -p'.
16666 +  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
16667 +    as_ln_s='cp -p'
16668 +elif ln conf$$.file conf$$ 2>/dev/null; then
16669 +  as_ln_s=ln
16670 +else
16671 +  as_ln_s='cp -p'
16672 +fi
16673 +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
16674 +rmdir conf$$.dir 2>/dev/null
16675 +
16676 +if mkdir -p . 2>/dev/null; then
16677 +  as_mkdir_p=:
16678 +else
16679 +  test -d ./-p && rmdir ./-p
16680 +  as_mkdir_p=false
16681 +fi
16682 +
16683 +if test -x / >/dev/null 2>&1; then
16684 +  as_test_x='test -x'
16685 +else
16686 +  if ls -dL / >/dev/null 2>&1; then
16687 +    as_ls_L_option=L
16688 +  else
16689 +    as_ls_L_option=
16690 +  fi
16691 +  as_test_x='
16692 +    eval sh -c '\''
16693 +      if test -d "$1"; then
16694 +        test -d "$1/.";
16695 +      else
16696 +       case $1 in
16697 +        -*)set "./$1";;
16698 +       esac;
16699 +       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
16700 +       ???[sx]*):;;*)false;;esac;fi
16701 +    '\'' sh
16702 +  '
16703 +fi
16704 +as_executable_p=$as_test_x
16705 +
16706 +# Sed expression to map a string onto a valid CPP name.
16707 +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
16708 +
16709 +# Sed expression to map a string onto a valid variable name.
16710 +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
16711 +
16712 +
16713 +exec 6>&1
16714 +
16715 +# Save the log message, to keep $[0] and so on meaningful, and to
16716 +# report actual input values of CONFIG_FILES etc. instead of their
16717 +# values after options handling.
16718 +ac_log="
16719 +This file was extended by click $as_me 1.6.0, which was
16720 +generated by GNU Autoconf 2.61.  Invocation command line was
16721 +
16722 +  CONFIG_FILES    = $CONFIG_FILES
16723 +  CONFIG_HEADERS  = $CONFIG_HEADERS
16724 +  CONFIG_LINKS    = $CONFIG_LINKS
16725 +  CONFIG_COMMANDS = $CONFIG_COMMANDS
16726 +  $ $0 $@
16727 +
16728 +on `(hostname || uname -n) 2>/dev/null | sed 1q`
16729 +"
16730 +
16731 +_ACEOF
16732 +
16733 +cat >>$CONFIG_STATUS <<_ACEOF
16734 +# Files that config.status was made for.
16735 +config_files="$ac_config_files"
16736 +config_headers="$ac_config_headers"
16737 +config_commands="$ac_config_commands"
16738 +
16739 +_ACEOF
16740 +
16741 +cat >>$CONFIG_STATUS <<\_ACEOF
16742 +ac_cs_usage="\
16743 +\`$as_me' instantiates files from templates according to the
16744 +current configuration.
16745 +
16746 +Usage: $0 [OPTIONS] [FILE]...
16747 +
16748 +  -h, --help       print this help, then exit
16749 +  -V, --version    print version number and configuration settings, then exit
16750 +  -q, --quiet      do not print progress messages
16751 +  -d, --debug      don't remove temporary files
16752 +      --recheck    update $as_me by reconfiguring in the same conditions
16753 +  --file=FILE[:TEMPLATE]
16754 +                  instantiate the configuration file FILE
16755 +  --header=FILE[:TEMPLATE]
16756 +                  instantiate the configuration header FILE
16757 +
16758 +Configuration files:
16759 +$config_files
16760 +
16761 +Configuration headers:
16762 +$config_headers
16763 +
16764 +Configuration commands:
16765 +$config_commands
16766 +
16767 +Report bugs to <bug-autoconf@gnu.org>."
16768 +
16769 +_ACEOF
16770 +cat >>$CONFIG_STATUS <<_ACEOF
16771 +ac_cs_version="\\
16772 +click config.status 1.6.0
16773 +configured by $0, generated by GNU Autoconf 2.61,
16774 +  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
16775 +
16776 +Copyright (C) 2006 Free Software Foundation, Inc.
16777 +This config.status script is free software; the Free Software Foundation
16778 +gives unlimited permission to copy, distribute and modify it."
16779 +
16780 +ac_pwd='$ac_pwd'
16781 +srcdir='$srcdir'
16782 +INSTALL='$INSTALL'
16783 +_ACEOF
16784 +
16785 +cat >>$CONFIG_STATUS <<\_ACEOF
16786 +# If no file are specified by the user, then we need to provide default
16787 +# value.  By we need to know if files were specified by the user.
16788 +ac_need_defaults=:
16789 +while test $# != 0
16790 +do
16791 +  case $1 in
16792 +  --*=*)
16793 +    ac_option=`expr "X$1" : 'X\([^=]*\)='`
16794 +    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
16795 +    ac_shift=:
16796 +    ;;
16797 +  *)
16798 +    ac_option=$1
16799 +    ac_optarg=$2
16800 +    ac_shift=shift
16801 +    ;;
16802 +  esac
16803 +
16804 +  case $ac_option in
16805 +  # Handling of the options.
16806 +  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
16807 +    ac_cs_recheck=: ;;
16808 +  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
16809 +    echo "$ac_cs_version"; exit ;;
16810 +  --debug | --debu | --deb | --de | --d | -d )
16811 +    debug=: ;;
16812 +  --file | --fil | --fi | --f )
16813 +    $ac_shift
16814 +    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
16815 +    ac_need_defaults=false;;
16816 +  --header | --heade | --head | --hea )
16817 +    $ac_shift
16818 +    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
16819 +    ac_need_defaults=false;;
16820 +  --he | --h)
16821 +    # Conflict between --help and --header
16822 +    { echo "$as_me: error: ambiguous option: $1
16823 +Try \`$0 --help' for more information." >&2
16824 +   { (exit 1); exit 1; }; };;
16825 +  --help | --hel | -h )
16826 +    echo "$ac_cs_usage"; exit ;;
16827 +  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
16828 +  | -silent | --silent | --silen | --sile | --sil | --si | --s)
16829 +    ac_cs_silent=: ;;
16830 +
16831 +  # This is an error.
16832 +  -*) { echo "$as_me: error: unrecognized option: $1
16833 +Try \`$0 --help' for more information." >&2
16834 +   { (exit 1); exit 1; }; } ;;
16835 +
16836 +  *) ac_config_targets="$ac_config_targets $1"
16837 +     ac_need_defaults=false ;;
16838 +
16839 +  esac
16840 +  shift
16841 +done
16842 +
16843 +ac_configure_extra_args=
16844 +
16845 +if $ac_cs_silent; then
16846 +  exec 6>/dev/null
16847 +  ac_configure_extra_args="$ac_configure_extra_args --silent"
16848 +fi
16849 +
16850 +_ACEOF
16851 +cat >>$CONFIG_STATUS <<_ACEOF
16852 +if \$ac_cs_recheck; then
16853 +  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
16854 +  CONFIG_SHELL=$SHELL
16855 +  export CONFIG_SHELL
16856 +  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
16857 +fi
16858 +
16859 +_ACEOF
16860 +cat >>$CONFIG_STATUS <<\_ACEOF
16861 +exec 5>>config.log
16862 +{
16863 +  echo
16864 +  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
16865 +@%:@@%:@ Running $as_me. @%:@@%:@
16866 +_ASBOX
16867 +  echo "$ac_log"
16868 +} >&5
16869 +
16870 +_ACEOF
16871 +cat >>$CONFIG_STATUS <<_ACEOF
16872 +#
16873 +# INIT-COMMANDS
16874 +#
16875 +
16876 +
16877 +_ACEOF
16878 +
16879 +cat >>$CONFIG_STATUS <<\_ACEOF
16880 +
16881 +# Handling of arguments.
16882 +for ac_config_target in $ac_config_targets
16883 +do
16884 +  case $ac_config_target in
16885 +    "include/click/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config.h:config.h.in" ;;
16886 +    "include/click/pathvars.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/pathvars.h:pathvars.h.in" ;;
16887 +    "include/click/config-bsdmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-bsdmodule.h:config-bsdmodule.h.in" ;;
16888 +    "include/click/config-linuxmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-linuxmodule.h:config-linuxmodule.h.in" ;;
16889 +    "include/click/config-ns.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-ns.h:config-ns.h.in" ;;
16890 +    "include/click/config-userlevel.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-userlevel.h:config-userlevel.h.in" ;;
16891 +    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
16892 +    "$config_files") CONFIG_FILES="$CONFIG_FILES $config_files" ;;
16893 +
16894 +  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
16895 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
16896 +   { (exit 1); exit 1; }; };;
16897 +  esac
16898 +done
16899 +
16900 +
16901 +# If the user did not use the arguments to specify the items to instantiate,
16902 +# then the envvar interface is used.  Set only those that are not.
16903 +# We use the long form for the default assignment because of an extremely
16904 +# bizarre bug on SunOS 4.1.3.
16905 +if $ac_need_defaults; then
16906 +  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
16907 +  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
16908 +  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
16909 +fi
16910 +
16911 +# Have a temporary directory for convenience.  Make it in the build tree
16912 +# simply because there is no reason against having it here, and in addition,
16913 +# creating and moving files from /tmp can sometimes cause problems.
16914 +# Hook for its removal unless debugging.
16915 +# Note that there is a small window in which the directory will not be cleaned:
16916 +# after its creation but before its name has been assigned to `$tmp'.
16917 +$debug ||
16918 +{
16919 +  tmp=
16920 +  trap 'exit_status=$?
16921 +  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
16922 +' 0
16923 +  trap '{ (exit 1); exit 1; }' 1 2 13 15
16924 +}
16925 +# Create a (secure) tmp directory for tmp files.
16926 +
16927 +{
16928 +  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
16929 +  test -n "$tmp" && test -d "$tmp"
16930 +}  ||
16931 +{
16932 +  tmp=./conf$$-$RANDOM
16933 +  (umask 077 && mkdir "$tmp")
16934 +} ||
16935 +{
16936 +   echo "$me: cannot create a temporary directory in ." >&2
16937 +   { (exit 1); exit 1; }
16938 +}
16939 +
16940 +#
16941 +# Set up the sed scripts for CONFIG_FILES section.
16942 +#
16943 +
16944 +# No need to generate the scripts if there are no CONFIG_FILES.
16945 +# This happens for instance when ./config.status config.h
16946 +if test -n "$CONFIG_FILES"; then
16947 +
16948 +_ACEOF
16949 +
16950 +
16951 +
16952 +ac_delim='%!_!# '
16953 +for ac_last_try in false false false false false :; do
16954 +  cat >conf$$subs.sed <<_ACEOF
16955 +SHELL!$SHELL$ac_delim
16956 +PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
16957 +PACKAGE_NAME!$PACKAGE_NAME$ac_delim
16958 +PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
16959 +PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
16960 +PACKAGE_STRING!$PACKAGE_STRING$ac_delim
16961 +PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
16962 +exec_prefix!$exec_prefix$ac_delim
16963 +prefix!$prefix$ac_delim
16964 +program_transform_name!$program_transform_name$ac_delim
16965 +bindir!$bindir$ac_delim
16966 +sbindir!$sbindir$ac_delim
16967 +libexecdir!$libexecdir$ac_delim
16968 +datarootdir!$datarootdir$ac_delim
16969 +datadir!$datadir$ac_delim
16970 +sysconfdir!$sysconfdir$ac_delim
16971 +sharedstatedir!$sharedstatedir$ac_delim
16972 +localstatedir!$localstatedir$ac_delim
16973 +includedir!$includedir$ac_delim
16974 +oldincludedir!$oldincludedir$ac_delim
16975 +docdir!$docdir$ac_delim
16976 +infodir!$infodir$ac_delim
16977 +htmldir!$htmldir$ac_delim
16978 +dvidir!$dvidir$ac_delim
16979 +pdfdir!$pdfdir$ac_delim
16980 +psdir!$psdir$ac_delim
16981 +libdir!$libdir$ac_delim
16982 +localedir!$localedir$ac_delim
16983 +mandir!$mandir$ac_delim
16984 +DEFS!$DEFS$ac_delim
16985 +ECHO_C!$ECHO_C$ac_delim
16986 +ECHO_N!$ECHO_N$ac_delim
16987 +ECHO_T!$ECHO_T$ac_delim
16988 +LIBS!$LIBS$ac_delim
16989 +build_alias!$build_alias$ac_delim
16990 +host_alias!$host_alias$ac_delim
16991 +target_alias!$target_alias$ac_delim
16992 +ac_configure_args!$ac_configure_args$ac_delim
16993 +CLICK_VERSION!$CLICK_VERSION$ac_delim
16994 +conf_auxdir!$conf_auxdir$ac_delim
16995 +build!$build$ac_delim
16996 +build_cpu!$build_cpu$ac_delim
16997 +build_vendor!$build_vendor$ac_delim
16998 +build_os!$build_os$ac_delim
16999 +host!$host$ac_delim
17000 +host_cpu!$host_cpu$ac_delim
17001 +host_vendor!$host_vendor$ac_delim
17002 +host_os!$host_os$ac_delim
17003 +target!$target$ac_delim
17004 +target_cpu!$target_cpu$ac_delim
17005 +target_vendor!$target_vendor$ac_delim
17006 +target_os!$target_os$ac_delim
17007 +CC!$CC$ac_delim
17008 +CXX!$CXX$ac_delim
17009 +CFLAGS!$CFLAGS$ac_delim
17010 +LDFLAGS!$LDFLAGS$ac_delim
17011 +CPPFLAGS!$CPPFLAGS$ac_delim
17012 +ac_ct_CC!$ac_ct_CC$ac_delim
17013 +EXEEXT!$EXEEXT$ac_delim
17014 +OBJEXT!$OBJEXT$ac_delim
17015 +DEPCFLAGS!$DEPCFLAGS$ac_delim
17016 +CFLAGS_NDEBUG!$CFLAGS_NDEBUG$ac_delim
17017 +CPP!$CPP$ac_delim
17018 +CXXFLAGS!$CXXFLAGS$ac_delim
17019 +ac_ct_CXX!$ac_ct_CXX$ac_delim
17020 +CXXFLAGS_NDEBUG!$CXXFLAGS_NDEBUG$ac_delim
17021 +CXXCPP!$CXXCPP$ac_delim
17022 +KERNEL_CC!$KERNEL_CC$ac_delim
17023 +KERNEL_CXX!$KERNEL_CXX$ac_delim
17024 +AR!$AR$ac_delim
17025 +LD!$LD$ac_delim
17026 +RANLIB!$RANLIB$ac_delim
17027 +STRIP!$STRIP$ac_delim
17028 +AR_CREATEFLAGS!$AR_CREATEFLAGS$ac_delim
17029 +linuxdir!$linuxdir$ac_delim
17030 +element_groups!$element_groups$ac_delim
17031 +freebsd_srcdir!$freebsd_srcdir$ac_delim
17032 +freebsd_includedir!$freebsd_includedir$ac_delim
17033 +LIB@&t@OBJS!$LIB@&t@OBJS$ac_delim
17034 +GREP!$GREP$ac_delim
17035 +EGREP!$EGREP$ac_delim
17036 +BUILD_CC!$BUILD_CC$ac_delim
17037 +BUILD_CXX!$BUILD_CXX$ac_delim
17038 +BUILD_AR!$BUILD_AR$ac_delim
17039 +BUILD_RANLIB!$BUILD_RANLIB$ac_delim
17040 +HOST_TOOLS!$HOST_TOOLS$ac_delim
17041 +DL_LIBS!$DL_LIBS$ac_delim
17042 +LDMODULEFLAGS!$LDMODULEFLAGS$ac_delim
17043 +BUILD_DL_LIBS!$BUILD_DL_LIBS$ac_delim
17044 +SOCKET_LIBS!$SOCKET_LIBS$ac_delim
17045 +EXTRA_DRIVER_OBJS!$EXTRA_DRIVER_OBJS$ac_delim
17046 +EXTRA_TOOL_OBJS!$EXTRA_TOOL_OBJS$ac_delim
17047 +LINUXMODULE_2_6!$LINUXMODULE_2_6$ac_delim
17048 +POSSIBLE_DRIVERS!$POSSIBLE_DRIVERS$ac_delim
17049 +DRIVERS!$DRIVERS$ac_delim
17050 +HAVE_USERLEVEL_DRIVER!$HAVE_USERLEVEL_DRIVER$ac_delim
17051 +HAVE_LINUXMODULE_DRIVER!$HAVE_LINUXMODULE_DRIVER$ac_delim
17052 +_ACEOF
17053 +
17054 +  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
17055 +    break
17056 +  elif $ac_last_try; then
17057 +    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
17058 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
17059 +   { (exit 1); exit 1; }; }
17060 +  else
17061 +    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
17062 +  fi
17063 +done
17064 +
17065 +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
17066 +if test -n "$ac_eof"; then
17067 +  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
17068 +  ac_eof=`expr $ac_eof + 1`
17069 +fi
17070 +
17071 +cat >>$CONFIG_STATUS <<_ACEOF
17072 +cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
17073 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
17074 +_ACEOF
17075 +sed '
17076 +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
17077 +s/^/s,@/; s/!/@,|#_!!_#|/
17078 +:n
17079 +t n
17080 +s/'"$ac_delim"'$/,g/; t
17081 +s/$/\\/; p
17082 +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
17083 +' >>$CONFIG_STATUS <conf$$subs.sed
17084 +rm -f conf$$subs.sed
17085 +cat >>$CONFIG_STATUS <<_ACEOF
17086 +CEOF$ac_eof
17087 +_ACEOF
17088 +
17089 +
17090 +ac_delim='%!_!# '
17091 +for ac_last_try in false false false false false :; do
17092 +  cat >conf$$subs.sed <<_ACEOF
17093 +HAVE_BSDMODULE_DRIVER!$HAVE_BSDMODULE_DRIVER$ac_delim
17094 +OTHER_TARGETS!$OTHER_TARGETS$ac_delim
17095 +TOOLDIRS!$TOOLDIRS$ac_delim
17096 +TOOL_TARGETS!$TOOL_TARGETS$ac_delim
17097 +PCAP_INCLUDES!$PCAP_INCLUDES$ac_delim
17098 +PCAP_LIBS!$PCAP_LIBS$ac_delim
17099 +PROPER_INCLUDES!$PROPER_INCLUDES$ac_delim
17100 +PROPER_LIBS!$PROPER_LIBS$ac_delim
17101 +XML2CLICK!$XML2CLICK$ac_delim
17102 +EXPAT_INCLUDES!$EXPAT_INCLUDES$ac_delim
17103 +EXPAT_LIBS!$EXPAT_LIBS$ac_delim
17104 +LINUX_CFLAGS!$LINUX_CFLAGS$ac_delim
17105 +INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
17106 +INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
17107 +INSTALL_DATA!$INSTALL_DATA$ac_delim
17108 +INSTALL_IF_CHANGED!$INSTALL_IF_CHANGED$ac_delim
17109 +CLICKINSTALL!$CLICKINSTALL$ac_delim
17110 +SUBMAKE!$SUBMAKE$ac_delim
17111 +GMAKE!$GMAKE$ac_delim
17112 +AUTOCONF!$AUTOCONF$ac_delim
17113 +perl5!$perl5$ac_delim
17114 +localperl5!$localperl5$ac_delim
17115 +PERL!$PERL$ac_delim
17116 +INSTALL_INFO!$INSTALL_INFO$ac_delim
17117 +MAKEINFO!$MAKEINFO$ac_delim
17118 +TEXI2DVI!$TEXI2DVI$ac_delim
17119 +POD2MAN!$POD2MAN$ac_delim
17120 +clickdatadir!$clickdatadir$ac_delim
17121 +provisions!$provisions$ac_delim
17122 +LTLIBOBJS!$LTLIBOBJS$ac_delim
17123 +_ACEOF
17124 +
17125 +  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 30; then
17126 +    break
17127 +  elif $ac_last_try; then
17128 +    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
17129 +echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
17130 +   { (exit 1); exit 1; }; }
17131 +  else
17132 +    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
17133 +  fi
17134 +done
17135 +
17136 +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
17137 +if test -n "$ac_eof"; then
17138 +  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
17139 +  ac_eof=`expr $ac_eof + 1`
17140 +fi
17141 +
17142 +cat >>$CONFIG_STATUS <<_ACEOF
17143 +cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
17144 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
17145 +_ACEOF
17146 +sed '
17147 +s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
17148 +s/^/s,@/; s/!/@,|#_!!_#|/
17149 +:n
17150 +t n
17151 +s/'"$ac_delim"'$/,g/; t
17152 +s/$/\\/; p
17153 +N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
17154 +' >>$CONFIG_STATUS <conf$$subs.sed
17155 +rm -f conf$$subs.sed
17156 +cat >>$CONFIG_STATUS <<_ACEOF
17157 +:end
17158 +s/|#_!!_#|//g
17159 +CEOF$ac_eof
17160 +_ACEOF
17161 +
17162 +
17163 +# VPATH may cause trouble with some makes, so we remove $(srcdir),
17164 +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
17165 +# trailing colons and then remove the whole line if VPATH becomes empty
17166 +# (actually we leave an empty line to preserve line numbers).
17167 +if test "x$srcdir" = x.; then
17168 +  ac_vpsub='/^[         ]*VPATH[        ]*=/{
17169 +s/:*\$(srcdir):*/:/
17170 +s/:*\${srcdir}:*/:/
17171 +s/:*@srcdir@:*/:/
17172 +s/^\([^=]*=[    ]*\):*/\1/
17173 +s/:*$//
17174 +s/^[^=]*=[      ]*$//
17175 +}'
17176 +fi
17177 +
17178 +cat >>$CONFIG_STATUS <<\_ACEOF
17179 +fi # test -n "$CONFIG_FILES"
17180 +
17181 +
17182 +for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
17183 +do
17184 +  case $ac_tag in
17185 +  :[FHLC]) ac_mode=$ac_tag; continue;;
17186 +  esac
17187 +  case $ac_mode$ac_tag in
17188 +  :[FHL]*:*);;
17189 +  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
17190 +echo "$as_me: error: Invalid tag $ac_tag." >&2;}
17191 +   { (exit 1); exit 1; }; };;
17192 +  :[FH]-) ac_tag=-:-;;
17193 +  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
17194 +  esac
17195 +  ac_save_IFS=$IFS
17196 +  IFS=:
17197 +  set x $ac_tag
17198 +  IFS=$ac_save_IFS
17199 +  shift
17200 +  ac_file=$1
17201 +  shift
17202 +
17203 +  case $ac_mode in
17204 +  :L) ac_source=$1;;
17205 +  :[FH])
17206 +    ac_file_inputs=
17207 +    for ac_f
17208 +    do
17209 +      case $ac_f in
17210 +      -) ac_f="$tmp/stdin";;
17211 +      *) # Look for the file first in the build tree, then in the source tree
17212 +        # (if the path is not absolute).  The absolute path cannot be DOS-style,
17213 +        # because $ac_f cannot contain `:'.
17214 +        test -f "$ac_f" ||
17215 +          case $ac_f in
17216 +          [\\/$]*) false;;
17217 +          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
17218 +          esac ||
17219 +          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
17220 +echo "$as_me: error: cannot find input file: $ac_f" >&2;}
17221 +   { (exit 1); exit 1; }; };;
17222 +      esac
17223 +      ac_file_inputs="$ac_file_inputs $ac_f"
17224 +    done
17225 +
17226 +    # Let's still pretend it is `configure' which instantiates (i.e., don't
17227 +    # use $as_me), people would be surprised to read:
17228 +    #    /* config.h.  Generated by config.status.  */
17229 +    configure_input="Generated from "`IFS=:
17230 +         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
17231 +    if test x"$ac_file" != x-; then
17232 +      configure_input="$ac_file.  $configure_input"
17233 +      { echo "$as_me:$LINENO: creating $ac_file" >&5
17234 +echo "$as_me: creating $ac_file" >&6;}
17235 +    fi
17236 +
17237 +    case $ac_tag in
17238 +    *:-:* | *:-) cat >"$tmp/stdin";;
17239 +    esac
17240 +    ;;
17241 +  esac
17242 +
17243 +  ac_dir=`$as_dirname -- "$ac_file" ||
17244 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
17245 +        X"$ac_file" : 'X\(//\)[^/]' \| \
17246 +        X"$ac_file" : 'X\(//\)$' \| \
17247 +        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
17248 +echo X"$ac_file" |
17249 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
17250 +           s//\1/
17251 +           q
17252 +         }
17253 +         /^X\(\/\/\)[^/].*/{
17254 +           s//\1/
17255 +           q
17256 +         }
17257 +         /^X\(\/\/\)$/{
17258 +           s//\1/
17259 +           q
17260 +         }
17261 +         /^X\(\/\).*/{
17262 +           s//\1/
17263 +           q
17264 +         }
17265 +         s/.*/./; q'`
17266 +  { as_dir="$ac_dir"
17267 +  case $as_dir in #(
17268 +  -*) as_dir=./$as_dir;;
17269 +  esac
17270 +  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
17271 +    as_dirs=
17272 +    while :; do
17273 +      case $as_dir in #(
17274 +      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
17275 +      *) as_qdir=$as_dir;;
17276 +      esac
17277 +      as_dirs="'$as_qdir' $as_dirs"
17278 +      as_dir=`$as_dirname -- "$as_dir" ||
17279 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
17280 +        X"$as_dir" : 'X\(//\)[^/]' \| \
17281 +        X"$as_dir" : 'X\(//\)$' \| \
17282 +        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
17283 +echo X"$as_dir" |
17284 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
17285 +           s//\1/
17286 +           q
17287 +         }
17288 +         /^X\(\/\/\)[^/].*/{
17289 +           s//\1/
17290 +           q
17291 +         }
17292 +         /^X\(\/\/\)$/{
17293 +           s//\1/
17294 +           q
17295 +         }
17296 +         /^X\(\/\).*/{
17297 +           s//\1/
17298 +           q
17299 +         }
17300 +         s/.*/./; q'`
17301 +      test -d "$as_dir" && break
17302 +    done
17303 +    test -z "$as_dirs" || eval "mkdir $as_dirs"
17304 +  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
17305 +echo "$as_me: error: cannot create directory $as_dir" >&2;}
17306 +   { (exit 1); exit 1; }; }; }
17307 +  ac_builddir=.
17308 +
17309 +case "$ac_dir" in
17310 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
17311 +*)
17312 +  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
17313 +  # A ".." for each directory in $ac_dir_suffix.
17314 +  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
17315 +  case $ac_top_builddir_sub in
17316 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
17317 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
17318 +  esac ;;
17319 +esac
17320 +ac_abs_top_builddir=$ac_pwd
17321 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
17322 +# for backward compatibility:
17323 +ac_top_builddir=$ac_top_build_prefix
17324 +
17325 +case $srcdir in
17326 +  .)  # We are building in place.
17327 +    ac_srcdir=.
17328 +    ac_top_srcdir=$ac_top_builddir_sub
17329 +    ac_abs_top_srcdir=$ac_pwd ;;
17330 +  [\\/]* | ?:[\\/]* )  # Absolute name.
17331 +    ac_srcdir=$srcdir$ac_dir_suffix;
17332 +    ac_top_srcdir=$srcdir
17333 +    ac_abs_top_srcdir=$srcdir ;;
17334 +  *) # Relative name.
17335 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
17336 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
17337 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
17338 +esac
17339 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
17340 +
17341 +
17342 +  case $ac_mode in
17343 +  :F)
17344 +  #
17345 +  # CONFIG_FILE
17346 +  #
17347 +
17348 +  case $INSTALL in
17349 +  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
17350 +  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
17351 +  esac
17352 +_ACEOF
17353 +
17354 +cat >>$CONFIG_STATUS <<\_ACEOF
17355 +# If the template does not know about datarootdir, expand it.
17356 +# FIXME: This hack should be removed a few years after 2.60.
17357 +ac_datarootdir_hack=; ac_datarootdir_seen=
17358 +
17359 +case `sed -n '/datarootdir/ {
17360 +  p
17361 +  q
17362 +}
17363 +/@datadir@/p
17364 +/@docdir@/p
17365 +/@infodir@/p
17366 +/@localedir@/p
17367 +/@mandir@/p
17368 +' $ac_file_inputs` in
17369 +*datarootdir*) ac_datarootdir_seen=yes;;
17370 +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
17371 +  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
17372 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
17373 +_ACEOF
17374 +cat >>$CONFIG_STATUS <<_ACEOF
17375 +  ac_datarootdir_hack='
17376 +  s&@datadir@&$datadir&g
17377 +  s&@docdir@&$docdir&g
17378 +  s&@infodir@&$infodir&g
17379 +  s&@localedir@&$localedir&g
17380 +  s&@mandir@&$mandir&g
17381 +    s&\\\${datarootdir}&$datarootdir&g' ;;
17382 +esac
17383 +_ACEOF
17384 +
17385 +# Neutralize VPATH when `$srcdir' = `.'.
17386 +# Shell code in configure.ac might set extrasub.
17387 +# FIXME: do we really want to maintain this feature?
17388 +cat >>$CONFIG_STATUS <<_ACEOF
17389 +  sed "$ac_vpsub
17390 +$extrasub
17391 +_ACEOF
17392 +cat >>$CONFIG_STATUS <<\_ACEOF
17393 +:t
17394 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
17395 +s&@configure_input@&$configure_input&;t t
17396 +s&@top_builddir@&$ac_top_builddir_sub&;t t
17397 +s&@srcdir@&$ac_srcdir&;t t
17398 +s&@abs_srcdir@&$ac_abs_srcdir&;t t
17399 +s&@top_srcdir@&$ac_top_srcdir&;t t
17400 +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
17401 +s&@builddir@&$ac_builddir&;t t
17402 +s&@abs_builddir@&$ac_abs_builddir&;t t
17403 +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
17404 +s&@INSTALL@&$ac_INSTALL&;t t
17405 +$ac_datarootdir_hack
17406 +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
17407 +
17408 +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
17409 +  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
17410 +  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
17411 +  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
17412 +which seems to be undefined.  Please make sure it is defined." >&5
17413 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
17414 +which seems to be undefined.  Please make sure it is defined." >&2;}
17415 +
17416 +  rm -f "$tmp/stdin"
17417 +  case $ac_file in
17418 +  -) cat "$tmp/out"; rm -f "$tmp/out";;
17419 +  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
17420 +  esac
17421 + ;;
17422 +  :H)
17423 +  #
17424 +  # CONFIG_HEADER
17425 +  #
17426 +_ACEOF
17427 +
17428 +# Transform confdefs.h into a sed script `conftest.defines', that
17429 +# substitutes the proper values into config.h.in to produce config.h.
17430 +rm -f conftest.defines conftest.tail
17431 +# First, append a space to every undef/define line, to ease matching.
17432 +echo 's/$/ /' >conftest.defines
17433 +# Then, protect against being on the right side of a sed subst, or in
17434 +# an unquoted here document, in config.status.  If some macros were
17435 +# called several times there might be several #defines for the same
17436 +# symbol, which is useless.  But do not sort them, since the last
17437 +# AC_DEFINE must be honored.
17438 +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
17439 +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
17440 +# NAME is the cpp macro being defined, VALUE is the value it is being given.
17441 +# PARAMS is the parameter list in the macro definition--in most cases, it's
17442 +# just an empty string.
17443 +ac_dA='s,^\\([  #]*\\)[^        ]*\\([  ]*'
17444 +ac_dB='\\)[     (].*,\\1define\\2'
17445 +ac_dC=' '
17446 +ac_dD=' ,'
17447 +
17448 +uniq confdefs.h |
17449 +  sed -n '
17450 +       t rset
17451 +       :rset
17452 +       s/^[     ]*#[    ]*define[       ][      ]*//
17453 +       t ok
17454 +       d
17455 +       :ok
17456 +       s/[\\&,]/\\&/g
17457 +       s/^\('"$ac_word_re"'\)\(([^()]*)\)[      ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
17458 +       s/^\('"$ac_word_re"'\)[  ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
17459 +  ' >>conftest.defines
17460 +
17461 +# Remove the space that was appended to ease matching.
17462 +# Then replace #undef with comments.  This is necessary, for
17463 +# example, in the case of _POSIX_SOURCE, which is predefined and required
17464 +# on some systems where configure will not decide to define it.
17465 +# (The regexp can be short, since the line contains either #define or #undef.)
17466 +echo 's/ $//
17467 +s,^[    #]*u.*,/* & */,' >>conftest.defines
17468 +
17469 +# Break up conftest.defines:
17470 +ac_max_sed_lines=50
17471 +
17472 +# First sed command is:         sed -f defines.sed $ac_file_inputs >"$tmp/out1"
17473 +# Second one is:        sed -f defines.sed "$tmp/out1" >"$tmp/out2"
17474 +# Third one will be:    sed -f defines.sed "$tmp/out2" >"$tmp/out1"
17475 +# et cetera.
17476 +ac_in='$ac_file_inputs'
17477 +ac_out='"$tmp/out1"'
17478 +ac_nxt='"$tmp/out2"'
17479 +
17480 +while :
17481 +do
17482 +  # Write a here document:
17483 +    cat >>$CONFIG_STATUS <<_ACEOF
17484 +    # First, check the format of the line:
17485 +    cat >"\$tmp/defines.sed" <<\\CEOF
17486 +/^[     ]*#[    ]*undef[        ][      ]*$ac_word_re[  ]*\$/b def
17487 +/^[     ]*#[    ]*define[       ][      ]*$ac_word_re[(         ]/b def
17488 +b
17489 +:def
17490 +_ACEOF
17491 +  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
17492 +  echo 'CEOF
17493 +    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
17494 +  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
17495 +  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
17496 +  grep . conftest.tail >/dev/null || break
17497 +  rm -f conftest.defines
17498 +  mv conftest.tail conftest.defines
17499 +done
17500 +rm -f conftest.defines conftest.tail
17501 +
17502 +echo "ac_result=$ac_in" >>$CONFIG_STATUS
17503 +cat >>$CONFIG_STATUS <<\_ACEOF
17504 +  if test x"$ac_file" != x-; then
17505 +    echo "/* $configure_input  */" >"$tmp/config.h"
17506 +    cat "$ac_result" >>"$tmp/config.h"
17507 +    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
17508 +      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
17509 +echo "$as_me: $ac_file is unchanged" >&6;}
17510 +    else
17511 +      rm -f $ac_file
17512 +      mv "$tmp/config.h" $ac_file
17513 +    fi
17514 +  else
17515 +    echo "/* $configure_input  */"
17516 +    cat "$ac_result"
17517 +  fi
17518 +  rm -f "$tmp/out12"
17519 + ;;
17520 +  
17521 +  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
17522 +echo "$as_me: executing $ac_file commands" >&6;}
17523 + ;;
17524 +  esac
17525 +
17526 +
17527 +  case $ac_file$ac_mode in
17528 +    "default-1":C) for ac_file in $CONFIG_HEADERS; do
17529 +    test $ac_file = include/click/config.h:config.h.in && echo > stamp-h
17530 +done
17531 +for ac_file in $CONFIG_FILES; do
17532 +    test $ac_file = click-buildtool && chmod +x click-buildtool
17533 +    test $ac_file = click-compile && chmod +x click-compile
17534 +    test $ac_file = installch && chmod +x installch
17535 +done ;;
17536 +
17537 +  esac
17538 +done # for ac_tag
17539 +
17540 +
17541 +{ (exit 0); exit 0; }
17542 +_ACEOF
17543 +chmod +x $CONFIG_STATUS
17544 +ac_clean_files=$ac_clean_files_save
17545 +
17546 +
17547 +# configure is writing to config.log, and then calls config.status.
17548 +# config.status does its own redirection, appending to config.log.
17549 +# Unfortunately, on DOS this fails, as config.log is still kept open
17550 +# by configure, so config.status won't be able to write to it; its
17551 +# output is simply discarded.  So we exec the FD to /dev/null,
17552 +# effectively closing config.log, so it can be properly (re)opened and
17553 +# appended to by config.status.  When coming back to configure, we
17554 +# need to make the FD available again.
17555 +if test "$no_create" != yes; then
17556 +  ac_cs_success=:
17557 +  ac_config_status_args=
17558 +  test "$silent" = yes &&
17559 +    ac_config_status_args="$ac_config_status_args --quiet"
17560 +  exec 5>/dev/null
17561 +  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
17562 +  exec 5>>config.log
17563 +  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
17564 +  # would make configure fail if this is the last instruction.
17565 +  $ac_cs_success || { (exit 1); exit 1; }
17566 +fi
17567 +
17568 diff -Nurb click-1.6.0/autom4te.cache/requests click-1.6.0-27/autom4te.cache/requests
17569 --- click-1.6.0/autom4te.cache/requests 1969-12-31 19:00:00.000000000 -0500
17570 +++ click-1.6.0-27/autom4te.cache/requests      2009-01-28 16:06:37.000000000 -0500
17571 @@ -0,0 +1,64 @@
17572 +# This file was generated.
17573 +# It contains the lists of macros which have been traced.
17574 +# It can be safely removed.
17575 +
17576 +@request = (
17577 +             bless( [
17578 +                      '0',
17579 +                      1,
17580 +                      [
17581 +                        '/usr/share/autoconf'
17582 +                      ],
17583 +                      [
17584 +                        '/usr/share/autoconf/autoconf/autoconf.m4f',
17585 +                        'aclocal.m4',
17586 +                        'configure.in'
17587 +                      ],
17588 +                      {
17589 +                        '_LT_AC_TAGCONFIG' => 1,
17590 +                        'AM_PROG_F77_C_O' => 1,
17591 +                        'AC_INIT' => 1,
17592 +                        'm4_pattern_forbid' => 1,
17593 +                        'AC_CANONICAL_TARGET' => 1,
17594 +                        'AC_SUBST' => 1,
17595 +                        'AC_CONFIG_LIBOBJ_DIR' => 1,
17596 +                        'AC_FC_SRCEXT' => 1,
17597 +                        'AC_CANONICAL_HOST' => 1,
17598 +                        'AC_PROG_LIBTOOL' => 1,
17599 +                        'AM_INIT_AUTOMAKE' => 1,
17600 +                        'AC_CONFIG_SUBDIRS' => 1,
17601 +                        'AM_AUTOMAKE_VERSION' => 1,
17602 +                        'LT_CONFIG_LTDL_DIR' => 1,
17603 +                        'AC_REQUIRE_AUX_FILE' => 1,
17604 +                        'AC_CONFIG_LINKS' => 1,
17605 +                        'm4_sinclude' => 1,
17606 +                        'LT_SUPPORTED_TAG' => 1,
17607 +                        'AM_MAINTAINER_MODE' => 1,
17608 +                        'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
17609 +                        '_m4_warn' => 1,
17610 +                        'AM_PROG_CXX_C_O' => 1,
17611 +                        'AM_ENABLE_MULTILIB' => 1,
17612 +                        'AC_CONFIG_FILES' => 1,
17613 +                        'include' => 1,
17614 +                        'LT_INIT' => 1,
17615 +                        'AM_GNU_GETTEXT' => 1,
17616 +                        'AC_LIBSOURCE' => 1,
17617 +                        'AM_PROG_FC_C_O' => 1,
17618 +                        'AC_CANONICAL_BUILD' => 1,
17619 +                        'AC_FC_FREEFORM' => 1,
17620 +                        'AH_OUTPUT' => 1,
17621 +                        '_AM_SUBST_NOTMAKE' => 1,
17622 +                        'AC_CONFIG_AUX_DIR' => 1,
17623 +                        'sinclude' => 1,
17624 +                        'm4_pattern_allow' => 1,
17625 +                        'AM_PROG_CC_C_O' => 1,
17626 +                        'AC_CANONICAL_SYSTEM' => 1,
17627 +                        'AM_CONDITIONAL' => 1,
17628 +                        'AC_CONFIG_HEADERS' => 1,
17629 +                        'AC_DEFINE_TRACE_LITERAL' => 1,
17630 +                        'm4_include' => 1,
17631 +                        'AC_SUBST_TRACE' => 1
17632 +                      }
17633 +                    ], 'Autom4te::Request' )
17634 +           );
17635 +
17636 diff -Nurb click-1.6.0/autom4te.cache/traces.0 click-1.6.0-27/autom4te.cache/traces.0
17637 --- click-1.6.0/autom4te.cache/traces.0 1969-12-31 19:00:00.000000000 -0500
17638 +++ click-1.6.0-27/autom4te.cache/traces.0      2009-01-27 12:14:43.000000000 -0500
17639 @@ -0,0 +1,984 @@
17640 +m4trace:aclocal.m4:14: -1- m4_include([m4/click.m4])
17641 +m4trace:configure.in:14: -1- AC_INIT([click], [1.6.0])
17642 +m4trace:configure.in:14: -1- m4_pattern_forbid([^_?A[CHUM]_])
17643 +m4trace:configure.in:14: -1- m4_pattern_forbid([_AC_])
17644 +m4trace:configure.in:14: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])
17645 +m4trace:configure.in:14: -1- m4_pattern_allow([^AS_FLAGS$])
17646 +m4trace:configure.in:14: -1- m4_pattern_forbid([^_?m4_])
17647 +m4trace:configure.in:14: -1- m4_pattern_forbid([^dnl$])
17648 +m4trace:configure.in:14: -1- m4_pattern_forbid([^_?AS_])
17649 +m4trace:configure.in:14: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
17650 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([SHELL])
17651 +m4trace:configure.in:14: -1- m4_pattern_allow([^SHELL$])
17652 +m4trace:configure.in:14: -1- AC_SUBST([PATH_SEPARATOR])
17653 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PATH_SEPARATOR])
17654 +m4trace:configure.in:14: -1- m4_pattern_allow([^PATH_SEPARATOR$])
17655 +m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
17656 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_NAME])
17657 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_NAME$])
17658 +m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
17659 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_TARNAME])
17660 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
17661 +m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
17662 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_VERSION])
17663 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_VERSION$])
17664 +m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
17665 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_STRING])
17666 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_STRING$])
17667 +m4trace:configure.in:14: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
17668 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT])
17669 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
17670 +m4trace:configure.in:14: -1- AC_SUBST([exec_prefix], [NONE])
17671 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([exec_prefix])
17672 +m4trace:configure.in:14: -1- m4_pattern_allow([^exec_prefix$])
17673 +m4trace:configure.in:14: -1- AC_SUBST([prefix], [NONE])
17674 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([prefix])
17675 +m4trace:configure.in:14: -1- m4_pattern_allow([^prefix$])
17676 +m4trace:configure.in:14: -1- AC_SUBST([program_transform_name], [s,x,x,])
17677 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([program_transform_name])
17678 +m4trace:configure.in:14: -1- m4_pattern_allow([^program_transform_name$])
17679 +m4trace:configure.in:14: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
17680 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([bindir])
17681 +m4trace:configure.in:14: -1- m4_pattern_allow([^bindir$])
17682 +m4trace:configure.in:14: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
17683 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([sbindir])
17684 +m4trace:configure.in:14: -1- m4_pattern_allow([^sbindir$])
17685 +m4trace:configure.in:14: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
17686 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([libexecdir])
17687 +m4trace:configure.in:14: -1- m4_pattern_allow([^libexecdir$])
17688 +m4trace:configure.in:14: -1- AC_SUBST([datarootdir], ['${prefix}/share'])
17689 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([datarootdir])
17690 +m4trace:configure.in:14: -1- m4_pattern_allow([^datarootdir$])
17691 +m4trace:configure.in:14: -1- AC_SUBST([datadir], ['${datarootdir}'])
17692 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([datadir])
17693 +m4trace:configure.in:14: -1- m4_pattern_allow([^datadir$])
17694 +m4trace:configure.in:14: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
17695 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([sysconfdir])
17696 +m4trace:configure.in:14: -1- m4_pattern_allow([^sysconfdir$])
17697 +m4trace:configure.in:14: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
17698 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([sharedstatedir])
17699 +m4trace:configure.in:14: -1- m4_pattern_allow([^sharedstatedir$])
17700 +m4trace:configure.in:14: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
17701 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([localstatedir])
17702 +m4trace:configure.in:14: -1- m4_pattern_allow([^localstatedir$])
17703 +m4trace:configure.in:14: -1- AC_SUBST([includedir], ['${prefix}/include'])
17704 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([includedir])
17705 +m4trace:configure.in:14: -1- m4_pattern_allow([^includedir$])
17706 +m4trace:configure.in:14: -1- AC_SUBST([oldincludedir], ['/usr/include'])
17707 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([oldincludedir])
17708 +m4trace:configure.in:14: -1- m4_pattern_allow([^oldincludedir$])
17709 +m4trace:configure.in:14: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME],
17710 +                                    ['${datarootdir}/doc/${PACKAGE_TARNAME}'],
17711 +                                    ['${datarootdir}/doc/${PACKAGE}'])])
17712 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([docdir])
17713 +m4trace:configure.in:14: -1- m4_pattern_allow([^docdir$])
17714 +m4trace:configure.in:14: -1- AC_SUBST([infodir], ['${datarootdir}/info'])
17715 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([infodir])
17716 +m4trace:configure.in:14: -1- m4_pattern_allow([^infodir$])
17717 +m4trace:configure.in:14: -1- AC_SUBST([htmldir], ['${docdir}'])
17718 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([htmldir])
17719 +m4trace:configure.in:14: -1- m4_pattern_allow([^htmldir$])
17720 +m4trace:configure.in:14: -1- AC_SUBST([dvidir], ['${docdir}'])
17721 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([dvidir])
17722 +m4trace:configure.in:14: -1- m4_pattern_allow([^dvidir$])
17723 +m4trace:configure.in:14: -1- AC_SUBST([pdfdir], ['${docdir}'])
17724 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([pdfdir])
17725 +m4trace:configure.in:14: -1- m4_pattern_allow([^pdfdir$])
17726 +m4trace:configure.in:14: -1- AC_SUBST([psdir], ['${docdir}'])
17727 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([psdir])
17728 +m4trace:configure.in:14: -1- m4_pattern_allow([^psdir$])
17729 +m4trace:configure.in:14: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
17730 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([libdir])
17731 +m4trace:configure.in:14: -1- m4_pattern_allow([^libdir$])
17732 +m4trace:configure.in:14: -1- AC_SUBST([localedir], ['${datarootdir}/locale'])
17733 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([localedir])
17734 +m4trace:configure.in:14: -1- m4_pattern_allow([^localedir$])
17735 +m4trace:configure.in:14: -1- AC_SUBST([mandir], ['${datarootdir}/man'])
17736 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([mandir])
17737 +m4trace:configure.in:14: -1- m4_pattern_allow([^mandir$])
17738 +m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
17739 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_NAME$])
17740 +m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
17741 +#undef PACKAGE_NAME])
17742 +m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
17743 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_TARNAME$])
17744 +m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
17745 +#undef PACKAGE_TARNAME])
17746 +m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
17747 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_VERSION$])
17748 +m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
17749 +#undef PACKAGE_VERSION])
17750 +m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
17751 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_STRING$])
17752 +m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
17753 +#undef PACKAGE_STRING])
17754 +m4trace:configure.in:14: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
17755 +m4trace:configure.in:14: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$])
17756 +m4trace:configure.in:14: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
17757 +#undef PACKAGE_BUGREPORT])
17758 +m4trace:configure.in:14: -1- AC_SUBST([DEFS])
17759 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([DEFS])
17760 +m4trace:configure.in:14: -1- m4_pattern_allow([^DEFS$])
17761 +m4trace:configure.in:14: -1- AC_SUBST([ECHO_C])
17762 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_C])
17763 +m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_C$])
17764 +m4trace:configure.in:14: -1- AC_SUBST([ECHO_N])
17765 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_N])
17766 +m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_N$])
17767 +m4trace:configure.in:14: -1- AC_SUBST([ECHO_T])
17768 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([ECHO_T])
17769 +m4trace:configure.in:14: -1- m4_pattern_allow([^ECHO_T$])
17770 +m4trace:configure.in:14: -1- AC_SUBST([LIBS])
17771 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([LIBS])
17772 +m4trace:configure.in:14: -1- m4_pattern_allow([^LIBS$])
17773 +m4trace:configure.in:14: -1- AC_SUBST([build_alias])
17774 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([build_alias])
17775 +m4trace:configure.in:14: -1- m4_pattern_allow([^build_alias$])
17776 +m4trace:configure.in:14: -1- AC_SUBST([host_alias])
17777 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([host_alias])
17778 +m4trace:configure.in:14: -1- m4_pattern_allow([^host_alias$])
17779 +m4trace:configure.in:14: -1- AC_SUBST([target_alias])
17780 +m4trace:configure.in:14: -1- AC_SUBST_TRACE([target_alias])
17781 +m4trace:configure.in:14: -1- m4_pattern_allow([^target_alias$])
17782 +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])
17783 +m4trace:configure.in:21: -1- AC_SUBST([ac_configure_args])
17784 +m4trace:configure.in:21: -1- AC_SUBST_TRACE([ac_configure_args])
17785 +m4trace:configure.in:21: -1- m4_pattern_allow([^ac_configure_args$])
17786 +m4trace:configure.in:22: -1- AC_DEFINE_TRACE_LITERAL([CLICK_VERSION])
17787 +m4trace:configure.in:22: -1- m4_pattern_allow([^CLICK_VERSION$])
17788 +m4trace:configure.in:23: -1- AC_SUBST([CLICK_VERSION])
17789 +m4trace:configure.in:23: -1- AC_SUBST_TRACE([CLICK_VERSION])
17790 +m4trace:configure.in:23: -1- m4_pattern_allow([^CLICK_VERSION$])
17791 +m4trace:configure.in:25: -1- AC_SUBST([conf_auxdir])
17792 +m4trace:configure.in:25: -1- AC_SUBST_TRACE([conf_auxdir])
17793 +m4trace:configure.in:25: -1- m4_pattern_allow([^conf_auxdir$])
17794 +m4trace:configure.in:28: -1- AC_CANONICAL_SYSTEM
17795 +m4trace:configure.in:28: -1- _m4_warn([obsolete], [The macro `AC_CANONICAL_SYSTEM' is obsolete.
17796 +You should run autoupdate.], [../../lib/autoconf/general.m4:1747: AC_CANONICAL_SYSTEM is expanded from...
17797 +configure.in:28: the top level])
17798 +m4trace:configure.in:28: -1- AC_CANONICAL_TARGET
17799 +m4trace:configure.in:28: -1- AC_CANONICAL_HOST
17800 +m4trace:configure.in:28: -1- AC_CANONICAL_BUILD
17801 +m4trace:configure.in:28: -1- AC_REQUIRE_AUX_FILE([config.sub])
17802 +m4trace:configure.in:28: -1- AC_REQUIRE_AUX_FILE([config.guess])
17803 +m4trace:configure.in:28: -1- AC_SUBST([build], [$ac_cv_build])
17804 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([build])
17805 +m4trace:configure.in:28: -1- m4_pattern_allow([^build$])
17806 +m4trace:configure.in:28: -1- AC_SUBST([build_cpu], [$[1]])
17807 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_cpu])
17808 +m4trace:configure.in:28: -1- m4_pattern_allow([^build_cpu$])
17809 +m4trace:configure.in:28: -1- AC_SUBST([build_vendor], [$[2]])
17810 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_vendor])
17811 +m4trace:configure.in:28: -1- m4_pattern_allow([^build_vendor$])
17812 +m4trace:configure.in:28: -1- AC_SUBST([build_os])
17813 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([build_os])
17814 +m4trace:configure.in:28: -1- m4_pattern_allow([^build_os$])
17815 +m4trace:configure.in:28: -1- AC_SUBST([host], [$ac_cv_host])
17816 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([host])
17817 +m4trace:configure.in:28: -1- m4_pattern_allow([^host$])
17818 +m4trace:configure.in:28: -1- AC_SUBST([host_cpu], [$[1]])
17819 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_cpu])
17820 +m4trace:configure.in:28: -1- m4_pattern_allow([^host_cpu$])
17821 +m4trace:configure.in:28: -1- AC_SUBST([host_vendor], [$[2]])
17822 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_vendor])
17823 +m4trace:configure.in:28: -1- m4_pattern_allow([^host_vendor$])
17824 +m4trace:configure.in:28: -1- AC_SUBST([host_os])
17825 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([host_os])
17826 +m4trace:configure.in:28: -1- m4_pattern_allow([^host_os$])
17827 +m4trace:configure.in:28: -1- AC_SUBST([target], [$ac_cv_target])
17828 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([target])
17829 +m4trace:configure.in:28: -1- m4_pattern_allow([^target$])
17830 +m4trace:configure.in:28: -1- AC_SUBST([target_cpu], [$[1]])
17831 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_cpu])
17832 +m4trace:configure.in:28: -1- m4_pattern_allow([^target_cpu$])
17833 +m4trace:configure.in:28: -1- AC_SUBST([target_vendor], [$[2]])
17834 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_vendor])
17835 +m4trace:configure.in:28: -1- m4_pattern_allow([^target_vendor$])
17836 +m4trace:configure.in:28: -1- AC_SUBST([target_os])
17837 +m4trace:configure.in:28: -1- AC_SUBST_TRACE([target_os])
17838 +m4trace:configure.in:28: -1- m4_pattern_allow([^target_os$])
17839 +m4trace:configure.in:31: -1- AC_SUBST([CC])
17840 +m4trace:configure.in:31: -1- AC_SUBST_TRACE([CC])
17841 +m4trace:configure.in:31: -1- m4_pattern_allow([^CC$])
17842 +m4trace:configure.in:32: -1- AC_SUBST([CXX])
17843 +m4trace:configure.in:32: -1- AC_SUBST_TRACE([CXX])
17844 +m4trace:configure.in:32: -1- m4_pattern_allow([^CXX$])
17845 +m4trace:configure.in:34: -1- AC_SUBST([CC])
17846 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC])
17847 +m4trace:configure.in:34: -1- m4_pattern_allow([^CC$])
17848 +m4trace:configure.in:34: -1- AC_SUBST([CFLAGS])
17849 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CFLAGS])
17850 +m4trace:configure.in:34: -1- m4_pattern_allow([^CFLAGS$])
17851 +m4trace:configure.in:34: -1- AC_SUBST([LDFLAGS])
17852 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([LDFLAGS])
17853 +m4trace:configure.in:34: -1- m4_pattern_allow([^LDFLAGS$])
17854 +m4trace:configure.in:34: -1- AC_SUBST([LIBS])
17855 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([LIBS])
17856 +m4trace:configure.in:34: -1- m4_pattern_allow([^LIBS$])
17857 +m4trace:configure.in:34: -1- AC_SUBST([CPPFLAGS])
17858 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CPPFLAGS])
17859 +m4trace:configure.in:34: -1- m4_pattern_allow([^CPPFLAGS$])
17860 +m4trace:configure.in:34: -1- AC_SUBST([CC])
17861 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC])
17862 +m4trace:configure.in:34: -1- m4_pattern_allow([^CC$])
17863 +m4trace:configure.in:34: -1- AC_SUBST([CC])
17864 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC])
17865 +m4trace:configure.in:34: -1- m4_pattern_allow([^CC$])
17866 +m4trace:configure.in:34: -1- AC_SUBST([CC])
17867 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC])
17868 +m4trace:configure.in:34: -1- m4_pattern_allow([^CC$])
17869 +m4trace:configure.in:34: -1- AC_SUBST([CC])
17870 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CC])
17871 +m4trace:configure.in:34: -1- m4_pattern_allow([^CC$])
17872 +m4trace:configure.in:34: -1- AC_SUBST([ac_ct_CC])
17873 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([ac_ct_CC])
17874 +m4trace:configure.in:34: -1- m4_pattern_allow([^ac_ct_CC$])
17875 +m4trace:configure.in:34: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext])
17876 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([EXEEXT])
17877 +m4trace:configure.in:34: -1- m4_pattern_allow([^EXEEXT$])
17878 +m4trace:configure.in:34: -1- AC_SUBST([OBJEXT], [$ac_cv_objext])
17879 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([OBJEXT])
17880 +m4trace:configure.in:34: -1- m4_pattern_allow([^OBJEXT$])
17881 +m4trace:configure.in:34: -1- AC_SUBST([DEPCFLAGS])
17882 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([DEPCFLAGS])
17883 +m4trace:configure.in:34: -1- m4_pattern_allow([^DEPCFLAGS$])
17884 +m4trace:configure.in:34: -1- AC_SUBST([CFLAGS_NDEBUG])
17885 +m4trace:configure.in:34: -1- AC_SUBST_TRACE([CFLAGS_NDEBUG])
17886 +m4trace:configure.in:34: -1- m4_pattern_allow([^CFLAGS_NDEBUG$])
17887 +m4trace:configure.in:35: -1- AC_SUBST([CPP])
17888 +m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPP])
17889 +m4trace:configure.in:35: -1- m4_pattern_allow([^CPP$])
17890 +m4trace:configure.in:35: -1- AC_SUBST([CPPFLAGS])
17891 +m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPPFLAGS])
17892 +m4trace:configure.in:35: -1- m4_pattern_allow([^CPPFLAGS$])
17893 +m4trace:configure.in:35: -1- AC_SUBST([CPP])
17894 +m4trace:configure.in:35: -1- AC_SUBST_TRACE([CPP])
17895 +m4trace:configure.in:35: -1- m4_pattern_allow([^CPP$])
17896 +m4trace:configure.in:36: -1- AH_OUTPUT([inline], [/* Define to `__inline__\' or `__inline\' if that\'s what the C compiler
17897 +   calls it, or to nothing if \'inline\' is not supported under any name.  */
17898 +#ifndef __cplusplus
17899 +#undef inline
17900 +#endif])
17901 +m4trace:configure.in:38: -1- AC_SUBST([CXX])
17902 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXX])
17903 +m4trace:configure.in:38: -1- m4_pattern_allow([^CXX$])
17904 +m4trace:configure.in:38: -1- AC_SUBST([CXXFLAGS])
17905 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXXFLAGS])
17906 +m4trace:configure.in:38: -1- m4_pattern_allow([^CXXFLAGS$])
17907 +m4trace:configure.in:38: -1- AC_SUBST([LDFLAGS])
17908 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([LDFLAGS])
17909 +m4trace:configure.in:38: -1- m4_pattern_allow([^LDFLAGS$])
17910 +m4trace:configure.in:38: -1- AC_SUBST([LIBS])
17911 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([LIBS])
17912 +m4trace:configure.in:38: -1- m4_pattern_allow([^LIBS$])
17913 +m4trace:configure.in:38: -1- AC_SUBST([CPPFLAGS])
17914 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([CPPFLAGS])
17915 +m4trace:configure.in:38: -1- m4_pattern_allow([^CPPFLAGS$])
17916 +m4trace:configure.in:38: -1- AC_SUBST([CXX])
17917 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXX])
17918 +m4trace:configure.in:38: -1- m4_pattern_allow([^CXX$])
17919 +m4trace:configure.in:38: -1- AC_SUBST([ac_ct_CXX])
17920 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([ac_ct_CXX])
17921 +m4trace:configure.in:38: -1- m4_pattern_allow([^ac_ct_CXX$])
17922 +m4trace:configure.in:38: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
17923 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
17924 +m4/click.m4:140: CLICK_PROG_CXX is expanded from...
17925 +configure.in:38: the top level])
17926 +m4trace:configure.in:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NEW_HDR])
17927 +m4trace:configure.in:38: -1- m4_pattern_allow([^HAVE_NEW_HDR$])
17928 +m4trace:configure.in:38: -1- AH_OUTPUT([HAVE_NEW_HDR], [/* Define if <new> exists and works. */
17929 +#undef HAVE_NEW_HDR])
17930 +m4trace:configure.in:38: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NEW_H])
17931 +m4trace:configure.in:38: -1- m4_pattern_allow([^HAVE_NEW_H$])
17932 +m4trace:configure.in:38: -1- AH_OUTPUT([HAVE_NEW_H], [/* Define if <new.h> exists and works. */
17933 +#undef HAVE_NEW_H])
17934 +m4trace:configure.in:38: -1- AC_SUBST([CXXFLAGS_NDEBUG])
17935 +m4trace:configure.in:38: -1- AC_SUBST_TRACE([CXXFLAGS_NDEBUG])
17936 +m4trace:configure.in:38: -1- m4_pattern_allow([^CXXFLAGS_NDEBUG$])
17937 +m4trace:configure.in:39: -1- AC_SUBST([CXXCPP])
17938 +m4trace:configure.in:39: -1- AC_SUBST_TRACE([CXXCPP])
17939 +m4trace:configure.in:39: -1- m4_pattern_allow([^CXXCPP$])
17940 +m4trace:configure.in:39: -1- AC_SUBST([CPPFLAGS])
17941 +m4trace:configure.in:39: -1- AC_SUBST_TRACE([CPPFLAGS])
17942 +m4trace:configure.in:39: -1- m4_pattern_allow([^CPPFLAGS$])
17943 +m4trace:configure.in:39: -1- AC_SUBST([CXXCPP])
17944 +m4trace:configure.in:39: -1- AC_SUBST_TRACE([CXXCPP])
17945 +m4trace:configure.in:39: -1- m4_pattern_allow([^CXXCPP$])
17946 +m4trace:configure.in:41: -1- AC_SUBST([KERNEL_CC])
17947 +m4trace:configure.in:41: -1- AC_SUBST_TRACE([KERNEL_CC])
17948 +m4trace:configure.in:41: -1- m4_pattern_allow([^KERNEL_CC$])
17949 +m4trace:configure.in:42: -1- AC_SUBST([KERNEL_CXX])
17950 +m4trace:configure.in:42: -1- AC_SUBST_TRACE([KERNEL_CXX])
17951 +m4trace:configure.in:42: -1- m4_pattern_allow([^KERNEL_CXX$])
17952 +m4trace:configure.in:45: -1- AC_SUBST([AR])
17953 +m4trace:configure.in:45: -1- AC_SUBST_TRACE([AR])
17954 +m4trace:configure.in:45: -1- m4_pattern_allow([^AR$])
17955 +m4trace:configure.in:46: -1- AC_SUBST([LD])
17956 +m4trace:configure.in:46: -1- AC_SUBST_TRACE([LD])
17957 +m4trace:configure.in:46: -1- m4_pattern_allow([^LD$])
17958 +m4trace:configure.in:47: -1- AC_SUBST([RANLIB])
17959 +m4trace:configure.in:47: -1- AC_SUBST_TRACE([RANLIB])
17960 +m4trace:configure.in:47: -1- m4_pattern_allow([^RANLIB$])
17961 +m4trace:configure.in:48: -1- AC_SUBST([STRIP])
17962 +m4trace:configure.in:48: -1- AC_SUBST_TRACE([STRIP])
17963 +m4trace:configure.in:48: -1- m4_pattern_allow([^STRIP$])
17964 +m4trace:configure.in:51: -1- AC_SUBST([conf_auxdir])
17965 +m4trace:configure.in:51: -1- AC_SUBST_TRACE([conf_auxdir])
17966 +m4trace:configure.in:51: -1- m4_pattern_allow([^conf_auxdir$])
17967 +m4trace:configure.in:54: -1- AC_SUBST([AR_CREATEFLAGS])
17968 +m4trace:configure.in:54: -1- AC_SUBST_TRACE([AR_CREATEFLAGS])
17969 +m4trace:configure.in:54: -1- m4_pattern_allow([^AR_CREATEFLAGS$])
17970 +m4trace:configure.in:67: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USER_MULTITHREAD])
17971 +m4trace:configure.in:67: -1- m4_pattern_allow([^HAVE_USER_MULTITHREAD$])
17972 +m4trace:configure.in:82: -1- AC_DEFINE_TRACE_LITERAL([NUM_CLICK_CPUS])
17973 +m4trace:configure.in:82: -1- m4_pattern_allow([^NUM_CLICK_CPUS$])
17974 +m4trace:configure.in:83: -1- AC_DEFINE_TRACE_LITERAL([__MTCLICK__])
17975 +m4trace:configure.in:83: -1- m4_pattern_allow([^__MTCLICK__$])
17976 +m4trace:configure.in:87: -1- AC_DEFINE_TRACE_LITERAL([NUM_CLICK_CPUS])
17977 +m4trace:configure.in:87: -1- m4_pattern_allow([^NUM_CLICK_CPUS$])
17978 +m4trace:configure.in:92: -1- AC_DEFINE_TRACE_LITERAL([CLICK_WARP9])
17979 +m4trace:configure.in:92: -1- m4_pattern_allow([^CLICK_WARP9$])
17980 +m4trace:configure.in:95: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICKFS])
17981 +m4trace:configure.in:95: -1- m4_pattern_allow([^HAVE_CLICKFS$])
17982 +m4trace:configure.in:99: -1- AC_DEFINE_TRACE_LITERAL([HAVE_KERNEL_ASSERT])
17983 +m4trace:configure.in:99: -1- m4_pattern_allow([^HAVE_KERNEL_ASSERT$])
17984 +m4trace:configure.in:105: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ADAPTIVE_SCHEDULER])
17985 +m4trace:configure.in:105: -1- m4_pattern_allow([^HAVE_ADAPTIVE_SCHEDULER$])
17986 +m4trace:configure.in:177: -1- AC_SUBST([linuxdir])
17987 +m4trace:configure.in:177: -1- AC_SUBST_TRACE([linuxdir])
17988 +m4trace:configure.in:177: -1- m4_pattern_allow([^linuxdir$])
17989 +m4trace:configure.in:178: -1- AC_DEFINE_TRACE_LITERAL([LINUX_SRCDIR])
17990 +m4trace:configure.in:178: -1- m4_pattern_allow([^LINUX_SRCDIR$])
17991 +m4trace:configure.in:190: -1- AC_SUBST([element_groups])
17992 +m4trace:configure.in:190: -1- AC_SUBST_TRACE([element_groups])
17993 +m4trace:configure.in:190: -1- m4_pattern_allow([^element_groups$])
17994 +m4trace:configure.in:208: -2- AC_DEFINE_TRACE_LITERAL([HAVE_IP6])
17995 +m4trace:configure.in:208: -2- m4_pattern_allow([^HAVE_IP6$])
17996 +m4trace:configure.in:209: -2- AC_DEFINE_TRACE_LITERAL([HAVE_IPSEC])
17997 +m4trace:configure.in:209: -2- m4_pattern_allow([^HAVE_IPSEC$])
17998 +m4trace:configure.in:278: -1- AC_SUBST([freebsd_srcdir])
17999 +m4trace:configure.in:278: -1- AC_SUBST_TRACE([freebsd_srcdir])
18000 +m4trace:configure.in:278: -1- m4_pattern_allow([^freebsd_srcdir$])
18001 +m4trace:configure.in:279: -1- AC_SUBST([freebsd_includedir])
18002 +m4trace:configure.in:279: -1- AC_SUBST_TRACE([freebsd_includedir])
18003 +m4trace:configure.in:279: -1- m4_pattern_allow([^freebsd_includedir$])
18004 +m4trace:configure.in:280: -1- AC_DEFINE_TRACE_LITERAL([FREEBSD_INCLUDEDIR])
18005 +m4trace:configure.in:280: -1- m4_pattern_allow([^FREEBSD_INCLUDEDIR$])
18006 +m4trace:configure.in:298: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18007 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18008 +configure.in:298: the top level])
18009 +m4trace:configure.in:299: -1- AC_LIBSOURCE([strerror.c])
18010 +m4trace:configure.in:299: -1- AH_OUTPUT([HAVE_STRERROR], [/* Define to 1 if you have the `strerror\' function. */
18011 +#undef HAVE_STRERROR])
18012 +m4trace:configure.in:299: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS $ac_func.$ac_objext"])
18013 +m4trace:configure.in:299: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
18014 +m4trace:configure.in:299: -1- m4_pattern_allow([^LIB@&t@OBJS$])
18015 +m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
18016 +#undef HAVE_SNPRINTF])
18017 +m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_STRTOUL], [/* Define to 1 if you have the `strtoul\' function. */
18018 +#undef HAVE_STRTOUL])
18019 +m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_TCGETPGRP], [/* Define to 1 if you have the `tcgetpgrp\' function. */
18020 +#undef HAVE_TCGETPGRP])
18021 +m4trace:configure.in:300: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
18022 +#undef HAVE_VSNPRINTF])
18023 +m4trace:configure.in:301: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18024 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18025 +configure.in:301: the top level])
18026 +m4trace:configure.in:310: -1- AC_SUBST([GREP])
18027 +m4trace:configure.in:310: -1- AC_SUBST_TRACE([GREP])
18028 +m4trace:configure.in:310: -1- m4_pattern_allow([^GREP$])
18029 +m4trace:configure.in:310: -1- AC_SUBST([GREP])
18030 +m4trace:configure.in:310: -1- AC_SUBST_TRACE([GREP])
18031 +m4trace:configure.in:310: -1- m4_pattern_allow([^GREP$])
18032 +m4trace:configure.in:310: -1- AC_SUBST([EGREP])
18033 +m4trace:configure.in:310: -1- AC_SUBST_TRACE([EGREP])
18034 +m4trace:configure.in:310: -1- m4_pattern_allow([^EGREP$])
18035 +m4trace:configure.in:310: -1- AC_SUBST([EGREP])
18036 +m4trace:configure.in:310: -1- AC_SUBST_TRACE([EGREP])
18037 +m4trace:configure.in:310: -1- m4_pattern_allow([^EGREP$])
18038 +m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS])
18039 +m4trace:configure.in:310: -1- m4_pattern_allow([^STDC_HEADERS$])
18040 +m4trace:configure.in:310: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */
18041 +#undef STDC_HEADERS])
18042 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the <sys/types.h> header file. */
18043 +#undef HAVE_SYS_TYPES_H])
18044 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the <sys/stat.h> header file. */
18045 +#undef HAVE_SYS_STAT_H])
18046 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
18047 +#undef HAVE_STDLIB_H])
18048 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the <string.h> header file. */
18049 +#undef HAVE_STRING_H])
18050 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the <memory.h> header file. */
18051 +#undef HAVE_MEMORY_H])
18052 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
18053 +#undef HAVE_STRINGS_H])
18054 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
18055 +#undef HAVE_INTTYPES_H])
18056 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the <stdint.h> header file. */
18057 +#undef HAVE_STDINT_H])
18058 +m4trace:configure.in:310: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
18059 +#undef HAVE_UNISTD_H])
18060 +m4trace:configure.in:310: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_INT])
18061 +m4trace:configure.in:310: -1- m4_pattern_allow([^SIZEOF_INT$])
18062 +m4trace:configure.in:310: -1- AH_OUTPUT([SIZEOF_INT], [/* The size of `int\', as computed by sizeof. */
18063 +#undef SIZEOF_INT])
18064 +m4trace:configure.in:311: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG])
18065 +m4trace:configure.in:311: -1- m4_pattern_allow([^SIZEOF_LONG$])
18066 +m4trace:configure.in:311: -1- AH_OUTPUT([SIZEOF_LONG], [/* The size of `long\', as computed by sizeof. */
18067 +#undef SIZEOF_LONG])
18068 +m4trace:configure.in:312: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the <inttypes.h> header file. */
18069 +#undef HAVE_INTTYPES_H])
18070 +m4trace:configure.in:312: -1- AC_DEFINE_TRACE_LITERAL([HAVE_U_INT_TYPES])
18071 +m4trace:configure.in:312: -1- m4_pattern_allow([^HAVE_U_INT_TYPES$])
18072 +m4trace:configure.in:312: -1- AH_OUTPUT([HAVE_U_INT_TYPES], [/* Define if you have u_intXX_t types but not uintXX_t types. */
18073 +#undef HAVE_U_INT_TYPES])
18074 +m4trace:configure.in:313: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INDIFFERENT_ALIGNMENT])
18075 +m4trace:configure.in:313: -1- m4_pattern_allow([^HAVE_INDIFFERENT_ALIGNMENT$])
18076 +m4trace:configure.in:313: -1- AH_OUTPUT([HAVE_INDIFFERENT_ALIGNMENT], [/* Define if the machine is indifferent to alignment. */
18077 +#undef HAVE_INDIFFERENT_ALIGNMENT])
18078 +m4trace:configure.in:315: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_LONG_LONG])
18079 +m4trace:configure.in:315: -1- m4_pattern_allow([^SIZEOF_LONG_LONG$])
18080 +m4trace:configure.in:315: -1- AH_OUTPUT([SIZEOF_LONG_LONG], [/* The size of `long long\', as computed by sizeof. */
18081 +#undef SIZEOF_LONG_LONG])
18082 +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LONG_LONG])
18083 +m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_LONG_LONG$])
18084 +m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_LONG_LONG], [/* Define to 1 if the system has the type `long long\'. */
18085 +#undef HAVE_LONG_LONG])
18086 +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_TYPES])
18087 +m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_TYPES$])
18088 +m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_INT64_TYPES], [/* Define if 64-bit integer types are enabled. */
18089 +#undef HAVE_INT64_TYPES])
18090 +m4trace:configure.in:316: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18091 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18092 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18093 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18094 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18095 +m4/click.m4:580: CLICK_CHECK_INT64_TYPES is expanded from...
18096 +configure.in:316: the top level])
18097 +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_USERLEVEL])
18098 +m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_USERLEVEL$])
18099 +m4trace:configure.in:316: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_USERLEVEL], [/* Define if \'int64_t\' is typedefed to \'long\' at user level. */
18100 +#undef HAVE_INT64_IS_LONG_USERLEVEL])
18101 +m4trace:configure.in:316: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18102 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18103 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18104 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18105 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18106 +m4/click.m4:580: CLICK_CHECK_INT64_TYPES is expanded from...
18107 +configure.in:316: the top level])
18108 +m4trace:configure.in:316: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LONG_USERLEVEL])
18109 +m4trace:configure.in:316: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LONG_USERLEVEL$])
18110 +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. */
18111 +#undef HAVE_INT64_IS_LONG_LONG_USERLEVEL])
18112 +m4trace:configure.in:318: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_STRUCT_TIMEVAL])
18113 +m4trace:configure.in:318: -1- m4_pattern_allow([^SIZEOF_STRUCT_TIMEVAL$])
18114 +m4trace:configure.in:318: -1- AH_OUTPUT([SIZEOF_STRUCT_TIMEVAL], [/* The size of `struct timeval\', as computed by sizeof. */
18115 +#undef SIZEOF_STRUCT_TIMEVAL])
18116 +m4trace:configure.in:319: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMESPEC])
18117 +m4trace:configure.in:319: -1- m4_pattern_allow([^HAVE_STRUCT_TIMESPEC$])
18118 +m4trace:configure.in:319: -1- AH_OUTPUT([HAVE_STRUCT_TIMESPEC], [/* Define to 1 if the system has the type `struct timespec\'. */
18119 +#undef HAVE_STRUCT_TIMESPEC])
18120 +m4trace:configure.in:321: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_STRUCT_TIMESPEC])
18121 +m4trace:configure.in:321: -1- m4_pattern_allow([^SIZEOF_STRUCT_TIMESPEC$])
18122 +m4trace:configure.in:321: -1- AH_OUTPUT([SIZEOF_STRUCT_TIMESPEC], [/* The size of `struct timespec\', as computed by sizeof. */
18123 +#undef SIZEOF_STRUCT_TIMESPEC])
18124 +m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_ENDIAN_H], [/* Define to 1 if you have the <endian.h> header file. */
18125 +#undef HAVE_ENDIAN_H])
18126 +m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_MACHINE_ENDIAN_H], [/* Define to 1 if you have the <machine/endian.h> header file. */
18127 +#undef HAVE_MACHINE_ENDIAN_H])
18128 +m4trace:configure.in:323: -1- AC_DEFINE_TRACE_LITERAL([CLICK_BYTE_ORDER])
18129 +m4trace:configure.in:323: -1- m4_pattern_allow([^CLICK_BYTE_ORDER$])
18130 +m4trace:configure.in:323: -1- AH_OUTPUT([CLICK_BYTE_ORDER], [/* Define to byte order of target machine. */
18131 +#undef CLICK_BYTE_ORDER])
18132 +m4trace:configure.in:323: -1- AH_OUTPUT([HAVE_BYTESWAP_H], [/* Define to 1 if you have the <byteswap.h> header file. */
18133 +#undef HAVE_BYTESWAP_H])
18134 +m4trace:configure.in:324: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ARITHMETIC_RIGHT_SHIFT])
18135 +m4trace:configure.in:324: -1- m4_pattern_allow([^HAVE_ARITHMETIC_RIGHT_SHIFT$])
18136 +m4trace:configure.in:324: -1- AH_OUTPUT([HAVE_ARITHMETIC_RIGHT_SHIFT], [/* Define if right shift of signed integers acts by sign extension. */
18137 +#undef HAVE_ARITHMETIC_RIGHT_SHIFT])
18138 +m4trace:configure.in:325: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18139 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18140 +m4/click.m4:725: CLICK_CHECK_ADDRESSABLE_VA_LIST is expanded from...
18141 +configure.in:325: the top level])
18142 +m4trace:configure.in:325: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ADDRESSABLE_VA_LIST])
18143 +m4trace:configure.in:325: -1- m4_pattern_allow([^HAVE_ADDRESSABLE_VA_LIST$])
18144 +m4trace:configure.in:325: -1- AH_OUTPUT([HAVE_ADDRESSABLE_VA_LIST], [/* Define if the va_list type is addressable. */
18145 +#undef HAVE_ADDRESSABLE_VA_LIST])
18146 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZ])
18147 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZ$])
18148 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZ], [/* Define if you have the __builtin_clz function. */
18149 +#undef HAVE___BUILTIN_CLZ])
18150 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZL])
18151 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZL$])
18152 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZL], [/* Define if you have the __builtin_clzl function. */
18153 +#undef HAVE___BUILTIN_CLZL])
18154 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_CLZLL])
18155 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_CLZLL$])
18156 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_CLZLL], [/* Define if you have the __builtin_clzll function. */
18157 +#undef HAVE___BUILTIN_CLZLL])
18158 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFS])
18159 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFS$])
18160 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFS], [/* Define if you have the __builtin_ffs function. */
18161 +#undef HAVE___BUILTIN_FFS])
18162 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFSL])
18163 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFSL$])
18164 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFSL], [/* Define if you have the __builtin_ffsl function. */
18165 +#undef HAVE___BUILTIN_FFSL])
18166 +m4trace:configure.in:326: -1- AC_DEFINE_TRACE_LITERAL([HAVE___BUILTIN_FFSLL])
18167 +m4trace:configure.in:326: -1- m4_pattern_allow([^HAVE___BUILTIN_FFSLL$])
18168 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE___BUILTIN_FFSLL], [/* Define if you have the __builtin_ffsll function. */
18169 +#undef HAVE___BUILTIN_FFSLL])
18170 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the <strings.h> header file. */
18171 +#undef HAVE_STRINGS_H])
18172 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFS], [/* Define to 1 if you have the `ffs\' function. */
18173 +#undef HAVE_FFS])
18174 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFSL], [/* Define to 1 if you have the `ffsl\' function. */
18175 +#undef HAVE_FFSL])
18176 +m4trace:configure.in:326: -1- AH_OUTPUT([HAVE_FFSLL], [/* Define to 1 if you have the `ffsll\' function. */
18177 +#undef HAVE_FFSLL])
18178 +m4trace:configure.in:335: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NANOTIMESTAMP_ENABLED])
18179 +m4trace:configure.in:335: -1- m4_pattern_allow([^HAVE_NANOTIMESTAMP_ENABLED$])
18180 +m4trace:configure.in:360: -1- AC_SUBST([BUILD_CC])
18181 +m4trace:configure.in:360: -1- AC_SUBST_TRACE([BUILD_CC])
18182 +m4trace:configure.in:360: -1- m4_pattern_allow([^BUILD_CC$])
18183 +m4trace:configure.in:361: -1- AC_SUBST([BUILD_CXX])
18184 +m4trace:configure.in:361: -1- AC_SUBST_TRACE([BUILD_CXX])
18185 +m4trace:configure.in:361: -1- m4_pattern_allow([^BUILD_CXX$])
18186 +m4trace:configure.in:363: -1- AC_SUBST([BUILD_AR])
18187 +m4trace:configure.in:363: -1- AC_SUBST_TRACE([BUILD_AR])
18188 +m4trace:configure.in:363: -1- m4_pattern_allow([^BUILD_AR$])
18189 +m4trace:configure.in:364: -1- AC_SUBST([BUILD_RANLIB])
18190 +m4trace:configure.in:364: -1- AC_SUBST_TRACE([BUILD_RANLIB])
18191 +m4trace:configure.in:364: -1- m4_pattern_allow([^BUILD_RANLIB$])
18192 +m4trace:configure.in:367: -1- AC_SUBST([HOST_TOOLS])
18193 +m4trace:configure.in:367: -1- AC_SUBST_TRACE([HOST_TOOLS])
18194 +m4trace:configure.in:367: -1- m4_pattern_allow([^HOST_TOOLS$])
18195 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
18196 +#undef HAVE_UNISTD_H])
18197 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_TERMIO_H], [/* Define to 1 if you have the <termio.h> header file. */
18198 +#undef HAVE_TERMIO_H])
18199 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_NETDB_H], [/* Define to 1 if you have the <netdb.h> header file. */
18200 +#undef HAVE_NETDB_H])
18201 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_SYS_EVENT_H], [/* Define to 1 if you have the <sys/event.h> header file. */
18202 +#undef HAVE_SYS_EVENT_H])
18203 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_PWD_H], [/* Define to 1 if you have the <pwd.h> header file. */
18204 +#undef HAVE_PWD_H])
18205 +m4trace:configure.in:374: -1- AH_OUTPUT([HAVE_GRP_H], [/* Define to 1 if you have the <grp.h> header file. */
18206 +#undef HAVE_GRP_H])
18207 +m4trace:configure.in:375: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POLL_H])
18208 +m4trace:configure.in:375: -1- m4_pattern_allow([^HAVE_POLL_H$])
18209 +m4trace:configure.in:375: -1- AH_OUTPUT([HAVE_POLL_H], [/* Define if you have a non-emulated <poll.h> header file. */
18210 +#undef HAVE_POLL_H])
18211 +m4trace:configure.in:376: -1- AH_OUTPUT([HAVE_SIGACTION], [/* Define to 1 if you have the `sigaction\' function. */
18212 +#undef HAVE_SIGACTION])
18213 +m4trace:configure.in:378: -1- AH_OUTPUT([HAVE_KQUEUE], [/* Define to 1 if you have the `kqueue\' function. */
18214 +#undef HAVE_KQUEUE])
18215 +m4trace:configure.in:385: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EV_SET_UDATA_POINTER])
18216 +m4trace:configure.in:385: -1- m4_pattern_allow([^HAVE_EV_SET_UDATA_POINTER$])
18217 +m4trace:configure.in:385: -1- AH_OUTPUT([HAVE_EV_SET_UDATA_POINTER], [/* Define if the last argument to EV_SET has pointer type. */
18218 +#undef HAVE_EV_SET_UDATA_POINTER])
18219 +m4trace:configure.in:392: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
18220 +#undef HAVE_DLFCN_H])
18221 +m4trace:configure.in:392: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DYNAMIC_LINKING])
18222 +m4trace:configure.in:392: -1- m4_pattern_allow([^HAVE_DYNAMIC_LINKING$])
18223 +m4trace:configure.in:392: -1- AH_OUTPUT([HAVE_DYNAMIC_LINKING], [/* Define if dynamic linking is possible. */
18224 +#undef HAVE_DYNAMIC_LINKING])
18225 +m4trace:configure.in:392: -1- AC_SUBST([DL_LIBS])
18226 +m4trace:configure.in:392: -1- AC_SUBST_TRACE([DL_LIBS])
18227 +m4trace:configure.in:392: -1- m4_pattern_allow([^DL_LIBS$])
18228 +m4trace:configure.in:392: -1- AC_SUBST([LDMODULEFLAGS])
18229 +m4trace:configure.in:392: -1- AC_SUBST_TRACE([LDMODULEFLAGS])
18230 +m4trace:configure.in:392: -1- m4_pattern_allow([^LDMODULEFLAGS$])
18231 +m4trace:configure.in:394: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the <dlfcn.h> header file. */
18232 +#undef HAVE_DLFCN_H])
18233 +m4trace:configure.in:394: -1- AC_SUBST([BUILD_DL_LIBS])
18234 +m4trace:configure.in:394: -1- AC_SUBST_TRACE([BUILD_DL_LIBS])
18235 +m4trace:configure.in:394: -1- m4_pattern_allow([^BUILD_DL_LIBS$])
18236 +m4trace:configure.in:403: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18237 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18238 +configure.in:403: the top level])
18239 +m4trace:configure.in:417: -1- AC_DEFINE_TRACE_LITERAL([HAVE_ACCEPT_SOCKLEN_T])
18240 +m4trace:configure.in:417: -1- m4_pattern_allow([^HAVE_ACCEPT_SOCKLEN_T$])
18241 +m4trace:configure.in:417: -1- AH_OUTPUT([HAVE_ACCEPT_SOCKLEN_T], [/* Define if accept() uses socklen_t. */
18242 +#undef HAVE_ACCEPT_SOCKLEN_T])
18243 +m4trace:configure.in:420: -1- AC_SUBST([SOCKET_LIBS])
18244 +m4trace:configure.in:420: -1- AC_SUBST_TRACE([SOCKET_LIBS])
18245 +m4trace:configure.in:420: -1- m4_pattern_allow([^SOCKET_LIBS$])
18246 +m4trace:configure.in:421: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18247 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18248 +configure.in:421: the top level])
18249 +m4trace:configure.in:428: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18250 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18251 +m4/click.m4:758: CLICK_CHECK_LARGE_FILE_SUPPORT is expanded from...
18252 +configure.in:428: the top level])
18253 +m4trace:configure.in:428: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LARGE_FILE_SUPPORT])
18254 +m4trace:configure.in:428: -1- m4_pattern_allow([^HAVE_LARGE_FILE_SUPPORT$])
18255 +m4trace:configure.in:428: -1- AH_OUTPUT([HAVE_LARGE_FILE_SUPPORT], [/* Define if your C library contains large file support. */
18256 +#undef HAVE_LARGE_FILE_SUPPORT])
18257 +m4trace:configure.in:428: -1- AC_DEFINE_TRACE_LITERAL([SIZEOF_OFF_T])
18258 +m4trace:configure.in:428: -1- m4_pattern_allow([^SIZEOF_OFF_T$])
18259 +m4trace:configure.in:428: -1- AH_OUTPUT([SIZEOF_OFF_T], [/* The size of `off_t\', as computed by sizeof. */
18260 +#undef SIZEOF_OFF_T])
18261 +m4trace:configure.in:435: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18262 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18263 +configure.in:435: the top level])
18264 +m4trace:configure.in:436: -1- AH_OUTPUT([HAVE_SYS_MMAN_H], [/* Define to 1 if you have the <sys/mman.h> header file. */
18265 +#undef HAVE_SYS_MMAN_H])
18266 +m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the <stdlib.h> header file. */
18267 +#undef HAVE_STDLIB_H])
18268 +m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the <unistd.h> header file. */
18269 +#undef HAVE_UNISTD_H])
18270 +m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_GETPAGESIZE], [/* Define to 1 if you have the `getpagesize\' function. */
18271 +#undef HAVE_GETPAGESIZE])
18272 +m4trace:configure.in:437: -1- AC_DEFINE_TRACE_LITERAL([HAVE_MMAP])
18273 +m4trace:configure.in:437: -1- m4_pattern_allow([^HAVE_MMAP$])
18274 +m4trace:configure.in:437: -1- AH_OUTPUT([HAVE_MMAP], [/* Define to 1 if you have a working `mmap\' system call. */
18275 +#undef HAVE_MMAP])
18276 +m4trace:configure.in:438: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18277 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18278 +configure.in:438: the top level])
18279 +m4trace:configure.in:439: -1- AH_OUTPUT([HAVE_MADVISE], [/* Define to 1 if you have the `madvise\' function. */
18280 +#undef HAVE_MADVISE])
18281 +m4trace:configure.in:443: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_MADVISE])
18282 +m4trace:configure.in:443: -1- m4_pattern_allow([^HAVE_DECL_MADVISE$])
18283 +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
18284 +   don\'t. */
18285 +#undef HAVE_DECL_MADVISE])
18286 +m4trace:configure.in:443: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_MADVISE])
18287 +m4trace:configure.in:443: -1- m4_pattern_allow([^HAVE_DECL_MADVISE$])
18288 +m4trace:configure.in:456: -1- AC_SUBST([EXTRA_DRIVER_OBJS])
18289 +m4trace:configure.in:456: -1- AC_SUBST_TRACE([EXTRA_DRIVER_OBJS])
18290 +m4trace:configure.in:456: -1- m4_pattern_allow([^EXTRA_DRIVER_OBJS$])
18291 +m4trace:configure.in:457: -1- AC_SUBST([EXTRA_TOOL_OBJS])
18292 +m4trace:configure.in:457: -1- AC_SUBST_TRACE([EXTRA_TOOL_OBJS])
18293 +m4trace:configure.in:457: -1- m4_pattern_allow([^EXTRA_TOOL_OBJS$])
18294 +m4trace:configure.in:506: -1- AC_SUBST([LINUXMODULE_2_6])
18295 +m4trace:configure.in:506: -1- AC_SUBST_TRACE([LINUXMODULE_2_6])
18296 +m4trace:configure.in:506: -1- m4_pattern_allow([^LINUXMODULE_2_6$])
18297 +m4trace:configure.in:508: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUXMODULE_2_6])
18298 +m4trace:configure.in:508: -1- m4_pattern_allow([^HAVE_LINUXMODULE_2_6$])
18299 +m4trace:configure.in:508: -1- AH_OUTPUT([HAVE_LINUXMODULE_2_6], [/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
18300 +#undef HAVE_LINUXMODULE_2_6])
18301 +m4trace:configure.in:516: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_KERNEL])
18302 +m4trace:configure.in:516: -1- m4_pattern_allow([^HAVE_CLICK_KERNEL$])
18303 +m4trace:configure.in:524: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_KERNEL_TX_NOTIFY])
18304 +m4trace:configure.in:524: -1- m4_pattern_allow([^HAVE_CLICK_KERNEL_TX_NOTIFY$])
18305 +m4trace:configure.in:532: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_READ_NET_SKBCOUNT])
18306 +m4trace:configure.in:532: -1- m4_pattern_allow([^HAVE_LINUX_READ_NET_SKBCOUNT$])
18307 +m4trace:configure.in:540: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_STRLEN_EXPOSED])
18308 +m4trace:configure.in:540: -1- m4_pattern_allow([^HAVE_LINUX_STRLEN_EXPOSED$])
18309 +m4trace:configure.in:548: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_TULIP_INTERRUPT_HOOK])
18310 +m4trace:configure.in:548: -1- m4_pattern_allow([^HAVE_LINUX_TULIP_INTERRUPT_HOOK$])
18311 +m4trace:configure.in:556: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_POLLING])
18312 +m4trace:configure.in:556: -1- m4_pattern_allow([^HAVE_LINUX_POLLING$])
18313 +m4trace:configure.in:564: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_ATOMIC_SET_MASK])
18314 +m4trace:configure.in:564: -1- m4_pattern_allow([^HAVE_LINUX_ATOMIC_SET_MASK$])
18315 +m4trace:configure.in:572: -1- AC_DEFINE_TRACE_LITERAL([__SMP__])
18316 +m4trace:configure.in:572: -1- m4_pattern_allow([^__SMP__$])
18317 +m4trace:configure.in:581: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_ASM_ALTERNATIVE_H])
18318 +m4trace:configure.in:581: -1- m4_pattern_allow([^HAVE_LINUX_ASM_ALTERNATIVE_H$])
18319 +m4trace:configure.in:602: -1- AC_DEFINE_TRACE_LITERAL([HAVE_CLICK_BSD_KERNEL])
18320 +m4trace:configure.in:602: -1- m4_pattern_allow([^HAVE_CLICK_BSD_KERNEL$])
18321 +m4trace:configure.in:603: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSD_POLLING])
18322 +m4trace:configure.in:603: -1- m4_pattern_allow([^HAVE_BSD_POLLING$])
18323 +m4trace:configure.in:621: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRIDE_SCHED])
18324 +m4trace:configure.in:621: -1- m4_pattern_allow([^HAVE_STRIDE_SCHED$])
18325 +m4trace:configure.in:626: -1- AC_DEFINE_TRACE_LITERAL([HAVE_TASK_HEAP])
18326 +m4trace:configure.in:626: -1- m4_pattern_allow([^HAVE_TASK_HEAP$])
18327 +m4trace:configure.in:636: -1- AC_DEFINE_TRACE_LITERAL([CLICK_DMALLOC])
18328 +m4trace:configure.in:636: -1- m4_pattern_allow([^CLICK_DMALLOC$])
18329 +m4trace:configure.in:646: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INTEL_CPU])
18330 +m4trace:configure.in:646: -1- m4_pattern_allow([^HAVE_INTEL_CPU$])
18331 +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. */
18332 +#undef HAVE_LINUX_IF_TUN_H])
18333 +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. */
18334 +#undef HAVE_NET_IF_TUN_H])
18335 +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. */
18336 +#undef HAVE_NET_IF_TAP_H])
18337 +m4trace:configure.in:654: -1- AH_OUTPUT([HAVE_NET_BPF_H], [/* Define to 1 if you have the <net/bpf.h> header file. */
18338 +#undef HAVE_NET_BPF_H])
18339 +m4trace:configure.in:665: -1- AC_SUBST([POSSIBLE_DRIVERS])
18340 +m4trace:configure.in:665: -1- AC_SUBST_TRACE([POSSIBLE_DRIVERS])
18341 +m4trace:configure.in:665: -1- m4_pattern_allow([^POSSIBLE_DRIVERS$])
18342 +m4trace:configure.in:673: -1- AC_SUBST([DRIVERS])
18343 +m4trace:configure.in:673: -1- AC_SUBST_TRACE([DRIVERS])
18344 +m4trace:configure.in:673: -1- m4_pattern_allow([^DRIVERS$])
18345 +m4trace:configure.in:676: -1- AC_SUBST([HAVE_USERLEVEL_DRIVER])
18346 +m4trace:configure.in:676: -1- AC_SUBST_TRACE([HAVE_USERLEVEL_DRIVER])
18347 +m4trace:configure.in:676: -1- m4_pattern_allow([^HAVE_USERLEVEL_DRIVER$])
18348 +m4trace:configure.in:678: -1- AC_SUBST([HAVE_LINUXMODULE_DRIVER])
18349 +m4trace:configure.in:678: -1- AC_SUBST_TRACE([HAVE_LINUXMODULE_DRIVER])
18350 +m4trace:configure.in:678: -1- m4_pattern_allow([^HAVE_LINUXMODULE_DRIVER$])
18351 +m4trace:configure.in:680: -1- AC_SUBST([HAVE_BSDMODULE_DRIVER])
18352 +m4trace:configure.in:680: -1- AC_SUBST_TRACE([HAVE_BSDMODULE_DRIVER])
18353 +m4trace:configure.in:680: -1- m4_pattern_allow([^HAVE_BSDMODULE_DRIVER$])
18354 +m4trace:configure.in:683: -1- AC_SUBST([OTHER_TARGETS])
18355 +m4trace:configure.in:683: -1- AC_SUBST_TRACE([OTHER_TARGETS])
18356 +m4trace:configure.in:683: -1- m4_pattern_allow([^OTHER_TARGETS$])
18357 +m4trace:configure.in:692: -1- AC_SUBST([TOOLDIRS])
18358 +m4trace:configure.in:692: -1- AC_SUBST_TRACE([TOOLDIRS])
18359 +m4trace:configure.in:692: -1- m4_pattern_allow([^TOOLDIRS$])
18360 +m4trace:configure.in:693: -1- AC_SUBST([TOOL_TARGETS])
18361 +m4trace:configure.in:693: -1- AC_SUBST_TRACE([TOOL_TARGETS])
18362 +m4trace:configure.in:693: -1- m4_pattern_allow([^TOOL_TARGETS$])
18363 +m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BPF_TIMEVAL])
18364 +m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_BPF_TIMEVAL$])
18365 +m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_BPF_TIMEVAL], [/* Define if <pcap.h> uses bpf_timeval. */
18366 +#undef HAVE_BPF_TIMEVAL])
18367 +m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PCAP_SETNONBLOCK])
18368 +m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_DECL_PCAP_SETNONBLOCK$])
18369 +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
18370 +   you don\'t. */
18371 +#undef HAVE_DECL_PCAP_SETNONBLOCK])
18372 +m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_PCAP_SETNONBLOCK])
18373 +m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_DECL_PCAP_SETNONBLOCK$])
18374 +m4trace:configure.in:700: -1- AC_SUBST([PCAP_INCLUDES])
18375 +m4trace:configure.in:700: -1- AC_SUBST_TRACE([PCAP_INCLUDES])
18376 +m4trace:configure.in:700: -1- m4_pattern_allow([^PCAP_INCLUDES$])
18377 +m4trace:configure.in:700: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18378 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18379 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18380 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18381 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18382 +m4/click.m4:343: CLICK_CHECK_LIBPCAP is expanded from...
18383 +configure.in:700: the top level])
18384 +m4trace:configure.in:700: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18385 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18386 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18387 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18388 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18389 +m4/click.m4:343: CLICK_CHECK_LIBPCAP is expanded from...
18390 +configure.in:700: the top level])
18391 +m4trace:configure.in:700: -1- AC_SUBST([PCAP_LIBS])
18392 +m4trace:configure.in:700: -1- AC_SUBST_TRACE([PCAP_LIBS])
18393 +m4trace:configure.in:700: -1- m4_pattern_allow([^PCAP_LIBS$])
18394 +m4trace:configure.in:700: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PCAP])
18395 +m4trace:configure.in:700: -1- m4_pattern_allow([^HAVE_PCAP$])
18396 +m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_PCAP], [/* Define if you have -lpcap and pcap.h. */
18397 +#undef HAVE_PCAP])
18398 +m4trace:configure.in:700: -1- AH_OUTPUT([HAVE_PCAP_SETNONBLOCK], [/* Define to 1 if you have the `pcap_setnonblock\' function. */
18399 +#undef HAVE_PCAP_SETNONBLOCK])
18400 +m4trace:configure.in:710: -1- AC_DEFINE_TRACE_LITERAL([HAVE_USERLEVEL_DRIVER])
18401 +m4trace:configure.in:710: -1- m4_pattern_allow([^HAVE_USERLEVEL_DRIVER$])
18402 +m4trace:configure.in:722: -1- AC_DEFINE_TRACE_LITERAL([HAVE_IF_DATA_IFI_DATALEN])
18403 +m4trace:configure.in:722: -1- m4_pattern_allow([^HAVE_IF_DATA_IFI_DATALEN$])
18404 +m4trace:configure.in:722: -1- AH_OUTPUT([HAVE_IF_DATA_IFI_DATALEN], [/* Define if \'struct if_data\' has an \'ifi_datalen\' member. */
18405 +#undef HAVE_IF_DATA_IFI_DATALEN])
18406 +m4trace:configure.in:730: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SOCKADDR_IN_SIN_LEN])
18407 +m4trace:configure.in:730: -1- m4_pattern_allow([^HAVE_SOCKADDR_IN_SIN_LEN$])
18408 +m4trace:configure.in:730: -1- AH_OUTPUT([HAVE_SOCKADDR_IN_SIN_LEN], [/* Define if \'struct sockaddr_in\' has a \'sin_len\' member. */
18409 +#undef HAVE_SOCKADDR_IN_SIN_LEN])
18410 +m4trace:configure.in:749: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18411 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18412 +configure.in:749: the top level])
18413 +m4trace:configure.in:753: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18414 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18415 +configure.in:753: the top level])
18416 +m4trace:configure.in:756: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PROPER])
18417 +m4trace:configure.in:756: -1- m4_pattern_allow([^HAVE_PROPER$])
18418 +m4trace:configure.in:771: -1- AC_SUBST([PROPER_INCLUDES])
18419 +m4trace:configure.in:771: -1- AC_SUBST_TRACE([PROPER_INCLUDES])
18420 +m4trace:configure.in:771: -1- m4_pattern_allow([^PROPER_INCLUDES$])
18421 +m4trace:configure.in:772: -1- AC_SUBST([PROPER_LIBS])
18422 +m4trace:configure.in:772: -1- AC_SUBST_TRACE([PROPER_LIBS])
18423 +m4trace:configure.in:772: -1- m4_pattern_allow([^PROPER_LIBS$])
18424 +m4trace:configure.in:788: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18425 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18426 +configure.in:788: the top level])
18427 +m4trace:configure.in:794: -1- AC_DEFINE_TRACE_LITERAL([HAVE_EXPAT])
18428 +m4trace:configure.in:794: -1- m4_pattern_allow([^HAVE_EXPAT$])
18429 +m4trace:configure.in:810: -1- AC_SUBST([XML2CLICK])
18430 +m4trace:configure.in:810: -1- AC_SUBST_TRACE([XML2CLICK])
18431 +m4trace:configure.in:810: -1- m4_pattern_allow([^XML2CLICK$])
18432 +m4trace:configure.in:811: -1- AC_SUBST([EXPAT_INCLUDES])
18433 +m4trace:configure.in:811: -1- AC_SUBST_TRACE([EXPAT_INCLUDES])
18434 +m4trace:configure.in:811: -1- m4_pattern_allow([^EXPAT_INCLUDES$])
18435 +m4trace:configure.in:812: -1- AC_SUBST([EXPAT_LIBS])
18436 +m4trace:configure.in:812: -1- AC_SUBST_TRACE([EXPAT_LIBS])
18437 +m4trace:configure.in:812: -1- m4_pattern_allow([^EXPAT_LIBS$])
18438 +m4trace:configure.in:846: -1- AC_SUBST([LINUX_CFLAGS])
18439 +m4trace:configure.in:846: -1- AC_SUBST_TRACE([LINUX_CFLAGS])
18440 +m4trace:configure.in:846: -1- m4_pattern_allow([^LINUX_CFLAGS$])
18441 +m4trace:configure.in:877: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18442 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18443 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18444 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18445 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18446 +configure.in:877: the top level])
18447 +m4trace:configure.in:886: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18448 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18449 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18450 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18451 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18452 +configure.in:886: the top level])
18453 +m4trace:configure.in:893: -1- _m4_warn([obsolete], [The macro `AC_LANG_CPLUSPLUS' is obsolete.
18454 +You should run autoupdate.], [../../lib/autoconf/c.m4:105: AC_LANG_CPLUSPLUS is expanded from...
18455 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18456 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18457 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18458 +configure.in:893: the top level])
18459 +m4trace:configure.in:912: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LINUXMODULE])
18460 +m4trace:configure.in:912: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LINUXMODULE$])
18461 +m4trace:configure.in:912: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_LINUXMODULE], [/* Define if \'int64_t\' is typedefed to \'long\' in linuxmodule. */
18462 +#undef HAVE_INT64_IS_LONG_LINUXMODULE])
18463 +m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([HAVE_INT64_IS_LONG_LONG_LINUXMODULE])
18464 +m4trace:configure.in:924: -1- m4_pattern_allow([^HAVE_INT64_IS_LONG_LONG_LINUXMODULE$])
18465 +m4trace:configure.in:924: -1- AH_OUTPUT([HAVE_INT64_IS_LONG_LONG_LINUXMODULE], [/* Define if \'int64_t\' is typedefed to \'long long\' in linuxmodule. */
18466 +#undef HAVE_INT64_IS_LONG_LONG_LINUXMODULE])
18467 +m4trace:configure.in:933: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18468 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18469 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18470 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18471 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18472 +configure.in:933: the top level])
18473 +m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKBUFF_SECURITY])
18474 +m4trace:configure.in:935: -1- m4_pattern_allow([^HAVE_LINUX_SKBUFF_SECURITY$])
18475 +m4trace:configure.in:935: -1- AH_OUTPUT([HAVE_LINUX_SKBUFF_SECURITY], [/* Define if \'struct sk_buff\' has a \'security\' member. */
18476 +#undef HAVE_LINUX_SKBUFF_SECURITY])
18477 +m4trace:configure.in:943: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18478 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18479 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18480 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18481 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18482 +configure.in:943: the top level])
18483 +m4trace:configure.in:945: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKBUFF_FCLONE])
18484 +m4trace:configure.in:945: -1- m4_pattern_allow([^HAVE_LINUX_SKBUFF_FCLONE$])
18485 +m4trace:configure.in:945: -1- AH_OUTPUT([HAVE_LINUX_SKBUFF_FCLONE], [/* Define if \'struct sk_buff\' has an \'fclone\' member. */
18486 +#undef HAVE_LINUX_SKBUFF_FCLONE])
18487 +m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18488 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18489 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18490 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18491 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18492 +configure.in:953: the top level])
18493 +m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_TSO_SIZE])
18494 +m4trace:configure.in:955: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_TSO_SIZE$])
18495 +m4trace:configure.in:955: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_TSO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'tso_size\' member. */
18496 +#undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE])
18497 +m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18498 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18499 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18500 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18501 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18502 +configure.in:963: the top level])
18503 +m4trace:configure.in:965: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_GSO_SIZE])
18504 +m4trace:configure.in:965: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_GSO_SIZE$])
18505 +m4trace:configure.in:965: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_GSO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'gso_size\' member. */
18506 +#undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE])
18507 +m4trace:configure.in:973: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18508 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18509 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18510 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18511 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18512 +configure.in:973: the top level])
18513 +m4trace:configure.in:975: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_UFO_SIZE])
18514 +m4trace:configure.in:975: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_UFO_SIZE$])
18515 +m4trace:configure.in:975: -1- AH_OUTPUT([HAVE_LINUX_SKB_SHINFO_UFO_SIZE], [/* Define if \'struct skb_shared_info\' has a \'ufo_size\' member. */
18516 +#undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE])
18517 +m4trace:configure.in:983: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18518 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18519 +../../lib/m4sugar/m4sh.m4:523: AS_IF is expanded from...
18520 +../../lib/autoconf/general.m4:1905: AC_CACHE_VAL is expanded from...
18521 +../../lib/autoconf/general.m4:1918: AC_CACHE_CHECK is expanded from...
18522 +configure.in:983: the top level])
18523 +m4trace:configure.in:985: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID])
18524 +m4trace:configure.in:985: -1- m4_pattern_allow([^HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID$])
18525 +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. */
18526 +#undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID])
18527 +m4trace:configure.in:988: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete.
18528 +You should run autoupdate.], [../../lib/autoconf/c.m4:73: AC_LANG_C is expanded from...
18529 +configure.in:988: the top level])
18530 +m4trace:configure.in:993: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NET_ENABLE_TIMESTAMP])
18531 +m4trace:configure.in:993: -1- m4_pattern_allow([^HAVE_NET_ENABLE_TIMESTAMP$])
18532 +m4trace:configure.in:993: -1- AH_OUTPUT([HAVE_NET_ENABLE_TIMESTAMP], [/* Define if you have the \'net_enable_timestamp\' function. */
18533 +#undef HAVE_NET_ENABLE_TIMESTAMP])
18534 +m4trace:configure.in:1000: -1- AC_DEFINE_TRACE_LITERAL([HAVE_NETIF_TX_LOCK])
18535 +m4trace:configure.in:1000: -1- m4_pattern_allow([^HAVE_NETIF_TX_LOCK$])
18536 +m4trace:configure.in:1000: -1- AH_OUTPUT([HAVE_NETIF_TX_LOCK], [/* Define if you have the \'netif_tx_lock\' function. */
18537 +#undef HAVE_NETIF_TX_LOCK])
18538 +m4trace:configure.in:1010: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LINUXMODULE_DRIVER])
18539 +m4trace:configure.in:1010: -1- m4_pattern_allow([^HAVE_LINUXMODULE_DRIVER$])
18540 +m4trace:configure.in:1056: -1- AC_DEFINE_TRACE_LITERAL([HAVE_BSDMODULE_DRIVER])
18541 +m4trace:configure.in:1056: -1- m4_pattern_allow([^HAVE_BSDMODULE_DRIVER$])
18542 +m4trace:configure.in:1079: -1- AC_REQUIRE_AUX_FILE([install-sh])
18543 +m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_PROGRAM])
18544 +m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_PROGRAM])
18545 +m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_PROGRAM$])
18546 +m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_SCRIPT])
18547 +m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_SCRIPT])
18548 +m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_SCRIPT$])
18549 +m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_DATA])
18550 +m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_DATA])
18551 +m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_DATA$])
18552 +m4trace:configure.in:1079: -1- AC_SUBST([INSTALL_IF_CHANGED])
18553 +m4trace:configure.in:1079: -1- AC_SUBST_TRACE([INSTALL_IF_CHANGED])
18554 +m4trace:configure.in:1079: -1- m4_pattern_allow([^INSTALL_IF_CHANGED$])
18555 +m4trace:configure.in:1079: -1- AC_SUBST([CLICKINSTALL])
18556 +m4trace:configure.in:1079: -1- AC_SUBST_TRACE([CLICKINSTALL])
18557 +m4trace:configure.in:1079: -1- m4_pattern_allow([^CLICKINSTALL$])
18558 +m4trace:configure.in:1080: -1- AC_SUBST([SUBMAKE])
18559 +m4trace:configure.in:1080: -1- AC_SUBST_TRACE([SUBMAKE])
18560 +m4trace:configure.in:1080: -1- m4_pattern_allow([^SUBMAKE$])
18561 +m4trace:configure.in:1080: -1- AC_SUBST([GMAKE])
18562 +m4trace:configure.in:1080: -1- AC_SUBST_TRACE([GMAKE])
18563 +m4trace:configure.in:1080: -1- m4_pattern_allow([^GMAKE$])
18564 +m4trace:configure.in:1081: -1- AC_SUBST([AUTOCONF])
18565 +m4trace:configure.in:1081: -1- AC_SUBST_TRACE([AUTOCONF])
18566 +m4trace:configure.in:1081: -1- m4_pattern_allow([^AUTOCONF$])
18567 +m4trace:configure.in:1082: -1- AC_SUBST([perl5])
18568 +m4trace:configure.in:1082: -1- AC_SUBST_TRACE([perl5])
18569 +m4trace:configure.in:1082: -1- m4_pattern_allow([^perl5$])
18570 +m4trace:configure.in:1082: -1- AC_SUBST([localperl5])
18571 +m4trace:configure.in:1082: -1- AC_SUBST_TRACE([localperl5])
18572 +m4trace:configure.in:1082: -1- m4_pattern_allow([^localperl5$])
18573 +m4trace:configure.in:1082: -1- AC_SUBST([PERL])
18574 +m4trace:configure.in:1082: -1- AC_SUBST_TRACE([PERL])
18575 +m4trace:configure.in:1082: -1- m4_pattern_allow([^PERL$])
18576 +m4trace:configure.in:1132: -1- AC_SUBST([INSTALL_INFO])
18577 +m4trace:configure.in:1132: -1- AC_SUBST_TRACE([INSTALL_INFO])
18578 +m4trace:configure.in:1132: -1- m4_pattern_allow([^INSTALL_INFO$])
18579 +m4trace:configure.in:1152: -1- AC_SUBST([MAKEINFO])
18580 +m4trace:configure.in:1152: -1- AC_SUBST_TRACE([MAKEINFO])
18581 +m4trace:configure.in:1152: -1- m4_pattern_allow([^MAKEINFO$])
18582 +m4trace:configure.in:1153: -1- AC_SUBST([TEXI2DVI])
18583 +m4trace:configure.in:1153: -1- AC_SUBST_TRACE([TEXI2DVI])
18584 +m4trace:configure.in:1153: -1- m4_pattern_allow([^TEXI2DVI$])
18585 +m4trace:configure.in:1154: -1- AC_SUBST([INSTALL_INFO])
18586 +m4trace:configure.in:1154: -1- AC_SUBST_TRACE([INSTALL_INFO])
18587 +m4trace:configure.in:1154: -1- m4_pattern_allow([^INSTALL_INFO$])
18588 +m4trace:configure.in:1155: -1- AC_SUBST([POD2MAN])
18589 +m4trace:configure.in:1155: -1- AC_SUBST_TRACE([POD2MAN])
18590 +m4trace:configure.in:1155: -1- m4_pattern_allow([^POD2MAN$])
18591 +m4trace:configure.in:1185: -1- AC_SUBST([clickdatadir])
18592 +m4trace:configure.in:1185: -1- AC_SUBST_TRACE([clickdatadir])
18593 +m4trace:configure.in:1185: -1- m4_pattern_allow([^clickdatadir$])
18594 +m4trace:configure.in:1187: -1- AC_DEFINE_TRACE_LITERAL([CLICK_BINDIR])
18595 +m4trace:configure.in:1187: -1- m4_pattern_allow([^CLICK_BINDIR$])
18596 +m4trace:configure.in:1188: -1- AC_DEFINE_TRACE_LITERAL([CLICK_LIBDIR])
18597 +m4trace:configure.in:1188: -1- m4_pattern_allow([^CLICK_LIBDIR$])
18598 +m4trace:configure.in:1189: -1- AC_DEFINE_TRACE_LITERAL([CLICK_DATADIR])
18599 +m4trace:configure.in:1189: -1- m4_pattern_allow([^CLICK_DATADIR$])
18600 +m4trace:configure.in:1261: -1- AC_SUBST([provisions])
18601 +m4trace:configure.in:1261: -1- AC_SUBST_TRACE([provisions])
18602 +m4trace:configure.in:1261: -1- m4_pattern_allow([^provisions$])
18603 +m4trace:configure.in:1285: -1- _m4_warn([obsolete], [The macro `AC_OUTPUT_COMMANDS' is obsolete.
18604 +You should run autoupdate.], [../../lib/autoconf/status.m4:853: AC_OUTPUT_COMMANDS is expanded from...
18605 +configure.in:1285: the top level])
18606 +m4trace:configure.in:1286: -1- AC_CONFIG_FILES([$config_files])
18607 +m4trace:configure.in:1286: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
18608 +You should run autoupdate.], [])
18609 +m4trace:configure.in:1286: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
18610 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
18611 +m4trace:configure.in:1286: -1- m4_pattern_allow([^LIB@&t@OBJS$])
18612 +m4trace:configure.in:1286: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
18613 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([LTLIBOBJS])
18614 +m4trace:configure.in:1286: -1- m4_pattern_allow([^LTLIBOBJS$])
18615 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([top_builddir])
18616 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([srcdir])
18617 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_srcdir])
18618 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([top_srcdir])
18619 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_top_srcdir])
18620 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([builddir])
18621 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_builddir])
18622 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([abs_top_builddir])
18623 +m4trace:configure.in:1286: -1- AC_SUBST_TRACE([INSTALL])
18624 diff -Nurb click-1.6.0/bsdmodule/Makefile click-1.6.0-27/bsdmodule/Makefile
18625 --- click-1.6.0/bsdmodule/Makefile      1969-12-31 19:00:00.000000000 -0500
18626 +++ click-1.6.0-27/bsdmodule/Makefile   2009-01-28 16:15:43.000000000 -0500
18627 @@ -0,0 +1,152 @@
18628 +## Click bsdmodule driver Makefile ##
18629 +SHELL = /bin/sh
18630 +
18631 +srcdir := .
18632 +top_srcdir := ..
18633 +top_builddir := ..
18634 +subdir := bsdmodule
18635 +
18636 +prefix = /d/click/click-1.6.0-27/inst
18637 +exec_prefix = /d/click/click-1.6.0-27/inst
18638 +bindir = /d/click/click-1.6.0-27/inst/bin
18639 +sbindir = /d/click/click-1.6.0-27/inst/sbin
18640 +libdir = /d/click/click-1.6.0-27/inst/lib
18641 +freebsd_includedir = /usr/include
18642 +freebsd_srcdir = NONE
18643 +
18644 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir)
18645 +
18646 +CC = gcc -W -Wall
18647 +CPP = gcc -W -Wall -E
18648 +CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
18649 +CXXCPP = g++ -W -Wall  -E
18650 +LD = ld
18651 +STRIP = strip
18652 +PERL = perl
18653 +INSTALL = /usr/bin/install -c
18654 +INSTALL_DATA = /usr/bin/install -c -m 644
18655 +mkinstalldirs = ../mkinstalldirs
18656 +
18657 +ifeq ($(V),1)
18658 +ccompile = $(COMPILE) $(1)
18659 +cxxcompile = $(CXXCOMPILE) $(1)
18660 +else
18661 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
18662 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
18663 +endif
18664 +
18665 +quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@)
18666 +cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $<
18667 +
18668 +quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@)
18669 +cmd_ccompile = $(COMPILE) -c -o $@ $<
18670 +
18671 +.SUFFIXES:
18672 +.SUFFIXES: .S .c .cc .o .s .ii
18673 +
18674 +.c.o:
18675 +       $(COMPILE) -c $<
18676 +.s.o:
18677 +       $(COMPILE) -c $<
18678 +.S.o:
18679 +       $(COMPILE) -c $<
18680 +.cc.o:
18681 +       $(CXXCOMPILE) -c $<
18682 +.cc.s:
18683 +       $(CXXCOMPILE) -S $<
18684 +.cc.ii:
18685 +       $(CXXCOMPILE) -E $< > $@
18686 +
18687 +
18688 +ifndef INSTALLOBJS
18689 +INSTALLOBJS = click.ko
18690 +endif
18691 +
18692 +GENERIC_OBJS = string.o straccum.o nameinfo.o \
18693 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
18694 +       ipaddress.o ipflowid.o etheraddress.o \
18695 +       packet.o in_cksum.o \
18696 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
18697 +       element.o \
18698 +       confparse.o variableenv.o lexer.o elemfilter.o \
18699 +       routerthread.o router.o master.o handlercall.o notifier.o \
18700 +       integers.o crc32.o iptable.o \
18701 +       driver.o \
18702 +       $(EXTRA_DRIVER_OBJS)
18703 +
18704 +BSDMODULE_OBJS = config.o sched.o module.o module_c.o \
18705 +       clickfs.o clickfs_vnops.o clickfs_tree.o clickfs_element.o
18706 +
18707 +EXTRA_DRIVER_OBJS = 
18708 +
18709 +OBJS = $(GENERIC_OBJS) $(ELEMENT_OBJS) $(BSDMODULE_OBJS) elements.o
18710 +
18711 +CPPFLAGS =  -DCLICK_BSDMODULE -DBSD_NETISRSCHED
18712 +CFLAGS =  -O2 -g
18713 +CXXFLAGS =  -O2 -g
18714 +
18715 +DEFS = -DHAVE_CONFIG_H 
18716 +INCLUDES = -nostdinc -I$(top_builddir)/include -I$(top_srcdir)/include \
18717 +       -I$(srcdir) -I$(top_srcdir) -I. -I$(freebsd_includedir)
18718 +LDFLAGS = 
18719 +LIBS = 
18720 +
18721 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
18722 +CXXLD = $(CXX)
18723 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
18724 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
18725 +CCLD = $(CC)
18726 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
18727 +
18728 +all: $(INSTALLOBJS)
18729 +
18730 +ifneq ($(MAKECMDGOALS),clean)
18731 +-include elements.mk
18732 +endif
18733 +
18734 +click.ko: Makefile vnode_if.h vnode_if_newproto.h vnode_if_typedef.h $(OBJS)
18735 +       $(LD) -Bshareable -o click.ko $(OBJS)
18736 +
18737 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
18738 +       cd $(top_builddir) \
18739 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
18740 +
18741 +elemlist:
18742 +       @/bin/rm -f elements.conf
18743 +       @$(MAKE) elements.conf
18744 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
18745 +       echo "bsdmodule  app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r bsdmodule -p $(top_srcdir) > elements.conf
18746 +elements.mk: elements.conf $(top_builddir)/click-buildtool
18747 +       $(top_builddir)/click-buildtool elem2make < elements.conf > elements.mk
18748 +elements.cc: elements.conf $(top_builddir)/click-buildtool
18749 +       $(top_builddir)/click-buildtool elem2export < elements.conf > elements.cc
18750 +       @rm -f elements.d
18751 +
18752 +vnode_if.h: $(freebsd_srcdir)/kern/vnode_if.src
18753 +       /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -h
18754 +vnode_if_newproto.h: $(freebsd_srcdir)/kern/vnode_if.src
18755 +       /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -p
18756 +vnode_if_typedef.h: $(freebsd_srcdir)/kern/vnode_if.src
18757 +       /usr/bin/awk -f $(freebsd_srcdir)/tools/vnode_if.awk $(freebsd_srcdir)/kern/vnode_if.src -q
18758 +
18759 +
18760 +DEPFILES := $(wildcard *.d)
18761 +ifneq ($(DEPFILES),)
18762 +include $(DEPFILES)
18763 +endif
18764 +
18765 +install: $(INSTALLOBJS)
18766 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
18767 +       for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
18768 +install-man:
18769 +       :
18770 +uninstall:
18771 +       for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
18772 +
18773 +clean:
18774 +       -rm -f *.d *.o click.ko elements.mk elements.cc elements.conf \
18775 +       vnode_if.h vnode_if_newproto.h vnode_if_typedef.h
18776 +distclean: clean
18777 +       -rm -f Makefile
18778 +
18779 +.PHONY: all clean distclean elemlist install uninstall
18780 diff -Nurb click-1.6.0/click-buildtool click-1.6.0-27/click-buildtool
18781 --- click-1.6.0/click-buildtool 1969-12-31 19:00:00.000000000 -0500
18782 +++ click-1.6.0-27/click-buildtool      2009-01-28 16:15:43.000000000 -0500
18783 @@ -0,0 +1,1326 @@
18784 +#! /bin/sh
18785 +
18786 +# click-buildtool -- build tools for Click
18787 +# Eddie Kohler
18788 +#
18789 +# Copyright (c) 2000-2001 Massachusetts Institute of Technology
18790 +# Copyright (c) 2000-2006 Mazu Networks, Inc.
18791 +# Copyright (c) 2001-2003 International Computer Science Institute
18792 +# Copyright (c) 2004-2007 Regents of the University of California
18793 +#
18794 +# Permission is hereby granted, free of charge, to any person obtaining a
18795 +# copy of this software and associated documentation files (the "Software"),
18796 +# to deal in the Software without restriction, subject to the conditions
18797 +# listed in the Click LICENSE file. These conditions include: you must
18798 +# preserve this copyright notice, and you cannot mention the copyright
18799 +# holders in advertising related to the Software without their permission.
18800 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
18801 +# notice is a summary of the Click LICENSE file; the license in that file is
18802 +# legally binding.
18803 +
18804 +prefix=/d/click/click-1.6.0-27/inst
18805 +exec_prefix=/d/click/click-1.6.0-27/inst
18806 +bindir=/d/click/click-1.6.0-27/inst/bin
18807 +datarootdir=/d/click/click-1.6.0-27/inst/share
18808 +datadir=/d/click/click-1.6.0-27/inst/share
18809 +clickdatadir=/d/click/click-1.6.0-27/inst/share/click
18810 +LINUXMODULE_2_6=1
18811 +gmake=make
18812 +
18813 +verbose=""
18814 +elem2=""
18815 +default_provisions="i686 i386 i586 int64 linux linux_2_6 pcap"
18816 +driver_provisions=" userlevel linuxmodule"
18817 +
18818 +trap "exit 1" HUP
18819 +
18820 +# find a good version of awk
18821 +if test -x /usr/bin/gawk; then
18822 +    awk=gawk
18823 +elif test -x /usr/bin/nawk; then
18824 +    awk=nawk
18825 +else
18826 +    awk=awk
18827 +fi
18828 +
18829 +echo_n () {
18830 +       # suns can't echo -n, and Mac OS X can't echo "x\c"
18831 +       echo "$@" | tr -d '
18832 +'
18833 +}
18834 +
18835 +
18836 +############
18837 +# FINDELEM #
18838 +############
18839 +
18840 +findelem_usage () {
18841 +    echo "Usage: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES]
18842 +Try 'click-buildtool findelem --help' for more information." 1>&2
18843 +    exit 1
18844 +}
18845 +
18846 +elementmap_provisions () {
18847 +    elementmap="$1"
18848 +    grep "^<elementmap \|^<entry " <"$elementmap" | $awk '/ name="([^"]*)"/ {
18849 +  sub(/.* name="/, "", $0);
18850 +  sub(/".*/, "", $0);
18851 +  prov[$0] = 1;
18852 +}
18853 +/ provides="([^"]*)"/ {
18854 +  sub(/.* provides="/, "", $0);
18855 +  sub(/".*/, "", $0);
18856 +  split($0, d, / +/);
18857 +  for (j in d) prov[d[j]] = 1;
18858 +}
18859 +END {
18860 +  # delete references to drivers
18861 +  delete prov["userlevel"]; delete prov["linuxmodule"]; 
18862 +  delete prov["bsdmodule"]; delete prov["ns"];
18863 +  for (j in prov) print j;
18864 +}'
18865 +}
18866 +
18867 +findelem () {
18868 +    pfx=
18869 +    all=
18870 +    provisions=
18871 +    filenames=
18872 +    standards=
18873 +    unprovisions='false 0'
18874 +    while [ x"$1" != x ]; do
18875 +    case $1 in
18876 +    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
18877 +       standards=1; shift 1;;
18878 +    -p|--pre|--pref|--prefi|--prefix)
18879 +       if test $# -lt 2; then findelem_usage; fi
18880 +       shift 1; pfx="$1/"; shift 1;;
18881 +    -p*)
18882 +       pfx="`echo "$1" | sed 's/^-p//'`"/; shift 1;;
18883 +    --pre=*|--pref=*|--prefi=*|--prefix=*)
18884 +       pfx="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
18885 +    -f|--filenames)
18886 +       filenames=f; shift 1;;
18887 +    -F|--filename-|--filename-p|--filename-pa|--filename-pai|--filename-pair|--filename-pairs)
18888 +       filenames=F; shift 1;;
18889 +    -V|--verb|--verbo|--verbos|--verbose)
18890 +       verbose=1; shift 1;;
18891 +    -a|--a|--al|--all)
18892 +       all=1; shift 1;;
18893 +    -r|--pro|--prov|--provi|--provid|--provide)
18894 +       if test $# -lt 2; then findelem_usage; fi
18895 +       shift 1; provisions="$1
18896 +$provisions"; shift 1;;
18897 +    -r*)
18898 +       provisions="`echo "$1" | sed 's/^-r//'`
18899 +$provisions"; shift 1;;
18900 +    --pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
18901 +       provisions="`echo "$1" | sed 's/^[^=]*=//'`
18902 +$provisions"; shift 1;;
18903 +    -x|--u|--un|--unp|--unpr|--unpro|--unprov|--unprovi|--unprovid|--unprovide)
18904 +       if test $# -lt 2; then findelem_usage; fi
18905 +       shift 1; unprovisions="$1
18906 +$unprovisions"; shift 1;;
18907 +    -x*)
18908 +       unprovisions="`echo "$1" | sed 's/^-x//'`
18909 +$unprovisions"; shift 1;;
18910 +    --u=*|--un=*|--unp=*|--unpr=*|--unpro=*|--unprov=*|--unprovi=*|--unprovid=*|--unprovide=*)
18911 +       unprovisions="`echo "$1" | sed 's/^[^=]*=//'`
18912 +$unprovisions"; shift 1;;
18913 +    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
18914 +       if test $# -lt 2; then findelem_usage; fi
18915 +       shift 1; provisions="`elementmap_provisions "$1"`
18916 +$provisions"; shift 1;;
18917 +    -e*)
18918 +       emap="`echo "$1" | sed 's/^-e//'`"
18919 +       provisions="`elementmap_provisions "$emap"`
18920 +$provisions"; shift 1;;
18921 +    --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*)
18922 +       emap="`echo '$1' | sed 's/^[^=]*=//'`"
18923 +       provisions="`elementmap_provisions "$emap"`
18924 +$provisions"; shift 1;;
18925 +    -P|--pa|--pac|--pack|--packa|--packag|--package)
18926 +       provisions="`elementmap_provisions "${clickdatadir}/elementmap.xml"`
18927 +$provisions"; shift 1;;
18928 +    -h|--h|--he|--hel|--help)
18929 +       cat <<'EOF' 1>&2
18930 +'Click-buildtool findelem' locates valid Click element source code. It starts
18931 +with a collection of source code, then eliminates files whose requirements
18932 +are not available until reaching a stable set of sources. It expects a list of
18933 +files and directories on standard input. Directories are searched for .cc/.c
18934 +source files. Only files containing EXPORT_ELEMENT() or ELEMENT_PROVIDES() are
18935 +considered. The initial list of available requirements is the list of
18936 +requirements specified with '-r', plus the list of EXPORT_ELEMENT() and
18937 +ELEMENT_PROVIDES() keywords.
18938 +
18939 +Usage: click-buildtool findelem [OPTIONS] < [FILES AND DIRECTORIES]
18940 +
18941 +Options:
18942 +  -a, --all                  Include all subdirectories of 'elements' rather
18943 +                             than reading standard input, and pretend all
18944 +                             requirements are available (except for '-x').
18945 +  -V, --verbose              Print more information about dependency checking.
18946 +  -p, --prefix PREFIX        Prepend PREFIX to every file and/or directory.
18947 +  -r, --provide REQ          Provide requirement(s) in REQ.
18948 +  -e, --elementmap EMAP      Provide requirement(s) from EMAP.
18949 +  -P, --package              Provide requirement(s) from default elementmap.
18950 +  -S, --standards            Mark standard elements as available.
18951 +  -x, --unprovide REQ        Mark requirement(s) REQ as unavailable.
18952 +  -f, --filenames            Output filenames only.
18953 +  -F, --filename-pairs       Output "sourcefile:headerfile" pairs for elements.
18954 +  -h, --help                 Print this message and exit.
18955 +
18956 +Report bugs to <click@pdos.lcs.mit.edu>.
18957 +EOF
18958 +       exit 0;;
18959 +    *)
18960 +       findelem_usage;;
18961 +    esac
18962 +    done
18963 +
18964 +    if test -n "$verbose" -a -n "$pfx"; then
18965 +       echo "Prefix: $pfx" 1>&2
18966 +    fi
18967 +
18968 +    # add defaults to provisions
18969 +    provisions="$provisions $default_provisions"
18970 +
18971 +    # add standards to provisions if necessary
18972 +    if test "x$standards" != x; then
18973 +       provisions="$provisions AddressInfo AlignmentInfo ErrorElement PortInfo ScheduleInfo Storage"
18974 +    fi
18975 +
18976 +    # expand provisions and unprovisions: require one per line
18977 +    provisions=`echo "$provisions" | tr -s ' \011\015\014\013' '\012'`
18978 +    unprovisions=`echo "$unprovisions" | tr -s ' \011\015\014\013' '\012'`
18979 +    if test -n "$verbose" -a -n "$provisions"; then
18980 +       echo 1>&2
18981 +       echo "Provisions: $provisions" 1>&2
18982 +    fi
18983 +    if test -n "$verbose" -a -n "$unprovisions"; then
18984 +       echo 1>&2
18985 +       echo "Unprovisions: $unprovisions" 1>&2
18986 +    fi
18987 +
18988 +    # expand list of files
18989 +    if test -n "$all"; then
18990 +       fdir=${pfx}
18991 +       test -d ${pfx}elements && fdir=${pfx}elements
18992 +       first_files=`cd $fdir >/dev/null && ls`
18993 +       bad_first_files=`echo "$first_files
18994 +$unprovisions" | sort | uniq -d`
18995 +       first_files=`echo "$first_files
18996 +$bad_first_files" | sort | uniq -u`
18997 +    else
18998 +       first_files=`cat`
18999 +    fi
19000 +
19001 +    files=""
19002 +    for i in $first_files; do
19003 +       ppfx="$pfx"
19004 +       if test -d "${pfx}elements/$i" && echo "$i" | grep -v '^\.' >/dev/null; then
19005 +           ppfx="${pfx}elements/"
19006 +       fi
19007 +       if test -d "${ppfx}$i"; then
19008 +           files="$files
19009 +"`find ${ppfx}$i -follow \( -name \*.cc -o -name \*.c \) -print | grep -v '/[.,][^/]*$'`
19010 +       elif test -r "${ppfx}$i"; then
19011 +           files="$files
19012 +${ppfx}$i"
19013 +       fi
19014 +    done
19015 +    files=`echo "$files" | sort | uniq | grep .`
19016 +
19017 +    # die if no files
19018 +    if test -z "$files"; then
19019 +       echo "no files found" 1>&2
19020 +       exit 1
19021 +    fi
19022 +
19023 +    # if '$all', then accept all dependencies except the unprovisions
19024 +    dep_test='<='
19025 +    if test -n "$all"; then
19026 +       dep_test='<'
19027 +    fi
19028 +
19029 +    # check dependencies: generate a list of bad files, then remove those files
19030 +    # from the list of good files
19031 +
19032 +    # first remove files that provide an unprovision
19033 +    awk_exports=`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'`
19034 +    bad_files=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/EXPORT_ELEMENT[       ]*(\(.*\)).*/\1/
19035 +s/ELEMENT_PROVIDES[    ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'}
19036 +{
19037 +  split($2, deps, / +/);
19038 +  for (j in deps) {
19039 +    if (dep[deps[j]] < 0) {
19040 +      print $1;
19041 +      break;
19042 +    }
19043 +  }
19044 +}' | sort | uniq`
19045 +    if test -n "$verbose" -a -n "$bad_files"; then
19046 +       echo 1>&2
19047 +       echo "Files: $files" 1>&2
19048 +       echo 1>&2
19049 +       echo "Bad files: $bad_files" 1>&2
19050 +    fi
19051 +    if test -n "$bad_files"; then
19052 +       files=`echo "$files
19053 +$bad_files" | sort | uniq -u`
19054 +    fi
19055 +
19056 +    # then cycle, removing files that require something not provided
19057 +    while true; do
19058 +       provides=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/.*(\(.*\)).*/\1/' | tr ' \011' '\012'`
19059 +       awk_exports=`echo "$provides"'
19060 +'"$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`"
19061 +"`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'`
19062 +       new_bad_files=`grep '^ELEMENT_REQUIRES' $files | sed 's/ELEMENT_REQUIRES[       ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'dep["true"]=1; dep["1"]=1;}
19063 +{
19064 +  split($2, deps, / +/);
19065 +  for (j in deps) {
19066 +    i = deps[j]
19067 +    if (dep[i] <= 0) {
19068 +      bad = 1;
19069 +      split(i, or_deps, /\|+/);
19070 +      for (k in or_deps) {
19071 +       if (!(dep[or_deps[k]] '"$dep_test"' 0))
19072 +         bad = 0;
19073 +      }
19074 +      if (bad) {
19075 +       print $1;
19076 +       break;
19077 +      }
19078 +    }
19079 +  }
19080 +}' | sort | uniq`
19081 +       if test -n "$verbose"; then
19082 +           echo 1>&2
19083 +           echo "Files: $files" 1>&2
19084 +           echo 1>&2
19085 +           echo "Bad files: $new_bad_files" 1>&2
19086 +       fi
19087 +       if test -z "$new_bad_files"; then
19088 +           break
19089 +       else
19090 +           files=`echo "$files
19091 +$new_bad_files" | sort | uniq -u`
19092 +           bad_files="$new_bad_files
19093 +$bad_files"
19094 +       fi
19095 +    done
19096 +
19097 +    header_files=`echo "$files" | sed 's/\.cc/\.hh/'`
19098 +
19099 +    # generate output
19100 +    if test "$filenames" = f; then
19101 +       outscriptlet=i
19102 +    elif test "$filenames" = F; then
19103 +       outscriptlet='i, ":", header[i]'
19104 +    else
19105 +       echo "# Generated by 'click-buildtool findelem' on" `date`
19106 +       outscriptlet='i, "\t", header[i], "\t", ex'
19107 +    fi
19108 +
19109 +    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 {
19110 +  OFS = ""; cur_class = ""; line_warned = 0; nexports = 0
19111 +}
19112 +/:class[       ]/ {
19113 +  sub(/^class[         ]*/, "", $2);
19114 +  sub(/[       ]*$/, "", $2);
19115 +  cur_class = $2;
19116 +  next
19117 +}
19118 +/:}/ {
19119 +  cur_class = "";
19120 +  next
19121 +}
19122 +/:EXPORT_ELEMENT/ {
19123 +  sub(/.*EXPORT_ELEMENT[       ]*\([   ]*/, "", $2);
19124 +  sub(/[       ]*\).*/, "", $2);
19125 +  if (exports[$1] != "") {
19126 +    exports[$1] = exports[$1] " " $2
19127 +  } else {
19128 +    exports[$1] = $2; nexports++
19129 +  }
19130 +  next
19131 +}
19132 +/:ELEMENT_PROVIDES/ {
19133 +  if (!($1 in exports)) {
19134 +    exports[$1] = ""; nexports++
19135 +  }
19136 +  next
19137 +}
19138 +/:ELEMENT_HEADER/ {
19139 +  sub(/.*ELEMENT_HEADER[       ]*\(/, "", $2)
19140 +  sub(/\).*/, "", $2)
19141 +  header[$1] = $2
19142 +  next
19143 +}
19144 +/:ELEMENT_LIBS/ {
19145 +  sub(/.*ELEMENT_LIBS[         ]*\(\(?/, "", $2)
19146 +  sub(/\)?\).*/, "", $2)
19147 +  gsub(/[      ][      ]*/, ";", $2)
19148 +  gsub(/-L;/, "-L", $2)
19149 +  libs[$1] = $2
19150 +  next
19151 +}
19152 +/class_name.*return[   ]"/ {
19153 +  sub(/.*return[       ]*"/, "", $0);
19154 +  sub(/".*/, "", $0);
19155 +  class_name[cur_class] = $0
19156 +  next
19157 +}
19158 +/class_name/ {
19159 +  print $1, ": ", cur_class, "::class_name method malformed" | "cat 1>&2"
19160 +  if (++line_warned == 1)
19161 +    print "  (class_name methods must be written on a single line.)" | "cat 1>&2"
19162 +}
19163 +/static_initialize/ {
19164 +  static_initialize[cur_class] = 1
19165 +  next
19166 +}
19167 +/static_cleanup/ {
19168 +  static_cleanup[cur_class] = 1
19169 +  next
19170 +}
19171 +END {
19172 +  if (nexports == 0)
19173 +    print "click-buildtool: No elements found" | "cat 1>&2"
19174 +  if (line_warned || nexports == 0)
19175 +    system("kill -HUP '$$'")
19176 +  for (i in exports) {
19177 +    ex = exports[i]
19178 +    if (ex == "") {
19179 +      print i
19180 +    } else {
19181 +      if (header[i] == "") {
19182 +       header[i] = "\"" i "\""; sub(/\.cc/, ".hh", header[i])
19183 +      }
19184 +      split(ex, exes, / /); ex = ""
19185 +      for (j in exes) {
19186 +        dash = index(exes[j], "-")
19187 +       if (dash == 0) {
19188 +         dash = length(exes[j]);
19189 +          if (class_name[exes[j]] == "")
19190 +            exes[j] = exes[j] "-" exes[j];
19191 +          else
19192 +            exes[j] = exes[j] "-" class_name[exes[j]];
19193 +        }
19194 +       ex = ex exes[j] " ";
19195 +       klass = substr(exes[j], 1, dash)
19196 +        if (static_initialize[klass]) {
19197 +         ex = ex klass "-!si ";
19198 +         static_initialize[klass] = 0
19199 +       }
19200 +        if (static_cleanup[klass]) {
19201 +         ex = ex klass "-!sc ";
19202 +         static_cleanup[klass] = 0
19203 +       }
19204 +      }
19205 +      if (libs[i])
19206 +       ex = ex "-!lib" libs[i] " ";
19207 +      print '"$outscriptlet"'
19208 +    }
19209 +  }
19210 +}' | sort
19211 +
19212 +  exit $?
19213 +}
19214 +
19215 +
19216 +
19217 +##########################
19218 +# ELEM2MAKE/ELEM2PACKAGE #
19219 +##########################
19220 +
19221 +elem2xxx_usage () {
19222 +    echo_n "Usage: click-buildtool elem2$elem2 [-p PREFIX] [-V]" 1>&2
19223 +    if test "$elem2" = package; then echo_n " PKGNAME" 1>&2; fi
19224 +    echo " < elements.conf
19225 +Try 'click-buildtool elem2$elem2 --help' for more information." 1>&2
19226 +    exit 1
19227 +}
19228 +
19229 +elem2make () {
19230 +    driver=""
19231 +    makevar=""
19232 +    date=`date`
19233 +    linux26=x
19234 +    while [ x"$1" != x ]; do
19235 +    case $1 in
19236 +    -t|--d|--dr|--dri|--driv|--drive|--driver)
19237 +       if test $# -lt 2; then elem2xxx_usage; fi
19238 +       shift 1; driver="$1"; shift 1;;
19239 +    -t*)
19240 +       driver=`echo "$1" | sed 's/^-D//'`; shift 1;;
19241 +    --d=*|--dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
19242 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
19243 +    --t|--ta|--tar|--targ|--targe|--target)
19244 +       if test $# -lt 2; then elem2xxx_usage; fi
19245 +       shift 1; driver="$1"; shift 1;;
19246 +    --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
19247 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
19248 +    -v|--m|--ma|--mak|--make|--make-|--make-v|--make-va|--make-var|--make-vari|--make-varia|--make-variab|--make-variabl|--make-variable)
19249 +       if test $# -lt 2; then elem2xxx_usage; fi
19250 +       shift 1; makevar="$1"; shift 1;;
19251 +    -v*)
19252 +       makevar=`echo "$1" | sed 's/^-v//'`; shift 1;;
19253 +    --m=*|--ma=*|--mak=*|--make=*|--make-=*|--make-v=*|--make-va=*|--make-var=*|--make-vari=*|--make-varia=*|--make-variab=*|--make-variabl=*|--make-variable=*)
19254 +       makevar=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
19255 +    -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude)
19256 +        if test $# -lt 2; then elem2xxx_usage; fi
19257 +       shift 1
19258 +       for i in $1; do excludes=";/^$i"' \\$'"/d$excludes"; done
19259 +       shift 1;;
19260 +    -x*)
19261 +       this_exclude=`echo "$1" | sed 's/^-p//'`
19262 +       for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done
19263 +       shift 1;;
19264 +    --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*)
19265 +       this_exclude=`echo "$1" | sed 's/^[^=]*=//'`
19266 +       for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done
19267 +       shift 1;;
19268 +    --l|--li|--lin|--linu|--linux|--linux2|--linux26)
19269 +       linux26=1; shift 1;;
19270 +    --no-l|--no-li|--no-lin|--no-linu|--no-linux|--no-linux2|--no-linux26)
19271 +       linux26=0; shift 1;;
19272 +    -V|--verb|--verbo|--verbos|--verbose)
19273 +       verbose=1; shift 1;;
19274 +    -h|--h|--he|--hel|--help)
19275 +       cat <<'EOF' 1>&2
19276 +'Click-buildtool elem2make' reads an 'elements.conf' file generated by
19277 +'click-buildtool findelem' on the standard input, and writes a Makefile
19278 +fragment defining the ELEMENT_OBJS variable to the standard output.
19279 +
19280 +Usage: click-buildtool elem2make [-t DRIVER] [-V] < elements.conf
19281 +
19282 +Options:
19283 +  -t, --driver DRIVER      Set target driver to DRIVER ('userlevel',
19284 +                           'linuxmodule', 'bsdmodule', 'ns', or 'tool').
19285 +  -v, --make-variable N    Use make variable N.
19286 +      --linux26            Generate Linux 2.6-style makefile fragment.
19287 +  -x, --exclude FILE       Do not include FILE.
19288 +  -V, --verbose            Print more information.
19289 +  -h, --help               Print this message and exit.
19290 +
19291 +Report bugs to <click@pdos.lcs.mit.edu>.
19292 +EOF
19293 +       exit 0;;
19294 +    *)
19295 +       elem2xxx_usage;;
19296 +    esac
19297 +    done
19298 +
19299 +    L=
19300 +    defmakevar="ELEMENT_OBJS"
19301 +    if test -n "$driver"; then
19302 +       if test "$driver" = 'user' -o "$driver" = 'userlevel'; then
19303 +           L=u
19304 +       elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then
19305 +           L=k
19306 +           test "$linux26" = x && linux26="$LINUXMODULE_2_6"
19307 +       elif test "$driver" = 'bsdmodule'; then
19308 +           L=b
19309 +       elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then
19310 +           L=n
19311 +       elif test "$driver" = 'tool'; then
19312 +           L=t
19313 +       else
19314 +           echo "Unknown driver $driver" 1>&2
19315 +           exit 1
19316 +       fi
19317 +    fi
19318 +    osuffix=".${L}o"
19319 +    if test -z "$makevar"; then
19320 +       makevar=$defmakevar
19321 +    fi
19322 +
19323 +    # expand list of files
19324 +    elemconf=`cat`
19325 +    files=`echo "$elemconf" | grep -v '^#' | sed 's/[  ].*//'`
19326 +
19327 +    # find libraries
19328 +    libs=`echo "$elemconf" | sed '/-!lib/!d;s/^.*-!lib//g;s/;/ /g' | grep .`
19329 +    if test -n "$libs"; then
19330 +       libs=`echo "$libs" | sed 's/^\([^ ][^ ]*\) *$/\1 \1/'`
19331 +       while echo "$libs" | grep ' [^ ].* [^ ]' >/dev/null; do
19332 +           libs=`echo "$libs" | sed '/ [^ ].* [^ ]/s/^\([^ ][^ ]*\)  *\([^ ][^ ]*\) /\1 \2\\
19333 +\2 /'`
19334 +       done
19335 +    fi
19336 +    test -n "$libs" && libs=`echo "$libs" | tsort`
19337 +
19338 +    # massage awk script based on Linux 2.6 or not
19339 +    if test "$linux26" = 1; then
19340 +       set_subdir_scriptlet='
19341 +           if (dir != "" && substr(dir, 1, 1) == "/")
19342 +               subdirs[dirid] = dir;
19343 +           else
19344 +               subdirs[dirid] = "$(obj)/" dir;
19345 +        '
19346 +       pattern_scriptlet='$(addprefix $(obj)/,$('"$makevar"'__", i, ")): $(obj)/%'"$osuffix"
19347 +       ccaction='      $(call if_changed_dep,cxxcompile)'
19348 +       caction='       $(call if_changed_dep,ccompile)'
19349 +    else
19350 +       set_subdir_scriptlet='subdirs[dirid] = dir;'
19351 +       pattern_scriptlet='$('"$makevar"'__", i, "): %'"$osuffix"
19352 +       ccaction='      $(call cxxcompile,-c $< -o $@,CXX)'
19353 +       caction='       $(call ccompile,-c $< -o $@,CC)'
19354 +       if test -n "$L"; then
19355 +           ccaction="$ccaction"'\n     $(FIXDEP)'
19356 +           caction="$caction"'\n       $(FIXDEP)'
19357 +       fi
19358 +    fi
19359 +
19360 +    # output
19361 +    echo "# Generated by 'click-buildtool elem2make' on" `date`
19362 +    echo "$files" | $awk '
19363 +BEGIN { OFS = ""
19364 +    action["c"] = "'"$caction"'";
19365 +    action["cc"] = "'"$ccaction"'";
19366 +}
19367 +{   filetype = ($0 ~ /\.c$/ ? "c" : "cc");
19368 +    sub(/\.cc*$/, "'"$osuffix"'");
19369 +    i = match($0, /\/[^\/]*$/);
19370 +    if (i == 0) {
19371 +       dir = "";
19372 +       file = $0;
19373 +    } else {
19374 +       dir = substr($0, 1, RSTART);
19375 +       file = substr($0, RSTART + 1);
19376 +    }
19377 +    decdir = filetype dir;
19378 +    if (decdir in subdirid)
19379 +       dirid = subdirid[decdir];
19380 +    else {
19381 +       dirid = nsubdirs++;
19382 +       subdirid[decdir] = dirid;
19383 +       subdirtype[dirid] = filetype;
19384 +       '"$set_subdir_scriptlet"'
19385 +    }
19386 +    elements[dirid] = elements[dirid] file " \\\n";
19387 +}
19388 +END {
19389 +    for (i = 0; i < nsubdirs; i++) {
19390 +       print "'"$makevar"'__", i, " = \\\n", elements[i];
19391 +       allsubdirs = allsubdirs "$('"$makevar"'__" i ") \\\n";
19392 +    }
19393 +    print "'"$makevar"' = \\\n", allsubdirs;
19394 +    for (i = 0; i < nsubdirs; i++) {
19395 +       print "'"$pattern_scriptlet"': ", subdirs[i], "%.", subdirtype[i];
19396 +       print action[subdirtype[i]];
19397 +    }
19398 +}' | sed "$excludes"
19399 +    echo
19400 +    
19401 +    if test -n "$libs"; then
19402 +       libvar=`echo $makevar | sed 's/OBJS$/LIBS/'`
19403 +       echo $libvar = $libs
19404 +    fi
19405 +}
19406 +
19407 +elem2xxx () {
19408 +    package=""
19409 +    date=`date`
19410 +    standards=''
19411 +    includes=''
19412 +    while [ x"$1" != x ]; do
19413 +    case $1 in
19414 +    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
19415 +       standards=1; shift 1;;
19416 +    -V|--verb|--verbo|--verbos|--verbose)
19417 +       verbose=1; shift 1;;
19418 +    -i|--i|--in|--inc|--incl|--inclu|--includ|--include)
19419 +       if test $# -lt 2; then elem2xxx_usage; fi
19420 +       includes="$includes print '#include $2';"; shift 2;;
19421 +    -i*)
19422 +       this_include=`echo "$1" | sed 's/^-i//'`
19423 +       includes="$includes print '#include $this_include';"; shift 1;;
19424 +    --i=*|--in=*|--inc=*|--incl=*|--inclu=*|--includ=*|--include=*)
19425 +       this_include=`echo "$1" | sed 's/^[^=]*=//'`
19426 +       includes="$includes print '#include $this_include';"; shift 1;;
19427 +    -h|--h|--he|--hel|--help)
19428 +       if test "$elem2" = export; then
19429 +           cat <<'EOF' 1>&2
19430 +'Click-buildtool elem2export' reads an 'elements.conf' file generated by
19431 +'click-buildtool findelem' on the standard input, examines those files for
19432 +exported elements, and writes a C++ source file defining the 
19433 +click_export_elements() function to the standard output.
19434 +
19435 +Usage: click-buildtool elem2export [-V] < elements.conf
19436 +EOF
19437 +       elif test "$elem2" = package; then
19438 +           cat <<'EOF' 1>&2
19439 +'Click-buildtool elem2package' reads an 'elements.conf' file generated by
19440 +'click-buildtool findelem' on the standard input, examines those files for
19441 +exported elements, and writes a C++ source file suitable for creating a
19442 +dynamically linked package with those elements to the standard output. PKGNAME
19443 +is the name of the package.
19444 +
19445 +Usage: click-buildtool elem2package [-p PREFIX] [-V] PKGNAME < elements.conf
19446 +EOF
19447 +       fi
19448 +       cat <<'EOF' 1>&2
19449 +
19450 +Options:
19451 +  -S, --standards          Export standard required elements as well.
19452 +  -i, --include HDR        Emit "#include HDR" at top of file.
19453 +  -V, --verbose            Print more information.
19454 +  -h, --help               Print this message and exit.
19455 +
19456 +Report bugs to <click@pdos.lcs.mit.edu>.
19457 +EOF
19458 +       exit 0;;
19459 +    -*)
19460 +       elem2xxx_usage;;
19461 +    *)
19462 +       if test -z "$package" -a "$elem2" = package; then package="$1"; shift 1; else elem2xxx_usage; fi;;
19463 +    esac
19464 +    done
19465 +
19466 +    # set up awk program
19467 +    if test -n "$package"; then
19468 +       includes="  $includes "'print "#define WANT_MOD_USE_COUNT 1\n#include <click/config.h>\n#include <click/package.hh>\n#include <click/glue.hh>";
19469 +  for (file in INCLUDES) {
19470 +    if (file != "-") print "#include ", file;
19471 +  }'
19472 +       awk_program='BEGIN {
19473 +  OFS = ""; nrebecca = 0; packname="'"$package"'";
19474 +}
19475 +/^#/ { next; }
19476 +{
19477 +  if (NF == 1)
19478 +    next;
19479 +  INCLUDES[$2] = 1;
19480 +  for (i = 3; i <= NF; i++) {
19481 +    split($i, ans, /-/);
19482 +    if (ans[2] == "!si")
19483 +      B = B "  " ans[1] "::static_initialize();\n";
19484 +    else if (ans[2] == "!sc")
19485 +      C = C "  " ans[1] "::static_cleanup();\n";
19486 +    else if (ans[2] !~ /^!/) {
19487 +      B = B "  hatred_of_rebecca[" nrebecca "] = click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n"
19488 +      C = C "  click_remove_element_type(hatred_of_rebecca[" nrebecca "]);\n";
19489 +      D = D "   case " nrebecca ": return new " ans[1] ";\n";
19490 +      nrebecca++;
19491 +    }
19492 +  }
19493 +}
19494 +END {
19495 +  print "/* Generated by \"click-buildtool elem2package\" on '"$date"' */";
19496 +  print "/* Package name: ", packname, " */\n";
19497 +'"$includes"'
19498 +  print "\nCLICK_USING_DECLS";
19499 +  print "static int hatred_of_rebecca[", nrebecca, "];";
19500 +  print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n  switch (heywood) {\n", D, "   default: return 0;\n  }\n}\n";
19501 +  print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), THIS_MODULE)\n#endif";
19502 +  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";
19503 +  print "  click_provide(\"", packname, "\");\n", B, "  CLICK_DMALLOC_REG(\"nXXX\");\n  return 0;";
19504 +  print "#ifdef CLICK_BSDMODULE\n  } else if (t == MOD_UNLOAD) {\n#else\n}\nextern \"C\" void\ncleanup_module()\n{\n#endif";
19505 +  print C, "  click_unprovide(\"", packname, "\");";
19506 +  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";
19507 +}
19508 +'
19509 +
19510 +    else
19511 +       includes="$includes"'  print "#include <click/config.h>\n#include <click/package.hh>";
19512 +  for (file in INCLUDES) {
19513 +    if (file != "-") print "#include ", file;
19514 +  }'
19515 +       awk_program='BEGIN {
19516 +  OFS = ""; nrebecca = 0;
19517 +}
19518 +/^#/ { next; }
19519 +{
19520 +  if (NF == 1)
19521 +    next;
19522 +  INCLUDES[$2] = 1;
19523 +  for (i = 3; i <= NF; i++) {
19524 +    split($i, ans, /-/);
19525 +    if (ans[2] == "!si")
19526 +      B = B "  " ans[1] "::static_initialize();\n";
19527 +    else if (ans[2] == "!sc")
19528 +      C = C "  " ans[1] "::static_cleanup();\n";
19529 +    else if (ans[2] !~ /^!/) {
19530 +      B = B "  (void) click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n";
19531 +      D = D "   case " nrebecca ": return new " ans[1] ";\n";
19532 +    }
19533 +    nrebecca++;
19534 +  }
19535 +}
19536 +END {
19537 +  print "/* Generated by \"click-buildtool elem2export\" on '"$date"' */\n";
19538 +'"$includes"'
19539 +  print "CLICK_USING_DECLS";
19540 +  print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n  switch (heywood) {\n", D, "   default: return 0;\n  }\n}\n";
19541 +  print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), 0)\n#endif";
19542 +  print "void\nclick_export_elements()\n{\n", B, "  CLICK_DMALLOC_REG(\"nXXX\");\n}\n";
19543 +  print "void\nclick_unexport_elements()\n{\n", C, "}";
19544 +}
19545 +'
19546 +    fi
19547 +
19548 +    # Actually generate the command!
19549 +    if test -z "$standards"; then
19550 +       $awk "$awk_program"
19551 +    else
19552 +       cat <<EOF >/tmp/click-buildtool-standards.$$
19553 +-      <click/standard/addressinfo.hh> AddressInfo-AddressInfo
19554 +-      <click/standard/alignmentinfo.hh>       AlignmentInfo-AlignmentInfo
19555 +-      <click/standard/errorelement.hh>        ErrorElement-ErrorElement
19556 +-      <click/standard/portinfo.hh>    PortInfo-PortInfo
19557 +-      <click/standard/scheduleinfo.hh>        ScheduleInfo-ScheduleInfo
19558 +EOF
19559 +       cat - /tmp/click-buildtool-standards.$$ | $awk "$awk_program"
19560 +       /bin/rm -f /tmp/click-buildtool-standards.$$
19561 +    fi
19562 +}
19563 +
19564 +
19565 +
19566 +############
19567 +# PROVIDES #
19568 +############
19569 +
19570 +provides_usage () {
19571 +    echo "Usage: click-buildtool provides [REQS]" 1>&2
19572 +    echo "Try 'click-buildtool provides --help' for more information." 1>&2
19573 +    exit 1
19574 +}
19575 +
19576 +provides () {
19577 +    provisions="$default_provisions
19578 +$driver_provisions
19579 +"`elementmap_provisions ${clickdatadir}/elementmap.xml`
19580 +    requirements=""
19581 +    stdin=n; query=n; print=n
19582 +    while [ x"$1" != x ]; do
19583 +    case $1 in
19584 +    -q|--q|--qu|--que|--quer|--query)
19585 +       query=y; shift 1;;
19586 +    -l|--pri|--prin|--print)
19587 +       print=y; shift 1;;
19588 +    -r|--pro|--prov|--provi|--provid|--provide)
19589 +       if test $# -lt 2; then provides_usage; fi
19590 +       shift 1; provisions="$1
19591 +$provisions"; shift 1;;
19592 +    -r*)
19593 +       provisions=`echo "$1" | sed 's/^-r//'`"
19594 +$provisions"; shift 1;;
19595 +    --p=*|--pr=*|--pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
19596 +       provisions=`echo "$1" | sed 's/^[^=]*=//'`"
19597 +$provisions"; shift 1;;
19598 +    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
19599 +       if test $# -lt 2; then provides_usage; fi
19600 +       shift 1; provisions=`elementmap_provisions $1`"
19601 +$provisions"; shift 1;;
19602 +    -e*)
19603 +       emap=`echo "$1" | sed 's/^-e//'`
19604 +       provisions=`elementmap_provisions $emap`"
19605 +$provisions"; shift 1;;
19606 +    --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*)
19607 +       emap=`echo "$1" | sed 's/^[^=]*=//'`
19608 +       provisions=`elementmap_provisions $emap`"
19609 +$provisions"; shift 1;;
19610 +    -h|--h|--he|--hel|--help)
19611 +       cat <<'EOF' 1>&2
19612 +'Click-buildtool provides' exits with status 0 if the Click installation
19613 +provides all requirement(s) in REQ arguments, and status 1 otherwise.
19614 +
19615 +Usage: click-buildtool provides [OPTIONS] [REQ...]
19616 +
19617 +Options:
19618 +  -q, --query              Print provisions to standard output.
19619 +  -r, --provide REQ        Provide requirement(s) in REQ.
19620 +  -e, --elementmap EMAP    Provide requirement(s) from EMAP.
19621 +  -l, --print              Print 0 (REQs not provided) or 1 (REQs provided).
19622 +  -h, --help               Print this message and exit.
19623 +
19624 +Report bugs to <click@pdos.lcs.mit.edu>.
19625 +EOF
19626 +       exit 0;;
19627 +    -)
19628 +       stdin=y; shift 1;;
19629 +    -*)
19630 +       provides_usage;;
19631 +    *)
19632 +       requirements="$1
19633 +$requirements"; shift 1;;
19634 +    esac
19635 +    done
19636 +
19637 +    [ $stdin = y ] && requirements="`cat` $requirements"
19638 +    provisions="`echo "$provisions" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`"
19639 +    [ $query = y ] && echo "$provisions"
19640 +    requirements="`echo "$requirements" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`"
19641 +    awk_provisions="`echo "$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`"
19642 +    echo "$requirements" | $awk -F: 'BEGIN {
19643 +'"$awk_provisions"'
19644 +}
19645 +/./ { if (!dep[$1]) exit 1; }' >/dev/null 2>&1
19646 +    status=$?
19647 +    [ $print = y ] && expr 1 - $status
19648 +    exit $status
19649 +}
19650 +
19651 +
19652 +#############
19653 +# QUIETLINK #
19654 +#############
19655 +
19656 +quietlink_usage () {
19657 +    echo "Usage: click-buildtool quietlink" 1>&2
19658 +    echo "Try 'click-buildtool quietlink --help' for more information." 1>&2
19659 +    exit 1
19660 +}
19661 +
19662 +quietlink () {
19663 +    while [ x"$1" != x ]; do
19664 +    case $1 in
19665 +    -h|--h|--he|--hel|--help)
19666 +       cat <<'EOF' 1>&2
19667 +'Click-buildtool quietlink' quiets the GNU linker when linking an element
19668 +package. Specifically, it removes undefined reference complaints.
19669 +
19670 +Usage: ld ... 2>&1 | click-buildtool quietlink
19671 +
19672 +Options:
19673 +  -h, --help                 Print this message and exit.
19674 +
19675 +Report bugs to <click@pdos.lcs.mit.edu>.
19676 +EOF
19677 +       exit 0;;
19678 +    *)
19679 +       quietlink_usage;;
19680 +    esac
19681 +    done
19682 +
19683 +    $awk -F: 'BEGIN {
19684 +  context = ""
19685 +}
19686 +/: In function/ {
19687 +  context = $0
19688 +  next
19689 +}
19690 +/: undefined reference to/ {
19691 +  next
19692 +}
19693 +/: more undefined references to/ {
19694 +  next
19695 +}
19696 +{
19697 +  if (context != "") {
19698 +    print context
19699 +    context = ""
19700 +  }
19701 +  print $0
19702 +}' 1>&2
19703 +}
19704 +
19705 +
19706 +
19707 +##########
19708 +# PREFIX #
19709 +##########
19710 +
19711 +prefix_usage () {
19712 +    echo "Usage: click-buildtool prefix" 1>&2
19713 +    echo "Try 'click-buildtool prefix --help' for more information." 1>&2
19714 +    exit 1
19715 +}
19716 +
19717 +prefix () {
19718 +    while [ x"$1" != x ]; do
19719 +    case $1 in
19720 +    -h|--h|--he|--hel|--help)
19721 +       cat <<'EOF' 1>&2
19722 +'Click-buildtool prefix' prints the Click prefix directory.
19723 +
19724 +Usage: click-buildtool prefix
19725 +
19726 +Options:
19727 +  -h, --help                 Print this message and exit.
19728 +
19729 +Report bugs to <click@pdos.lcs.mit.edu>.
19730 +EOF
19731 +       exit 0;;
19732 +    *)
19733 +       prefix_usage;;
19734 +    esac
19735 +    done
19736 +    echo $prefix
19737 +}
19738 +
19739 +
19740 +
19741 +############
19742 +# KVERSION #
19743 +############
19744 +
19745 +kversion_usage () {
19746 +    echo_n "Usage: click-buildtool kversion [--gpl] > kversion.c" 1>&2
19747 +    echo "Try 'click-buildtool kversion --help' for more information." 1>&2
19748 +    exit 1
19749 +}
19750 +
19751 +kversion () {
19752 +    gpl=0
19753 +    linux26=$LINUXMODULE_2_6
19754 +    while [ x"$1" != x ]; do
19755 +    case $1 in
19756 +    --g|--gp|--gpl)
19757 +       gpl=1; shift 1;;
19758 +    -h|--h|--he|--hel|--help)
19759 +       cat <<'EOF' 1>&2
19760 +'Click-buildtool kversion' writes a kversion.c file, to be used for building
19761 +a Click kernel package, on the standard output.
19762 +
19763 +Usage: click-buildtool kversion [--gpl] > kversion.c
19764 +
19765 +Options:
19766 +      --gpl                The package is dual-licensed BSD/GPL (otherwise
19767 +                           no license).
19768 +  -h, --help               Print this message and exit.
19769 +
19770 +Report bugs to <click@pdos.lcs.mit.edu>.
19771 +EOF
19772 +       exit 0;;
19773 +    *)
19774 +       kversion_usage;;
19775 +    esac
19776 +    done
19777 +
19778 +    cat <<EOF
19779 +#include <click/config.h>
19780 +#include <linux/version.h>
19781 +#include <linux/module.h>
19782 +
19783 +/* a new version of EXPORT_NO_SYMBOLS that works */
19784 +const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
19785 +EOF
19786 +    test $gpl = 1 && cat <<EOF
19787 +
19788 +#ifdef MODULE_LICENSE
19789 +MODULE_LICENSE("Dual BSD/GPL");
19790 +#endif
19791 +EOF
19792 +}
19793 +
19794 +
19795 +
19796 +##########
19797 +# KBUILD #
19798 +##########
19799 +
19800 +kbuild_usage () {
19801 +    echo_n "Usage: click-buildtool kbuild > Kbuild" 1>&2
19802 +    echo "Try 'click-buildtool kbuild --help' for more information." 1>&2
19803 +    exit 1
19804 +}
19805 +
19806 +kbuild () {
19807 +    while [ x"$1" != x ]; do
19808 +    case $1 in
19809 +    -h|--h|--he|--hel|--help)
19810 +       cat <<'EOF' 1>&2
19811 +'Click-buildtool kbuild' writes a Kbuild file, to be used for building
19812 +a Click kernel package for Linux 2.6 kernels, on the standard output.
19813 +
19814 +Usage: click-buildtool kbuild > Kbuild
19815 +
19816 +Options:
19817 +  -h, --help               Print this message and exit.
19818 +
19819 +Report bugs to <click@pdos.lcs.mit.edu>.
19820 +EOF
19821 +       exit 0;;
19822 +    *)
19823 +       kversion_usage;;
19824 +    esac
19825 +    done
19826 +
19827 +    echo "include ${clickdatadir}/pkg-linuxmodule-26.mk"
19828 +}
19829 +
19830 +
19831 +
19832 +###############
19833 +# MAKEPACKAGE #
19834 +###############
19835 +
19836 +makepackage_usage () {
19837 +    echo "Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES..." 1>&2
19838 +    echo "Try 'click-buildtool makepackage for more information." 1>&2
19839 +    exit 1
19840 +}
19841 +
19842 +makepackage () {
19843 +    driver=""
19844 +    date=`date`
19845 +    dir=
19846 +    pkg=
19847 +    srcs=
19848 +    quiet=
19849 +    cflags=
19850 +    while [ x"$1" != x ]; do
19851 +    case $1 in
19852 +    -t|--d|--dr|--dri|--driv|--drive|--driver)
19853 +       test $# -lt 2 && makepackage_usage
19854 +       shift 1; driver="$1"; shift 1;;
19855 +    -t*)
19856 +       driver=`echo "$1" | sed 's/^-D//'`; shift 1;;
19857 +    --dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
19858 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
19859 +    --t|--ta|--tar|--targ|--targe|--target)
19860 +        test $# -lt 2 && makepackage_usage
19861 +       shift 1; driver="$1"; shift 1;;
19862 +    --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
19863 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
19864 +    -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
19865 +        test $# -lt 2 && makepackage_usage
19866 +       shift 1; dir="$1"; shift 1;;
19867 +    -C*)
19868 +       dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;;
19869 +    --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
19870 +       dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
19871 +    -q|--q|--qu|--qui|--quie|--quiet)
19872 +       quiet="-s"; shift 1;;
19873 +    -h|--h|--he|--hel|--help)
19874 +       cat <<'EOF' 1>&2
19875 +'Click-buildtool makepackage' builds a Click package for the specified
19876 +driver from sources listed on the command line.
19877 +
19878 +Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES...
19879 +
19880 +Options:
19881 +  -t, --driver DRIVER      Set target driver to DRIVER ('userlevel',
19882 +                           'linuxmodule', 'bsdmodule', 'ns', or 'tool').
19883 +  -q, --quiet              Build quietly (may be ignored).
19884 +  -C, --directory DIR      Switch to DIR directory before building.
19885 +  -h, --help               Print this message and exit.
19886 +  -[other options]         Passed to the C/C++ compiler.
19887 +
19888 +Report bugs to <click@pdos.lcs.mit.edu>.
19889 +EOF
19890 +       exit 0;;
19891 +    -*)
19892 +       cflags="$cflags $1"; shift 1;;
19893 +    *)
19894 +       if test -z "$pkg"; then
19895 +           pkg="$1"; shift 1
19896 +       else
19897 +           srcs="$srcs
19898 +$1"; shift 1
19899 +       fi;;
19900 +    esac
19901 +    done
19902 +
19903 +    test -z "$srcs" && makepackage_usage
19904 +
19905 +    objs=
19906 +    objsvar=OBJS
19907 +    if test -z "$driver" -o "$driver" = 'user' -o "$driver" = 'userlevel'; then
19908 +       L=u
19909 +    elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then
19910 +       L=k
19911 +    elif test "$driver" = 'bsdmodule'; then
19912 +       L=b
19913 +    elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then
19914 +       L=n
19915 +    elif test "$driver" = 'tool'; then
19916 +       L=t
19917 +    else
19918 +       echo "Unknown driver $driver" 1>&2
19919 +       exit 1
19920 +    fi
19921 +    osuffix=".${L}o"
19922 +
19923 +    if test -n "$dir"; then cd "$dir"; fi
19924 +    echo > ${L}elements.conf
19925 +    echo "$srcs" | grep . | elem2make -t $driver > ${L}elements.mk
19926 +    echo "PACKAGE_OBJS :=" >> ${L}elements.mk
19927 +
19928 +    echo "package = $pkg
19929 +
19930 +srcdir = .
19931 +top_srcdir = .
19932 +builddir = .
19933 +top_builddir = .
19934 +PACKAGE_CFLAGS = $cflags
19935 +PACKAGE_CXXFLAGS = $cflags
19936 +
19937 +include ${clickdatadir}/config.mk
19938 +include ${clickdatadir}/pkg-Makefile" > Makefile
19939 +    
19940 +    test -z "$quiet" && echo "+" $gmake $pkg$osuffix
19941 +    $gmake $quiet $pkg$osuffix
19942 +}
19943 +
19944 +
19945 +
19946 +#########
19947 +# KSYMS #
19948 +#########
19949 +
19950 +ksyms_usage () {
19951 +    echo "Usage: click-buildtool ksyms OBJ... > KSYMS" 1>&2
19952 +    echo "Try 'click-buildtool ksyms --help' for more information." 1>&2
19953 +    exit 1
19954 +}
19955 +
19956 +ksyms () {
19957 +    driver=""
19958 +    date=`date`
19959 +    dir=
19960 +    objs=
19961 +    exclude=
19962 +    while [ x"$1" != x ]; do
19963 +    case $1 in
19964 +    -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
19965 +        test $# -lt 2 && ksyms_usage
19966 +       shift 1; dir="$1"; shift 1;;
19967 +    -C*)
19968 +       dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;;
19969 +    --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
19970 +       dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
19971 +    -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude)
19972 +       test $# -lt 2 && ksyms_usage
19973 +       shift 1; exclude="$exclude
19974 +$1"; shift 1;;
19975 +    -x*)
19976 +       exclude="$exclude
19977 +`echo "$1" | sed 's/^-x//'`"; shift 1;;
19978 +    --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*)
19979 +       exclude="$exclude
19980 +`echo "$1" | sed 's/^[^=]*=//'`"; shift 1;;
19981 +    -h|--h|--he|--hel|--help)
19982 +       cat <<'EOF' 1>&2
19983 +'Click-buildtool ksyms' creates a C file that exports all symbols for the
19984 +Click objects listed on the command line.
19985 +
19986 +Usage: click-buildtool ksyms OBJ... > KSYMS
19987 +
19988 +Options:
19989 +  -x, --exclude=FILE       Ignore OBJ even if it is supplied as an argument.
19990 +  -C, --directory DIR      Switch to DIR directory before running.
19991 +  -h, --help               Print this message and exit.
19992 +
19993 +Report bugs to <click@pdos.lcs.mit.edu>.
19994 +EOF
19995 +       exit 0;;
19996 +    *)
19997 +       objs="$objs
19998 +$1"; shift 1;;
19999 +    esac
20000 +    done
20001 +
20002 +    test -z "$objs" && ksyms_usage
20003 +    objs=`echo "$objs" | sort | uniq`
20004 +    test -n "$exclude" && objs=`echo "$objs
20005 +$exclude" | sort | uniq -u`
20006 +
20007 +    if test -n "$dir"; then cd "$dir"; fi
20008 +    echo "// Created by 'click-buildtool ksyms' on $date"
20009 +    echo "#include <click/config.h>"
20010 +    echo "#include <linux/version.h>"
20011 +    echo "#include <linux/module.h>"
20012 +    nm -g $objs | $awk '
20013 +BEGIN {
20014 +    printed["init_module"] = printed["cleanup_module"] = 1;
20015 +}
20016 +/^[    ]/ { 
20017 +    next 
20018 +}
20019 +/........[     ][ABCDGRSTVW]/ {
20020 +    x = $3;
20021 +    if (x ~ /^[_A-Za-z][_A-Za-z0-9]*$/ && !printed[x]) {
20022 +       printed[x] = 1;
20023 +       if (x != "click_assert_failed")
20024 +           print "extern char " x "[];";
20025 +       print "EXPORT_SYMBOL(" x ");";
20026 +    }
20027 +}'
20028 +}
20029 +
20030 +
20031 +
20032 +################
20033 +# MAIN PROGRAM #
20034 +################
20035 +
20036 +if test $# = 0; then
20037 +    # force usage message
20038 +    set crapfunc
20039 +fi
20040 +
20041 +while [ x"$1" != x ]; do
20042 +case $1 in
20043 +  --vers|--versi|--versio|--version)
20044 +     cat <<'EOF'
20045 +click-buildtool (Click) 1.6.0
20046 +Copyright (c) 2000-2001 Massachusetts Institute of Technology
20047 +Copyright (c) 2000-2004 Mazu Networks, Inc.
20048 +Copyright (c) 2001-2003 International Computer Science Institute
20049 +Copyright (c) 2004-2007 Regents of the University of California
20050 +This is free software; see the source for copying conditions.
20051 +There is NO warranty, not even for merchantability or fitness for a
20052 +particular purpose.
20053 +EOF
20054 +     exit 0;;
20055 +  -V|--verb|--verbo|--verbos|--verbose)
20056 +     verbose=1; shift 1;;
20057 +  -h|--h|--he|--hel|--help)
20058 +     cat <<'EOF' 1>&2
20059 +'Click-buildtool' is a set of tools used when building Click. For information
20060 +on a particular tool, run 'click-buildtool TOOLNAME --help'.
20061 +
20062 +Usage: click-buildtool elem2make [-V] [-p PREFIX] < [ELEMENTS]
20063 +   or: click-buildtool elem2export [-V] [-p PREFIX] < [ELEMENTS]
20064 +   or: click-buildtool elem2package [-V] [-p PREFIX] PACKAGENAME < [ELEMENTS]
20065 +   or: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES]
20066 +   or: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES...
20067 +   or: click-buildtool prefix
20068 +   or: click-buildtool provides [REQS]
20069 +   or: click-buildtool quietlink
20070 +   or: click-buildtool kbuild
20071 +   or: click-buildtool kversion [--gpl]
20072 +   or: click-buildtool ksyms OBJS > KSYMSFILE
20073 +
20074 +Options:
20075 +  -V, --verbose            Print more information.
20076 +  -h, --help               Print this message and exit.
20077 +      --version            Print version number and exit.
20078 +
20079 +Report bugs to <click@pdos.lcs.mit.edu>.
20080 +EOF
20081 +     exit 0;;
20082 +  findelem)
20083 +     shift 1; findelem "$@"; exit 0;;
20084 +  elem2make)
20085 +     elem2="make"; shift 1; elem2make "$@"; exit 0;;
20086 +  elem2export)
20087 +     elem2="export"; shift 1; elem2xxx "$@"; exit 0;;
20088 +  elem2package)
20089 +     elem2="package"; shift 1; elem2xxx "$@"; exit 0;;
20090 +  makepackage)
20091 +     shift 1; makepackage "$@"; exit 0;;
20092 +  prefix)
20093 +     shift 1; prefix "$@"; exit 0;;
20094 +  provides)
20095 +     shift 1; provides "$@"; exit 0;;
20096 +  quietlink)
20097 +     shift 1; quietlink "$@"; exit 0;;
20098 +  kversion)
20099 +     shift 1; kversion "$@"; exit 0;;
20100 +  kbuild)
20101 +     shift 1; kbuild "$@"; exit 0;;
20102 +  ksyms)
20103 +     shift 1; ksyms "$@"; exit 0;;
20104 +  *)
20105 +     echo "Usage: click-buildtool TOOLNAME [ARGUMENTS]
20106 +Try 'click-buildtool --help' for more information." 1>&2
20107 +     exit 1;;
20108 +esac
20109 +done
20110 diff -Nurb click-1.6.0/click-compile click-1.6.0-27/click-compile
20111 --- click-1.6.0/click-compile   1969-12-31 19:00:00.000000000 -0500
20112 +++ click-1.6.0-27/click-compile        2009-01-28 16:15:43.000000000 -0500
20113 @@ -0,0 +1,302 @@
20114 +#! /bin/sh
20115 +
20116 +# click-compile.in -- script compiles Click elements
20117 +# Eddie Kohler
20118 +#
20119 +# Copyright (c) 1999 Massachusetts Institute of Technology
20120 +# Copyright (c) 2001 International Computer Science Institute
20121 +# Copyright (c) 2005 Regents of the University of California
20122 +#
20123 +# Permission is hereby granted, free of charge, to any person obtaining a
20124 +# copy of this software and associated documentation files (the "Software"),
20125 +# to deal in the Software without restriction, subject to the conditions
20126 +# listed in the Click LICENSE file. These conditions include: you must
20127 +# preserve this copyright notice, and you cannot mention the copyright
20128 +# holders in advertising related to the Software without their permission.
20129 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
20130 +# notice is a summary of the Click LICENSE file; the license in that file is
20131 +# legally binding.
20132 +
20133 +prefix=/d/click/click-1.6.0-27/inst
20134 +exec_prefix=/d/click/click-1.6.0-27/inst
20135 +includedir=/d/click/click-1.6.0-27/inst/include
20136 +libdir=/d/click/click-1.6.0-27/inst/lib
20137 +datarootdir=/d/click/click-1.6.0-27/inst/share
20138 +datadir=/d/click/click-1.6.0-27/inst/share
20139 +srcdir=${datadir}/click/src
20140 +linuxdir=/d/kernels/linux-2.6.27.10-clickport
20141 +freebsd_includedir=/usr/include
20142 +CLICK_VERSION=1.6.0
20143 +
20144 +# determine mode
20145 +directory=.
20146 +driver=
20147 +package=NONE
20148 +cflags=
20149 +compileflag=-c
20150 +quiet=
20151 +gpl=y
20152 +while true; do
20153 +    bad=x
20154 +    case $1 in
20155 +      -t|--dr|--dri|--driv|--drive|--driver)
20156 +       driver=$2; shift 2;;
20157 +      -t*)
20158 +        driver=`echo "$1" | sed 's/^-t//'`; shift 1;;
20159 +      --dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
20160 +       driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
20161 +      --c|--cf|--cfl|--cfla|--cflag|--cflags|--de|--def|--defs)
20162 +       echo   -I$includedir
20163 +       exit 0;;
20164 +      --l|--li|--lib|--libs)
20165 +       echo -L$libdir -lclick  -lpcap -ldl 
20166 +       exit 0;;
20167 +      --toolc|--toolcf|--toolcfl|--toolcfla|--toolcflag|--toolcflags)
20168 +       echo -DCLICK_TOOL -I$includedir
20169 +       exit 0;;
20170 +      --tooll|--toolli|--toollib|--toollibs)
20171 +       echo -L$libdir -lclicktool -ldl 
20172 +       exit 0;;
20173 +      --o|--ot|--oth|--othe|--other|--otherl|--otherli|--otherlib|--otherlibs)
20174 +       echo  -lpcap -ldl 
20175 +       exit 0;;
20176 +      -d|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
20177 +       directory=$2; shift 2;;
20178 +      -d*)
20179 +       directory=`echo "$1" | sed 's/^-d//'`; shift 1;;
20180 +      --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
20181 +       directory=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
20182 +      --t|--ta|--tar|--targ|--targe|--target)
20183 +        echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2
20184 +       driver=$2; shift 2;;
20185 +      --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
20186 +        echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2
20187 +       driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
20188 +      -p|--p|--pa|--pac|--pack|--packa|--packag|--package)
20189 +       package=$2; shift 2;;
20190 +      -p*)
20191 +       package=`echo "$1" | sed 's/^-p//'`; shift 1;;
20192 +      --p=*|--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*)
20193 +       package=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
20194 +      -q|--q|--qu|--qui|--quie|--quiet)
20195 +       quiet=y; shift 1;;
20196 +      --no-g|--no-gp|--no-gpl)
20197 +       gpl=n; shift 1;;
20198 +      -h|--h|--he|--hel|--help)
20199 +       cat <<'EOF'
20200 +'Click-compile' compiles a Click source file, or outputs any compiler options
20201 +relevant for userlevel Click drivers.
20202 +
20203 +Usage: click-compile -t DRIVER [OPTIONS] SOURCEFILE...
20204 +
20205 +Options:
20206 +      --defs              Outputs preprocessor options for userlevel drivers.
20207 +      --libs              Outputs link options for userlevel drivers.
20208 +      --otherlibs         Like '--libs' minus the Click library.
20209 +      --toolcflags        Outputs C/C++ flags options for tools.
20210 +      --toollibs          Outputs link options for tools.
20211 +  -t, --driver DRIVER     Sets target driver to 'bsdmodule', 'linuxmodule',
20212 +                          'userlevel', 'ns', or 'tool'.
20213 +  -p, --package PACKAGE   Build a dynamically loadable package named PACKAGE.
20214 +  -d, --directory DIR     Change to directory DIR.
20215 +  -q, --quiet             Be quiet (don't echo commands or print warnings).
20216 +      --no-gpl            Omit "BSD/GPL" declaration from kernel package.
20217 +  -h, --help              Print this message and exit.
20218 +  -v, --version           Print version number and exit.
20219 +  Other options are passed to the compiler unchanged.
20220 +
20221 +Report bugs to <click@pdos.lcs.mit.edu>.
20222 +EOF
20223 +       exit 0;;
20224 +      -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
20225 +       echo click-compile '(Click)' $CLICK_VERSION
20226 +       cat <<"EOF"
20227 +Copyright (C) 1999-2001 Massachusetts Institute of Technology
20228 +Copyright (C) 2002 International Computer Science Institute
20229 +Copyright (C) 2004 Regents of the University of California
20230 +This is free software; see the source for copying conditions.
20231 +There is NO warranty, not even for merchantability or fitness for any
20232 +particular purpose.
20233 +EOF
20234 +       exit 0;;
20235 +      -*)
20236 +       if test "$1" = -E -o "$1" = -c -o "$1" = -S; then
20237 +           compileflag=$1
20238 +       else
20239 +           cflags="$cflags '$1'"
20240 +       fi
20241 +       shift 1;;
20242 +      *)
20243 +       bad=;;
20244 +    esac
20245 +    if test -z "$bad"; then break; fi
20246 +done
20247 +
20248 +cd $directory
20249 +
20250 +# test directory function
20251 +test_dir () {
20252 +    test -d "$1" -a -d "$1/elements" -a -d "$1/lib"
20253 +}
20254 +
20255 +# analyze CLICKPATH to find sources
20256 +path=${CLICKPATH-:}
20257 +tried_defaults=
20258 +include_source=
20259 +while true; do
20260 +    case $path in
20261 +      :*)
20262 +       if test -z "$tried_defaults" && test_dir "$srcdir"; then
20263 +           include_source="-I$srcdir"
20264 +       else
20265 +           tried_defaults=y
20266 +       fi
20267 +       path=`echo "$path" | sed 's/://'`
20268 +       ;;
20269 +      *:*)
20270 +       dir=`echo "$path" | sed 's/:.*//'`
20271 +       if test_dir "$dir"; then include_source="-I$dir"; fi
20272 +       path=`echo "$path" | sed 's/[^:]*://'`
20273 +       ;;
20274 +      *:)
20275 +       dir=`echo "$path" | sed 's/:.*//'`
20276 +       if test_dir "$dir"; then include_source="-I$dir"; fi
20277 +       path=":"
20278 +       ;;
20279 +      *)
20280 +       if test_dir "$path"; then include_source="-I$path"; fi
20281 +       path=""
20282 +       ;;
20283 +    esac
20284 +    if test -z "$path" -o -n "$include_source"; then break; fi
20285 +done
20286 +
20287 +if test ! -d "$includedir"; then
20288 +    echo "click-compile: Cannot find Click include directory!" 1>&2
20289 +    echo "  (Have you installed Click yet?)" 1>&2
20290 +    exit 1
20291 +elif test -z "$include_source"; then
20292 +    if test -z "$quiet"; then
20293 +       echo "click-compile: warning: cannot find full Click source" 1>&2
20294 +    fi
20295 +fi
20296 +
20297 +
20298 +case $driver in
20299 +  u|us|use|user|userl|userle|userlev|userleve|userlevel)
20300 +    idefs="-DHAVE_CONFIG_H -DCLICK_USERLEVEL"
20301 +    iincludes="${include_source} -I${includedir}"
20302 +    icppflags=""
20303 +    icxxflags="-fPIC -g -O2 -MD"
20304 +    icflags="-fPIC -g -O2 -MD"
20305 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
20306 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
20307 +    driver=userlevel;;
20308 +  k|ke|ker|kern|kerne|kernel|l|li|lin|linu|linux|linuxm|linuxmo|linuxmod|linuxmodu|linuxmodul|linuxmodule)
20309 +    idefs="-DHAVE_CONFIG_H -DCLICK_LINUXMODULE"
20310 +    iincludes="${include_source} -I${includedir} -I${linuxdir}/include"
20311 +    icppflags=""
20312 +    icxxflags=" -O2 -MD"
20313 +    icflags=" -O2 -MD"
20314 +    command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
20315 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
20316 +    driver=linuxmodule;;
20317 +  b|bs|bsd|bsdm|bsdmo|bsdmod|bsdmodu|bsdmodul|bsdmodule)
20318 +    idefs="-DHAVE_CONFIG_H -DCLICK_BSDMODULE"
20319 +    iincludes="-nostdinc ${include_source} -I${includedir}"
20320 +    icppflags=""
20321 +    icxxflags=" -O2 -MD"
20322 +    icflags=" -O2 -MD"
20323 +    command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
20324 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
20325 +    driver=bsdmodule;;
20326 +  ns|nsm|nsmo|nsmod|nsmodu|nsmodul|nsmodule)
20327 +    idefs="-DHAVE_CONFIG_H -DCLICK_NS"
20328 +    iincludes="${include_source} -I${includedir}"
20329 +    icppflags=""
20330 +    icxxflags="-fPIC -g -O2 -MD"
20331 +    icflags="-fPIC -g -O2 -MD"
20332 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
20333 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
20334 +    driver=ns;;
20335 +  t|to|too|tool)
20336 +    idefs="-DHAVE_CONFIG_H -DCLICK_TOOL"
20337 +    iincludes="${include_source} -I${includedir}"
20338 +    icppflags=""
20339 +    icxxflags="-fPIC -g -O2 -MD"
20340 +    icflags="-fPIC -g -O2 -MD"
20341 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
20342 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
20343 +    driver=tool;;
20344 +  "")
20345 +    echo "click-compile: you must specify a driver" 1>&2; exit 1;;
20346 +  *)
20347 +    echo "click-compile: acceptable drivers are 'userlevel', 'linuxmodule'," 1>&2
20348 +    echo "click-compile:   'bsdmodule', and 'tool'" 1>&2; exit 1;;
20349 +esac
20350 +
20351 +exec_command () {
20352 +    if test -z "$quiet"; then
20353 +       echo "$@" 1>&2
20354 +    fi
20355 +    eval "$@" || exit 1
20356 +}
20357 +
20358 +compile_file () {
20359 +    option=
20360 +    source="$1"; shift
20361 +    if test -r "$source"; then
20362 +       option=`head -n 5 $source | grep '^/\*\* click-compile:' | sed -e 's/\/\*\* click-compile://g' -e 's/\*\///g'`
20363 +    fi
20364 +    exec_command $command $option $source "$@"
20365 +}
20366 +
20367 +# do stuff
20368 +if test "x$package" != "xNONE"; then
20369 +    command="$command -DCLICK_PACKAGE"
20370 +    files=; rmfiles=
20371 +    trap 'rm -f $rmfiles' 0
20372 +    trap 'rm -f $rmfiles; exit 1' 1 2 15
20373 +    for file; do
20374 +       if echo "$file" | grep '\.cc*$' >/dev/null 2>&1; then
20375 +           objfile=`echo "$file" | sed 's/\.c*$/'"$$"'\.o/;s/^.*\///'`
20376 +           compile_file $file -o $objfile
20377 +           rmfiles="$rmfiles $objfile "`echo $objfile | sed 's/\.o/\.d/'`
20378 +       else
20379 +           objfile="$file"
20380 +       fi
20381 +       files="$files $objfile"
20382 +    done
20383 +    if test $driver = linuxmodule; then
20384 +       vfile=kernelversion$$
20385 +       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
20386 +       files="$files $vfile.o"
20387 +       rmfiles="$rmfiles $vfile.o $vfile.c $vfile.d"
20388 +       cat > $vfile.c <<EOF
20389 +#include <click/config.h>
20390 +#include <linux/module.h>
20391 +/* a new version of EXPORT_NO_SYMBOLS that works */
20392 +const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
20393 +EOF
20394 +       if test $gpl = y; then
20395 +           cat >> $vfile.c <<EOF
20396 +#ifdef MODULE_LICENSE
20397 +MODULE_LICENSE("Dual BSD/GPL");
20398 +#endif
20399 +EOF
20400 +       fi
20401 +       c_command_nowarn=`echo $c_command | sed 's/-W[-a-z]*//g'`
20402 +       exec_command $c_command_nowarn $vfile.c
20403 +       exec_command "ld -r -o $package $cflags $files"
20404 +       exit 0
20405 +    elif test $driver = userlevel -o $driver = tool -o $driver = ns; then
20406 +       exec_command "${CXX-g++ -W -Wall } ${CXXFLAGS-$icxxflags} -shared -o $package $cflags $files"
20407 +       exit 0
20408 +    elif test $driver = bsdmodule; then
20409 +       exec_command "ld -Bshareable -o $package $cflags $files"
20410 +       exit 0
20411 +    fi
20412 +else
20413 +    exec_command "$command $@"
20414 +    exit 0
20415 +fi
20416 Files click-1.6.0/click-inst.tar.gz and click-1.6.0-27/click-inst.tar.gz differ
20417 diff -Nurb click-1.6.0/config-linuxmodule.h.in click-1.6.0-27/config-linuxmodule.h.in
20418 --- click-1.6.0/config-linuxmodule.h.in 2007-09-18 16:24:46.000000000 -0400
20419 +++ click-1.6.0-27/config-linuxmodule.h.in      2009-01-28 16:06:28.000000000 -0500
20420 @@ -86,12 +86,10 @@
20421  #endif
20422  
20423  /* Include integer type definitions. */
20424 -#if !HAVE_LINUXMODULE_2_6
20425  # include <linux/autoconf.h>
20426 -#endif
20427  #include <linux/types.h>
20428  typedef ptrdiff_t intptr_t;
20429 -typedef unsigned long uintptr_t; /* XXX? */
20430 +//typedef unsigned long uintptr_t; /* XXX? */
20431  
20432  /* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
20433  #ifdef HAVE_INT64_IS_LONG_LINUXMODULE
20434 diff -Nurb click-1.6.0/config-linuxmodule.h.in.orig click-1.6.0-27/config-linuxmodule.h.in.orig
20435 --- click-1.6.0/config-linuxmodule.h.in.orig    1969-12-31 19:00:00.000000000 -0500
20436 +++ click-1.6.0-27/config-linuxmodule.h.in.orig 2007-09-18 16:24:46.000000000 -0400
20437 @@ -0,0 +1,154 @@
20438 +/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */
20439 +#ifndef CLICK_CONFIG_LINUXMODULE_H
20440 +#define CLICK_CONFIG_LINUXMODULE_H
20441 +
20442 +/* Define stuff under a Linux module. */
20443 +#ifndef __linux__
20444 +# error "I must be compiled on a Linux machine"
20445 +#endif
20446 +#define __KERNEL__ 1
20447 +#define MODULE 1
20448 +
20449 +/* Define if your Linux kernel is running in SMP mode. */
20450 +#undef __SMP__
20451 +
20452 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
20453 +   fairly with the kernel. */
20454 +#undef HAVE_ADAPTIVE_SCHEDULER
20455 +
20456 +/* Define if your Linux kernel has Click extensions. */
20457 +#undef HAVE_CLICK_KERNEL
20458 +
20459 +/* Define if your Linux kernel has Click transmit notification extensions. */
20460 +#undef HAVE_CLICK_KERNEL_TX_NOTIFY
20461 +
20462 +/* Define if fast checksum functions available. */
20463 +#define HAVE_FAST_CHECKSUM 1
20464 +
20465 +/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */
20466 +#undef HAVE_INT64_IS_LONG_LINUXMODULE
20467 +
20468 +/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */
20469 +#undef HAVE_INT64_IS_LONG_LONG_LINUXMODULE
20470 +
20471 +/* Define to enable assertion checking. Failed assertions will print a message
20472 +   and optionally stop the router. */
20473 +#undef HAVE_KERNEL_ASSERT
20474 +
20475 +/* Define if you have the <asm/alternative.h> header file. */
20476 +#undef HAVE_LINUX_ASM_ALTERNATIVE_H
20477 +
20478 +/* Define if your Linux kernel architecture defines atomic_set_mask. */
20479 +#undef HAVE_LINUX_ATOMIC_SET_MASK
20480 +
20481 +/* Define if your Linux kernel has polling extensions. */
20482 +#undef HAVE_LINUX_POLLING
20483 +
20484 +/* Define if your Linux kernel has read_net_skbcount. */
20485 +#undef HAVE_LINUX_READ_NET_SKBCOUNT
20486 +
20487 +/* Define if 'struct skb_shared_info' has a 'gso_size' member. */
20488 +#undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE
20489 +
20490 +/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */
20491 +#undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID
20492 +
20493 +/* Define if 'struct skb_shared_info' has a 'tso_size' member. */
20494 +#undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE
20495 +
20496 +/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */
20497 +#undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE
20498 +
20499 +/* Define if 'struct sk_buff' has an 'fclone' member. */
20500 +#undef HAVE_LINUX_SKBUFF_FCLONE
20501 +
20502 +/* Define if 'struct sk_buff' has a 'security' member. */
20503 +#undef HAVE_LINUX_SKBUFF_SECURITY
20504 +
20505 +/* Define if your Linux kernel exposes strlen. */
20506 +#undef HAVE_LINUX_STRLEN_EXPOSED
20507 +
20508 +/* Define if your Linux kernel has tulip_interrupt_hook. */
20509 +#undef HAVE_LINUX_TULIP_INTERRUPT_HOOK
20510 +
20511 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
20512 +#undef HAVE_LINUXMODULE_2_6
20513 +
20514 +/* Define if you have the net_enable_timestamp function. */
20515 +#undef HAVE_NET_ENABLE_TIMESTAMP
20516 +
20517 +/* Define if you have the netif_tx_lock function. */
20518 +#undef HAVE_NETIF_TX_LOCK
20519 +
20520 +/* Define if fast checksum functions require correct alignment. */
20521 +#ifndef __i386__
20522 +# define FAST_CHECKSUM_ALIGNED 1
20523 +#endif
20524 +
20525 +/* Include integer type definitions. */
20526 +#if !HAVE_LINUXMODULE_2_6
20527 +# include <linux/autoconf.h>
20528 +#endif
20529 +#include <linux/types.h>
20530 +typedef ptrdiff_t intptr_t;
20531 +typedef unsigned long uintptr_t; /* XXX? */
20532 +
20533 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
20534 +#ifdef HAVE_INT64_IS_LONG_LINUXMODULE
20535 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE
20536 +#endif
20537 +
20538 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */
20539 +#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE)
20540 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE
20541 +#endif
20542 +
20543 +/* Define KBUILD symbols. */
20544 +#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6
20545 +# define KBUILD_STR(s)         #s
20546 +# define KBUILD_BASENAME       KBUILD_STR(click)
20547 +# define KBUILD_MODNAME                KBUILD_STR(click)
20548 +#endif
20549 +
20550 +#ifdef __cplusplus
20551 +
20552 +/* Declare operator new. */
20553 +void *operator new(size_t) throw ();
20554 +void *operator new[](size_t) throw ();
20555 +
20556 +/* Provide placement new. */
20557 +inline void *operator new(size_t, void *v) { return v; }
20558 +#define HAVE_PLACEMENT_NEW 1
20559 +
20560 +/* Define macros that surround Click declarations. */
20561 +#define CLICK_DECLS            /* */
20562 +#define CLICK_ENDDECLS         /* */
20563 +#define CLICK_USING_DECLS      /* */
20564 +#define CLICK_NAME(name)       ::name
20565 +
20566 +/* Fix incompatibilities between some Linux versions and Click/C++. */
20567 +#include <click/fixconfig.h>
20568 +
20569 +#endif /* __cplusplus */
20570 +
20571 +/* Define assert macro. */
20572 +# ifdef __cplusplus
20573 +extern "C" {
20574 +# endif
20575 +void click_assert_failed(const char *file, int line, const char *problem_text);
20576 +# ifdef __cplusplus
20577 +}
20578 +# endif
20579 +
20580 +#ifdef HAVE_KERNEL_ASSERT
20581 +# define assert(x)     ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x))
20582 +#else
20583 +# define assert(x)     /* nada */
20584 +#endif
20585 +
20586 +/* Some architectures do not have builtin integer functions in kernel. */
20587 +#if defined(__MIPSEL__) || defined(__MIPSEB__)
20588 +# define HAVE_NO_INTEGER_BUILTINS 1
20589 +#endif
20590 +
20591 +#endif /* CLICK_CONFIG_LINUXMODULE_H */
20592 diff -Nurb click-1.6.0/config.log click-1.6.0-27/config.log
20593 --- click-1.6.0/config.log      1969-12-31 19:00:00.000000000 -0500
20594 +++ click-1.6.0-27/config.log   2009-01-28 16:15:44.000000000 -0500
20595 @@ -0,0 +1,7069 @@
20596 +This file contains any messages produced by compilers while
20597 +running configure, to aid debugging if configure makes a mistake.
20598 +
20599 +It was created by click configure 1.6.0, which was
20600 +generated by GNU Autoconf 2.61.  Invocation command line was
20601 +
20602 +  $ ./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
20603 +
20604 +## --------- ##
20605 +## Platform. ##
20606 +## --------- ##
20607 +
20608 +hostname = joyce
20609 +uname -m = i686
20610 +uname -r = 2.6.22.19
20611 +uname -s = Linux
20612 +uname -v = #1 SMP Sat Jan 10 15:48:51 EST 2009
20613 +
20614 +/usr/bin/uname -p = Intel(R) Core(TM)2 CPU          6400  @ 2.13GHz
20615 +/bin/uname -X     = unknown
20616 +
20617 +/bin/arch              = i686
20618 +/usr/bin/arch -k       = unknown
20619 +/usr/convex/getsysinfo = unknown
20620 +/usr/bin/hostinfo      = unknown
20621 +/bin/machine           = unknown
20622 +/usr/bin/oslevel       = unknown
20623 +/bin/universe          = unknown
20624 +
20625 +PATH: /usr/local/bin
20626 +PATH: /usr/bin
20627 +PATH: /bin
20628 +PATH: /opt/bin
20629 +PATH: /usr/i686-pc-linux-gnu/gcc-bin/4.1.1
20630 +PATH: /usr/i486-pc-linux-gnu/gcc-bin/4.1.1
20631 +PATH: /usr/kde/3.5/bin
20632 +PATH: /usr/qt/3/bin
20633 +PATH: /usr/games/bin
20634 +PATH: /home/sapan/downloads/google_appengine
20635 +
20636 +
20637 +## ----------- ##
20638 +## Core tests. ##
20639 +## ----------- ##
20640 +
20641 +configure:1888: checking build system type
20642 +configure:1906: result: i686-pc-linux-gnu
20643 +configure:1928: checking host system type
20644 +configure:1943: result: i686-pc-linux-gnu
20645 +configure:1965: checking target system type
20646 +configure:1980: result: i686-pc-linux-gnu
20647 +configure:2052: checking for gcc
20648 +configure:2068: found /usr/bin/gcc
20649 +configure:2079: result: gcc
20650 +configure:2148: checking for g++
20651 +configure:2164: found /usr/bin/g++
20652 +configure:2175: result: g++
20653 +configure:2250: checking for gcc
20654 +configure:2277: result: gcc
20655 +configure:2515: checking for C compiler version
20656 +configure:2522: gcc --version >&5
20657 +gcc (GCC) 4.1.1 (Gentoo 4.1.1-r3)
20658 +Copyright (C) 2006 Free Software Foundation, Inc.
20659 +This is free software; see the source for copying conditions.  There is NO
20660 +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20661 +
20662 +configure:2525: $? = 0
20663 +configure:2532: gcc -v >&5
20664 +Using built-in specs.
20665 +Target: i686-pc-linux-gnu
20666 +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
20667 +Thread model: posix
20668 +gcc version 4.1.1 (Gentoo 4.1.1-r3)
20669 +configure:2535: $? = 0
20670 +configure:2542: gcc -V >&5
20671 +gcc: '-V' option must have argument
20672 +configure:2545: $? = 1
20673 +configure:2568: checking for C compiler default output file name
20674 +configure:2595: gcc    conftest.c  >&5
20675 +configure:2598: $? = 0
20676 +configure:2636: result: a.out
20677 +configure:2653: checking whether the C compiler works
20678 +configure:2663: ./a.out
20679 +configure:2666: $? = 0
20680 +configure:2683: result: yes
20681 +configure:2690: checking whether we are cross compiling
20682 +configure:2692: result: no
20683 +configure:2695: checking for suffix of executables
20684 +configure:2702: gcc -o conftest    conftest.c  >&5
20685 +configure:2705: $? = 0
20686 +configure:2729: result: 
20687 +configure:2735: checking for suffix of object files
20688 +configure:2761: gcc -c   conftest.c >&5
20689 +configure:2764: $? = 0
20690 +configure:2787: result: o
20691 +configure:2791: checking whether we are using the GNU C compiler
20692 +configure:2820: gcc -c   conftest.c >&5
20693 +configure:2826: $? = 0
20694 +configure:2843: result: yes
20695 +configure:2848: checking whether gcc accepts -g
20696 +configure:2878: gcc -c -g  conftest.c >&5
20697 +configure:2884: $? = 0
20698 +configure:2983: result: yes
20699 +configure:3000: checking for gcc option to accept ISO C89
20700 +configure:3074: gcc  -c -g -O2  conftest.c >&5
20701 +configure:3080: $? = 0
20702 +configure:3103: result: none needed
20703 +configure:3140: checking how to run the C preprocessor
20704 +configure:3180: gcc -W -Wall -E  conftest.c
20705 +configure:3186: $? = 0
20706 +configure:3217: gcc -W -Wall -E  conftest.c
20707 +conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
20708 +configure:3223: $? = 1
20709 +configure: failed program was:
20710 +| /* confdefs.h.  */
20711 +| #define PACKAGE_NAME "click"
20712 +| #define PACKAGE_TARNAME "click"
20713 +| #define PACKAGE_VERSION "1.6.0"
20714 +| #define PACKAGE_STRING "click 1.6.0"
20715 +| #define PACKAGE_BUGREPORT ""
20716 +| #define CLICK_VERSION "1.6.0"
20717 +| /* end confdefs.h.  */
20718 +| #include <ac_nonexistent.h>
20719 +configure:3256: result: gcc -W -Wall -E
20720 +configure:3285: gcc -W -Wall -E  conftest.c
20721 +configure:3291: $? = 0
20722 +configure:3322: gcc -W -Wall -E  conftest.c
20723 +conftest.c:9:28: error: ac_nonexistent.h: No such file or directory
20724 +configure:3328: $? = 1
20725 +configure: failed program was:
20726 +| /* confdefs.h.  */
20727 +| #define PACKAGE_NAME "click"
20728 +| #define PACKAGE_TARNAME "click"
20729 +| #define PACKAGE_VERSION "1.6.0"
20730 +| #define PACKAGE_STRING "click 1.6.0"
20731 +| #define PACKAGE_BUGREPORT ""
20732 +| #define CLICK_VERSION "1.6.0"
20733 +| /* end confdefs.h.  */
20734 +| #include <ac_nonexistent.h>
20735 +configure:3366: checking for inline
20736 +configure:3392: gcc -W -Wall -c -g -O2  conftest.c >&5
20737 +configure:3398: $? = 0
20738 +configure:3416: result: inline
20739 +configure:3552: checking for C++ compiler version
20740 +configure:3559: g++ --version >&5
20741 +g++ (GCC) 4.1.1 (Gentoo 4.1.1-r3)
20742 +Copyright (C) 2006 Free Software Foundation, Inc.
20743 +This is free software; see the source for copying conditions.  There is NO
20744 +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20745 +
20746 +configure:3562: $? = 0
20747 +configure:3569: g++ -v >&5
20748 +Using built-in specs.
20749 +Target: i686-pc-linux-gnu
20750 +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
20751 +Thread model: posix
20752 +gcc version 4.1.1 (Gentoo 4.1.1-r3)
20753 +configure:3572: $? = 0
20754 +configure:3579: g++ -V >&5
20755 +g++: '-V' option must have argument
20756 +configure:3582: $? = 1
20757 +configure:3585: checking whether we are using the GNU C++ compiler
20758 +configure:3614: g++ -c   conftest.cpp >&5
20759 +configure:3620: $? = 0
20760 +configure:3637: result: yes
20761 +configure:3642: checking whether g++ accepts -g
20762 +configure:3672: g++ -c -g  conftest.cpp >&5
20763 +configure:3678: $? = 0
20764 +configure:3777: result: yes
20765 +configure:3865: checking whether <new> works
20766 +configure:3896: g++ -o conftest -g -O2   conftest.cpp  >&5
20767 +configure:3902: $? = 0
20768 +configure:3919: result: yes
20769 +configure:4014: checking how to run the C++ preprocessor
20770 +configure:4050: g++ -W -Wall  -E  conftest.cpp
20771 +configure:4056: $? = 0
20772 +configure:4087: g++ -W -Wall  -E  conftest.cpp
20773 +conftest.cpp:10:28: error: ac_nonexistent.h: No such file or directory
20774 +configure:4093: $? = 1
20775 +configure: failed program was:
20776 +| /* confdefs.h.  */
20777 +| #define PACKAGE_NAME "click"
20778 +| #define PACKAGE_TARNAME "click"
20779 +| #define PACKAGE_VERSION "1.6.0"
20780 +| #define PACKAGE_STRING "click 1.6.0"
20781 +| #define PACKAGE_BUGREPORT ""
20782 +| #define CLICK_VERSION "1.6.0"
20783 +| #define HAVE_NEW_HDR 1
20784 +| /* end confdefs.h.  */
20785 +| #include <ac_nonexistent.h>
20786 +configure:4126: result: g++ -W -Wall  -E
20787 +configure:4155: g++ -W -Wall  -E  conftest.cpp
20788 +configure:4161: $? = 0
20789 +configure:4192: g++ -W -Wall  -E  conftest.cpp
20790 +conftest.cpp:10:28: error: ac_nonexistent.h: No such file or directory
20791 +configure:4198: $? = 1
20792 +configure: failed program was:
20793 +| /* confdefs.h.  */
20794 +| #define PACKAGE_NAME "click"
20795 +| #define PACKAGE_TARNAME "click"
20796 +| #define PACKAGE_VERSION "1.6.0"
20797 +| #define PACKAGE_STRING "click 1.6.0"
20798 +| #define PACKAGE_BUGREPORT ""
20799 +| #define CLICK_VERSION "1.6.0"
20800 +| #define HAVE_NEW_HDR 1
20801 +| /* end confdefs.h.  */
20802 +| #include <ac_nonexistent.h>
20803 +configure:4297: checking for ar
20804 +configure:4313: found /usr/bin/ar
20805 +configure:4324: result: ar
20806 +configure:4393: checking for ld
20807 +configure:4409: found /usr/bin/ld
20808 +configure:4420: result: ld
20809 +configure:4489: checking for ranlib
20810 +configure:4505: found /usr/bin/ranlib
20811 +configure:4516: result: ranlib
20812 +configure:4585: checking for strip
20813 +configure:4601: found /usr/bin/strip
20814 +configure:4612: result: strip
20815 +configure:5178: checking whether we are compiling for Linux
20816 +configure:5207: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20817 +configure:5213: $? = 0
20818 +configure:5228: result: yes
20819 +configure:5243: checking for strerror
20820 +configure:5299: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
20821 +configure:5305: $? = 0
20822 +configure:5323: result: yes
20823 +configure:5348: checking for snprintf
20824 +configure:5404: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
20825 +conftest.c:38: warning: conflicting types for built-in function 'snprintf'
20826 +configure:5410: $? = 0
20827 +configure:5428: result: yes
20828 +configure:5348: checking for strtoul
20829 +configure:5404: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
20830 +configure:5410: $? = 0
20831 +configure:5428: result: yes
20832 +configure:5348: checking for tcgetpgrp
20833 +configure:5404: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
20834 +configure:5410: $? = 0
20835 +configure:5428: result: yes
20836 +configure:5348: checking for vsnprintf
20837 +configure:5404: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
20838 +conftest.c:41: warning: conflicting types for built-in function 'vsnprintf'
20839 +configure:5410: $? = 0
20840 +configure:5428: result: yes
20841 +configure:5456: checking for grep that handles long lines and -e
20842 +configure:5530: result: /bin/grep
20843 +configure:5535: checking for egrep
20844 +configure:5613: result: /bin/grep -E
20845 +configure:5618: checking for ANSI C header files
20846 +configure:5648: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20847 +configure:5654: $? = 0
20848 +configure:5753: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
20849 +configure:5756: $? = 0
20850 +configure:5762: ./conftest
20851 +configure:5765: $? = 0
20852 +configure:5782: result: yes
20853 +configure:5806: checking for sys/types.h
20854 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20855 +configure:5833: $? = 0
20856 +configure:5849: result: yes
20857 +configure:5806: checking for sys/stat.h
20858 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20859 +configure:5833: $? = 0
20860 +configure:5849: result: yes
20861 +configure:5806: checking for stdlib.h
20862 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20863 +configure:5833: $? = 0
20864 +configure:5849: result: yes
20865 +configure:5806: checking for string.h
20866 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20867 +configure:5833: $? = 0
20868 +configure:5849: result: yes
20869 +configure:5806: checking for memory.h
20870 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20871 +configure:5833: $? = 0
20872 +configure:5849: result: yes
20873 +configure:5806: checking for strings.h
20874 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20875 +configure:5833: $? = 0
20876 +configure:5849: result: yes
20877 +configure:5806: checking for inttypes.h
20878 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20879 +configure:5833: $? = 0
20880 +configure:5849: result: yes
20881 +configure:5806: checking for stdint.h
20882 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20883 +configure:5833: $? = 0
20884 +configure:5849: result: yes
20885 +configure:5806: checking for unistd.h
20886 +configure:5827: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20887 +configure:5833: $? = 0
20888 +configure:5849: result: yes
20889 +configure:5861: checking for int
20890 +configure:5891: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20891 +configure:5897: $? = 0
20892 +configure:5912: result: yes
20893 +configure:5919: checking size of int
20894 +configure:6221: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
20895 +configure:6224: $? = 0
20896 +configure:6230: ./conftest
20897 +configure:6233: $? = 0
20898 +configure:6256: result: 4
20899 +configure:6266: checking for long
20900 +configure:6296: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20901 +configure:6302: $? = 0
20902 +configure:6317: result: yes
20903 +configure:6324: checking size of long
20904 +configure:6626: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
20905 +configure:6629: $? = 0
20906 +configure:6635: ./conftest
20907 +configure:6638: $? = 0
20908 +configure:6661: result: 4
20909 +configure:6677: checking for inttypes.h
20910 +configure:6683: result: yes
20911 +configure:6892: checking whether machine is indifferent to alignment
20912 +configure:6935: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
20913 +conftest.cpp:40: warning: unused parameter 'argc'
20914 +conftest.cpp:40: warning: unused parameter 'argv'
20915 +configure:6938: $? = 0
20916 +configure:6944: ./conftest
20917 +configure:6947: $? = 0
20918 +configure:6963: result: yes
20919 +configure:6973: checking for long long
20920 +configure:7003: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20921 +configure:7009: $? = 0
20922 +configure:7024: result: yes
20923 +configure:7031: checking size of long long
20924 +configure:7333: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
20925 +configure:7336: $? = 0
20926 +configure:7342: ./conftest
20927 +configure:7345: $? = 0
20928 +configure:7368: result: 8
20929 +configure:7385: checking for long long
20930 +configure:7436: result: yes
20931 +configure:7447: checking for int64_t typedef
20932 +configure:7470: result: yes
20933 +configure:7472: checking for uint64_t typedef
20934 +configure:7495: result: yes
20935 +configure:7523: checking whether long and int64_t are the same type
20936 +configure:7559: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20937 +configure:7565: $? = 0
20938 +configure:7580: result: no
20939 +configure:7590: checking whether long long and int64_t are the same type
20940 +configure:7626: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20941 +conftest.cpp: In function 'void f1(int64_t)':
20942 +conftest.cpp:39: error: redefinition of 'void f1(int64_t)'
20943 +conftest.cpp:37: error: 'void f1(long long int)' previously defined here
20944 +configure:7632: $? = 1
20945 +configure: failed program was:
20946 +| /* confdefs.h.  */
20947 +| #define PACKAGE_NAME "click"
20948 +| #define PACKAGE_TARNAME "click"
20949 +| #define PACKAGE_VERSION "1.6.0"
20950 +| #define PACKAGE_STRING "click 1.6.0"
20951 +| #define PACKAGE_BUGREPORT ""
20952 +| #define CLICK_VERSION "1.6.0"
20953 +| #define HAVE_NEW_HDR 1
20954 +| #define NUM_CLICK_CPUS 1
20955 +| #define HAVE_CLICKFS 1
20956 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
20957 +| #define FREEBSD_INCLUDEDIR "/usr/include"
20958 +| #define HAVE_STRERROR 1
20959 +| #define HAVE_SNPRINTF 1
20960 +| #define HAVE_STRTOUL 1
20961 +| #define HAVE_TCGETPGRP 1
20962 +| #define HAVE_VSNPRINTF 1
20963 +| #define STDC_HEADERS 1
20964 +| #define HAVE_SYS_TYPES_H 1
20965 +| #define HAVE_SYS_STAT_H 1
20966 +| #define HAVE_STDLIB_H 1
20967 +| #define HAVE_STRING_H 1
20968 +| #define HAVE_MEMORY_H 1
20969 +| #define HAVE_STRINGS_H 1
20970 +| #define HAVE_INTTYPES_H 1
20971 +| #define HAVE_STDINT_H 1
20972 +| #define HAVE_UNISTD_H 1
20973 +| #define SIZEOF_INT 4
20974 +| #define SIZEOF_LONG 4
20975 +| #define HAVE_INTTYPES_H 1
20976 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
20977 +| #define SIZEOF_LONG_LONG 8
20978 +| #define HAVE_LONG_LONG 1
20979 +| #define HAVE_INT64_TYPES 1
20980 +| /* end confdefs.h.  */
20981 +| #include <inttypes.h>
20982 +| void f1(long long) {
20983 +| }
20984 +| void f1(int64_t) { // will fail if long long and int64_t are the same type
20985 +| }
20986 +| int
20987 +| main ()
20988 +| {
20989 +| 
20990 +|   ;
20991 +|   return 0;
20992 +| }
20993 +configure:7647: result: yes
20994 +configure:7658: checking for struct timeval
20995 +configure:7688: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
20996 +configure:7694: $? = 0
20997 +configure:7709: result: yes
20998 +configure:7716: checking size of struct timeval
20999 +configure:8018: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21000 +configure:8021: $? = 0
21001 +configure:8027: ./conftest
21002 +configure:8030: $? = 0
21003 +configure:8053: result: 8
21004 +configure:8063: checking for struct timespec
21005 +configure:8093: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21006 +configure:8099: $? = 0
21007 +configure:8114: result: yes
21008 +configure:8128: checking for struct timespec
21009 +configure:8179: result: yes
21010 +configure:8186: checking size of struct timespec
21011 +configure:8488: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21012 +configure:8491: $? = 0
21013 +configure:8497: ./conftest
21014 +configure:8500: $? = 0
21015 +configure:8523: result: 8
21016 +configure:8551: checking endian.h usability
21017 +configure:8568: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21018 +configure:8574: $? = 0
21019 +configure:8588: result: yes
21020 +configure:8592: checking endian.h presence
21021 +configure:8607: g++ -W -Wall  -E  conftest.cpp
21022 +configure:8613: $? = 0
21023 +configure:8627: result: yes
21024 +configure:8655: checking for endian.h
21025 +configure:8663: result: yes
21026 +configure:8684: checking endianness
21027 +configure:8704: g++ -W -Wall  -E  conftest.cpp >conftest.result 2>conftest.out
21028 +configure:8707: $? = 0
21029 +configure:8720: result: 1234
21030 +configure:8808: checking byteswap.h usability
21031 +configure:8825: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21032 +configure:8831: $? = 0
21033 +configure:8845: result: yes
21034 +configure:8849: checking byteswap.h presence
21035 +configure:8864: g++ -W -Wall  -E  conftest.cpp
21036 +configure:8870: $? = 0
21037 +configure:8884: result: yes
21038 +configure:8912: checking for byteswap.h
21039 +configure:8920: result: yes
21040 +configure:8935: checking whether signed right shift is arithmetic
21041 +configure:8961: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21042 +conftest.cpp:43: error: size of array 'x' is negative
21043 +configure:8967: $? = 1
21044 +configure: failed program was:
21045 +| /* confdefs.h.  */
21046 +| #define PACKAGE_NAME "click"
21047 +| #define PACKAGE_TARNAME "click"
21048 +| #define PACKAGE_VERSION "1.6.0"
21049 +| #define PACKAGE_STRING "click 1.6.0"
21050 +| #define PACKAGE_BUGREPORT ""
21051 +| #define CLICK_VERSION "1.6.0"
21052 +| #define HAVE_NEW_HDR 1
21053 +| #define NUM_CLICK_CPUS 1
21054 +| #define HAVE_CLICKFS 1
21055 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21056 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21057 +| #define HAVE_STRERROR 1
21058 +| #define HAVE_SNPRINTF 1
21059 +| #define HAVE_STRTOUL 1
21060 +| #define HAVE_TCGETPGRP 1
21061 +| #define HAVE_VSNPRINTF 1
21062 +| #define STDC_HEADERS 1
21063 +| #define HAVE_SYS_TYPES_H 1
21064 +| #define HAVE_SYS_STAT_H 1
21065 +| #define HAVE_STDLIB_H 1
21066 +| #define HAVE_STRING_H 1
21067 +| #define HAVE_MEMORY_H 1
21068 +| #define HAVE_STRINGS_H 1
21069 +| #define HAVE_INTTYPES_H 1
21070 +| #define HAVE_STDINT_H 1
21071 +| #define HAVE_UNISTD_H 1
21072 +| #define SIZEOF_INT 4
21073 +| #define SIZEOF_LONG 4
21074 +| #define HAVE_INTTYPES_H 1
21075 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21076 +| #define SIZEOF_LONG_LONG 8
21077 +| #define HAVE_LONG_LONG 1
21078 +| #define HAVE_INT64_TYPES 1
21079 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21080 +| #define SIZEOF_STRUCT_TIMEVAL 8
21081 +| #define HAVE_STRUCT_TIMESPEC 1
21082 +| #define SIZEOF_STRUCT_TIMESPEC 8
21083 +| #define HAVE_ENDIAN_H 1
21084 +| #define CLICK_BYTE_ORDER 1234
21085 +| #define HAVE_BYTESWAP_H 1
21086 +| /* end confdefs.h.  */
21087 +| int f(int x[((int) -1) >> 15]) { return x[0]; }
21088 +| int
21089 +| main ()
21090 +| {
21091 +| 
21092 +|   ;
21093 +|   return 0;
21094 +| }
21095 +configure:8982: result: yes
21096 +configure:8998: checking for addressable va_list type
21097 +configure:9035: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21098 +configure:9041: $? = 0
21099 +configure:9056: result: yes
21100 +configure:9067: checking for __builtin_clz
21101 +configure:9093: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21102 +conftest.cpp: In function 'int main()':
21103 +conftest.cpp:49: warning: unused variable 'y'
21104 +configure:9099: $? = 0
21105 +configure:9114: result: yes
21106 +configure:9123: checking for __builtin_clzl
21107 +configure:9149: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21108 +conftest.cpp: In function 'int main()':
21109 +conftest.cpp:50: warning: unused variable 'y'
21110 +configure:9155: $? = 0
21111 +configure:9170: result: yes
21112 +configure:9179: checking for __builtin_clzll
21113 +configure:9205: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21114 +conftest.cpp: In function 'int main()':
21115 +conftest.cpp:51: warning: unused variable 'y'
21116 +configure:9211: $? = 0
21117 +configure:9226: result: yes
21118 +configure:9236: checking for __builtin_ffs
21119 +configure:9262: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21120 +conftest.cpp: In function 'int main()':
21121 +conftest.cpp:52: warning: unused variable 'y'
21122 +configure:9268: $? = 0
21123 +configure:9283: result: yes
21124 +configure:9292: checking for __builtin_ffsl
21125 +configure:9318: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21126 +conftest.cpp: In function 'int main()':
21127 +conftest.cpp:53: warning: unused variable 'y'
21128 +configure:9324: $? = 0
21129 +configure:9339: result: yes
21130 +configure:9348: checking for __builtin_ffsll
21131 +configure:9374: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21132 +conftest.cpp: In function 'int main()':
21133 +conftest.cpp:54: warning: unused variable 'y'
21134 +configure:9380: $? = 0
21135 +configure:9395: result: yes
21136 +configure:9410: checking for strings.h
21137 +configure:9416: result: yes
21138 +configure:9551: checking for ffs
21139 +configure:9607: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21140 +configure:9613: $? = 0
21141 +configure:9631: result: yes
21142 +configure:9551: checking for ffsl
21143 +configure:9607: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21144 +configure:9613: $? = 0
21145 +configure:9631: result: yes
21146 +configure:9551: checking for ffsll
21147 +configure:9607: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21148 +configure:9613: $? = 0
21149 +configure:9631: result: yes
21150 +configure:9876: checking for unistd.h
21151 +configure:9882: result: yes
21152 +configure:9886: checking termio.h usability
21153 +configure:9903: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21154 +configure:9909: $? = 0
21155 +configure:9923: result: yes
21156 +configure:9927: checking termio.h presence
21157 +configure:9942: g++ -W -Wall  -E  conftest.cpp
21158 +configure:9948: $? = 0
21159 +configure:9962: result: yes
21160 +configure:9990: checking for termio.h
21161 +configure:9998: result: yes
21162 +configure:9886: checking netdb.h usability
21163 +configure:9903: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21164 +configure:9909: $? = 0
21165 +configure:9923: result: yes
21166 +configure:9927: checking netdb.h presence
21167 +configure:9942: g++ -W -Wall  -E  conftest.cpp
21168 +configure:9948: $? = 0
21169 +configure:9962: result: yes
21170 +configure:9990: checking for netdb.h
21171 +configure:9998: result: yes
21172 +configure:9886: checking sys/event.h usability
21173 +configure:9903: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21174 +conftest.cpp:91:23: error: sys/event.h: No such file or directory
21175 +configure:9909: $? = 1
21176 +configure: failed program was:
21177 +| /* confdefs.h.  */
21178 +| #define PACKAGE_NAME "click"
21179 +| #define PACKAGE_TARNAME "click"
21180 +| #define PACKAGE_VERSION "1.6.0"
21181 +| #define PACKAGE_STRING "click 1.6.0"
21182 +| #define PACKAGE_BUGREPORT ""
21183 +| #define CLICK_VERSION "1.6.0"
21184 +| #define HAVE_NEW_HDR 1
21185 +| #define NUM_CLICK_CPUS 1
21186 +| #define HAVE_CLICKFS 1
21187 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21188 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21189 +| #define HAVE_STRERROR 1
21190 +| #define HAVE_SNPRINTF 1
21191 +| #define HAVE_STRTOUL 1
21192 +| #define HAVE_TCGETPGRP 1
21193 +| #define HAVE_VSNPRINTF 1
21194 +| #define STDC_HEADERS 1
21195 +| #define HAVE_SYS_TYPES_H 1
21196 +| #define HAVE_SYS_STAT_H 1
21197 +| #define HAVE_STDLIB_H 1
21198 +| #define HAVE_STRING_H 1
21199 +| #define HAVE_MEMORY_H 1
21200 +| #define HAVE_STRINGS_H 1
21201 +| #define HAVE_INTTYPES_H 1
21202 +| #define HAVE_STDINT_H 1
21203 +| #define HAVE_UNISTD_H 1
21204 +| #define SIZEOF_INT 4
21205 +| #define SIZEOF_LONG 4
21206 +| #define HAVE_INTTYPES_H 1
21207 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21208 +| #define SIZEOF_LONG_LONG 8
21209 +| #define HAVE_LONG_LONG 1
21210 +| #define HAVE_INT64_TYPES 1
21211 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21212 +| #define SIZEOF_STRUCT_TIMEVAL 8
21213 +| #define HAVE_STRUCT_TIMESPEC 1
21214 +| #define SIZEOF_STRUCT_TIMESPEC 8
21215 +| #define HAVE_ENDIAN_H 1
21216 +| #define CLICK_BYTE_ORDER 1234
21217 +| #define HAVE_BYTESWAP_H 1
21218 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21219 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21220 +| #define HAVE___BUILTIN_CLZ 1
21221 +| #define HAVE___BUILTIN_CLZL 1
21222 +| #define HAVE___BUILTIN_CLZLL 1
21223 +| #define HAVE___BUILTIN_FFS 1
21224 +| #define HAVE___BUILTIN_FFSL 1
21225 +| #define HAVE___BUILTIN_FFSLL 1
21226 +| #define HAVE_STRINGS_H 1
21227 +| #define HAVE_FFS 1
21228 +| #define HAVE_FFSL 1
21229 +| #define HAVE_FFSLL 1
21230 +| #define HAVE_UNISTD_H 1
21231 +| #define HAVE_TERMIO_H 1
21232 +| #define HAVE_NETDB_H 1
21233 +| /* end confdefs.h.  */
21234 +| #include <stdio.h>
21235 +| #ifdef HAVE_SYS_TYPES_H
21236 +| # include <sys/types.h>
21237 +| #endif
21238 +| #ifdef HAVE_SYS_STAT_H
21239 +| # include <sys/stat.h>
21240 +| #endif
21241 +| #ifdef STDC_HEADERS
21242 +| # include <stdlib.h>
21243 +| # include <stddef.h>
21244 +| #else
21245 +| # ifdef HAVE_STDLIB_H
21246 +| #  include <stdlib.h>
21247 +| # endif
21248 +| #endif
21249 +| #ifdef HAVE_STRING_H
21250 +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
21251 +| #  include <memory.h>
21252 +| # endif
21253 +| # include <string.h>
21254 +| #endif
21255 +| #ifdef HAVE_STRINGS_H
21256 +| # include <strings.h>
21257 +| #endif
21258 +| #ifdef HAVE_INTTYPES_H
21259 +| # include <inttypes.h>
21260 +| #endif
21261 +| #ifdef HAVE_STDINT_H
21262 +| # include <stdint.h>
21263 +| #endif
21264 +| #ifdef HAVE_UNISTD_H
21265 +| # include <unistd.h>
21266 +| #endif
21267 +| #include <sys/event.h>
21268 +configure:9923: result: no
21269 +configure:9927: checking sys/event.h presence
21270 +configure:9942: g++ -W -Wall  -E  conftest.cpp
21271 +conftest.cpp:58:23: error: sys/event.h: No such file or directory
21272 +configure:9948: $? = 1
21273 +configure: failed program was:
21274 +| /* confdefs.h.  */
21275 +| #define PACKAGE_NAME "click"
21276 +| #define PACKAGE_TARNAME "click"
21277 +| #define PACKAGE_VERSION "1.6.0"
21278 +| #define PACKAGE_STRING "click 1.6.0"
21279 +| #define PACKAGE_BUGREPORT ""
21280 +| #define CLICK_VERSION "1.6.0"
21281 +| #define HAVE_NEW_HDR 1
21282 +| #define NUM_CLICK_CPUS 1
21283 +| #define HAVE_CLICKFS 1
21284 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21285 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21286 +| #define HAVE_STRERROR 1
21287 +| #define HAVE_SNPRINTF 1
21288 +| #define HAVE_STRTOUL 1
21289 +| #define HAVE_TCGETPGRP 1
21290 +| #define HAVE_VSNPRINTF 1
21291 +| #define STDC_HEADERS 1
21292 +| #define HAVE_SYS_TYPES_H 1
21293 +| #define HAVE_SYS_STAT_H 1
21294 +| #define HAVE_STDLIB_H 1
21295 +| #define HAVE_STRING_H 1
21296 +| #define HAVE_MEMORY_H 1
21297 +| #define HAVE_STRINGS_H 1
21298 +| #define HAVE_INTTYPES_H 1
21299 +| #define HAVE_STDINT_H 1
21300 +| #define HAVE_UNISTD_H 1
21301 +| #define SIZEOF_INT 4
21302 +| #define SIZEOF_LONG 4
21303 +| #define HAVE_INTTYPES_H 1
21304 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21305 +| #define SIZEOF_LONG_LONG 8
21306 +| #define HAVE_LONG_LONG 1
21307 +| #define HAVE_INT64_TYPES 1
21308 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21309 +| #define SIZEOF_STRUCT_TIMEVAL 8
21310 +| #define HAVE_STRUCT_TIMESPEC 1
21311 +| #define SIZEOF_STRUCT_TIMESPEC 8
21312 +| #define HAVE_ENDIAN_H 1
21313 +| #define CLICK_BYTE_ORDER 1234
21314 +| #define HAVE_BYTESWAP_H 1
21315 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21316 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21317 +| #define HAVE___BUILTIN_CLZ 1
21318 +| #define HAVE___BUILTIN_CLZL 1
21319 +| #define HAVE___BUILTIN_CLZLL 1
21320 +| #define HAVE___BUILTIN_FFS 1
21321 +| #define HAVE___BUILTIN_FFSL 1
21322 +| #define HAVE___BUILTIN_FFSLL 1
21323 +| #define HAVE_STRINGS_H 1
21324 +| #define HAVE_FFS 1
21325 +| #define HAVE_FFSL 1
21326 +| #define HAVE_FFSLL 1
21327 +| #define HAVE_UNISTD_H 1
21328 +| #define HAVE_TERMIO_H 1
21329 +| #define HAVE_NETDB_H 1
21330 +| /* end confdefs.h.  */
21331 +| #include <sys/event.h>
21332 +configure:9962: result: no
21333 +configure:9990: checking for sys/event.h
21334 +configure:9998: result: no
21335 +configure:9886: checking pwd.h usability
21336 +configure:9903: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21337 +configure:9909: $? = 0
21338 +configure:9923: result: yes
21339 +configure:9927: checking pwd.h presence
21340 +configure:9942: g++ -W -Wall  -E  conftest.cpp
21341 +configure:9948: $? = 0
21342 +configure:9962: result: yes
21343 +configure:9990: checking for pwd.h
21344 +configure:9998: result: yes
21345 +configure:9886: checking grp.h usability
21346 +configure:9903: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21347 +configure:9909: $? = 0
21348 +configure:9923: result: yes
21349 +configure:9927: checking grp.h presence
21350 +configure:9942: g++ -W -Wall  -E  conftest.cpp
21351 +configure:9948: $? = 0
21352 +configure:9962: result: yes
21353 +configure:9990: checking for grp.h
21354 +configure:9998: result: yes
21355 +configure:10022: checking poll.h usability
21356 +configure:10039: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21357 +configure:10045: $? = 0
21358 +configure:10059: result: yes
21359 +configure:10063: checking poll.h presence
21360 +configure:10078: g++ -W -Wall  -E  conftest.cpp
21361 +configure:10084: $? = 0
21362 +configure:10098: result: yes
21363 +configure:10126: checking for poll.h
21364 +configure:10133: result: yes
21365 +configure:10145: checking whether <poll.h> is emulated
21366 +configure:10175: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21367 +configure:10181: $? = 0
21368 +configure:10196: result: no
21369 +configure:10211: checking for sigaction
21370 +configure:10267: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21371 +configure:10273: $? = 0
21372 +configure:10291: result: yes
21373 +configure:10306: checking for kqueue
21374 +configure:10362: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21375 +/tmp/ccy7SvnE.o: In function `main':
21376 +/d/click/click-1.6.0-27/conftest.cpp:96: undefined reference to `kqueue'
21377 +collect2: ld returned 1 exit status
21378 +configure:10368: $? = 1
21379 +configure: failed program was:
21380 +| /* confdefs.h.  */
21381 +| #define PACKAGE_NAME "click"
21382 +| #define PACKAGE_TARNAME "click"
21383 +| #define PACKAGE_VERSION "1.6.0"
21384 +| #define PACKAGE_STRING "click 1.6.0"
21385 +| #define PACKAGE_BUGREPORT ""
21386 +| #define CLICK_VERSION "1.6.0"
21387 +| #define HAVE_NEW_HDR 1
21388 +| #define NUM_CLICK_CPUS 1
21389 +| #define HAVE_CLICKFS 1
21390 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21391 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21392 +| #define HAVE_STRERROR 1
21393 +| #define HAVE_SNPRINTF 1
21394 +| #define HAVE_STRTOUL 1
21395 +| #define HAVE_TCGETPGRP 1
21396 +| #define HAVE_VSNPRINTF 1
21397 +| #define STDC_HEADERS 1
21398 +| #define HAVE_SYS_TYPES_H 1
21399 +| #define HAVE_SYS_STAT_H 1
21400 +| #define HAVE_STDLIB_H 1
21401 +| #define HAVE_STRING_H 1
21402 +| #define HAVE_MEMORY_H 1
21403 +| #define HAVE_STRINGS_H 1
21404 +| #define HAVE_INTTYPES_H 1
21405 +| #define HAVE_STDINT_H 1
21406 +| #define HAVE_UNISTD_H 1
21407 +| #define SIZEOF_INT 4
21408 +| #define SIZEOF_LONG 4
21409 +| #define HAVE_INTTYPES_H 1
21410 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21411 +| #define SIZEOF_LONG_LONG 8
21412 +| #define HAVE_LONG_LONG 1
21413 +| #define HAVE_INT64_TYPES 1
21414 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21415 +| #define SIZEOF_STRUCT_TIMEVAL 8
21416 +| #define HAVE_STRUCT_TIMESPEC 1
21417 +| #define SIZEOF_STRUCT_TIMESPEC 8
21418 +| #define HAVE_ENDIAN_H 1
21419 +| #define CLICK_BYTE_ORDER 1234
21420 +| #define HAVE_BYTESWAP_H 1
21421 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21422 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21423 +| #define HAVE___BUILTIN_CLZ 1
21424 +| #define HAVE___BUILTIN_CLZL 1
21425 +| #define HAVE___BUILTIN_CLZLL 1
21426 +| #define HAVE___BUILTIN_FFS 1
21427 +| #define HAVE___BUILTIN_FFSL 1
21428 +| #define HAVE___BUILTIN_FFSLL 1
21429 +| #define HAVE_STRINGS_H 1
21430 +| #define HAVE_FFS 1
21431 +| #define HAVE_FFSL 1
21432 +| #define HAVE_FFSLL 1
21433 +| #define HAVE_UNISTD_H 1
21434 +| #define HAVE_TERMIO_H 1
21435 +| #define HAVE_NETDB_H 1
21436 +| #define HAVE_PWD_H 1
21437 +| #define HAVE_GRP_H 1
21438 +| #define HAVE_POLL_H 1
21439 +| #define HAVE_SIGACTION 1
21440 +| /* end confdefs.h.  */
21441 +| /* Define kqueue to an innocuous variant, in case <limits.h> declares kqueue.
21442 +|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
21443 +| #define kqueue innocuous_kqueue
21444 +| 
21445 +| /* System header to define __stub macros and hopefully few prototypes,
21446 +|     which can conflict with char kqueue (); below.
21447 +|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
21448 +|     <limits.h> exists even on freestanding compilers.  */
21449 +| 
21450 +| #ifdef __STDC__
21451 +| # include <limits.h>
21452 +| #else
21453 +| # include <assert.h>
21454 +| #endif
21455 +| 
21456 +| #undef kqueue
21457 +| 
21458 +| /* Override any GCC internal prototype to avoid an error.
21459 +|    Use char because int might match the return type of a GCC
21460 +|    builtin and then its argument prototype would still apply.  */
21461 +| #ifdef __cplusplus
21462 +| extern "C"
21463 +| #endif
21464 +| char kqueue ();
21465 +| /* The GNU C library defines this for functions which it implements
21466 +|     to always fail with ENOSYS.  Some functions are actually named
21467 +|     something starting with __ and the normal name is an alias.  */
21468 +| #if defined __stub_kqueue || defined __stub___kqueue
21469 +| choke me
21470 +| #endif
21471 +| 
21472 +| int
21473 +| main ()
21474 +| {
21475 +| return kqueue ();
21476 +|   ;
21477 +|   return 0;
21478 +| }
21479 +configure:10386: result: no
21480 +configure:10483: checking dlfcn.h usability
21481 +configure:10500: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21482 +configure:10506: $? = 0
21483 +configure:10520: result: yes
21484 +configure:10524: checking dlfcn.h presence
21485 +configure:10539: g++ -W -Wall  -E  conftest.cpp
21486 +configure:10545: $? = 0
21487 +configure:10559: result: yes
21488 +configure:10587: checking for dlfcn.h
21489 +configure:10595: result: yes
21490 +configure:10610: checking for dlopen
21491 +configure:10666: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21492 +/tmp/ccq7wPI0.o: In function `main':
21493 +/d/click/click-1.6.0-27/conftest.cpp:97: undefined reference to `dlopen'
21494 +collect2: ld returned 1 exit status
21495 +configure:10672: $? = 1
21496 +configure: failed program was:
21497 +| /* confdefs.h.  */
21498 +| #define PACKAGE_NAME "click"
21499 +| #define PACKAGE_TARNAME "click"
21500 +| #define PACKAGE_VERSION "1.6.0"
21501 +| #define PACKAGE_STRING "click 1.6.0"
21502 +| #define PACKAGE_BUGREPORT ""
21503 +| #define CLICK_VERSION "1.6.0"
21504 +| #define HAVE_NEW_HDR 1
21505 +| #define NUM_CLICK_CPUS 1
21506 +| #define HAVE_CLICKFS 1
21507 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21508 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21509 +| #define HAVE_STRERROR 1
21510 +| #define HAVE_SNPRINTF 1
21511 +| #define HAVE_STRTOUL 1
21512 +| #define HAVE_TCGETPGRP 1
21513 +| #define HAVE_VSNPRINTF 1
21514 +| #define STDC_HEADERS 1
21515 +| #define HAVE_SYS_TYPES_H 1
21516 +| #define HAVE_SYS_STAT_H 1
21517 +| #define HAVE_STDLIB_H 1
21518 +| #define HAVE_STRING_H 1
21519 +| #define HAVE_MEMORY_H 1
21520 +| #define HAVE_STRINGS_H 1
21521 +| #define HAVE_INTTYPES_H 1
21522 +| #define HAVE_STDINT_H 1
21523 +| #define HAVE_UNISTD_H 1
21524 +| #define SIZEOF_INT 4
21525 +| #define SIZEOF_LONG 4
21526 +| #define HAVE_INTTYPES_H 1
21527 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21528 +| #define SIZEOF_LONG_LONG 8
21529 +| #define HAVE_LONG_LONG 1
21530 +| #define HAVE_INT64_TYPES 1
21531 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21532 +| #define SIZEOF_STRUCT_TIMEVAL 8
21533 +| #define HAVE_STRUCT_TIMESPEC 1
21534 +| #define SIZEOF_STRUCT_TIMESPEC 8
21535 +| #define HAVE_ENDIAN_H 1
21536 +| #define CLICK_BYTE_ORDER 1234
21537 +| #define HAVE_BYTESWAP_H 1
21538 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21539 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21540 +| #define HAVE___BUILTIN_CLZ 1
21541 +| #define HAVE___BUILTIN_CLZL 1
21542 +| #define HAVE___BUILTIN_CLZLL 1
21543 +| #define HAVE___BUILTIN_FFS 1
21544 +| #define HAVE___BUILTIN_FFSL 1
21545 +| #define HAVE___BUILTIN_FFSLL 1
21546 +| #define HAVE_STRINGS_H 1
21547 +| #define HAVE_FFS 1
21548 +| #define HAVE_FFSL 1
21549 +| #define HAVE_FFSLL 1
21550 +| #define HAVE_UNISTD_H 1
21551 +| #define HAVE_TERMIO_H 1
21552 +| #define HAVE_NETDB_H 1
21553 +| #define HAVE_PWD_H 1
21554 +| #define HAVE_GRP_H 1
21555 +| #define HAVE_POLL_H 1
21556 +| #define HAVE_SIGACTION 1
21557 +| #define HAVE_DLFCN_H 1
21558 +| /* end confdefs.h.  */
21559 +| /* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
21560 +|    For example, HP-UX 11i <limits.h> declares gettimeofday.  */
21561 +| #define dlopen innocuous_dlopen
21562 +| 
21563 +| /* System header to define __stub macros and hopefully few prototypes,
21564 +|     which can conflict with char dlopen (); below.
21565 +|     Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
21566 +|     <limits.h> exists even on freestanding compilers.  */
21567 +| 
21568 +| #ifdef __STDC__
21569 +| # include <limits.h>
21570 +| #else
21571 +| # include <assert.h>
21572 +| #endif
21573 +| 
21574 +| #undef dlopen
21575 +| 
21576 +| /* Override any GCC internal prototype to avoid an error.
21577 +|    Use char because int might match the return type of a GCC
21578 +|    builtin and then its argument prototype would still apply.  */
21579 +| #ifdef __cplusplus
21580 +| extern "C"
21581 +| #endif
21582 +| char dlopen ();
21583 +| /* The GNU C library defines this for functions which it implements
21584 +|     to always fail with ENOSYS.  Some functions are actually named
21585 +|     something starting with __ and the normal name is an alias.  */
21586 +| #if defined __stub_dlopen || defined __stub___dlopen
21587 +| choke me
21588 +| #endif
21589 +| 
21590 +| int
21591 +| main ()
21592 +| {
21593 +| return dlopen ();
21594 +|   ;
21595 +|   return 0;
21596 +| }
21597 +configure:10689: result: no
21598 +configure:10694: checking for dlopen in -ldl
21599 +configure:10729: g++ -W -Wall  -o conftest -g -O2   conftest.cpp -ldl   >&5
21600 +configure:10735: $? = 0
21601 +configure:10753: result: yes
21602 +configure:10773: checking compiler flags for building loadable modules
21603 +configure:10781: result: -shared
21604 +configure:11121: checking for library containing gethostbyname
21605 +configure:11162: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
21606 +configure:11168: $? = 0
21607 +configure:11196: result: none required
21608 +configure:11204: checking for library containing connect
21609 +configure:11245: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
21610 +configure:11251: $? = 0
21611 +configure:11279: result: none required
21612 +configure:11289: checking whether accept() uses socklen_t
21613 +configure:11317: gcc -W -Wall -c -g -O2  conftest.c >&5
21614 +configure:11323: $? = 0
21615 +configure:11338: result: yes
21616 +configure:11365: checking for large file support in C library
21617 +configure:11400: gcc -W -Wall -c -g -O2  conftest.c >&5
21618 +configure:11406: $? = 0
21619 +configure:11421: result: yes
21620 +configure:11431: checking for off_t
21621 +configure:11467: gcc -W -Wall -c -g -O2  conftest.c >&5
21622 +configure:11473: $? = 0
21623 +configure:11488: result: yes
21624 +configure:11495: checking size of off_t
21625 +configure:11833: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
21626 +configure:11836: $? = 0
21627 +configure:11842: ./conftest
21628 +configure:11845: $? = 0
21629 +configure:11868: result: 8
21630 +configure:11904: checking sys/mman.h usability
21631 +configure:11921: gcc -W -Wall -c -g -O2  conftest.c >&5
21632 +configure:11927: $? = 0
21633 +configure:11941: result: yes
21634 +configure:11945: checking sys/mman.h presence
21635 +configure:11960: gcc -W -Wall -E  conftest.c
21636 +configure:11966: $? = 0
21637 +configure:11980: result: yes
21638 +configure:12008: checking for sys/mman.h
21639 +configure:12016: result: yes
21640 +configure:12035: checking for stdlib.h
21641 +configure:12041: result: yes
21642 +configure:12035: checking for unistd.h
21643 +configure:12041: result: yes
21644 +configure:12174: checking for getpagesize
21645 +configure:12230: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
21646 +configure:12236: $? = 0
21647 +configure:12254: result: yes
21648 +configure:12264: checking for working mmap
21649 +configure:12411: gcc -W -Wall -o conftest -g -O2   conftest.c  >&5
21650 +configure:12414: $? = 0
21651 +configure:12420: ./conftest
21652 +configure:12423: $? = 0
21653 +configure:12439: result: yes
21654 +configure:12460: checking for madvise
21655 +configure:12516: g++ -W -Wall  -o conftest -g -O2   conftest.cpp  >&5
21656 +configure:12522: $? = 0
21657 +configure:12540: result: yes
21658 +configure:12550: checking whether madvise is declared
21659 +configure:12583: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21660 +configure:12589: $? = 0
21661 +configure:12604: result: yes
21662 +configure:12689: checking for Linux 2.6
21663 +configure:12696: result: 1
21664 +configure:12708: checking for Click Linux kernel extensions
21665 +configure:12717: result: yes
21666 +configure:12726: checking for Click Linux kernel extensions for transmit notification
21667 +configure:12735: result: no
21668 +configure:12744: checking for read_net_skbcount kernel extension
21669 +configure:12753: result: no
21670 +configure:12762: checking for strlen kernel symbol
21671 +configure:12771: result: yes
21672 +configure:12780: checking for tulip_interrupt_hook kernel symbol
21673 +configure:12789: result: no
21674 +configure:12798: checking for device polling kernel extension
21675 +configure:12807: result: yes
21676 +configure:12816: checking for atomic_set_mask
21677 +configure:12825: result: no
21678 +configure:12834: checking for SMP
21679 +configure:12843: result: yes
21680 +configure:12853: checking for <asm/alternative.h>
21681 +configure:12862: result: yes
21682 +configure:13033: checking linux/if_tun.h usability
21683 +configure:13050: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21684 +configure:13056: $? = 0
21685 +configure:13070: result: yes
21686 +configure:13074: checking linux/if_tun.h presence
21687 +configure:13089: g++ -W -Wall  -E  conftest.cpp
21688 +configure:13095: $? = 0
21689 +configure:13109: result: yes
21690 +configure:13137: checking for linux/if_tun.h
21691 +configure:13145: result: yes
21692 +configure:13033: checking net/if_tun.h usability
21693 +configure:13050: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21694 +conftest.cpp:115:24: error: net/if_tun.h: No such file or directory
21695 +configure:13056: $? = 1
21696 +configure: failed program was:
21697 +| /* confdefs.h.  */
21698 +| #define PACKAGE_NAME "click"
21699 +| #define PACKAGE_TARNAME "click"
21700 +| #define PACKAGE_VERSION "1.6.0"
21701 +| #define PACKAGE_STRING "click 1.6.0"
21702 +| #define PACKAGE_BUGREPORT ""
21703 +| #define CLICK_VERSION "1.6.0"
21704 +| #define HAVE_NEW_HDR 1
21705 +| #define NUM_CLICK_CPUS 1
21706 +| #define HAVE_CLICKFS 1
21707 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21708 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21709 +| #define HAVE_STRERROR 1
21710 +| #define HAVE_SNPRINTF 1
21711 +| #define HAVE_STRTOUL 1
21712 +| #define HAVE_TCGETPGRP 1
21713 +| #define HAVE_VSNPRINTF 1
21714 +| #define STDC_HEADERS 1
21715 +| #define HAVE_SYS_TYPES_H 1
21716 +| #define HAVE_SYS_STAT_H 1
21717 +| #define HAVE_STDLIB_H 1
21718 +| #define HAVE_STRING_H 1
21719 +| #define HAVE_MEMORY_H 1
21720 +| #define HAVE_STRINGS_H 1
21721 +| #define HAVE_INTTYPES_H 1
21722 +| #define HAVE_STDINT_H 1
21723 +| #define HAVE_UNISTD_H 1
21724 +| #define SIZEOF_INT 4
21725 +| #define SIZEOF_LONG 4
21726 +| #define HAVE_INTTYPES_H 1
21727 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21728 +| #define SIZEOF_LONG_LONG 8
21729 +| #define HAVE_LONG_LONG 1
21730 +| #define HAVE_INT64_TYPES 1
21731 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21732 +| #define SIZEOF_STRUCT_TIMEVAL 8
21733 +| #define HAVE_STRUCT_TIMESPEC 1
21734 +| #define SIZEOF_STRUCT_TIMESPEC 8
21735 +| #define HAVE_ENDIAN_H 1
21736 +| #define CLICK_BYTE_ORDER 1234
21737 +| #define HAVE_BYTESWAP_H 1
21738 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21739 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21740 +| #define HAVE___BUILTIN_CLZ 1
21741 +| #define HAVE___BUILTIN_CLZL 1
21742 +| #define HAVE___BUILTIN_CLZLL 1
21743 +| #define HAVE___BUILTIN_FFS 1
21744 +| #define HAVE___BUILTIN_FFSL 1
21745 +| #define HAVE___BUILTIN_FFSLL 1
21746 +| #define HAVE_STRINGS_H 1
21747 +| #define HAVE_FFS 1
21748 +| #define HAVE_FFSL 1
21749 +| #define HAVE_FFSLL 1
21750 +| #define HAVE_UNISTD_H 1
21751 +| #define HAVE_TERMIO_H 1
21752 +| #define HAVE_NETDB_H 1
21753 +| #define HAVE_PWD_H 1
21754 +| #define HAVE_GRP_H 1
21755 +| #define HAVE_POLL_H 1
21756 +| #define HAVE_SIGACTION 1
21757 +| #define HAVE_DLFCN_H 1
21758 +| #define HAVE_DYNAMIC_LINKING 1
21759 +| #define HAVE_ACCEPT_SOCKLEN_T 1
21760 +| #define HAVE_LARGE_FILE_SUPPORT 1
21761 +| #define SIZEOF_OFF_T 8
21762 +| #define HAVE_SYS_MMAN_H 1
21763 +| #define HAVE_STDLIB_H 1
21764 +| #define HAVE_UNISTD_H 1
21765 +| #define HAVE_GETPAGESIZE 1
21766 +| #define HAVE_MMAP 1
21767 +| #define HAVE_MADVISE 1
21768 +| #define HAVE_DECL_MADVISE 1
21769 +| #define HAVE_LINUXMODULE_2_6 1
21770 +| #define HAVE_CLICK_KERNEL 1
21771 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
21772 +| #define HAVE_LINUX_POLLING 1
21773 +| #define __SMP__ 1
21774 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
21775 +| #define HAVE_STRIDE_SCHED 1
21776 +| #define HAVE_LINUX_IF_TUN_H 1
21777 +| /* end confdefs.h.  */
21778 +| #include <stdio.h>
21779 +| #ifdef HAVE_SYS_TYPES_H
21780 +| # include <sys/types.h>
21781 +| #endif
21782 +| #ifdef HAVE_SYS_STAT_H
21783 +| # include <sys/stat.h>
21784 +| #endif
21785 +| #ifdef STDC_HEADERS
21786 +| # include <stdlib.h>
21787 +| # include <stddef.h>
21788 +| #else
21789 +| # ifdef HAVE_STDLIB_H
21790 +| #  include <stdlib.h>
21791 +| # endif
21792 +| #endif
21793 +| #ifdef HAVE_STRING_H
21794 +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
21795 +| #  include <memory.h>
21796 +| # endif
21797 +| # include <string.h>
21798 +| #endif
21799 +| #ifdef HAVE_STRINGS_H
21800 +| # include <strings.h>
21801 +| #endif
21802 +| #ifdef HAVE_INTTYPES_H
21803 +| # include <inttypes.h>
21804 +| #endif
21805 +| #ifdef HAVE_STDINT_H
21806 +| # include <stdint.h>
21807 +| #endif
21808 +| #ifdef HAVE_UNISTD_H
21809 +| # include <unistd.h>
21810 +| #endif
21811 +| #include <net/if_tun.h>
21812 +configure:13070: result: no
21813 +configure:13074: checking net/if_tun.h presence
21814 +configure:13089: g++ -W -Wall  -E  conftest.cpp
21815 +conftest.cpp:82:24: error: net/if_tun.h: No such file or directory
21816 +configure:13095: $? = 1
21817 +configure: failed program was:
21818 +| /* confdefs.h.  */
21819 +| #define PACKAGE_NAME "click"
21820 +| #define PACKAGE_TARNAME "click"
21821 +| #define PACKAGE_VERSION "1.6.0"
21822 +| #define PACKAGE_STRING "click 1.6.0"
21823 +| #define PACKAGE_BUGREPORT ""
21824 +| #define CLICK_VERSION "1.6.0"
21825 +| #define HAVE_NEW_HDR 1
21826 +| #define NUM_CLICK_CPUS 1
21827 +| #define HAVE_CLICKFS 1
21828 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21829 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21830 +| #define HAVE_STRERROR 1
21831 +| #define HAVE_SNPRINTF 1
21832 +| #define HAVE_STRTOUL 1
21833 +| #define HAVE_TCGETPGRP 1
21834 +| #define HAVE_VSNPRINTF 1
21835 +| #define STDC_HEADERS 1
21836 +| #define HAVE_SYS_TYPES_H 1
21837 +| #define HAVE_SYS_STAT_H 1
21838 +| #define HAVE_STDLIB_H 1
21839 +| #define HAVE_STRING_H 1
21840 +| #define HAVE_MEMORY_H 1
21841 +| #define HAVE_STRINGS_H 1
21842 +| #define HAVE_INTTYPES_H 1
21843 +| #define HAVE_STDINT_H 1
21844 +| #define HAVE_UNISTD_H 1
21845 +| #define SIZEOF_INT 4
21846 +| #define SIZEOF_LONG 4
21847 +| #define HAVE_INTTYPES_H 1
21848 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21849 +| #define SIZEOF_LONG_LONG 8
21850 +| #define HAVE_LONG_LONG 1
21851 +| #define HAVE_INT64_TYPES 1
21852 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21853 +| #define SIZEOF_STRUCT_TIMEVAL 8
21854 +| #define HAVE_STRUCT_TIMESPEC 1
21855 +| #define SIZEOF_STRUCT_TIMESPEC 8
21856 +| #define HAVE_ENDIAN_H 1
21857 +| #define CLICK_BYTE_ORDER 1234
21858 +| #define HAVE_BYTESWAP_H 1
21859 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21860 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21861 +| #define HAVE___BUILTIN_CLZ 1
21862 +| #define HAVE___BUILTIN_CLZL 1
21863 +| #define HAVE___BUILTIN_CLZLL 1
21864 +| #define HAVE___BUILTIN_FFS 1
21865 +| #define HAVE___BUILTIN_FFSL 1
21866 +| #define HAVE___BUILTIN_FFSLL 1
21867 +| #define HAVE_STRINGS_H 1
21868 +| #define HAVE_FFS 1
21869 +| #define HAVE_FFSL 1
21870 +| #define HAVE_FFSLL 1
21871 +| #define HAVE_UNISTD_H 1
21872 +| #define HAVE_TERMIO_H 1
21873 +| #define HAVE_NETDB_H 1
21874 +| #define HAVE_PWD_H 1
21875 +| #define HAVE_GRP_H 1
21876 +| #define HAVE_POLL_H 1
21877 +| #define HAVE_SIGACTION 1
21878 +| #define HAVE_DLFCN_H 1
21879 +| #define HAVE_DYNAMIC_LINKING 1
21880 +| #define HAVE_ACCEPT_SOCKLEN_T 1
21881 +| #define HAVE_LARGE_FILE_SUPPORT 1
21882 +| #define SIZEOF_OFF_T 8
21883 +| #define HAVE_SYS_MMAN_H 1
21884 +| #define HAVE_STDLIB_H 1
21885 +| #define HAVE_UNISTD_H 1
21886 +| #define HAVE_GETPAGESIZE 1
21887 +| #define HAVE_MMAP 1
21888 +| #define HAVE_MADVISE 1
21889 +| #define HAVE_DECL_MADVISE 1
21890 +| #define HAVE_LINUXMODULE_2_6 1
21891 +| #define HAVE_CLICK_KERNEL 1
21892 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
21893 +| #define HAVE_LINUX_POLLING 1
21894 +| #define __SMP__ 1
21895 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
21896 +| #define HAVE_STRIDE_SCHED 1
21897 +| #define HAVE_LINUX_IF_TUN_H 1
21898 +| /* end confdefs.h.  */
21899 +| #include <net/if_tun.h>
21900 +configure:13109: result: no
21901 +configure:13137: checking for net/if_tun.h
21902 +configure:13145: result: no
21903 +configure:13033: checking net/if_tap.h usability
21904 +configure:13050: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
21905 +conftest.cpp:115:24: error: net/if_tap.h: No such file or directory
21906 +configure:13056: $? = 1
21907 +configure: failed program was:
21908 +| /* confdefs.h.  */
21909 +| #define PACKAGE_NAME "click"
21910 +| #define PACKAGE_TARNAME "click"
21911 +| #define PACKAGE_VERSION "1.6.0"
21912 +| #define PACKAGE_STRING "click 1.6.0"
21913 +| #define PACKAGE_BUGREPORT ""
21914 +| #define CLICK_VERSION "1.6.0"
21915 +| #define HAVE_NEW_HDR 1
21916 +| #define NUM_CLICK_CPUS 1
21917 +| #define HAVE_CLICKFS 1
21918 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
21919 +| #define FREEBSD_INCLUDEDIR "/usr/include"
21920 +| #define HAVE_STRERROR 1
21921 +| #define HAVE_SNPRINTF 1
21922 +| #define HAVE_STRTOUL 1
21923 +| #define HAVE_TCGETPGRP 1
21924 +| #define HAVE_VSNPRINTF 1
21925 +| #define STDC_HEADERS 1
21926 +| #define HAVE_SYS_TYPES_H 1
21927 +| #define HAVE_SYS_STAT_H 1
21928 +| #define HAVE_STDLIB_H 1
21929 +| #define HAVE_STRING_H 1
21930 +| #define HAVE_MEMORY_H 1
21931 +| #define HAVE_STRINGS_H 1
21932 +| #define HAVE_INTTYPES_H 1
21933 +| #define HAVE_STDINT_H 1
21934 +| #define HAVE_UNISTD_H 1
21935 +| #define SIZEOF_INT 4
21936 +| #define SIZEOF_LONG 4
21937 +| #define HAVE_INTTYPES_H 1
21938 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
21939 +| #define SIZEOF_LONG_LONG 8
21940 +| #define HAVE_LONG_LONG 1
21941 +| #define HAVE_INT64_TYPES 1
21942 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
21943 +| #define SIZEOF_STRUCT_TIMEVAL 8
21944 +| #define HAVE_STRUCT_TIMESPEC 1
21945 +| #define SIZEOF_STRUCT_TIMESPEC 8
21946 +| #define HAVE_ENDIAN_H 1
21947 +| #define CLICK_BYTE_ORDER 1234
21948 +| #define HAVE_BYTESWAP_H 1
21949 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
21950 +| #define HAVE_ADDRESSABLE_VA_LIST 1
21951 +| #define HAVE___BUILTIN_CLZ 1
21952 +| #define HAVE___BUILTIN_CLZL 1
21953 +| #define HAVE___BUILTIN_CLZLL 1
21954 +| #define HAVE___BUILTIN_FFS 1
21955 +| #define HAVE___BUILTIN_FFSL 1
21956 +| #define HAVE___BUILTIN_FFSLL 1
21957 +| #define HAVE_STRINGS_H 1
21958 +| #define HAVE_FFS 1
21959 +| #define HAVE_FFSL 1
21960 +| #define HAVE_FFSLL 1
21961 +| #define HAVE_UNISTD_H 1
21962 +| #define HAVE_TERMIO_H 1
21963 +| #define HAVE_NETDB_H 1
21964 +| #define HAVE_PWD_H 1
21965 +| #define HAVE_GRP_H 1
21966 +| #define HAVE_POLL_H 1
21967 +| #define HAVE_SIGACTION 1
21968 +| #define HAVE_DLFCN_H 1
21969 +| #define HAVE_DYNAMIC_LINKING 1
21970 +| #define HAVE_ACCEPT_SOCKLEN_T 1
21971 +| #define HAVE_LARGE_FILE_SUPPORT 1
21972 +| #define SIZEOF_OFF_T 8
21973 +| #define HAVE_SYS_MMAN_H 1
21974 +| #define HAVE_STDLIB_H 1
21975 +| #define HAVE_UNISTD_H 1
21976 +| #define HAVE_GETPAGESIZE 1
21977 +| #define HAVE_MMAP 1
21978 +| #define HAVE_MADVISE 1
21979 +| #define HAVE_DECL_MADVISE 1
21980 +| #define HAVE_LINUXMODULE_2_6 1
21981 +| #define HAVE_CLICK_KERNEL 1
21982 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
21983 +| #define HAVE_LINUX_POLLING 1
21984 +| #define __SMP__ 1
21985 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
21986 +| #define HAVE_STRIDE_SCHED 1
21987 +| #define HAVE_LINUX_IF_TUN_H 1
21988 +| /* end confdefs.h.  */
21989 +| #include <stdio.h>
21990 +| #ifdef HAVE_SYS_TYPES_H
21991 +| # include <sys/types.h>
21992 +| #endif
21993 +| #ifdef HAVE_SYS_STAT_H
21994 +| # include <sys/stat.h>
21995 +| #endif
21996 +| #ifdef STDC_HEADERS
21997 +| # include <stdlib.h>
21998 +| # include <stddef.h>
21999 +| #else
22000 +| # ifdef HAVE_STDLIB_H
22001 +| #  include <stdlib.h>
22002 +| # endif
22003 +| #endif
22004 +| #ifdef HAVE_STRING_H
22005 +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
22006 +| #  include <memory.h>
22007 +| # endif
22008 +| # include <string.h>
22009 +| #endif
22010 +| #ifdef HAVE_STRINGS_H
22011 +| # include <strings.h>
22012 +| #endif
22013 +| #ifdef HAVE_INTTYPES_H
22014 +| # include <inttypes.h>
22015 +| #endif
22016 +| #ifdef HAVE_STDINT_H
22017 +| # include <stdint.h>
22018 +| #endif
22019 +| #ifdef HAVE_UNISTD_H
22020 +| # include <unistd.h>
22021 +| #endif
22022 +| #include <net/if_tap.h>
22023 +configure:13070: result: no
22024 +configure:13074: checking net/if_tap.h presence
22025 +configure:13089: g++ -W -Wall  -E  conftest.cpp
22026 +conftest.cpp:82:24: error: net/if_tap.h: No such file or directory
22027 +configure:13095: $? = 1
22028 +configure: failed program was:
22029 +| /* confdefs.h.  */
22030 +| #define PACKAGE_NAME "click"
22031 +| #define PACKAGE_TARNAME "click"
22032 +| #define PACKAGE_VERSION "1.6.0"
22033 +| #define PACKAGE_STRING "click 1.6.0"
22034 +| #define PACKAGE_BUGREPORT ""
22035 +| #define CLICK_VERSION "1.6.0"
22036 +| #define HAVE_NEW_HDR 1
22037 +| #define NUM_CLICK_CPUS 1
22038 +| #define HAVE_CLICKFS 1
22039 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22040 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22041 +| #define HAVE_STRERROR 1
22042 +| #define HAVE_SNPRINTF 1
22043 +| #define HAVE_STRTOUL 1
22044 +| #define HAVE_TCGETPGRP 1
22045 +| #define HAVE_VSNPRINTF 1
22046 +| #define STDC_HEADERS 1
22047 +| #define HAVE_SYS_TYPES_H 1
22048 +| #define HAVE_SYS_STAT_H 1
22049 +| #define HAVE_STDLIB_H 1
22050 +| #define HAVE_STRING_H 1
22051 +| #define HAVE_MEMORY_H 1
22052 +| #define HAVE_STRINGS_H 1
22053 +| #define HAVE_INTTYPES_H 1
22054 +| #define HAVE_STDINT_H 1
22055 +| #define HAVE_UNISTD_H 1
22056 +| #define SIZEOF_INT 4
22057 +| #define SIZEOF_LONG 4
22058 +| #define HAVE_INTTYPES_H 1
22059 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22060 +| #define SIZEOF_LONG_LONG 8
22061 +| #define HAVE_LONG_LONG 1
22062 +| #define HAVE_INT64_TYPES 1
22063 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22064 +| #define SIZEOF_STRUCT_TIMEVAL 8
22065 +| #define HAVE_STRUCT_TIMESPEC 1
22066 +| #define SIZEOF_STRUCT_TIMESPEC 8
22067 +| #define HAVE_ENDIAN_H 1
22068 +| #define CLICK_BYTE_ORDER 1234
22069 +| #define HAVE_BYTESWAP_H 1
22070 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22071 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22072 +| #define HAVE___BUILTIN_CLZ 1
22073 +| #define HAVE___BUILTIN_CLZL 1
22074 +| #define HAVE___BUILTIN_CLZLL 1
22075 +| #define HAVE___BUILTIN_FFS 1
22076 +| #define HAVE___BUILTIN_FFSL 1
22077 +| #define HAVE___BUILTIN_FFSLL 1
22078 +| #define HAVE_STRINGS_H 1
22079 +| #define HAVE_FFS 1
22080 +| #define HAVE_FFSL 1
22081 +| #define HAVE_FFSLL 1
22082 +| #define HAVE_UNISTD_H 1
22083 +| #define HAVE_TERMIO_H 1
22084 +| #define HAVE_NETDB_H 1
22085 +| #define HAVE_PWD_H 1
22086 +| #define HAVE_GRP_H 1
22087 +| #define HAVE_POLL_H 1
22088 +| #define HAVE_SIGACTION 1
22089 +| #define HAVE_DLFCN_H 1
22090 +| #define HAVE_DYNAMIC_LINKING 1
22091 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22092 +| #define HAVE_LARGE_FILE_SUPPORT 1
22093 +| #define SIZEOF_OFF_T 8
22094 +| #define HAVE_SYS_MMAN_H 1
22095 +| #define HAVE_STDLIB_H 1
22096 +| #define HAVE_UNISTD_H 1
22097 +| #define HAVE_GETPAGESIZE 1
22098 +| #define HAVE_MMAP 1
22099 +| #define HAVE_MADVISE 1
22100 +| #define HAVE_DECL_MADVISE 1
22101 +| #define HAVE_LINUXMODULE_2_6 1
22102 +| #define HAVE_CLICK_KERNEL 1
22103 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22104 +| #define HAVE_LINUX_POLLING 1
22105 +| #define __SMP__ 1
22106 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22107 +| #define HAVE_STRIDE_SCHED 1
22108 +| #define HAVE_LINUX_IF_TUN_H 1
22109 +| /* end confdefs.h.  */
22110 +| #include <net/if_tap.h>
22111 +configure:13109: result: no
22112 +configure:13137: checking for net/if_tap.h
22113 +configure:13145: result: no
22114 +configure:13033: checking net/bpf.h usability
22115 +configure:13050: g++ -W -Wall  -c -g -O2  conftest.cpp >&5
22116 +conftest.cpp:115:21: error: net/bpf.h: No such file or directory
22117 +configure:13056: $? = 1
22118 +configure: failed program was:
22119 +| /* confdefs.h.  */
22120 +| #define PACKAGE_NAME "click"
22121 +| #define PACKAGE_TARNAME "click"
22122 +| #define PACKAGE_VERSION "1.6.0"
22123 +| #define PACKAGE_STRING "click 1.6.0"
22124 +| #define PACKAGE_BUGREPORT ""
22125 +| #define CLICK_VERSION "1.6.0"
22126 +| #define HAVE_NEW_HDR 1
22127 +| #define NUM_CLICK_CPUS 1
22128 +| #define HAVE_CLICKFS 1
22129 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22130 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22131 +| #define HAVE_STRERROR 1
22132 +| #define HAVE_SNPRINTF 1
22133 +| #define HAVE_STRTOUL 1
22134 +| #define HAVE_TCGETPGRP 1
22135 +| #define HAVE_VSNPRINTF 1
22136 +| #define STDC_HEADERS 1
22137 +| #define HAVE_SYS_TYPES_H 1
22138 +| #define HAVE_SYS_STAT_H 1
22139 +| #define HAVE_STDLIB_H 1
22140 +| #define HAVE_STRING_H 1
22141 +| #define HAVE_MEMORY_H 1
22142 +| #define HAVE_STRINGS_H 1
22143 +| #define HAVE_INTTYPES_H 1
22144 +| #define HAVE_STDINT_H 1
22145 +| #define HAVE_UNISTD_H 1
22146 +| #define SIZEOF_INT 4
22147 +| #define SIZEOF_LONG 4
22148 +| #define HAVE_INTTYPES_H 1
22149 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22150 +| #define SIZEOF_LONG_LONG 8
22151 +| #define HAVE_LONG_LONG 1
22152 +| #define HAVE_INT64_TYPES 1
22153 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22154 +| #define SIZEOF_STRUCT_TIMEVAL 8
22155 +| #define HAVE_STRUCT_TIMESPEC 1
22156 +| #define SIZEOF_STRUCT_TIMESPEC 8
22157 +| #define HAVE_ENDIAN_H 1
22158 +| #define CLICK_BYTE_ORDER 1234
22159 +| #define HAVE_BYTESWAP_H 1
22160 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22161 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22162 +| #define HAVE___BUILTIN_CLZ 1
22163 +| #define HAVE___BUILTIN_CLZL 1
22164 +| #define HAVE___BUILTIN_CLZLL 1
22165 +| #define HAVE___BUILTIN_FFS 1
22166 +| #define HAVE___BUILTIN_FFSL 1
22167 +| #define HAVE___BUILTIN_FFSLL 1
22168 +| #define HAVE_STRINGS_H 1
22169 +| #define HAVE_FFS 1
22170 +| #define HAVE_FFSL 1
22171 +| #define HAVE_FFSLL 1
22172 +| #define HAVE_UNISTD_H 1
22173 +| #define HAVE_TERMIO_H 1
22174 +| #define HAVE_NETDB_H 1
22175 +| #define HAVE_PWD_H 1
22176 +| #define HAVE_GRP_H 1
22177 +| #define HAVE_POLL_H 1
22178 +| #define HAVE_SIGACTION 1
22179 +| #define HAVE_DLFCN_H 1
22180 +| #define HAVE_DYNAMIC_LINKING 1
22181 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22182 +| #define HAVE_LARGE_FILE_SUPPORT 1
22183 +| #define SIZEOF_OFF_T 8
22184 +| #define HAVE_SYS_MMAN_H 1
22185 +| #define HAVE_STDLIB_H 1
22186 +| #define HAVE_UNISTD_H 1
22187 +| #define HAVE_GETPAGESIZE 1
22188 +| #define HAVE_MMAP 1
22189 +| #define HAVE_MADVISE 1
22190 +| #define HAVE_DECL_MADVISE 1
22191 +| #define HAVE_LINUXMODULE_2_6 1
22192 +| #define HAVE_CLICK_KERNEL 1
22193 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22194 +| #define HAVE_LINUX_POLLING 1
22195 +| #define __SMP__ 1
22196 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22197 +| #define HAVE_STRIDE_SCHED 1
22198 +| #define HAVE_LINUX_IF_TUN_H 1
22199 +| /* end confdefs.h.  */
22200 +| #include <stdio.h>
22201 +| #ifdef HAVE_SYS_TYPES_H
22202 +| # include <sys/types.h>
22203 +| #endif
22204 +| #ifdef HAVE_SYS_STAT_H
22205 +| # include <sys/stat.h>
22206 +| #endif
22207 +| #ifdef STDC_HEADERS
22208 +| # include <stdlib.h>
22209 +| # include <stddef.h>
22210 +| #else
22211 +| # ifdef HAVE_STDLIB_H
22212 +| #  include <stdlib.h>
22213 +| # endif
22214 +| #endif
22215 +| #ifdef HAVE_STRING_H
22216 +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
22217 +| #  include <memory.h>
22218 +| # endif
22219 +| # include <string.h>
22220 +| #endif
22221 +| #ifdef HAVE_STRINGS_H
22222 +| # include <strings.h>
22223 +| #endif
22224 +| #ifdef HAVE_INTTYPES_H
22225 +| # include <inttypes.h>
22226 +| #endif
22227 +| #ifdef HAVE_STDINT_H
22228 +| # include <stdint.h>
22229 +| #endif
22230 +| #ifdef HAVE_UNISTD_H
22231 +| # include <unistd.h>
22232 +| #endif
22233 +| #include <net/bpf.h>
22234 +configure:13070: result: no
22235 +configure:13074: checking net/bpf.h presence
22236 +configure:13089: g++ -W -Wall  -E  conftest.cpp
22237 +conftest.cpp:82:21: error: net/bpf.h: No such file or directory
22238 +configure:13095: $? = 1
22239 +configure: failed program was:
22240 +| /* confdefs.h.  */
22241 +| #define PACKAGE_NAME "click"
22242 +| #define PACKAGE_TARNAME "click"
22243 +| #define PACKAGE_VERSION "1.6.0"
22244 +| #define PACKAGE_STRING "click 1.6.0"
22245 +| #define PACKAGE_BUGREPORT ""
22246 +| #define CLICK_VERSION "1.6.0"
22247 +| #define HAVE_NEW_HDR 1
22248 +| #define NUM_CLICK_CPUS 1
22249 +| #define HAVE_CLICKFS 1
22250 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22251 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22252 +| #define HAVE_STRERROR 1
22253 +| #define HAVE_SNPRINTF 1
22254 +| #define HAVE_STRTOUL 1
22255 +| #define HAVE_TCGETPGRP 1
22256 +| #define HAVE_VSNPRINTF 1
22257 +| #define STDC_HEADERS 1
22258 +| #define HAVE_SYS_TYPES_H 1
22259 +| #define HAVE_SYS_STAT_H 1
22260 +| #define HAVE_STDLIB_H 1
22261 +| #define HAVE_STRING_H 1
22262 +| #define HAVE_MEMORY_H 1
22263 +| #define HAVE_STRINGS_H 1
22264 +| #define HAVE_INTTYPES_H 1
22265 +| #define HAVE_STDINT_H 1
22266 +| #define HAVE_UNISTD_H 1
22267 +| #define SIZEOF_INT 4
22268 +| #define SIZEOF_LONG 4
22269 +| #define HAVE_INTTYPES_H 1
22270 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22271 +| #define SIZEOF_LONG_LONG 8
22272 +| #define HAVE_LONG_LONG 1
22273 +| #define HAVE_INT64_TYPES 1
22274 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22275 +| #define SIZEOF_STRUCT_TIMEVAL 8
22276 +| #define HAVE_STRUCT_TIMESPEC 1
22277 +| #define SIZEOF_STRUCT_TIMESPEC 8
22278 +| #define HAVE_ENDIAN_H 1
22279 +| #define CLICK_BYTE_ORDER 1234
22280 +| #define HAVE_BYTESWAP_H 1
22281 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22282 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22283 +| #define HAVE___BUILTIN_CLZ 1
22284 +| #define HAVE___BUILTIN_CLZL 1
22285 +| #define HAVE___BUILTIN_CLZLL 1
22286 +| #define HAVE___BUILTIN_FFS 1
22287 +| #define HAVE___BUILTIN_FFSL 1
22288 +| #define HAVE___BUILTIN_FFSLL 1
22289 +| #define HAVE_STRINGS_H 1
22290 +| #define HAVE_FFS 1
22291 +| #define HAVE_FFSL 1
22292 +| #define HAVE_FFSLL 1
22293 +| #define HAVE_UNISTD_H 1
22294 +| #define HAVE_TERMIO_H 1
22295 +| #define HAVE_NETDB_H 1
22296 +| #define HAVE_PWD_H 1
22297 +| #define HAVE_GRP_H 1
22298 +| #define HAVE_POLL_H 1
22299 +| #define HAVE_SIGACTION 1
22300 +| #define HAVE_DLFCN_H 1
22301 +| #define HAVE_DYNAMIC_LINKING 1
22302 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22303 +| #define HAVE_LARGE_FILE_SUPPORT 1
22304 +| #define SIZEOF_OFF_T 8
22305 +| #define HAVE_SYS_MMAN_H 1
22306 +| #define HAVE_STDLIB_H 1
22307 +| #define HAVE_UNISTD_H 1
22308 +| #define HAVE_GETPAGESIZE 1
22309 +| #define HAVE_MMAP 1
22310 +| #define HAVE_MADVISE 1
22311 +| #define HAVE_DECL_MADVISE 1
22312 +| #define HAVE_LINUXMODULE_2_6 1
22313 +| #define HAVE_CLICK_KERNEL 1
22314 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22315 +| #define HAVE_LINUX_POLLING 1
22316 +| #define __SMP__ 1
22317 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22318 +| #define HAVE_STRIDE_SCHED 1
22319 +| #define HAVE_LINUX_IF_TUN_H 1
22320 +| /* end confdefs.h.  */
22321 +| #include <net/bpf.h>
22322 +configure:13109: result: no
22323 +configure:13137: checking for net/bpf.h
22324 +configure:13145: result: no
22325 +configure:13200: checking for pcap.h
22326 +configure:13219: g++ -W -Wall  -E  conftest.cpp
22327 +configure:13225: $? = 0
22328 +configure:13244: result: found
22329 +configure:13254: checking whether pcap.h works
22330 +configure:13275: g++ -W -Wall  -E   conftest.cpp
22331 +configure:13281: $? = 0
22332 +configure:13297: result: yes
22333 +configure:13305: checking for bpf_timeval in pcap.h
22334 +configure:13328: result: no
22335 +configure:13337: checking whether pcap_setnonblock is declared
22336 +configure:13367: g++ -W -Wall  -c -g -O2   conftest.cpp >&5
22337 +configure:13373: $? = 0
22338 +configure:13388: result: yes
22339 +configure:13416: checking for -lpcap
22340 +configure:13459: gcc -W -Wall -o conftest -g -O2   conftest.c  -lpcap  >&5
22341 +configure:13465: $? = 0
22342 +configure:13534: result: found
22343 +configure:13634: checking for pcap_setnonblock
22344 +configure:13690: gcc -W -Wall -o conftest -g -O2   -lpcap conftest.c  >&5
22345 +configure:13696: $? = 0
22346 +configure:13714: result: yes
22347 +configure:13751: checking whether struct if_data has ifi_datalen
22348 +configure:13779: gcc -W -Wall -c -g -O2  conftest.c >&5
22349 +conftest.c:87:24: error: net/if_var.h: No such file or directory
22350 +conftest.c: In function 'main':
22351 +conftest.c:92: error: storage size of 'ifm' isn't known
22352 +conftest.c:92: warning: unused variable 'ifm'
22353 +configure:13785: $? = 1
22354 +configure: failed program was:
22355 +| /* confdefs.h.  */
22356 +| #define PACKAGE_NAME "click"
22357 +| #define PACKAGE_TARNAME "click"
22358 +| #define PACKAGE_VERSION "1.6.0"
22359 +| #define PACKAGE_STRING "click 1.6.0"
22360 +| #define PACKAGE_BUGREPORT ""
22361 +| #define CLICK_VERSION "1.6.0"
22362 +| #define HAVE_NEW_HDR 1
22363 +| #define NUM_CLICK_CPUS 1
22364 +| #define HAVE_CLICKFS 1
22365 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22366 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22367 +| #define HAVE_STRERROR 1
22368 +| #define HAVE_SNPRINTF 1
22369 +| #define HAVE_STRTOUL 1
22370 +| #define HAVE_TCGETPGRP 1
22371 +| #define HAVE_VSNPRINTF 1
22372 +| #define STDC_HEADERS 1
22373 +| #define HAVE_SYS_TYPES_H 1
22374 +| #define HAVE_SYS_STAT_H 1
22375 +| #define HAVE_STDLIB_H 1
22376 +| #define HAVE_STRING_H 1
22377 +| #define HAVE_MEMORY_H 1
22378 +| #define HAVE_STRINGS_H 1
22379 +| #define HAVE_INTTYPES_H 1
22380 +| #define HAVE_STDINT_H 1
22381 +| #define HAVE_UNISTD_H 1
22382 +| #define SIZEOF_INT 4
22383 +| #define SIZEOF_LONG 4
22384 +| #define HAVE_INTTYPES_H 1
22385 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22386 +| #define SIZEOF_LONG_LONG 8
22387 +| #define HAVE_LONG_LONG 1
22388 +| #define HAVE_INT64_TYPES 1
22389 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22390 +| #define SIZEOF_STRUCT_TIMEVAL 8
22391 +| #define HAVE_STRUCT_TIMESPEC 1
22392 +| #define SIZEOF_STRUCT_TIMESPEC 8
22393 +| #define HAVE_ENDIAN_H 1
22394 +| #define CLICK_BYTE_ORDER 1234
22395 +| #define HAVE_BYTESWAP_H 1
22396 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22397 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22398 +| #define HAVE___BUILTIN_CLZ 1
22399 +| #define HAVE___BUILTIN_CLZL 1
22400 +| #define HAVE___BUILTIN_CLZLL 1
22401 +| #define HAVE___BUILTIN_FFS 1
22402 +| #define HAVE___BUILTIN_FFSL 1
22403 +| #define HAVE___BUILTIN_FFSLL 1
22404 +| #define HAVE_STRINGS_H 1
22405 +| #define HAVE_FFS 1
22406 +| #define HAVE_FFSL 1
22407 +| #define HAVE_FFSLL 1
22408 +| #define HAVE_UNISTD_H 1
22409 +| #define HAVE_TERMIO_H 1
22410 +| #define HAVE_NETDB_H 1
22411 +| #define HAVE_PWD_H 1
22412 +| #define HAVE_GRP_H 1
22413 +| #define HAVE_POLL_H 1
22414 +| #define HAVE_SIGACTION 1
22415 +| #define HAVE_DLFCN_H 1
22416 +| #define HAVE_DYNAMIC_LINKING 1
22417 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22418 +| #define HAVE_LARGE_FILE_SUPPORT 1
22419 +| #define SIZEOF_OFF_T 8
22420 +| #define HAVE_SYS_MMAN_H 1
22421 +| #define HAVE_STDLIB_H 1
22422 +| #define HAVE_UNISTD_H 1
22423 +| #define HAVE_GETPAGESIZE 1
22424 +| #define HAVE_MMAP 1
22425 +| #define HAVE_MADVISE 1
22426 +| #define HAVE_DECL_MADVISE 1
22427 +| #define HAVE_LINUXMODULE_2_6 1
22428 +| #define HAVE_CLICK_KERNEL 1
22429 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22430 +| #define HAVE_LINUX_POLLING 1
22431 +| #define __SMP__ 1
22432 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22433 +| #define HAVE_STRIDE_SCHED 1
22434 +| #define HAVE_LINUX_IF_TUN_H 1
22435 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
22436 +| #define HAVE_PCAP 1
22437 +| #define HAVE_PCAP_SETNONBLOCK 1
22438 +| #define HAVE_USERLEVEL_DRIVER 1
22439 +| /* end confdefs.h.  */
22440 +| #include <net/if.h>
22441 +| #include <net/if_var.h>
22442 +| 
22443 +| int
22444 +| main ()
22445 +| {
22446 +| struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0;
22447 +|   ;
22448 +|   return 0;
22449 +| }
22450 +configure:13800: result: no
22451 +configure:13810: checking whether struct sockaddr_in has sin_len
22452 +configure:13838: gcc -W -Wall -c -g -O2  conftest.c >&5
22453 +conftest.c: In function 'main':
22454 +conftest.c:92: error: 'struct sockaddr_in' has no member named 'sin_len'
22455 +configure:13844: $? = 1
22456 +configure: failed program was:
22457 +| /* confdefs.h.  */
22458 +| #define PACKAGE_NAME "click"
22459 +| #define PACKAGE_TARNAME "click"
22460 +| #define PACKAGE_VERSION "1.6.0"
22461 +| #define PACKAGE_STRING "click 1.6.0"
22462 +| #define PACKAGE_BUGREPORT ""
22463 +| #define CLICK_VERSION "1.6.0"
22464 +| #define HAVE_NEW_HDR 1
22465 +| #define NUM_CLICK_CPUS 1
22466 +| #define HAVE_CLICKFS 1
22467 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22468 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22469 +| #define HAVE_STRERROR 1
22470 +| #define HAVE_SNPRINTF 1
22471 +| #define HAVE_STRTOUL 1
22472 +| #define HAVE_TCGETPGRP 1
22473 +| #define HAVE_VSNPRINTF 1
22474 +| #define STDC_HEADERS 1
22475 +| #define HAVE_SYS_TYPES_H 1
22476 +| #define HAVE_SYS_STAT_H 1
22477 +| #define HAVE_STDLIB_H 1
22478 +| #define HAVE_STRING_H 1
22479 +| #define HAVE_MEMORY_H 1
22480 +| #define HAVE_STRINGS_H 1
22481 +| #define HAVE_INTTYPES_H 1
22482 +| #define HAVE_STDINT_H 1
22483 +| #define HAVE_UNISTD_H 1
22484 +| #define SIZEOF_INT 4
22485 +| #define SIZEOF_LONG 4
22486 +| #define HAVE_INTTYPES_H 1
22487 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22488 +| #define SIZEOF_LONG_LONG 8
22489 +| #define HAVE_LONG_LONG 1
22490 +| #define HAVE_INT64_TYPES 1
22491 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22492 +| #define SIZEOF_STRUCT_TIMEVAL 8
22493 +| #define HAVE_STRUCT_TIMESPEC 1
22494 +| #define SIZEOF_STRUCT_TIMESPEC 8
22495 +| #define HAVE_ENDIAN_H 1
22496 +| #define CLICK_BYTE_ORDER 1234
22497 +| #define HAVE_BYTESWAP_H 1
22498 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22499 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22500 +| #define HAVE___BUILTIN_CLZ 1
22501 +| #define HAVE___BUILTIN_CLZL 1
22502 +| #define HAVE___BUILTIN_CLZLL 1
22503 +| #define HAVE___BUILTIN_FFS 1
22504 +| #define HAVE___BUILTIN_FFSL 1
22505 +| #define HAVE___BUILTIN_FFSLL 1
22506 +| #define HAVE_STRINGS_H 1
22507 +| #define HAVE_FFS 1
22508 +| #define HAVE_FFSL 1
22509 +| #define HAVE_FFSLL 1
22510 +| #define HAVE_UNISTD_H 1
22511 +| #define HAVE_TERMIO_H 1
22512 +| #define HAVE_NETDB_H 1
22513 +| #define HAVE_PWD_H 1
22514 +| #define HAVE_GRP_H 1
22515 +| #define HAVE_POLL_H 1
22516 +| #define HAVE_SIGACTION 1
22517 +| #define HAVE_DLFCN_H 1
22518 +| #define HAVE_DYNAMIC_LINKING 1
22519 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22520 +| #define HAVE_LARGE_FILE_SUPPORT 1
22521 +| #define SIZEOF_OFF_T 8
22522 +| #define HAVE_SYS_MMAN_H 1
22523 +| #define HAVE_STDLIB_H 1
22524 +| #define HAVE_UNISTD_H 1
22525 +| #define HAVE_GETPAGESIZE 1
22526 +| #define HAVE_MMAP 1
22527 +| #define HAVE_MADVISE 1
22528 +| #define HAVE_DECL_MADVISE 1
22529 +| #define HAVE_LINUXMODULE_2_6 1
22530 +| #define HAVE_CLICK_KERNEL 1
22531 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22532 +| #define HAVE_LINUX_POLLING 1
22533 +| #define __SMP__ 1
22534 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22535 +| #define HAVE_STRIDE_SCHED 1
22536 +| #define HAVE_LINUX_IF_TUN_H 1
22537 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
22538 +| #define HAVE_PCAP 1
22539 +| #define HAVE_PCAP_SETNONBLOCK 1
22540 +| #define HAVE_USERLEVEL_DRIVER 1
22541 +| /* end confdefs.h.  */
22542 +| #include <sys/socket.h>
22543 +| #include <netinet/in.h>
22544 +| 
22545 +| int
22546 +| main ()
22547 +| {
22548 +| struct sockaddr_in sin; sin.sin_len = 0;
22549 +|   ;
22550 +|   return 0;
22551 +| }
22552 +configure:13859: result: no
22553 +configure:14155: checking expat.h usability
22554 +configure:14172: gcc -W -Wall -c -g -O2  conftest.c >&5
22555 +configure:14178: $? = 0
22556 +configure:14192: result: yes
22557 +configure:14196: checking expat.h presence
22558 +configure:14211: gcc -W -Wall -E  conftest.c
22559 +configure:14217: $? = 0
22560 +configure:14231: result: yes
22561 +configure:14259: checking for expat.h
22562 +configure:14266: result: yes
22563 +configure:14286: checking for XML_ParserCreateNS in -lexpat
22564 +configure:14321: gcc -W -Wall -o conftest -g -O2   conftest.c -lexpat   >&5
22565 +configure:14327: $? = 0
22566 +configure:14345: result: yes
22567 +configure:14393: checking for Linux 2.6 compilation flags
22568 +configure:14423: result: 
22569 +configure:14440: checking for C++-includable kernel header files
22570 +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
22571 +configure:14494: $? = 0
22572 +configure:14510: result: yes
22573 +configure:14516: checking whether -fpermissive is required
22574 +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
22575 +configure:14570: $? = 0
22576 +configure:14587: result: no
22577 +configure:14675: checking whether long and int64_t are the same type in the Linux kernel
22578 +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
22579 +configure:14727: $? = 0
22580 +configure:14742: result: no
22581 +configure:14753: checking whether long long and int64_t are the same type in the Linux kernel
22582 +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
22583 +conftest.cpp: In function 'void f1(int64_t)':
22584 +conftest.cpp:106: error: redefinition of 'void f1(int64_t)'
22585 +conftest.cpp:104: error: 'void f1(long long int)' previously defined here
22586 +configure:14805: $? = 1
22587 +configure: failed program was:
22588 +| /* confdefs.h.  */
22589 +| #define PACKAGE_NAME "click"
22590 +| #define PACKAGE_TARNAME "click"
22591 +| #define PACKAGE_VERSION "1.6.0"
22592 +| #define PACKAGE_STRING "click 1.6.0"
22593 +| #define PACKAGE_BUGREPORT ""
22594 +| #define CLICK_VERSION "1.6.0"
22595 +| #define HAVE_NEW_HDR 1
22596 +| #define NUM_CLICK_CPUS 1
22597 +| #define HAVE_CLICKFS 1
22598 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
22599 +| #define FREEBSD_INCLUDEDIR "/usr/include"
22600 +| #define HAVE_STRERROR 1
22601 +| #define HAVE_SNPRINTF 1
22602 +| #define HAVE_STRTOUL 1
22603 +| #define HAVE_TCGETPGRP 1
22604 +| #define HAVE_VSNPRINTF 1
22605 +| #define STDC_HEADERS 1
22606 +| #define HAVE_SYS_TYPES_H 1
22607 +| #define HAVE_SYS_STAT_H 1
22608 +| #define HAVE_STDLIB_H 1
22609 +| #define HAVE_STRING_H 1
22610 +| #define HAVE_MEMORY_H 1
22611 +| #define HAVE_STRINGS_H 1
22612 +| #define HAVE_INTTYPES_H 1
22613 +| #define HAVE_STDINT_H 1
22614 +| #define HAVE_UNISTD_H 1
22615 +| #define SIZEOF_INT 4
22616 +| #define SIZEOF_LONG 4
22617 +| #define HAVE_INTTYPES_H 1
22618 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
22619 +| #define SIZEOF_LONG_LONG 8
22620 +| #define HAVE_LONG_LONG 1
22621 +| #define HAVE_INT64_TYPES 1
22622 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
22623 +| #define SIZEOF_STRUCT_TIMEVAL 8
22624 +| #define HAVE_STRUCT_TIMESPEC 1
22625 +| #define SIZEOF_STRUCT_TIMESPEC 8
22626 +| #define HAVE_ENDIAN_H 1
22627 +| #define CLICK_BYTE_ORDER 1234
22628 +| #define HAVE_BYTESWAP_H 1
22629 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
22630 +| #define HAVE_ADDRESSABLE_VA_LIST 1
22631 +| #define HAVE___BUILTIN_CLZ 1
22632 +| #define HAVE___BUILTIN_CLZL 1
22633 +| #define HAVE___BUILTIN_CLZLL 1
22634 +| #define HAVE___BUILTIN_FFS 1
22635 +| #define HAVE___BUILTIN_FFSL 1
22636 +| #define HAVE___BUILTIN_FFSLL 1
22637 +| #define HAVE_STRINGS_H 1
22638 +| #define HAVE_FFS 1
22639 +| #define HAVE_FFSL 1
22640 +| #define HAVE_FFSLL 1
22641 +| #define HAVE_UNISTD_H 1
22642 +| #define HAVE_TERMIO_H 1
22643 +| #define HAVE_NETDB_H 1
22644 +| #define HAVE_PWD_H 1
22645 +| #define HAVE_GRP_H 1
22646 +| #define HAVE_POLL_H 1
22647 +| #define HAVE_SIGACTION 1
22648 +| #define HAVE_DLFCN_H 1
22649 +| #define HAVE_DYNAMIC_LINKING 1
22650 +| #define HAVE_ACCEPT_SOCKLEN_T 1
22651 +| #define HAVE_LARGE_FILE_SUPPORT 1
22652 +| #define SIZEOF_OFF_T 8
22653 +| #define HAVE_SYS_MMAN_H 1
22654 +| #define HAVE_STDLIB_H 1
22655 +| #define HAVE_UNISTD_H 1
22656 +| #define HAVE_GETPAGESIZE 1
22657 +| #define HAVE_MMAP 1
22658 +| #define HAVE_MADVISE 1
22659 +| #define HAVE_DECL_MADVISE 1
22660 +| #define HAVE_LINUXMODULE_2_6 1
22661 +| #define HAVE_CLICK_KERNEL 1
22662 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
22663 +| #define HAVE_LINUX_POLLING 1
22664 +| #define __SMP__ 1
22665 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
22666 +| #define HAVE_STRIDE_SCHED 1
22667 +| #define HAVE_LINUX_IF_TUN_H 1
22668 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
22669 +| #define HAVE_PCAP 1
22670 +| #define HAVE_PCAP_SETNONBLOCK 1
22671 +| #define HAVE_USERLEVEL_DRIVER 1
22672 +| #define HAVE_EXPAT 1
22673 +| /* end confdefs.h.  */
22674 +| #if HAVE_LINUXMODULE_2_6
22675 +| # define KBUILD_STR(s)               #s
22676 +| # define KBUILD_BASENAME     KBUILD_STR(click)
22677 +| # define KBUILD_MODNAME              KBUILD_STR(click)
22678 +| #endif
22679 +| #define new xxx_new
22680 +| #define this xxx_this
22681 +| #define delete xxx_delete
22682 +| #define class xxx_class
22683 +| #define virtual xxx_virtual
22684 +| #define typename xxx_typename
22685 +| #define private xxx_private
22686 +| #define protected xxx_protected
22687 +| #define public xxx_public
22688 +| #define namespace xxx_namespace
22689 +| #include <linux/autoconf.h>
22690 +| #include <linux/types.h>
22691 +| void f1(long long) {
22692 +| }
22693 +| void f1(int64_t) { // will fail if long long and int64_t are the same type
22694 +| }
22695 +| int
22696 +| main ()
22697 +| {
22698 +| 
22699 +|   ;
22700 +|   return 0;
22701 +| }
22702 +configure:14820: result: yes
22703 +configure:14831: checking whether struct sk_buff has a security member
22704 +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
22705 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
22706 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
22707 +                 from conftest.c:104:
22708 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
22709 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
22710 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
22711 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
22712 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
22713 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
22714 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
22715 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22716 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22717 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22718 +                 from conftest.c:104:
22719 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
22720 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
22721 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
22722 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
22723 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
22724 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
22725 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
22726 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
22727 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
22728 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
22729 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
22730 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
22731 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22732 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22733 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22734 +                 from conftest.c:104:
22735 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
22736 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
22737 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
22738 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
22739 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
22740 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
22741 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
22742 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
22743 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
22744 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
22745 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
22746 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
22747 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
22748 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
22749 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
22750 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22751 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22752 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22753 +                 from conftest.c:104:
22754 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
22755 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
22756 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
22757 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
22758 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
22759 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
22760 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
22761 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
22762 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
22763 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
22764 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
22765 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
22766 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
22767 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
22768 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
22769 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
22770 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
22771 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
22772 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22773 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22774 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22775 +                 from conftest.c:104:
22776 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
22777 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
22778 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
22779 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
22780 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
22781 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
22782 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
22783 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
22784 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
22785 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
22786 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22787 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22788 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22789 +                 from conftest.c:104:
22790 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
22791 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
22792 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
22793 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
22794 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
22795 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
22796 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
22797 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
22798 +                 from conftest.c:104:
22799 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
22800 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
22801 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
22802 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
22803 +                 from conftest.c:104:
22804 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
22805 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
22806 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
22807 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22808 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22809 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22810 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22811 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22812 +                 from conftest.c:104:
22813 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
22814 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
22815 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
22816 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
22817 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
22818 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
22819 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
22820 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
22821 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
22822 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
22823 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
22824 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
22825 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
22826 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
22827 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22828 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22829 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22830 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22831 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22832 +                 from conftest.c:104:
22833 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
22834 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
22835 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
22836 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22837 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22838 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22839 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22840 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22841 +                 from conftest.c:104:
22842 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
22843 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
22844 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
22845 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
22846 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
22847 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
22848 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
22849 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
22850 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
22851 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
22852 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
22853 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
22854 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
22855 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
22856 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
22857 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
22858 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
22859 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
22860 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
22861 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
22862 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
22863 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
22864 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
22865 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
22866 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22867 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22868 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22869 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22870 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22871 +                 from conftest.c:104:
22872 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
22873 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
22874 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
22875 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
22876 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
22877 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
22878 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
22879 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
22880 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
22881 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
22882 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
22883 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
22884 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
22885 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22886 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22887 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22888 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22889 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22890 +                 from conftest.c:104:
22891 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
22892 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
22893 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
22894 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
22895 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
22896 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22897 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22898 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22899 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22900 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22901 +                 from conftest.c:104:
22902 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
22903 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
22904 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
22905 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
22906 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
22907 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
22908 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
22909 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
22910 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22911 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22912 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22913 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22914 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22915 +                 from conftest.c:104:
22916 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
22917 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
22918 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
22919 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
22920 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
22921 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
22922 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
22923 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
22924 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
22925 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22926 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22927 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22928 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22929 +                 from conftest.c:104:
22930 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
22931 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
22932 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
22933 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
22934 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22935 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22936 +                 from conftest.c:104:
22937 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
22938 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
22939 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
22940 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
22941 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
22942 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
22943 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
22944 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
22945 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
22946 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
22947 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
22948 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22949 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22950 +                 from conftest.c:104:
22951 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
22952 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
22953 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
22954 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22955 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22956 +                 from conftest.c:104:
22957 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
22958 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
22959 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
22960 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
22961 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22962 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22963 +                 from conftest.c:104:
22964 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
22965 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
22966 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
22967 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
22968 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
22969 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
22970 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
22971 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
22972 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
22973 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
22974 +                 from conftest.c:104:
22975 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
22976 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
22977 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
22978 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
22979 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
22980 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
22981 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
22982 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
22983 +                 from conftest.c:104:
22984 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
22985 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
22986 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
22987 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
22988 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
22989 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
22990 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
22991 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
22992 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
22993 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
22994 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
22995 +                 from conftest.c:104:
22996 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
22997 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
22998 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
22999 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
23000 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
23001 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
23002 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
23003 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
23004 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
23005 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
23006 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
23007 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23008 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23009 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23010 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23011 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23012 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23013 +                 from conftest.c:104:
23014 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
23015 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
23016 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
23017 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
23018 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
23019 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
23020 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
23021 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23022 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23023 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23024 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23025 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23026 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23027 +                 from conftest.c:104:
23028 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
23029 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
23030 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23031 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23032 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23033 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23034 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23035 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23036 +                 from conftest.c:104:
23037 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
23038 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
23039 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
23040 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
23041 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23042 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23043 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23044 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23045 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23046 +                 from conftest.c:104:
23047 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
23048 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23049 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
23050 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
23051 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
23052 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23053 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
23054 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23055 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
23056 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
23057 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23058 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23059 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23060 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23061 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23062 +                 from conftest.c:104:
23063 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
23064 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
23065 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23066 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23067 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23068 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23069 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23070 +                 from conftest.c:104:
23071 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
23072 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
23073 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
23074 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
23075 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
23076 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
23077 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
23078 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
23079 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
23080 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
23081 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
23082 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
23083 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
23084 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23085 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23086 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23087 +                 from conftest.c:104:
23088 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
23089 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
23090 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
23091 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23092 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23093 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23094 +                 from conftest.c:104:
23095 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
23096 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
23097 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
23098 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
23099 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
23100 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
23101 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
23102 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
23103 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
23104 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
23105 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
23106 +                 from conftest.c:104:
23107 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
23108 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
23109 +In file included from conftest.c:104:
23110 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
23111 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
23112 +conftest.c: In function 'main':
23113 +conftest.c:108: error: 'struct sk_buff' has no member named 'security'
23114 +configure:14885: $? = 1
23115 +configure: failed program was:
23116 +| /* confdefs.h.  */
23117 +| #define PACKAGE_NAME "click"
23118 +| #define PACKAGE_TARNAME "click"
23119 +| #define PACKAGE_VERSION "1.6.0"
23120 +| #define PACKAGE_STRING "click 1.6.0"
23121 +| #define PACKAGE_BUGREPORT ""
23122 +| #define CLICK_VERSION "1.6.0"
23123 +| #define HAVE_NEW_HDR 1
23124 +| #define NUM_CLICK_CPUS 1
23125 +| #define HAVE_CLICKFS 1
23126 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
23127 +| #define FREEBSD_INCLUDEDIR "/usr/include"
23128 +| #define HAVE_STRERROR 1
23129 +| #define HAVE_SNPRINTF 1
23130 +| #define HAVE_STRTOUL 1
23131 +| #define HAVE_TCGETPGRP 1
23132 +| #define HAVE_VSNPRINTF 1
23133 +| #define STDC_HEADERS 1
23134 +| #define HAVE_SYS_TYPES_H 1
23135 +| #define HAVE_SYS_STAT_H 1
23136 +| #define HAVE_STDLIB_H 1
23137 +| #define HAVE_STRING_H 1
23138 +| #define HAVE_MEMORY_H 1
23139 +| #define HAVE_STRINGS_H 1
23140 +| #define HAVE_INTTYPES_H 1
23141 +| #define HAVE_STDINT_H 1
23142 +| #define HAVE_UNISTD_H 1
23143 +| #define SIZEOF_INT 4
23144 +| #define SIZEOF_LONG 4
23145 +| #define HAVE_INTTYPES_H 1
23146 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
23147 +| #define SIZEOF_LONG_LONG 8
23148 +| #define HAVE_LONG_LONG 1
23149 +| #define HAVE_INT64_TYPES 1
23150 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
23151 +| #define SIZEOF_STRUCT_TIMEVAL 8
23152 +| #define HAVE_STRUCT_TIMESPEC 1
23153 +| #define SIZEOF_STRUCT_TIMESPEC 8
23154 +| #define HAVE_ENDIAN_H 1
23155 +| #define CLICK_BYTE_ORDER 1234
23156 +| #define HAVE_BYTESWAP_H 1
23157 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
23158 +| #define HAVE_ADDRESSABLE_VA_LIST 1
23159 +| #define HAVE___BUILTIN_CLZ 1
23160 +| #define HAVE___BUILTIN_CLZL 1
23161 +| #define HAVE___BUILTIN_CLZLL 1
23162 +| #define HAVE___BUILTIN_FFS 1
23163 +| #define HAVE___BUILTIN_FFSL 1
23164 +| #define HAVE___BUILTIN_FFSLL 1
23165 +| #define HAVE_STRINGS_H 1
23166 +| #define HAVE_FFS 1
23167 +| #define HAVE_FFSL 1
23168 +| #define HAVE_FFSLL 1
23169 +| #define HAVE_UNISTD_H 1
23170 +| #define HAVE_TERMIO_H 1
23171 +| #define HAVE_NETDB_H 1
23172 +| #define HAVE_PWD_H 1
23173 +| #define HAVE_GRP_H 1
23174 +| #define HAVE_POLL_H 1
23175 +| #define HAVE_SIGACTION 1
23176 +| #define HAVE_DLFCN_H 1
23177 +| #define HAVE_DYNAMIC_LINKING 1
23178 +| #define HAVE_ACCEPT_SOCKLEN_T 1
23179 +| #define HAVE_LARGE_FILE_SUPPORT 1
23180 +| #define SIZEOF_OFF_T 8
23181 +| #define HAVE_SYS_MMAN_H 1
23182 +| #define HAVE_STDLIB_H 1
23183 +| #define HAVE_UNISTD_H 1
23184 +| #define HAVE_GETPAGESIZE 1
23185 +| #define HAVE_MMAP 1
23186 +| #define HAVE_MADVISE 1
23187 +| #define HAVE_DECL_MADVISE 1
23188 +| #define HAVE_LINUXMODULE_2_6 1
23189 +| #define HAVE_CLICK_KERNEL 1
23190 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
23191 +| #define HAVE_LINUX_POLLING 1
23192 +| #define __SMP__ 1
23193 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
23194 +| #define HAVE_STRIDE_SCHED 1
23195 +| #define HAVE_LINUX_IF_TUN_H 1
23196 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
23197 +| #define HAVE_PCAP 1
23198 +| #define HAVE_PCAP_SETNONBLOCK 1
23199 +| #define HAVE_USERLEVEL_DRIVER 1
23200 +| #define HAVE_EXPAT 1
23201 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
23202 +| /* end confdefs.h.  */
23203 +| #if HAVE_LINUXMODULE_2_6
23204 +| # define KBUILD_STR(s)               #s
23205 +| # define KBUILD_BASENAME     KBUILD_STR(click)
23206 +| # define KBUILD_MODNAME              KBUILD_STR(click)
23207 +| #endif
23208 +| #define new xxx_new
23209 +| #define this xxx_this
23210 +| #define delete xxx_delete
23211 +| #define class xxx_class
23212 +| #define virtual xxx_virtual
23213 +| #define typename xxx_typename
23214 +| #define private xxx_private
23215 +| #define protected xxx_protected
23216 +| #define public xxx_public
23217 +| #define namespace xxx_namespace
23218 +| #include <linux/autoconf.h>
23219 +| #include <linux/skbuff.h>
23220 +| int
23221 +| main ()
23222 +| {
23223 +| extern struct sk_buff *s; s->security = 0;
23224 +|   ;
23225 +|   return 0;
23226 +| }
23227 +configure:14900: result: no
23228 +configure:14910: checking whether struct sk_buff has an fclone member
23229 +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
23230 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
23231 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
23232 +                 from conftest.c:104:
23233 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
23234 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
23235 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
23236 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23237 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23238 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23239 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23240 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23241 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23242 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23243 +                 from conftest.c:104:
23244 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
23245 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
23246 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
23247 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
23248 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
23249 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
23250 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
23251 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
23252 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23253 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23254 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23255 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23256 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23257 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23258 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23259 +                 from conftest.c:104:
23260 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
23261 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
23262 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
23263 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
23264 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
23265 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
23266 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
23267 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
23268 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
23269 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
23270 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
23271 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23272 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23273 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23274 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23275 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23276 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23277 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23278 +                 from conftest.c:104:
23279 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
23280 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
23281 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
23282 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
23283 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
23284 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
23285 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
23286 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
23287 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
23288 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
23289 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
23290 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
23291 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
23292 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
23293 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23294 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23295 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23296 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23297 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23298 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23299 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23300 +                 from conftest.c:104:
23301 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
23302 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
23303 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
23304 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
23305 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
23306 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
23307 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
23308 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23309 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23310 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23311 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23312 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23313 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23314 +                 from conftest.c:104:
23315 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
23316 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
23317 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
23318 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
23319 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
23320 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23321 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23322 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23323 +                 from conftest.c:104:
23324 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
23325 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
23326 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
23327 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
23328 +                 from conftest.c:104:
23329 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
23330 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
23331 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
23332 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23333 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23334 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23335 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23336 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23337 +                 from conftest.c:104:
23338 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
23339 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
23340 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
23341 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
23342 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
23343 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
23344 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
23345 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
23346 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
23347 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
23348 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
23349 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
23350 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
23351 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
23352 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23353 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23354 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23355 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23356 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23357 +                 from conftest.c:104:
23358 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
23359 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
23360 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
23361 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23362 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23363 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23364 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23365 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23366 +                 from conftest.c:104:
23367 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
23368 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
23369 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
23370 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
23371 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
23372 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
23373 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
23374 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
23375 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
23376 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
23377 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
23378 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
23379 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
23380 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
23381 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
23382 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
23383 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
23384 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
23385 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
23386 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
23387 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
23388 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
23389 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
23390 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
23391 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23392 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23393 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23394 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23395 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23396 +                 from conftest.c:104:
23397 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
23398 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
23399 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
23400 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
23401 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
23402 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
23403 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
23404 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
23405 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
23406 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
23407 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
23408 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
23409 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23410 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23411 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23412 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23413 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23414 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23415 +                 from conftest.c:104:
23416 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
23417 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
23418 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
23419 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
23420 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23421 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23422 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23423 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23424 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23425 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23426 +                 from conftest.c:104:
23427 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
23428 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
23429 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
23430 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
23431 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
23432 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
23433 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
23434 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23435 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23436 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23437 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23438 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23439 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23440 +                 from conftest.c:104:
23441 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
23442 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
23443 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
23444 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
23445 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
23446 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
23447 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
23448 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
23449 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23450 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23451 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23452 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23453 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23454 +                 from conftest.c:104:
23455 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
23456 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
23457 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23458 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23459 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23460 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23461 +                 from conftest.c:104:
23462 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
23463 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
23464 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
23465 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
23466 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
23467 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
23468 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
23469 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
23470 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
23471 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
23472 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
23473 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23474 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23475 +                 from conftest.c:104:
23476 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
23477 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
23478 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
23479 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23480 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23481 +                 from conftest.c:104:
23482 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
23483 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
23484 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
23485 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
23486 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23487 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23488 +                 from conftest.c:104:
23489 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
23490 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
23491 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
23492 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
23493 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
23494 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
23495 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
23496 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
23497 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23498 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23499 +                 from conftest.c:104:
23500 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
23501 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
23502 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
23503 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
23504 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
23505 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
23506 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
23507 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23508 +                 from conftest.c:104:
23509 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
23510 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
23511 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
23512 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
23513 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
23514 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
23515 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23516 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23517 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23518 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23519 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23520 +                 from conftest.c:104:
23521 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
23522 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
23523 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
23524 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
23525 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
23526 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
23527 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
23528 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
23529 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
23530 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
23531 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
23532 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23533 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23534 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23535 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23536 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23537 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23538 +                 from conftest.c:104:
23539 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
23540 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
23541 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
23542 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
23543 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
23544 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
23545 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
23546 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23547 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23548 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23549 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23550 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23551 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23552 +                 from conftest.c:104:
23553 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
23554 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
23555 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
23556 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23557 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23558 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23559 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23560 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23561 +                 from conftest.c:104:
23562 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
23563 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
23564 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
23565 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
23566 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23567 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23568 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23569 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23570 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23571 +                 from conftest.c:104:
23572 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
23573 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23574 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
23575 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
23576 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
23577 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23578 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
23579 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
23580 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
23581 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
23582 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23583 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23584 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23585 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23586 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23587 +                 from conftest.c:104:
23588 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
23589 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
23590 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
23591 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
23592 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23593 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23594 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23595 +                 from conftest.c:104:
23596 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
23597 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
23598 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
23599 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
23600 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
23601 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
23602 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
23603 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
23604 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
23605 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
23606 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
23607 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
23608 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
23609 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23610 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23611 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23612 +                 from conftest.c:104:
23613 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
23614 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
23615 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
23616 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
23617 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
23618 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
23619 +                 from conftest.c:104:
23620 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
23621 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
23622 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
23623 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
23624 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
23625 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
23626 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
23627 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
23628 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
23629 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
23630 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
23631 +                 from conftest.c:104:
23632 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
23633 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
23634 +In file included from conftest.c:104:
23635 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
23636 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
23637 +configure:14964: $? = 1
23638 +configure: failed program was:
23639 +| /* confdefs.h.  */
23640 +| #define PACKAGE_NAME "click"
23641 +| #define PACKAGE_TARNAME "click"
23642 +| #define PACKAGE_VERSION "1.6.0"
23643 +| #define PACKAGE_STRING "click 1.6.0"
23644 +| #define PACKAGE_BUGREPORT ""
23645 +| #define CLICK_VERSION "1.6.0"
23646 +| #define HAVE_NEW_HDR 1
23647 +| #define NUM_CLICK_CPUS 1
23648 +| #define HAVE_CLICKFS 1
23649 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
23650 +| #define FREEBSD_INCLUDEDIR "/usr/include"
23651 +| #define HAVE_STRERROR 1
23652 +| #define HAVE_SNPRINTF 1
23653 +| #define HAVE_STRTOUL 1
23654 +| #define HAVE_TCGETPGRP 1
23655 +| #define HAVE_VSNPRINTF 1
23656 +| #define STDC_HEADERS 1
23657 +| #define HAVE_SYS_TYPES_H 1
23658 +| #define HAVE_SYS_STAT_H 1
23659 +| #define HAVE_STDLIB_H 1
23660 +| #define HAVE_STRING_H 1
23661 +| #define HAVE_MEMORY_H 1
23662 +| #define HAVE_STRINGS_H 1
23663 +| #define HAVE_INTTYPES_H 1
23664 +| #define HAVE_STDINT_H 1
23665 +| #define HAVE_UNISTD_H 1
23666 +| #define SIZEOF_INT 4
23667 +| #define SIZEOF_LONG 4
23668 +| #define HAVE_INTTYPES_H 1
23669 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
23670 +| #define SIZEOF_LONG_LONG 8
23671 +| #define HAVE_LONG_LONG 1
23672 +| #define HAVE_INT64_TYPES 1
23673 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
23674 +| #define SIZEOF_STRUCT_TIMEVAL 8
23675 +| #define HAVE_STRUCT_TIMESPEC 1
23676 +| #define SIZEOF_STRUCT_TIMESPEC 8
23677 +| #define HAVE_ENDIAN_H 1
23678 +| #define CLICK_BYTE_ORDER 1234
23679 +| #define HAVE_BYTESWAP_H 1
23680 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
23681 +| #define HAVE_ADDRESSABLE_VA_LIST 1
23682 +| #define HAVE___BUILTIN_CLZ 1
23683 +| #define HAVE___BUILTIN_CLZL 1
23684 +| #define HAVE___BUILTIN_CLZLL 1
23685 +| #define HAVE___BUILTIN_FFS 1
23686 +| #define HAVE___BUILTIN_FFSL 1
23687 +| #define HAVE___BUILTIN_FFSLL 1
23688 +| #define HAVE_STRINGS_H 1
23689 +| #define HAVE_FFS 1
23690 +| #define HAVE_FFSL 1
23691 +| #define HAVE_FFSLL 1
23692 +| #define HAVE_UNISTD_H 1
23693 +| #define HAVE_TERMIO_H 1
23694 +| #define HAVE_NETDB_H 1
23695 +| #define HAVE_PWD_H 1
23696 +| #define HAVE_GRP_H 1
23697 +| #define HAVE_POLL_H 1
23698 +| #define HAVE_SIGACTION 1
23699 +| #define HAVE_DLFCN_H 1
23700 +| #define HAVE_DYNAMIC_LINKING 1
23701 +| #define HAVE_ACCEPT_SOCKLEN_T 1
23702 +| #define HAVE_LARGE_FILE_SUPPORT 1
23703 +| #define SIZEOF_OFF_T 8
23704 +| #define HAVE_SYS_MMAN_H 1
23705 +| #define HAVE_STDLIB_H 1
23706 +| #define HAVE_UNISTD_H 1
23707 +| #define HAVE_GETPAGESIZE 1
23708 +| #define HAVE_MMAP 1
23709 +| #define HAVE_MADVISE 1
23710 +| #define HAVE_DECL_MADVISE 1
23711 +| #define HAVE_LINUXMODULE_2_6 1
23712 +| #define HAVE_CLICK_KERNEL 1
23713 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
23714 +| #define HAVE_LINUX_POLLING 1
23715 +| #define __SMP__ 1
23716 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
23717 +| #define HAVE_STRIDE_SCHED 1
23718 +| #define HAVE_LINUX_IF_TUN_H 1
23719 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
23720 +| #define HAVE_PCAP 1
23721 +| #define HAVE_PCAP_SETNONBLOCK 1
23722 +| #define HAVE_USERLEVEL_DRIVER 1
23723 +| #define HAVE_EXPAT 1
23724 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
23725 +| /* end confdefs.h.  */
23726 +| #if HAVE_LINUXMODULE_2_6
23727 +| # define KBUILD_STR(s)               #s
23728 +| # define KBUILD_BASENAME     KBUILD_STR(click)
23729 +| # define KBUILD_MODNAME              KBUILD_STR(click)
23730 +| #endif
23731 +| #define new xxx_new
23732 +| #define this xxx_this
23733 +| #define delete xxx_delete
23734 +| #define class xxx_class
23735 +| #define virtual xxx_virtual
23736 +| #define typename xxx_typename
23737 +| #define private xxx_private
23738 +| #define protected xxx_protected
23739 +| #define public xxx_public
23740 +| #define namespace xxx_namespace
23741 +| #include <linux/autoconf.h>
23742 +| #include <linux/skbuff.h>
23743 +| int
23744 +| main ()
23745 +| {
23746 +| extern struct sk_buff *s; s->fclone = 0;
23747 +|   ;
23748 +|   return 0;
23749 +| }
23750 +configure:14979: result: no
23751 +configure:14989: checking whether skb_shinfo has a tso_size member
23752 +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
23753 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
23754 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
23755 +                 from conftest.c:104:
23756 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
23757 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
23758 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
23759 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23760 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23761 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23762 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23763 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23764 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23765 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23766 +                 from conftest.c:104:
23767 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
23768 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
23769 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
23770 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
23771 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
23772 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
23773 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
23774 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
23775 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23776 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23777 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23778 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23779 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23780 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23781 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23782 +                 from conftest.c:104:
23783 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
23784 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
23785 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
23786 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
23787 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
23788 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
23789 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
23790 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
23791 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
23792 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
23793 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
23794 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23795 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23796 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23797 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23798 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23799 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23800 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23801 +                 from conftest.c:104:
23802 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
23803 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
23804 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
23805 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
23806 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
23807 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
23808 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
23809 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
23810 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
23811 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
23812 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
23813 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
23814 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
23815 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
23816 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
23817 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23818 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23819 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23820 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23821 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23822 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23823 +                 from conftest.c:104:
23824 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
23825 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
23826 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
23827 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
23828 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
23829 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
23830 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
23831 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
23832 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
23833 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
23834 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23835 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23836 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23837 +                 from conftest.c:104:
23838 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
23839 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
23840 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
23841 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
23842 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
23843 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
23844 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
23845 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
23846 +                 from conftest.c:104:
23847 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
23848 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
23849 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
23850 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
23851 +                 from conftest.c:104:
23852 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
23853 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
23854 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
23855 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23856 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23857 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23858 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23859 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23860 +                 from conftest.c:104:
23861 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
23862 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
23863 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
23864 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
23865 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
23866 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
23867 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
23868 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
23869 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
23870 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
23871 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
23872 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
23873 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
23874 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
23875 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23876 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23877 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23878 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23879 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23880 +                 from conftest.c:104:
23881 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
23882 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
23883 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
23884 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23885 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23886 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23887 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23888 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23889 +                 from conftest.c:104:
23890 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
23891 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
23892 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
23893 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
23894 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
23895 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
23896 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
23897 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
23898 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
23899 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
23900 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
23901 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
23902 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
23903 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
23904 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
23905 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
23906 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
23907 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
23908 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
23909 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
23910 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
23911 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
23912 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
23913 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
23914 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23915 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23916 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23917 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23918 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23919 +                 from conftest.c:104:
23920 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
23921 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
23922 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
23923 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
23924 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
23925 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
23926 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
23927 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
23928 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
23929 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
23930 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
23931 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
23932 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23933 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23934 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23935 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23936 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23937 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23938 +                 from conftest.c:104:
23939 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
23940 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
23941 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
23942 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
23943 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23944 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23945 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23946 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23947 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23948 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23949 +                 from conftest.c:104:
23950 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
23951 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
23952 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
23953 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
23954 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
23955 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
23956 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
23957 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
23958 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23959 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23960 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23961 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23962 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23963 +                 from conftest.c:104:
23964 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
23965 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
23966 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
23967 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
23968 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
23969 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
23970 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
23971 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
23972 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
23973 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23974 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23975 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23976 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23977 +                 from conftest.c:104:
23978 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
23979 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
23980 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
23981 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
23982 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23983 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23984 +                 from conftest.c:104:
23985 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
23986 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
23987 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
23988 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
23989 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
23990 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
23991 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
23992 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
23993 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
23994 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
23995 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
23996 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
23997 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
23998 +                 from conftest.c:104:
23999 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
24000 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
24001 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
24002 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24003 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24004 +                 from conftest.c:104:
24005 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
24006 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
24007 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
24008 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
24009 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24010 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24011 +                 from conftest.c:104:
24012 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
24013 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
24014 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
24015 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
24016 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
24017 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
24018 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
24019 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
24020 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24021 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24022 +                 from conftest.c:104:
24023 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
24024 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
24025 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
24026 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
24027 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
24028 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
24029 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
24030 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24031 +                 from conftest.c:104:
24032 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
24033 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
24034 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
24035 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
24036 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
24037 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
24038 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24039 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24040 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24041 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24042 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24043 +                 from conftest.c:104:
24044 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
24045 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
24046 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
24047 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
24048 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
24049 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
24050 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
24051 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
24052 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
24053 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
24054 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
24055 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24056 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24057 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24058 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24059 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24060 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24061 +                 from conftest.c:104:
24062 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
24063 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
24064 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
24065 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
24066 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
24067 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
24068 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
24069 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24070 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24071 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24072 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24073 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24074 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24075 +                 from conftest.c:104:
24076 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
24077 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
24078 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24079 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24080 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24081 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24082 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24083 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24084 +                 from conftest.c:104:
24085 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
24086 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
24087 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
24088 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
24089 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24090 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24091 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24092 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24093 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24094 +                 from conftest.c:104:
24095 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
24096 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24097 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
24098 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
24099 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
24100 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24101 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
24102 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24103 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
24104 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
24105 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24106 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24107 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24108 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24109 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24110 +                 from conftest.c:104:
24111 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
24112 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
24113 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24114 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24115 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24116 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24117 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24118 +                 from conftest.c:104:
24119 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
24120 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
24121 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
24122 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
24123 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
24124 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
24125 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
24126 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
24127 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
24128 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
24129 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
24130 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
24131 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
24132 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24133 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24134 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24135 +                 from conftest.c:104:
24136 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
24137 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
24138 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
24139 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24140 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24141 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24142 +                 from conftest.c:104:
24143 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
24144 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
24145 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
24146 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
24147 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
24148 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
24149 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
24150 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
24151 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
24152 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
24153 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
24154 +                 from conftest.c:104:
24155 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
24156 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
24157 +In file included from conftest.c:104:
24158 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
24159 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
24160 +conftest.c: In function 'main':
24161 +conftest.c:108: error: 'struct skb_shared_info' has no member named 'tso_size'
24162 +configure:15043: $? = 1
24163 +configure: failed program was:
24164 +| /* confdefs.h.  */
24165 +| #define PACKAGE_NAME "click"
24166 +| #define PACKAGE_TARNAME "click"
24167 +| #define PACKAGE_VERSION "1.6.0"
24168 +| #define PACKAGE_STRING "click 1.6.0"
24169 +| #define PACKAGE_BUGREPORT ""
24170 +| #define CLICK_VERSION "1.6.0"
24171 +| #define HAVE_NEW_HDR 1
24172 +| #define NUM_CLICK_CPUS 1
24173 +| #define HAVE_CLICKFS 1
24174 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
24175 +| #define FREEBSD_INCLUDEDIR "/usr/include"
24176 +| #define HAVE_STRERROR 1
24177 +| #define HAVE_SNPRINTF 1
24178 +| #define HAVE_STRTOUL 1
24179 +| #define HAVE_TCGETPGRP 1
24180 +| #define HAVE_VSNPRINTF 1
24181 +| #define STDC_HEADERS 1
24182 +| #define HAVE_SYS_TYPES_H 1
24183 +| #define HAVE_SYS_STAT_H 1
24184 +| #define HAVE_STDLIB_H 1
24185 +| #define HAVE_STRING_H 1
24186 +| #define HAVE_MEMORY_H 1
24187 +| #define HAVE_STRINGS_H 1
24188 +| #define HAVE_INTTYPES_H 1
24189 +| #define HAVE_STDINT_H 1
24190 +| #define HAVE_UNISTD_H 1
24191 +| #define SIZEOF_INT 4
24192 +| #define SIZEOF_LONG 4
24193 +| #define HAVE_INTTYPES_H 1
24194 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
24195 +| #define SIZEOF_LONG_LONG 8
24196 +| #define HAVE_LONG_LONG 1
24197 +| #define HAVE_INT64_TYPES 1
24198 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
24199 +| #define SIZEOF_STRUCT_TIMEVAL 8
24200 +| #define HAVE_STRUCT_TIMESPEC 1
24201 +| #define SIZEOF_STRUCT_TIMESPEC 8
24202 +| #define HAVE_ENDIAN_H 1
24203 +| #define CLICK_BYTE_ORDER 1234
24204 +| #define HAVE_BYTESWAP_H 1
24205 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
24206 +| #define HAVE_ADDRESSABLE_VA_LIST 1
24207 +| #define HAVE___BUILTIN_CLZ 1
24208 +| #define HAVE___BUILTIN_CLZL 1
24209 +| #define HAVE___BUILTIN_CLZLL 1
24210 +| #define HAVE___BUILTIN_FFS 1
24211 +| #define HAVE___BUILTIN_FFSL 1
24212 +| #define HAVE___BUILTIN_FFSLL 1
24213 +| #define HAVE_STRINGS_H 1
24214 +| #define HAVE_FFS 1
24215 +| #define HAVE_FFSL 1
24216 +| #define HAVE_FFSLL 1
24217 +| #define HAVE_UNISTD_H 1
24218 +| #define HAVE_TERMIO_H 1
24219 +| #define HAVE_NETDB_H 1
24220 +| #define HAVE_PWD_H 1
24221 +| #define HAVE_GRP_H 1
24222 +| #define HAVE_POLL_H 1
24223 +| #define HAVE_SIGACTION 1
24224 +| #define HAVE_DLFCN_H 1
24225 +| #define HAVE_DYNAMIC_LINKING 1
24226 +| #define HAVE_ACCEPT_SOCKLEN_T 1
24227 +| #define HAVE_LARGE_FILE_SUPPORT 1
24228 +| #define SIZEOF_OFF_T 8
24229 +| #define HAVE_SYS_MMAN_H 1
24230 +| #define HAVE_STDLIB_H 1
24231 +| #define HAVE_UNISTD_H 1
24232 +| #define HAVE_GETPAGESIZE 1
24233 +| #define HAVE_MMAP 1
24234 +| #define HAVE_MADVISE 1
24235 +| #define HAVE_DECL_MADVISE 1
24236 +| #define HAVE_LINUXMODULE_2_6 1
24237 +| #define HAVE_CLICK_KERNEL 1
24238 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
24239 +| #define HAVE_LINUX_POLLING 1
24240 +| #define __SMP__ 1
24241 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
24242 +| #define HAVE_STRIDE_SCHED 1
24243 +| #define HAVE_LINUX_IF_TUN_H 1
24244 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
24245 +| #define HAVE_PCAP 1
24246 +| #define HAVE_PCAP_SETNONBLOCK 1
24247 +| #define HAVE_USERLEVEL_DRIVER 1
24248 +| #define HAVE_EXPAT 1
24249 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
24250 +| /* end confdefs.h.  */
24251 +| #if HAVE_LINUXMODULE_2_6
24252 +| # define KBUILD_STR(s)               #s
24253 +| # define KBUILD_BASENAME     KBUILD_STR(click)
24254 +| # define KBUILD_MODNAME              KBUILD_STR(click)
24255 +| #endif
24256 +| #define new xxx_new
24257 +| #define this xxx_this
24258 +| #define delete xxx_delete
24259 +| #define class xxx_class
24260 +| #define virtual xxx_virtual
24261 +| #define typename xxx_typename
24262 +| #define private xxx_private
24263 +| #define protected xxx_protected
24264 +| #define public xxx_public
24265 +| #define namespace xxx_namespace
24266 +| #include <linux/autoconf.h>
24267 +| #include <linux/skbuff.h>
24268 +| int
24269 +| main ()
24270 +| {
24271 +| extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0;
24272 +|   ;
24273 +|   return 0;
24274 +| }
24275 +configure:15058: result: no
24276 +configure:15068: checking whether skb_shinfo has a gso_size member
24277 +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
24278 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
24279 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
24280 +                 from conftest.c:104:
24281 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
24282 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
24283 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
24284 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24285 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24286 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24287 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24288 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24289 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24290 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24291 +                 from conftest.c:104:
24292 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
24293 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
24294 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
24295 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
24296 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
24297 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
24298 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
24299 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
24300 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24301 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24302 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24303 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24304 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24305 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24306 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24307 +                 from conftest.c:104:
24308 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
24309 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
24310 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
24311 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
24312 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
24313 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
24314 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
24315 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
24316 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
24317 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
24318 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
24319 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24320 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24321 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24322 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24323 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24324 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24325 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24326 +                 from conftest.c:104:
24327 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
24328 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
24329 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
24330 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
24331 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
24332 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
24333 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
24334 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
24335 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
24336 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
24337 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
24338 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
24339 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
24340 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
24341 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24342 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24343 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24344 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24345 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24346 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24347 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24348 +                 from conftest.c:104:
24349 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
24350 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
24351 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
24352 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
24353 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
24354 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
24355 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
24356 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24357 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24358 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24359 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24360 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24361 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24362 +                 from conftest.c:104:
24363 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
24364 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
24365 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
24366 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
24367 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
24368 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24369 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24370 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24371 +                 from conftest.c:104:
24372 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
24373 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
24374 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
24375 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
24376 +                 from conftest.c:104:
24377 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
24378 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
24379 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
24380 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24381 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24382 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24383 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24384 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24385 +                 from conftest.c:104:
24386 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
24387 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
24388 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
24389 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
24390 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
24391 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
24392 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
24393 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
24394 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
24395 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
24396 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
24397 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
24398 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
24399 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
24400 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24401 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24402 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24403 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24404 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24405 +                 from conftest.c:104:
24406 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
24407 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
24408 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
24409 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24410 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24411 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24412 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24413 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24414 +                 from conftest.c:104:
24415 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
24416 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
24417 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
24418 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
24419 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
24420 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
24421 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
24422 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
24423 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
24424 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
24425 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
24426 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
24427 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
24428 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
24429 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
24430 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
24431 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
24432 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
24433 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
24434 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
24435 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
24436 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
24437 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
24438 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
24439 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24440 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24441 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24442 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24443 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24444 +                 from conftest.c:104:
24445 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
24446 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
24447 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
24448 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
24449 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
24450 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
24451 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
24452 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
24453 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
24454 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
24455 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
24456 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
24457 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
24458 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24459 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24460 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24461 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24462 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24463 +                 from conftest.c:104:
24464 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
24465 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
24466 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
24467 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
24468 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
24469 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24470 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24471 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24472 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24473 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24474 +                 from conftest.c:104:
24475 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
24476 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
24477 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
24478 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
24479 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
24480 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
24481 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
24482 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
24483 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24484 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24485 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24486 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24487 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24488 +                 from conftest.c:104:
24489 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
24490 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
24491 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
24492 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
24493 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
24494 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
24495 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
24496 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
24497 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24498 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24499 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24500 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24501 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24502 +                 from conftest.c:104:
24503 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
24504 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
24505 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24506 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24507 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24508 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24509 +                 from conftest.c:104:
24510 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
24511 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
24512 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
24513 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
24514 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
24515 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
24516 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
24517 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
24518 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
24519 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
24520 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
24521 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24522 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24523 +                 from conftest.c:104:
24524 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
24525 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
24526 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
24527 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24528 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24529 +                 from conftest.c:104:
24530 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
24531 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
24532 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
24533 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
24534 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24535 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24536 +                 from conftest.c:104:
24537 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
24538 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
24539 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
24540 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
24541 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
24542 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
24543 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
24544 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
24545 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24546 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24547 +                 from conftest.c:104:
24548 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
24549 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
24550 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
24551 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
24552 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
24553 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
24554 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
24555 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24556 +                 from conftest.c:104:
24557 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
24558 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
24559 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
24560 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
24561 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
24562 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
24563 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24564 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24565 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24566 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24567 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24568 +                 from conftest.c:104:
24569 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
24570 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
24571 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
24572 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
24573 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
24574 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
24575 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
24576 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
24577 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
24578 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
24579 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
24580 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24581 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24582 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24583 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24584 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24585 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24586 +                 from conftest.c:104:
24587 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
24588 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
24589 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
24590 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
24591 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
24592 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
24593 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
24594 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24595 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24596 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24597 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24598 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24599 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24600 +                 from conftest.c:104:
24601 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
24602 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
24603 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
24604 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24605 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24606 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24607 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24608 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24609 +                 from conftest.c:104:
24610 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
24611 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
24612 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
24613 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
24614 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24615 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24616 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24617 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24618 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24619 +                 from conftest.c:104:
24620 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
24621 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24622 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
24623 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
24624 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
24625 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24626 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
24627 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
24628 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
24629 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
24630 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24631 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24632 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24633 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24634 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24635 +                 from conftest.c:104:
24636 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
24637 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
24638 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
24639 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
24640 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24641 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24642 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24643 +                 from conftest.c:104:
24644 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
24645 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
24646 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
24647 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
24648 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
24649 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
24650 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
24651 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
24652 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
24653 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
24654 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
24655 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
24656 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
24657 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24658 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24659 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24660 +                 from conftest.c:104:
24661 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
24662 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
24663 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
24664 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
24665 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
24666 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
24667 +                 from conftest.c:104:
24668 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
24669 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
24670 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
24671 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
24672 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
24673 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
24674 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
24675 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
24676 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
24677 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
24678 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
24679 +                 from conftest.c:104:
24680 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
24681 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
24682 +In file included from conftest.c:104:
24683 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
24684 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
24685 +configure:15122: $? = 1
24686 +configure: failed program was:
24687 +| /* confdefs.h.  */
24688 +| #define PACKAGE_NAME "click"
24689 +| #define PACKAGE_TARNAME "click"
24690 +| #define PACKAGE_VERSION "1.6.0"
24691 +| #define PACKAGE_STRING "click 1.6.0"
24692 +| #define PACKAGE_BUGREPORT ""
24693 +| #define CLICK_VERSION "1.6.0"
24694 +| #define HAVE_NEW_HDR 1
24695 +| #define NUM_CLICK_CPUS 1
24696 +| #define HAVE_CLICKFS 1
24697 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
24698 +| #define FREEBSD_INCLUDEDIR "/usr/include"
24699 +| #define HAVE_STRERROR 1
24700 +| #define HAVE_SNPRINTF 1
24701 +| #define HAVE_STRTOUL 1
24702 +| #define HAVE_TCGETPGRP 1
24703 +| #define HAVE_VSNPRINTF 1
24704 +| #define STDC_HEADERS 1
24705 +| #define HAVE_SYS_TYPES_H 1
24706 +| #define HAVE_SYS_STAT_H 1
24707 +| #define HAVE_STDLIB_H 1
24708 +| #define HAVE_STRING_H 1
24709 +| #define HAVE_MEMORY_H 1
24710 +| #define HAVE_STRINGS_H 1
24711 +| #define HAVE_INTTYPES_H 1
24712 +| #define HAVE_STDINT_H 1
24713 +| #define HAVE_UNISTD_H 1
24714 +| #define SIZEOF_INT 4
24715 +| #define SIZEOF_LONG 4
24716 +| #define HAVE_INTTYPES_H 1
24717 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
24718 +| #define SIZEOF_LONG_LONG 8
24719 +| #define HAVE_LONG_LONG 1
24720 +| #define HAVE_INT64_TYPES 1
24721 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
24722 +| #define SIZEOF_STRUCT_TIMEVAL 8
24723 +| #define HAVE_STRUCT_TIMESPEC 1
24724 +| #define SIZEOF_STRUCT_TIMESPEC 8
24725 +| #define HAVE_ENDIAN_H 1
24726 +| #define CLICK_BYTE_ORDER 1234
24727 +| #define HAVE_BYTESWAP_H 1
24728 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
24729 +| #define HAVE_ADDRESSABLE_VA_LIST 1
24730 +| #define HAVE___BUILTIN_CLZ 1
24731 +| #define HAVE___BUILTIN_CLZL 1
24732 +| #define HAVE___BUILTIN_CLZLL 1
24733 +| #define HAVE___BUILTIN_FFS 1
24734 +| #define HAVE___BUILTIN_FFSL 1
24735 +| #define HAVE___BUILTIN_FFSLL 1
24736 +| #define HAVE_STRINGS_H 1
24737 +| #define HAVE_FFS 1
24738 +| #define HAVE_FFSL 1
24739 +| #define HAVE_FFSLL 1
24740 +| #define HAVE_UNISTD_H 1
24741 +| #define HAVE_TERMIO_H 1
24742 +| #define HAVE_NETDB_H 1
24743 +| #define HAVE_PWD_H 1
24744 +| #define HAVE_GRP_H 1
24745 +| #define HAVE_POLL_H 1
24746 +| #define HAVE_SIGACTION 1
24747 +| #define HAVE_DLFCN_H 1
24748 +| #define HAVE_DYNAMIC_LINKING 1
24749 +| #define HAVE_ACCEPT_SOCKLEN_T 1
24750 +| #define HAVE_LARGE_FILE_SUPPORT 1
24751 +| #define SIZEOF_OFF_T 8
24752 +| #define HAVE_SYS_MMAN_H 1
24753 +| #define HAVE_STDLIB_H 1
24754 +| #define HAVE_UNISTD_H 1
24755 +| #define HAVE_GETPAGESIZE 1
24756 +| #define HAVE_MMAP 1
24757 +| #define HAVE_MADVISE 1
24758 +| #define HAVE_DECL_MADVISE 1
24759 +| #define HAVE_LINUXMODULE_2_6 1
24760 +| #define HAVE_CLICK_KERNEL 1
24761 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
24762 +| #define HAVE_LINUX_POLLING 1
24763 +| #define __SMP__ 1
24764 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
24765 +| #define HAVE_STRIDE_SCHED 1
24766 +| #define HAVE_LINUX_IF_TUN_H 1
24767 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
24768 +| #define HAVE_PCAP 1
24769 +| #define HAVE_PCAP_SETNONBLOCK 1
24770 +| #define HAVE_USERLEVEL_DRIVER 1
24771 +| #define HAVE_EXPAT 1
24772 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
24773 +| /* end confdefs.h.  */
24774 +| #if HAVE_LINUXMODULE_2_6
24775 +| # define KBUILD_STR(s)               #s
24776 +| # define KBUILD_BASENAME     KBUILD_STR(click)
24777 +| # define KBUILD_MODNAME              KBUILD_STR(click)
24778 +| #endif
24779 +| #define new xxx_new
24780 +| #define this xxx_this
24781 +| #define delete xxx_delete
24782 +| #define class xxx_class
24783 +| #define virtual xxx_virtual
24784 +| #define typename xxx_typename
24785 +| #define private xxx_private
24786 +| #define protected xxx_protected
24787 +| #define public xxx_public
24788 +| #define namespace xxx_namespace
24789 +| #include <linux/autoconf.h>
24790 +| #include <linux/skbuff.h>
24791 +| int
24792 +| main ()
24793 +| {
24794 +| extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0;
24795 +|   ;
24796 +|   return 0;
24797 +| }
24798 +configure:15137: result: no
24799 +configure:15147: checking whether skb_shinfo has a ufo_size member
24800 +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
24801 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
24802 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
24803 +                 from conftest.c:104:
24804 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
24805 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
24806 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
24807 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24808 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24809 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24810 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24811 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24812 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24813 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24814 +                 from conftest.c:104:
24815 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
24816 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
24817 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
24818 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
24819 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
24820 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
24821 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
24822 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
24823 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24824 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24825 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24826 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24827 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24828 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24829 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24830 +                 from conftest.c:104:
24831 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
24832 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
24833 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
24834 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
24835 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
24836 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
24837 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
24838 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
24839 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
24840 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
24841 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
24842 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24843 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24844 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24845 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24846 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24847 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24848 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24849 +                 from conftest.c:104:
24850 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
24851 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
24852 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
24853 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
24854 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
24855 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
24856 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
24857 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
24858 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
24859 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
24860 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
24861 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
24862 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
24863 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
24864 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
24865 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24866 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24867 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24868 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24869 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24870 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24871 +                 from conftest.c:104:
24872 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
24873 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
24874 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
24875 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
24876 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
24877 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
24878 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
24879 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
24880 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
24881 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
24882 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24883 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24884 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24885 +                 from conftest.c:104:
24886 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
24887 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
24888 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
24889 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
24890 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
24891 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
24892 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
24893 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
24894 +                 from conftest.c:104:
24895 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
24896 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
24897 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
24898 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
24899 +                 from conftest.c:104:
24900 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
24901 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
24902 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
24903 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24904 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24905 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24906 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24907 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24908 +                 from conftest.c:104:
24909 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
24910 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
24911 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
24912 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
24913 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
24914 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
24915 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
24916 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
24917 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
24918 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
24919 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
24920 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
24921 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
24922 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
24923 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24924 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24925 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24926 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24927 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24928 +                 from conftest.c:104:
24929 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
24930 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
24931 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
24932 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24933 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24934 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24935 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24936 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24937 +                 from conftest.c:104:
24938 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
24939 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
24940 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
24941 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
24942 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
24943 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
24944 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
24945 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
24946 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
24947 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
24948 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
24949 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
24950 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
24951 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
24952 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
24953 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
24954 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
24955 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
24956 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
24957 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
24958 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
24959 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
24960 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
24961 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
24962 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24963 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24964 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24965 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24966 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24967 +                 from conftest.c:104:
24968 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
24969 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
24970 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
24971 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
24972 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
24973 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
24974 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
24975 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
24976 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
24977 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
24978 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
24979 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
24980 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
24981 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24982 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24983 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24984 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24985 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24986 +                 from conftest.c:104:
24987 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
24988 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
24989 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
24990 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
24991 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
24992 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
24993 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
24994 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
24995 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
24996 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
24997 +                 from conftest.c:104:
24998 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
24999 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
25000 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
25001 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
25002 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
25003 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
25004 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
25005 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
25006 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25007 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25008 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25009 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25010 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25011 +                 from conftest.c:104:
25012 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
25013 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
25014 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
25015 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
25016 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
25017 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
25018 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
25019 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
25020 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25021 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25022 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25023 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25024 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25025 +                 from conftest.c:104:
25026 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
25027 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
25028 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25029 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25030 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25031 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25032 +                 from conftest.c:104:
25033 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
25034 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
25035 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
25036 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
25037 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
25038 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
25039 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
25040 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
25041 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
25042 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
25043 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
25044 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25045 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25046 +                 from conftest.c:104:
25047 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
25048 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
25049 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
25050 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25051 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25052 +                 from conftest.c:104:
25053 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
25054 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
25055 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
25056 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
25057 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25058 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25059 +                 from conftest.c:104:
25060 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
25061 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
25062 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
25063 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
25064 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
25065 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
25066 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
25067 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
25068 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25069 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25070 +                 from conftest.c:104:
25071 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
25072 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
25073 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
25074 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
25075 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
25076 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
25077 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
25078 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25079 +                 from conftest.c:104:
25080 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
25081 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
25082 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
25083 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
25084 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
25085 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
25086 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25087 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25088 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25089 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25090 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25091 +                 from conftest.c:104:
25092 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
25093 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
25094 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
25095 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
25096 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
25097 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
25098 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
25099 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
25100 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
25101 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
25102 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
25103 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25104 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25105 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25106 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25107 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25108 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25109 +                 from conftest.c:104:
25110 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
25111 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
25112 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
25113 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
25114 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
25115 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
25116 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
25117 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25118 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25119 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25120 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25121 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25122 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25123 +                 from conftest.c:104:
25124 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
25125 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
25126 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25127 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25128 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25129 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25130 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25131 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25132 +                 from conftest.c:104:
25133 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
25134 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
25135 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
25136 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
25137 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25138 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25139 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25140 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25141 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25142 +                 from conftest.c:104:
25143 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
25144 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25145 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
25146 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
25147 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
25148 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25149 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
25150 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25151 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
25152 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
25153 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25154 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25155 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25156 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25157 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25158 +                 from conftest.c:104:
25159 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
25160 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
25161 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25162 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25163 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25164 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25165 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25166 +                 from conftest.c:104:
25167 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
25168 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
25169 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
25170 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
25171 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
25172 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
25173 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
25174 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
25175 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
25176 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
25177 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
25178 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
25179 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
25180 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25181 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25182 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25183 +                 from conftest.c:104:
25184 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
25185 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
25186 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
25187 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25188 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25189 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25190 +                 from conftest.c:104:
25191 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
25192 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
25193 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
25194 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
25195 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
25196 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
25197 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
25198 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
25199 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
25200 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
25201 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
25202 +                 from conftest.c:104:
25203 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
25204 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
25205 +In file included from conftest.c:104:
25206 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
25207 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
25208 +conftest.c: In function 'main':
25209 +conftest.c:108: error: 'struct skb_shared_info' has no member named 'ufo_size'
25210 +configure:15201: $? = 1
25211 +configure: failed program was:
25212 +| /* confdefs.h.  */
25213 +| #define PACKAGE_NAME "click"
25214 +| #define PACKAGE_TARNAME "click"
25215 +| #define PACKAGE_VERSION "1.6.0"
25216 +| #define PACKAGE_STRING "click 1.6.0"
25217 +| #define PACKAGE_BUGREPORT ""
25218 +| #define CLICK_VERSION "1.6.0"
25219 +| #define HAVE_NEW_HDR 1
25220 +| #define NUM_CLICK_CPUS 1
25221 +| #define HAVE_CLICKFS 1
25222 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
25223 +| #define FREEBSD_INCLUDEDIR "/usr/include"
25224 +| #define HAVE_STRERROR 1
25225 +| #define HAVE_SNPRINTF 1
25226 +| #define HAVE_STRTOUL 1
25227 +| #define HAVE_TCGETPGRP 1
25228 +| #define HAVE_VSNPRINTF 1
25229 +| #define STDC_HEADERS 1
25230 +| #define HAVE_SYS_TYPES_H 1
25231 +| #define HAVE_SYS_STAT_H 1
25232 +| #define HAVE_STDLIB_H 1
25233 +| #define HAVE_STRING_H 1
25234 +| #define HAVE_MEMORY_H 1
25235 +| #define HAVE_STRINGS_H 1
25236 +| #define HAVE_INTTYPES_H 1
25237 +| #define HAVE_STDINT_H 1
25238 +| #define HAVE_UNISTD_H 1
25239 +| #define SIZEOF_INT 4
25240 +| #define SIZEOF_LONG 4
25241 +| #define HAVE_INTTYPES_H 1
25242 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
25243 +| #define SIZEOF_LONG_LONG 8
25244 +| #define HAVE_LONG_LONG 1
25245 +| #define HAVE_INT64_TYPES 1
25246 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
25247 +| #define SIZEOF_STRUCT_TIMEVAL 8
25248 +| #define HAVE_STRUCT_TIMESPEC 1
25249 +| #define SIZEOF_STRUCT_TIMESPEC 8
25250 +| #define HAVE_ENDIAN_H 1
25251 +| #define CLICK_BYTE_ORDER 1234
25252 +| #define HAVE_BYTESWAP_H 1
25253 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
25254 +| #define HAVE_ADDRESSABLE_VA_LIST 1
25255 +| #define HAVE___BUILTIN_CLZ 1
25256 +| #define HAVE___BUILTIN_CLZL 1
25257 +| #define HAVE___BUILTIN_CLZLL 1
25258 +| #define HAVE___BUILTIN_FFS 1
25259 +| #define HAVE___BUILTIN_FFSL 1
25260 +| #define HAVE___BUILTIN_FFSLL 1
25261 +| #define HAVE_STRINGS_H 1
25262 +| #define HAVE_FFS 1
25263 +| #define HAVE_FFSL 1
25264 +| #define HAVE_FFSLL 1
25265 +| #define HAVE_UNISTD_H 1
25266 +| #define HAVE_TERMIO_H 1
25267 +| #define HAVE_NETDB_H 1
25268 +| #define HAVE_PWD_H 1
25269 +| #define HAVE_GRP_H 1
25270 +| #define HAVE_POLL_H 1
25271 +| #define HAVE_SIGACTION 1
25272 +| #define HAVE_DLFCN_H 1
25273 +| #define HAVE_DYNAMIC_LINKING 1
25274 +| #define HAVE_ACCEPT_SOCKLEN_T 1
25275 +| #define HAVE_LARGE_FILE_SUPPORT 1
25276 +| #define SIZEOF_OFF_T 8
25277 +| #define HAVE_SYS_MMAN_H 1
25278 +| #define HAVE_STDLIB_H 1
25279 +| #define HAVE_UNISTD_H 1
25280 +| #define HAVE_GETPAGESIZE 1
25281 +| #define HAVE_MMAP 1
25282 +| #define HAVE_MADVISE 1
25283 +| #define HAVE_DECL_MADVISE 1
25284 +| #define HAVE_LINUXMODULE_2_6 1
25285 +| #define HAVE_CLICK_KERNEL 1
25286 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
25287 +| #define HAVE_LINUX_POLLING 1
25288 +| #define __SMP__ 1
25289 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
25290 +| #define HAVE_STRIDE_SCHED 1
25291 +| #define HAVE_LINUX_IF_TUN_H 1
25292 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
25293 +| #define HAVE_PCAP 1
25294 +| #define HAVE_PCAP_SETNONBLOCK 1
25295 +| #define HAVE_USERLEVEL_DRIVER 1
25296 +| #define HAVE_EXPAT 1
25297 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
25298 +| /* end confdefs.h.  */
25299 +| #if HAVE_LINUXMODULE_2_6
25300 +| # define KBUILD_STR(s)               #s
25301 +| # define KBUILD_BASENAME     KBUILD_STR(click)
25302 +| # define KBUILD_MODNAME              KBUILD_STR(click)
25303 +| #endif
25304 +| #define new xxx_new
25305 +| #define this xxx_this
25306 +| #define delete xxx_delete
25307 +| #define class xxx_class
25308 +| #define virtual xxx_virtual
25309 +| #define typename xxx_typename
25310 +| #define private xxx_private
25311 +| #define protected xxx_protected
25312 +| #define public xxx_public
25313 +| #define namespace xxx_namespace
25314 +| #include <linux/autoconf.h>
25315 +| #include <linux/skbuff.h>
25316 +| int
25317 +| main ()
25318 +| {
25319 +| extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0;
25320 +|   ;
25321 +|   return 0;
25322 +| }
25323 +configure:15216: result: no
25324 +configure:15226: checking whether skb_shinfo has an ip6_frag_id member
25325 +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
25326 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
25327 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
25328 +                 from conftest.c:104:
25329 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
25330 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
25331 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
25332 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25333 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25334 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25335 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25336 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25337 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25338 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25339 +                 from conftest.c:104:
25340 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
25341 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
25342 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
25343 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
25344 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
25345 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
25346 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
25347 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
25348 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25349 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25350 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25351 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25352 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25353 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25354 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25355 +                 from conftest.c:104:
25356 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
25357 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
25358 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
25359 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
25360 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
25361 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
25362 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
25363 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
25364 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
25365 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
25366 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
25367 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25368 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25369 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25370 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25371 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25372 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25373 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25374 +                 from conftest.c:104:
25375 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
25376 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
25377 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
25378 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
25379 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
25380 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
25381 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
25382 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
25383 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
25384 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
25385 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
25386 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
25387 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
25388 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
25389 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25390 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25391 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25392 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25393 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25394 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25395 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25396 +                 from conftest.c:104:
25397 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
25398 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
25399 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
25400 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
25401 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
25402 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
25403 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
25404 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25405 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25406 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25407 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25408 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25409 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25410 +                 from conftest.c:104:
25411 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
25412 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
25413 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
25414 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
25415 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
25416 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25417 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25418 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25419 +                 from conftest.c:104:
25420 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
25421 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
25422 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
25423 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
25424 +                 from conftest.c:104:
25425 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
25426 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
25427 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
25428 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25429 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25430 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25431 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25432 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25433 +                 from conftest.c:104:
25434 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
25435 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
25436 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
25437 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
25438 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
25439 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
25440 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
25441 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
25442 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
25443 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
25444 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
25445 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
25446 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
25447 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
25448 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25449 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25450 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25451 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25452 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25453 +                 from conftest.c:104:
25454 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
25455 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
25456 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
25457 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25458 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25459 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25460 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25461 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25462 +                 from conftest.c:104:
25463 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
25464 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
25465 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
25466 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
25467 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
25468 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
25469 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
25470 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
25471 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
25472 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
25473 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
25474 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
25475 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
25476 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
25477 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
25478 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
25479 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
25480 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
25481 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
25482 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
25483 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
25484 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
25485 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
25486 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
25487 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25488 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25489 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25490 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25491 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25492 +                 from conftest.c:104:
25493 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
25494 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
25495 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
25496 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
25497 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
25498 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
25499 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
25500 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
25501 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
25502 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
25503 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
25504 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
25505 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
25506 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25507 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25508 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25509 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25510 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25511 +                 from conftest.c:104:
25512 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
25513 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
25514 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
25515 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
25516 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
25517 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25518 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25519 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25520 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25521 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25522 +                 from conftest.c:104:
25523 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
25524 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
25525 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
25526 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
25527 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
25528 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
25529 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
25530 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
25531 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25532 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25533 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25534 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25535 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25536 +                 from conftest.c:104:
25537 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
25538 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
25539 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
25540 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
25541 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
25542 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
25543 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
25544 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
25545 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25546 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25547 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25548 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25549 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25550 +                 from conftest.c:104:
25551 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
25552 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
25553 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25554 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25555 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25556 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25557 +                 from conftest.c:104:
25558 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
25559 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
25560 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
25561 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
25562 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
25563 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
25564 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
25565 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
25566 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
25567 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
25568 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
25569 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25570 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25571 +                 from conftest.c:104:
25572 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
25573 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
25574 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
25575 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25576 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25577 +                 from conftest.c:104:
25578 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
25579 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
25580 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
25581 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
25582 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25583 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25584 +                 from conftest.c:104:
25585 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
25586 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
25587 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
25588 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
25589 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
25590 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
25591 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
25592 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
25593 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25594 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25595 +                 from conftest.c:104:
25596 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
25597 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
25598 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
25599 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
25600 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
25601 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
25602 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
25603 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25604 +                 from conftest.c:104:
25605 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
25606 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
25607 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
25608 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
25609 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
25610 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
25611 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25612 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25613 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25614 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25615 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25616 +                 from conftest.c:104:
25617 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
25618 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
25619 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
25620 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
25621 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
25622 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
25623 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
25624 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
25625 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
25626 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
25627 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
25628 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25629 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25630 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25631 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25632 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25633 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25634 +                 from conftest.c:104:
25635 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
25636 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
25637 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
25638 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
25639 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
25640 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
25641 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
25642 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25643 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25644 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25645 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25646 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25647 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25648 +                 from conftest.c:104:
25649 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
25650 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
25651 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
25652 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25653 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25654 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25655 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25656 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25657 +                 from conftest.c:104:
25658 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
25659 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
25660 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
25661 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
25662 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25663 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25664 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25665 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25666 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25667 +                 from conftest.c:104:
25668 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
25669 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25670 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
25671 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
25672 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
25673 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25674 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
25675 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
25676 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
25677 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
25678 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25679 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25680 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25681 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25682 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25683 +                 from conftest.c:104:
25684 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
25685 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
25686 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
25687 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
25688 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25689 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25690 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25691 +                 from conftest.c:104:
25692 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
25693 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
25694 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
25695 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
25696 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
25697 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
25698 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
25699 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
25700 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
25701 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
25702 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
25703 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
25704 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
25705 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25706 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25707 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25708 +                 from conftest.c:104:
25709 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
25710 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
25711 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
25712 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
25713 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
25714 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
25715 +                 from conftest.c:104:
25716 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
25717 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
25718 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
25719 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
25720 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
25721 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
25722 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
25723 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
25724 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
25725 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
25726 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
25727 +                 from conftest.c:104:
25728 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
25729 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
25730 +In file included from conftest.c:104:
25731 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
25732 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
25733 +configure:15280: $? = 1
25734 +configure: failed program was:
25735 +| /* confdefs.h.  */
25736 +| #define PACKAGE_NAME "click"
25737 +| #define PACKAGE_TARNAME "click"
25738 +| #define PACKAGE_VERSION "1.6.0"
25739 +| #define PACKAGE_STRING "click 1.6.0"
25740 +| #define PACKAGE_BUGREPORT ""
25741 +| #define CLICK_VERSION "1.6.0"
25742 +| #define HAVE_NEW_HDR 1
25743 +| #define NUM_CLICK_CPUS 1
25744 +| #define HAVE_CLICKFS 1
25745 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
25746 +| #define FREEBSD_INCLUDEDIR "/usr/include"
25747 +| #define HAVE_STRERROR 1
25748 +| #define HAVE_SNPRINTF 1
25749 +| #define HAVE_STRTOUL 1
25750 +| #define HAVE_TCGETPGRP 1
25751 +| #define HAVE_VSNPRINTF 1
25752 +| #define STDC_HEADERS 1
25753 +| #define HAVE_SYS_TYPES_H 1
25754 +| #define HAVE_SYS_STAT_H 1
25755 +| #define HAVE_STDLIB_H 1
25756 +| #define HAVE_STRING_H 1
25757 +| #define HAVE_MEMORY_H 1
25758 +| #define HAVE_STRINGS_H 1
25759 +| #define HAVE_INTTYPES_H 1
25760 +| #define HAVE_STDINT_H 1
25761 +| #define HAVE_UNISTD_H 1
25762 +| #define SIZEOF_INT 4
25763 +| #define SIZEOF_LONG 4
25764 +| #define HAVE_INTTYPES_H 1
25765 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
25766 +| #define SIZEOF_LONG_LONG 8
25767 +| #define HAVE_LONG_LONG 1
25768 +| #define HAVE_INT64_TYPES 1
25769 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
25770 +| #define SIZEOF_STRUCT_TIMEVAL 8
25771 +| #define HAVE_STRUCT_TIMESPEC 1
25772 +| #define SIZEOF_STRUCT_TIMESPEC 8
25773 +| #define HAVE_ENDIAN_H 1
25774 +| #define CLICK_BYTE_ORDER 1234
25775 +| #define HAVE_BYTESWAP_H 1
25776 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
25777 +| #define HAVE_ADDRESSABLE_VA_LIST 1
25778 +| #define HAVE___BUILTIN_CLZ 1
25779 +| #define HAVE___BUILTIN_CLZL 1
25780 +| #define HAVE___BUILTIN_CLZLL 1
25781 +| #define HAVE___BUILTIN_FFS 1
25782 +| #define HAVE___BUILTIN_FFSL 1
25783 +| #define HAVE___BUILTIN_FFSLL 1
25784 +| #define HAVE_STRINGS_H 1
25785 +| #define HAVE_FFS 1
25786 +| #define HAVE_FFSL 1
25787 +| #define HAVE_FFSLL 1
25788 +| #define HAVE_UNISTD_H 1
25789 +| #define HAVE_TERMIO_H 1
25790 +| #define HAVE_NETDB_H 1
25791 +| #define HAVE_PWD_H 1
25792 +| #define HAVE_GRP_H 1
25793 +| #define HAVE_POLL_H 1
25794 +| #define HAVE_SIGACTION 1
25795 +| #define HAVE_DLFCN_H 1
25796 +| #define HAVE_DYNAMIC_LINKING 1
25797 +| #define HAVE_ACCEPT_SOCKLEN_T 1
25798 +| #define HAVE_LARGE_FILE_SUPPORT 1
25799 +| #define SIZEOF_OFF_T 8
25800 +| #define HAVE_SYS_MMAN_H 1
25801 +| #define HAVE_STDLIB_H 1
25802 +| #define HAVE_UNISTD_H 1
25803 +| #define HAVE_GETPAGESIZE 1
25804 +| #define HAVE_MMAP 1
25805 +| #define HAVE_MADVISE 1
25806 +| #define HAVE_DECL_MADVISE 1
25807 +| #define HAVE_LINUXMODULE_2_6 1
25808 +| #define HAVE_CLICK_KERNEL 1
25809 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
25810 +| #define HAVE_LINUX_POLLING 1
25811 +| #define __SMP__ 1
25812 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
25813 +| #define HAVE_STRIDE_SCHED 1
25814 +| #define HAVE_LINUX_IF_TUN_H 1
25815 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
25816 +| #define HAVE_PCAP 1
25817 +| #define HAVE_PCAP_SETNONBLOCK 1
25818 +| #define HAVE_USERLEVEL_DRIVER 1
25819 +| #define HAVE_EXPAT 1
25820 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
25821 +| /* end confdefs.h.  */
25822 +| #if HAVE_LINUXMODULE_2_6
25823 +| # define KBUILD_STR(s)               #s
25824 +| # define KBUILD_BASENAME     KBUILD_STR(click)
25825 +| # define KBUILD_MODNAME              KBUILD_STR(click)
25826 +| #endif
25827 +| #define new xxx_new
25828 +| #define this xxx_this
25829 +| #define delete xxx_delete
25830 +| #define class xxx_class
25831 +| #define virtual xxx_virtual
25832 +| #define typename xxx_typename
25833 +| #define private xxx_private
25834 +| #define protected xxx_protected
25835 +| #define public xxx_public
25836 +| #define namespace xxx_namespace
25837 +| #include <linux/autoconf.h>
25838 +| #include <linux/skbuff.h>
25839 +| int
25840 +| main ()
25841 +| {
25842 +| extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0;
25843 +|   ;
25844 +|   return 0;
25845 +| }
25846 +configure:15295: result: no
25847 +configure:15311: checking whether net_enable_timestamp is declared
25848 +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
25849 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
25850 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
25851 +                 from conftest.c:104:
25852 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
25853 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
25854 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
25855 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25856 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25857 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25858 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25859 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25860 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25861 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25862 +                 from conftest.c:104:
25863 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
25864 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
25865 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
25866 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
25867 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
25868 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
25869 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
25870 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
25871 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25872 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25873 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25874 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25875 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25876 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25877 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25878 +                 from conftest.c:104:
25879 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
25880 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
25881 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
25882 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
25883 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
25884 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
25885 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
25886 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
25887 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
25888 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
25889 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
25890 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25891 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25892 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25893 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25894 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25895 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25896 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25897 +                 from conftest.c:104:
25898 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
25899 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
25900 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
25901 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
25902 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
25903 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
25904 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
25905 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
25906 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
25907 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
25908 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
25909 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
25910 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
25911 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
25912 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
25913 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25914 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25915 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25916 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25917 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25918 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25919 +                 from conftest.c:104:
25920 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
25921 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
25922 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
25923 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
25924 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
25925 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
25926 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
25927 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
25928 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
25929 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
25930 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25931 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25932 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25933 +                 from conftest.c:104:
25934 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
25935 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
25936 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
25937 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
25938 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
25939 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
25940 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
25941 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
25942 +                 from conftest.c:104:
25943 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
25944 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
25945 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
25946 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
25947 +                 from conftest.c:104:
25948 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
25949 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
25950 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
25951 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25952 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25953 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25954 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25955 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25956 +                 from conftest.c:104:
25957 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
25958 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
25959 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
25960 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
25961 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
25962 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
25963 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
25964 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
25965 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
25966 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
25967 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
25968 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
25969 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
25970 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
25971 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25972 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25973 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25974 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25975 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25976 +                 from conftest.c:104:
25977 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
25978 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
25979 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
25980 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
25981 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
25982 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
25983 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
25984 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
25985 +                 from conftest.c:104:
25986 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
25987 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
25988 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
25989 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
25990 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
25991 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
25992 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
25993 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
25994 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
25995 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
25996 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
25997 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
25998 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
25999 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
26000 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
26001 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
26002 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
26003 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
26004 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
26005 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
26006 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
26007 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
26008 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
26009 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
26010 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26011 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26012 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26013 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26014 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26015 +                 from conftest.c:104:
26016 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
26017 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
26018 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
26019 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
26020 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
26021 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
26022 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
26023 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
26024 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
26025 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
26026 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
26027 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
26028 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26029 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26030 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26031 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26032 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26033 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26034 +                 from conftest.c:104:
26035 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
26036 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
26037 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
26038 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
26039 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26040 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26041 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26042 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26043 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26044 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26045 +                 from conftest.c:104:
26046 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
26047 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
26048 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
26049 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
26050 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
26051 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
26052 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
26053 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26054 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26055 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26056 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26057 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26058 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26059 +                 from conftest.c:104:
26060 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
26061 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
26062 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
26063 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
26064 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
26065 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
26066 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
26067 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
26068 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26069 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26070 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26071 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26072 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26073 +                 from conftest.c:104:
26074 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
26075 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
26076 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26077 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26078 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26079 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26080 +                 from conftest.c:104:
26081 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
26082 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
26083 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
26084 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
26085 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
26086 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
26087 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
26088 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
26089 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
26090 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
26091 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
26092 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26093 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26094 +                 from conftest.c:104:
26095 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
26096 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
26097 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
26098 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26099 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26100 +                 from conftest.c:104:
26101 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
26102 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
26103 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
26104 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
26105 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26106 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26107 +                 from conftest.c:104:
26108 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
26109 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
26110 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
26111 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
26112 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
26113 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
26114 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
26115 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
26116 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26117 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26118 +                 from conftest.c:104:
26119 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
26120 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
26121 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
26122 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
26123 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
26124 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
26125 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
26126 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26127 +                 from conftest.c:104:
26128 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
26129 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
26130 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
26131 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
26132 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
26133 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
26134 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26135 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26136 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26137 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26138 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26139 +                 from conftest.c:104:
26140 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
26141 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
26142 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
26143 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
26144 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
26145 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
26146 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
26147 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
26148 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
26149 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
26150 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
26151 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26152 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26153 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26154 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26155 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26156 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26157 +                 from conftest.c:104:
26158 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
26159 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
26160 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
26161 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
26162 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
26163 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
26164 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
26165 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26166 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26167 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26168 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26169 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26170 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26171 +                 from conftest.c:104:
26172 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
26173 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
26174 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26175 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26176 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26177 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26178 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26179 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26180 +                 from conftest.c:104:
26181 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
26182 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
26183 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
26184 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
26185 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26186 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26187 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26188 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26189 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26190 +                 from conftest.c:104:
26191 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
26192 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26193 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
26194 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
26195 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
26196 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26197 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
26198 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26199 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
26200 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
26201 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26202 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26203 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26204 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26205 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26206 +                 from conftest.c:104:
26207 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
26208 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
26209 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26210 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26211 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26212 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26213 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26214 +                 from conftest.c:104:
26215 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
26216 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
26217 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
26218 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
26219 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
26220 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
26221 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
26222 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
26223 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
26224 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
26225 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
26226 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
26227 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
26228 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26229 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26230 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26231 +                 from conftest.c:104:
26232 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
26233 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
26234 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
26235 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26236 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26237 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26238 +                 from conftest.c:104:
26239 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
26240 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
26241 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
26242 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
26243 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
26244 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
26245 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
26246 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
26247 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
26248 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
26249 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
26250 +                 from conftest.c:104:
26251 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
26252 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
26253 +In file included from conftest.c:104:
26254 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
26255 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
26256 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:7,
26257 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33,
26258 +                 from conftest.c:105:
26259 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init':
26260 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'addr'
26261 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'descr'
26262 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init_on_stack':
26263 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'addr'
26264 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'descr'
26265 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_activate':
26266 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'addr'
26267 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'descr'
26268 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_deactivate':
26269 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'addr'
26270 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'descr'
26271 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_destroy':
26272 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'addr'
26273 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'descr'
26274 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_free':
26275 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'addr'
26276 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'descr'
26277 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_check_no_obj_freed':
26278 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'address'
26279 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'size'
26280 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33,
26281 +                 from conftest.c:105:
26282 +/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h: In function 'destroy_timer_on_stack':
26283 +/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:47: warning: unused parameter 'timer'
26284 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:42,
26285 +                 from conftest.c:105:
26286 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_delayed_work':
26287 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:220: warning: dereferencing type-punned pointer will break strict-aliasing rules
26288 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_rearming_delayed_workqueue':
26289 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:228: warning: unused parameter 'wq'
26290 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:44,
26291 +                 from conftest.c:105:
26292 +/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h: In function 'release_net':
26293 +/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h:184: warning: unused parameter 'net'
26294 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:77,
26295 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26296 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26297 +                 from conftest.c:105:
26298 +/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h: In function 'prctl_set_seccomp':
26299 +/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h:33: warning: unused parameter 'arg2'
26300 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:16,
26301 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79,
26302 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26303 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26304 +                 from conftest.c:105:
26305 +/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h: In function 'plist_head_init':
26306 +/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h:128: warning: unused parameter 'lock'
26307 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79,
26308 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26309 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26310 +                 from conftest.c:105:
26311 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h: In function 'rt_mutex_debug_check_no_locks_freed':
26312 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:46: warning: unused parameter 'from'
26313 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:47: warning: unused parameter 'len'
26314 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:88,
26315 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26316 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26317 +                 from conftest.c:105:
26318 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'account_scheduler_latency':
26319 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'task'
26320 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'usecs'
26321 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'inter'
26322 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'clear_all_latency_tracing':
26323 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:38: warning: unused parameter 'p'
26324 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26325 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26326 +                 from conftest.c:105:
26327 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'select_nohz_load_balancer':
26328 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:260: warning: unused parameter 'cpu'
26329 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26330 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26331 +                 from conftest.c:105:
26332 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'prefetch_stack':
26333 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:892: warning: unused parameter 't'
26334 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1407,
26335 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26336 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26337 +                 from conftest.c:105:
26338 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_map_pid':
26339 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'func'
26340 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'file'
26341 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'line'
26342 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_rmap_pid':
26343 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'func'
26344 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'file'
26345 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'line'
26346 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26347 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26348 +                 from conftest.c:105:
26349 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'wake_up_idle_cpu':
26350 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1636: warning: unused parameter 'cpu'
26351 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'spin_needbreak':
26352 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2101: warning: unused parameter 'lock'
26353 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function '__trace_special':
26354 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__tr'
26355 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__data'
26356 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg1'
26357 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg2'
26358 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg3'
26359 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_update_next_owner':
26360 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2237: warning: unused parameter 'mm'
26361 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_init_owner':
26362 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'mm'
26363 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'p'
26364 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:194,
26365 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5,
26366 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2,
26367 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7,
26368 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
26369 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26370 +                 from conftest.c:105:
26371 +/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h: In function '__setup_vector_irq':
26372 +/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h:122: warning: unused parameter 'cpu'
26373 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5,
26374 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2,
26375 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7,
26376 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
26377 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26378 +                 from conftest.c:105:
26379 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h: In function 'set_balance_irq_affinity':
26380 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'irq'
26381 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'mask'
26382 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
26383 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26384 +                 from conftest.c:105:
26385 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h: In function 'account_system_vtime':
26386 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:116: warning: unused parameter 'tsk'
26387 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26388 +                 from conftest.c:105:
26389 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'disable_irq_nosync_lockdep_irqsave':
26390 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:149: warning: unused parameter 'flags'
26391 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'enable_irq_lockdep_irqrestore':
26392 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:173: warning: unused parameter 'flags'
26393 +In file included from conftest.c:105:
26394 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_msg_init':
26395 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1455: warning: comparison between signed and unsigned
26396 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_rx_schedule_prep':
26397 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1464: warning: unused parameter 'dev'
26398 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_schedule':
26399 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1473: warning: unused parameter 'dev'
26400 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_complete':
26401 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1502: warning: unused parameter 'dev'
26402 +configure:15364: $? = 1
26403 +configure: failed program was:
26404 +| /* confdefs.h.  */
26405 +| #define PACKAGE_NAME "click"
26406 +| #define PACKAGE_TARNAME "click"
26407 +| #define PACKAGE_VERSION "1.6.0"
26408 +| #define PACKAGE_STRING "click 1.6.0"
26409 +| #define PACKAGE_BUGREPORT ""
26410 +| #define CLICK_VERSION "1.6.0"
26411 +| #define HAVE_NEW_HDR 1
26412 +| #define NUM_CLICK_CPUS 1
26413 +| #define HAVE_CLICKFS 1
26414 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
26415 +| #define FREEBSD_INCLUDEDIR "/usr/include"
26416 +| #define HAVE_STRERROR 1
26417 +| #define HAVE_SNPRINTF 1
26418 +| #define HAVE_STRTOUL 1
26419 +| #define HAVE_TCGETPGRP 1
26420 +| #define HAVE_VSNPRINTF 1
26421 +| #define STDC_HEADERS 1
26422 +| #define HAVE_SYS_TYPES_H 1
26423 +| #define HAVE_SYS_STAT_H 1
26424 +| #define HAVE_STDLIB_H 1
26425 +| #define HAVE_STRING_H 1
26426 +| #define HAVE_MEMORY_H 1
26427 +| #define HAVE_STRINGS_H 1
26428 +| #define HAVE_INTTYPES_H 1
26429 +| #define HAVE_STDINT_H 1
26430 +| #define HAVE_UNISTD_H 1
26431 +| #define SIZEOF_INT 4
26432 +| #define SIZEOF_LONG 4
26433 +| #define HAVE_INTTYPES_H 1
26434 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
26435 +| #define SIZEOF_LONG_LONG 8
26436 +| #define HAVE_LONG_LONG 1
26437 +| #define HAVE_INT64_TYPES 1
26438 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
26439 +| #define SIZEOF_STRUCT_TIMEVAL 8
26440 +| #define HAVE_STRUCT_TIMESPEC 1
26441 +| #define SIZEOF_STRUCT_TIMESPEC 8
26442 +| #define HAVE_ENDIAN_H 1
26443 +| #define CLICK_BYTE_ORDER 1234
26444 +| #define HAVE_BYTESWAP_H 1
26445 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
26446 +| #define HAVE_ADDRESSABLE_VA_LIST 1
26447 +| #define HAVE___BUILTIN_CLZ 1
26448 +| #define HAVE___BUILTIN_CLZL 1
26449 +| #define HAVE___BUILTIN_CLZLL 1
26450 +| #define HAVE___BUILTIN_FFS 1
26451 +| #define HAVE___BUILTIN_FFSL 1
26452 +| #define HAVE___BUILTIN_FFSLL 1
26453 +| #define HAVE_STRINGS_H 1
26454 +| #define HAVE_FFS 1
26455 +| #define HAVE_FFSL 1
26456 +| #define HAVE_FFSLL 1
26457 +| #define HAVE_UNISTD_H 1
26458 +| #define HAVE_TERMIO_H 1
26459 +| #define HAVE_NETDB_H 1
26460 +| #define HAVE_PWD_H 1
26461 +| #define HAVE_GRP_H 1
26462 +| #define HAVE_POLL_H 1
26463 +| #define HAVE_SIGACTION 1
26464 +| #define HAVE_DLFCN_H 1
26465 +| #define HAVE_DYNAMIC_LINKING 1
26466 +| #define HAVE_ACCEPT_SOCKLEN_T 1
26467 +| #define HAVE_LARGE_FILE_SUPPORT 1
26468 +| #define SIZEOF_OFF_T 8
26469 +| #define HAVE_SYS_MMAN_H 1
26470 +| #define HAVE_STDLIB_H 1
26471 +| #define HAVE_UNISTD_H 1
26472 +| #define HAVE_GETPAGESIZE 1
26473 +| #define HAVE_MMAP 1
26474 +| #define HAVE_MADVISE 1
26475 +| #define HAVE_DECL_MADVISE 1
26476 +| #define HAVE_LINUXMODULE_2_6 1
26477 +| #define HAVE_CLICK_KERNEL 1
26478 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
26479 +| #define HAVE_LINUX_POLLING 1
26480 +| #define __SMP__ 1
26481 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
26482 +| #define HAVE_STRIDE_SCHED 1
26483 +| #define HAVE_LINUX_IF_TUN_H 1
26484 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
26485 +| #define HAVE_PCAP 1
26486 +| #define HAVE_PCAP_SETNONBLOCK 1
26487 +| #define HAVE_USERLEVEL_DRIVER 1
26488 +| #define HAVE_EXPAT 1
26489 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
26490 +| /* end confdefs.h.  */
26491 +| #if HAVE_LINUXMODULE_2_6
26492 +| # define KBUILD_STR(s)               #s
26493 +| # define KBUILD_BASENAME     KBUILD_STR(click)
26494 +| # define KBUILD_MODNAME              KBUILD_STR(click)
26495 +| #endif
26496 +| #define new xxx_new
26497 +| #define this xxx_this
26498 +| #define delete xxx_delete
26499 +| #define class xxx_class
26500 +| #define virtual xxx_virtual
26501 +| #define typename xxx_typename
26502 +| #define private xxx_private
26503 +| #define protected xxx_protected
26504 +| #define public xxx_public
26505 +| #define namespace xxx_namespace
26506 +| #include <linux/autoconf.h>
26507 +| #include <linux/skbuff.h>
26508 +| #include <linux/netdevice.h>
26509 +| 
26510 +| int
26511 +| main ()
26512 +| {
26513 +| #ifndef net_enable_timestamp
26514 +|   (void) net_enable_timestamp;
26515 +| #endif
26516 +| 
26517 +|   ;
26518 +|   return 0;
26519 +| }
26520 +configure:15379: result: no
26521 +configure:15395: checking whether netif_tx_lock is declared
26522 +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
26523 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h:18,
26524 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:17,
26525 +                 from conftest.c:104:
26526 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h: In function 'ratelimit':
26527 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: missing initializer
26528 +/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h:23: warning: (near initialization for 'rs.printed')
26529 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
26530 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
26531 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
26532 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
26533 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26534 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26535 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26536 +                 from conftest.c:104:
26537 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'clear_user_page':
26538 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:71: warning: unused parameter 'vaddr'
26539 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:72: warning: unused parameter 'pg'
26540 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h: In function 'copy_user_page':
26541 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:77: warning: unused parameter 'vaddr'
26542 +/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:78: warning: unused parameter 'topage'
26543 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:6,
26544 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
26545 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
26546 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
26547 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
26548 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
26549 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26550 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26551 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26552 +                 from conftest.c:104:
26553 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_none':
26554 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:25: warning: unused parameter 'pgd'
26555 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_bad':
26556 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:26: warning: unused parameter 'pgd'
26557 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_present':
26558 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:27: warning: unused parameter 'pgd'
26559 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pgd_clear':
26560 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:28: warning: unused parameter 'pgd'
26561 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h: In function 'pud_offset':
26562 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h:38: warning: unused parameter 'address'
26563 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:131,
26564 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
26565 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
26566 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
26567 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
26568 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26569 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26570 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26571 +                 from conftest.c:104:
26572 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_none':
26573 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:29: warning: unused parameter 'pud'
26574 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_bad':
26575 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:30: warning: unused parameter 'pud'
26576 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_present':
26577 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:31: warning: unused parameter 'pud'
26578 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pud_clear':
26579 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:32: warning: unused parameter 'pud'
26580 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_offset':
26581 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:43: warning: unused parameter 'address'
26582 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h: In function 'pmd_free':
26583 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'mm'
26584 +/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h:59: warning: unused parameter 'pmd'
26585 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/page.h:158,
26586 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:11,
26587 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
26588 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
26589 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
26590 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26591 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26592 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26593 +                 from conftest.c:104:
26594 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h: In function 'set_pte_present':
26595 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'mm'
26596 +/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h:1305: warning: unused parameter 'addr'
26597 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h:2,
26598 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/system.h:7,
26599 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h:17,
26600 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h:22,
26601 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h:47,
26602 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h:9,
26603 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:50,
26604 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26605 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26606 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26607 +                 from conftest.c:104:
26608 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h: In function '__set_64bit_var':
26609 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
26610 +/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h:60: warning: dereferencing type-punned pointer will break strict-aliasing rules
26611 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h:18,
26612 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h:81,
26613 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h:29,
26614 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/time.h:8,
26615 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:19,
26616 +                 from conftest.c:104:
26617 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h: In function 'print_irqtrace_events':
26618 +/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h:398: warning: unused parameter 'curr'
26619 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/net.h:58,
26620 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:25,
26621 +                 from conftest.c:104:
26622 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h: In function '__remove_wait_queue':
26623 +/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h:138: warning: unused parameter 'head'
26624 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:16,
26625 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26626 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26627 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26628 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26629 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26630 +                 from conftest.c:104:
26631 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_state':
26632 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:413: warning: unused parameter 'state'
26633 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_set_state':
26634 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'node'
26635 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:418: warning: unused parameter 'state'
26636 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'node_clear_state':
26637 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'node'
26638 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:422: warning: unused parameter 'state'
26639 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h: In function 'num_node_state':
26640 +/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h:426: warning: unused parameter 'state'
26641 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h:22,
26642 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h:14,
26643 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:6,
26644 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
26645 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26646 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26647 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26648 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26649 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26650 +                 from conftest.c:104:
26651 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h: In function '__down_write_nested':
26652 +/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h:144: warning: unused parameter 'subclass'
26653 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:560,
26654 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26655 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26656 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26657 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26658 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26659 +                 from conftest.c:104:
26660 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_lock':
26661 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'p'
26662 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:165: warning: unused parameter 'f'
26663 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_unlock':
26664 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'p'
26665 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:166: warning: unused parameter 'f'
26666 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'pgdat_resize_init':
26667 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:167: warning: unused parameter 'pgdat'
26668 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqbegin':
26669 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:169: warning: unused parameter 'zone'
26670 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_seqretry':
26671 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'zone'
26672 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:173: warning: unused parameter 'iv'
26673 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writelock':
26674 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:177: warning: unused parameter 'zone'
26675 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_span_writeunlock':
26676 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:178: warning: unused parameter 'zone'
26677 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'zone_seqlock_init':
26678 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:179: warning: unused parameter 'zone'
26679 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'register_page_bootmem_info_node':
26680 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:188: warning: unused parameter 'pgdat'
26681 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h: In function 'is_mem_section_removable':
26682 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:207: warning: unused parameter 'pfn'
26683 +/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h:208: warning: unused parameter 'nr_pages'
26684 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26685 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26686 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26687 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26688 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26689 +                 from conftest.c:104:
26690 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'memory_present':
26691 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'nid'
26692 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'start'
26693 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:579: warning: unused parameter 'end'
26694 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'is_dma32':
26695 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:645: warning: unused parameter 'zone'
26696 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h:28,
26697 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h:5,
26698 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h:8,
26699 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h:13,
26700 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h:28,
26701 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:33,
26702 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26703 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26704 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26705 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26706 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26707 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26708 +                 from conftest.c:104:
26709 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h: In function 'acpi_fake_nodes':
26710 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:170: warning: unused parameter 'fake_nodes'
26711 +/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h:171: warning: unused parameter 'num_nodes'
26712 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
26713 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26714 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26715 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26716 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26717 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26718 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26719 +                 from conftest.c:104:
26720 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function '_node_to_cpumask_ptr':
26721 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:189: warning: unused parameter 'node'
26722 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_cpumask':
26723 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:193: warning: unused parameter 'node'
26724 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'node_to_first_cpu':
26725 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:197: warning: unused parameter 'node'
26726 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h:34,
26727 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:683,
26728 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26729 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26730 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26731 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26732 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26733 +                 from conftest.c:104:
26734 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'arch_fix_phys_package_id':
26735 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'num'
26736 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:233: warning: unused parameter 'slot'
26737 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'get_mp_bus_to_node':
26738 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:249: warning: unused parameter 'busnum'
26739 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h: In function 'set_mp_bus_to_node':
26740 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'busnum'
26741 +/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h:253: warning: unused parameter 'node'
26742 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:4,
26743 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26744 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26745 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26746 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26747 +                 from conftest.c:104:
26748 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h: In function 'zonelist_node_idx':
26749 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h:735: warning: unused parameter 'zoneref'
26750 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h:22,
26751 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:13,
26752 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26753 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26754 +                 from conftest.c:104:
26755 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'node_zonelist':
26756 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:164: warning: unused parameter 'nid'
26757 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_free_page':
26758 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'page'
26759 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:170: warning: unused parameter 'order'
26760 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h: In function 'arch_alloc_page':
26761 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'page'
26762 +/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h:173: warning: unused parameter 'order'
26763 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h:89,
26764 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:7,
26765 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
26766 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26767 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26768 +                 from conftest.c:104:
26769 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h: In function 'pack_gate':
26770 +/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h:61: warning: unused parameter 'flags'
26771 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:14,
26772 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26773 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26774 +                 from conftest.c:104:
26775 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h: In function 'elf_coredump_extra_notes_write':
26776 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:400: warning: unused parameter 'file'
26777 +/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h:401: warning: unused parameter 'foffset'
26778 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:18,
26779 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26780 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26781 +                 from conftest.c:104:
26782 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function 'marker_update_probe_range':
26783 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:88: warning: unused parameter 'begin'
26784 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:89: warning: unused parameter 'end'
26785 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h: In function '___mark_check_format':
26786 +/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h:125: warning: unused parameter 'fmt'
26787 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h:5,
26788 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/local.h:4,
26789 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/module.h:19,
26790 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h:7,
26791 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:26,
26792 +                 from conftest.c:104:
26793 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmalloc_node':
26794 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:200: warning: unused parameter 'node'
26795 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function '__kmalloc_node':
26796 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:205: warning: unused parameter 'node'
26797 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h: In function 'kmem_cache_alloc_node':
26798 +/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h:213: warning: unused parameter 'node'
26799 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:24,
26800 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26801 +                 from conftest.c:104:
26802 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'dev_to_node':
26803 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:429: warning: unused parameter 'dev'
26804 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h: In function 'set_dev_node':
26805 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'dev'
26806 +/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h:433: warning: unused parameter 'node'
26807 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:13,
26808 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26809 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26810 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26811 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26812 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26813 +                 from conftest.c:104:
26814 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function '__debug_show_held_locks':
26815 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:53: warning: unused parameter 'task'
26816 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_show_held_locks':
26817 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:57: warning: unused parameter 'task'
26818 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_freed':
26819 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'from'
26820 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:62: warning: unused parameter 'len'
26821 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h: In function 'debug_check_no_locks_held':
26822 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h:67: warning: unused parameter 'task'
26823 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:98,
26824 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
26825 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26826 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26827 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26828 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26829 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26830 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26831 +                 from conftest.c:104:
26832 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_set_pte_present':
26833 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:29: warning: unused parameter 'mm'
26834 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:30: warning: unused parameter 'addr'
26835 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h: In function 'native_pte_clear':
26836 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:43: warning: unused parameter 'mm'
26837 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h:44: warning: unused parameter 'addr'
26838 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:364,
26839 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26840 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26841 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26842 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26843 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26844 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26845 +                 from conftest.c:104:
26846 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h: In function 'pud_large':
26847 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h:117: warning: unused parameter 'pud'
26848 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:39,
26849 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26850 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26851 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26852 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26853 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26854 +                 from conftest.c:104:
26855 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h: In function 'native_set_pte_at':
26856 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'mm'
26857 +/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h:426: warning: unused parameter 'addr'
26858 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:220,
26859 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26860 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26861 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26862 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26863 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26864 +                 from conftest.c:104:
26865 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PagePrivate':
26866 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26867 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: (Each undeclared identifier is reported only once
26868 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: for each function it appears in.)
26869 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'SetPagePrivate':
26870 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26871 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'ClearPagePrivate':
26872 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:178: error: 'PG_xxx_private' undeclared (first use in this function)
26873 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h: In function 'PageUncached':
26874 +/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h:219: warning: unused parameter 'page'
26875 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26876 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26877 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26878 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26879 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26880 +                 from conftest.c:104:
26881 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'zone_to_nid':
26882 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:513: warning: unused parameter 'zone'
26883 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h:6,
26884 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:9,
26885 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26886 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26887 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26888 +                 from conftest.c:104:
26889 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pud_alloc':
26890 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'mm'
26891 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:882: warning: unused parameter 'pgd'
26892 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:883: warning: unused parameter 'address'
26893 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function '__pmd_alloc':
26894 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'mm'
26895 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:892: warning: unused parameter 'pud'
26896 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:893: warning: unused parameter 'address'
26897 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h: In function 'kernel_map_pages':
26898 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'page'
26899 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'numpages'
26900 +/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h:1245: warning: unused parameter 'enable'
26901 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:11,
26902 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26903 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26904 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26905 +                 from conftest.c:104:
26906 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h: In function 'dma_mark_clean':
26907 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'addr'
26908 +/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h:56: warning: unused parameter 'size'
26909 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h:52,
26910 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h:29,
26911 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:29,
26912 +                 from conftest.c:104:
26913 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'get_dma_ops':
26914 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:62: warning: unused parameter 'dev'
26915 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_mapping_error':
26916 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dev'
26917 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:75: warning: unused parameter 'dma_addr'
26918 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h: In function 'dma_cache_sync':
26919 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'dev'
26920 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'vaddr'
26921 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:237: warning: unused parameter 'size'
26922 +/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h:238: warning: unused parameter 'dir'
26923 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:30,
26924 +                 from conftest.c:104:
26925 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h: In function 'destroy_hrtimer_on_stack':
26926 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h:291: warning: unused parameter 'timer'
26927 +In file included from conftest.c:104:
26928 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h: In function 'skb_can_coalesce':
26929 +/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h:1361: warning: comparison between signed and unsigned
26930 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:7,
26931 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33,
26932 +                 from conftest.c:105:
26933 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init':
26934 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'addr'
26935 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:67: warning: unused parameter 'descr'
26936 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_init_on_stack':
26937 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'addr'
26938 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:69: warning: unused parameter 'descr'
26939 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_activate':
26940 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'addr'
26941 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:71: warning: unused parameter 'descr'
26942 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_deactivate':
26943 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'addr'
26944 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:73: warning: unused parameter 'descr'
26945 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_destroy':
26946 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'addr'
26947 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:75: warning: unused parameter 'descr'
26948 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_object_free':
26949 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'addr'
26950 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:77: warning: unused parameter 'descr'
26951 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h: In function 'debug_check_no_obj_freed':
26952 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'address'
26953 +/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h:87: warning: unused parameter 'size'
26954 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:33,
26955 +                 from conftest.c:105:
26956 +/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h: In function 'destroy_timer_on_stack':
26957 +/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h:47: warning: unused parameter 'timer'
26958 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:42,
26959 +                 from conftest.c:105:
26960 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_delayed_work':
26961 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:220: warning: dereferencing type-punned pointer will break strict-aliasing rules
26962 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h: In function 'cancel_rearming_delayed_workqueue':
26963 +/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h:228: warning: unused parameter 'wq'
26964 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:44,
26965 +                 from conftest.c:105:
26966 +/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h: In function 'release_net':
26967 +/d/kernels/linux-2.6.27.10-clickport/include/net/net_namespace.h:184: warning: unused parameter 'net'
26968 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:77,
26969 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26970 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26971 +                 from conftest.c:105:
26972 +/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h: In function 'prctl_set_seccomp':
26973 +/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h:33: warning: unused parameter 'arg2'
26974 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:16,
26975 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79,
26976 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26977 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26978 +                 from conftest.c:105:
26979 +/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h: In function 'plist_head_init':
26980 +/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h:128: warning: unused parameter 'lock'
26981 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:79,
26982 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26983 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26984 +                 from conftest.c:105:
26985 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h: In function 'rt_mutex_debug_check_no_locks_freed':
26986 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:46: warning: unused parameter 'from'
26987 +/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h:47: warning: unused parameter 'len'
26988 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:88,
26989 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26990 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
26991 +                 from conftest.c:105:
26992 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'account_scheduler_latency':
26993 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'task'
26994 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'usecs'
26995 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:34: warning: unused parameter 'inter'
26996 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h: In function 'clear_all_latency_tracing':
26997 +/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h:38: warning: unused parameter 'p'
26998 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
26999 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27000 +                 from conftest.c:105:
27001 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'select_nohz_load_balancer':
27002 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:260: warning: unused parameter 'cpu'
27003 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
27004 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27005 +                 from conftest.c:105:
27006 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'prefetch_stack':
27007 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:892: warning: unused parameter 't'
27008 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1407,
27009 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
27010 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27011 +                 from conftest.c:105:
27012 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_map_pid':
27013 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'func'
27014 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'file'
27015 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:13: warning: unused parameter 'line'
27016 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h: In function '__vx_info_rmap_pid':
27017 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'func'
27018 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'file'
27019 +/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h:35: warning: unused parameter 'line'
27020 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:11,
27021 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27022 +                 from conftest.c:105:
27023 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'wake_up_idle_cpu':
27024 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:1636: warning: unused parameter 'cpu'
27025 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'spin_needbreak':
27026 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2101: warning: unused parameter 'lock'
27027 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function '__trace_special':
27028 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__tr'
27029 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2154: warning: unused parameter '__data'
27030 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg1'
27031 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg2'
27032 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2155: warning: unused parameter 'arg3'
27033 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_update_next_owner':
27034 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2237: warning: unused parameter 'mm'
27035 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h: In function 'mm_init_owner':
27036 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'mm'
27037 +/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h:2241: warning: unused parameter 'p'
27038 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:194,
27039 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5,
27040 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2,
27041 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7,
27042 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
27043 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27044 +                 from conftest.c:105:
27045 +/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h: In function '__setup_vector_irq':
27046 +/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h:122: warning: unused parameter 'cpu'
27047 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h:5,
27048 +                 from /d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h:2,
27049 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:7,
27050 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
27051 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27052 +                 from conftest.c:105:
27053 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h: In function 'set_balance_irq_affinity':
27054 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'irq'
27055 +/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h:242: warning: unused parameter 'mask'
27056 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:12,
27057 +                 from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27058 +                 from conftest.c:105:
27059 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h: In function 'account_system_vtime':
27060 +/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h:116: warning: unused parameter 'tsk'
27061 +In file included from /d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:911,
27062 +                 from conftest.c:105:
27063 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'disable_irq_nosync_lockdep_irqsave':
27064 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:149: warning: unused parameter 'flags'
27065 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h: In function 'enable_irq_lockdep_irqrestore':
27066 +/d/kernels/linux-2.6.27.10-clickport/include/linux/interrupt.h:173: warning: unused parameter 'flags'
27067 +In file included from conftest.c:105:
27068 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_msg_init':
27069 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1455: warning: comparison between signed and unsigned
27070 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function 'netif_rx_schedule_prep':
27071 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1464: warning: unused parameter 'dev'
27072 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_schedule':
27073 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1473: warning: unused parameter 'dev'
27074 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h: In function '__netif_rx_complete':
27075 +/d/kernels/linux-2.6.27.10-clickport/include/linux/netdevice.h:1502: warning: unused parameter 'dev'
27076 +configure:15448: $? = 1
27077 +configure: failed program was:
27078 +| /* confdefs.h.  */
27079 +| #define PACKAGE_NAME "click"
27080 +| #define PACKAGE_TARNAME "click"
27081 +| #define PACKAGE_VERSION "1.6.0"
27082 +| #define PACKAGE_STRING "click 1.6.0"
27083 +| #define PACKAGE_BUGREPORT ""
27084 +| #define CLICK_VERSION "1.6.0"
27085 +| #define HAVE_NEW_HDR 1
27086 +| #define NUM_CLICK_CPUS 1
27087 +| #define HAVE_CLICKFS 1
27088 +| #define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
27089 +| #define FREEBSD_INCLUDEDIR "/usr/include"
27090 +| #define HAVE_STRERROR 1
27091 +| #define HAVE_SNPRINTF 1
27092 +| #define HAVE_STRTOUL 1
27093 +| #define HAVE_TCGETPGRP 1
27094 +| #define HAVE_VSNPRINTF 1
27095 +| #define STDC_HEADERS 1
27096 +| #define HAVE_SYS_TYPES_H 1
27097 +| #define HAVE_SYS_STAT_H 1
27098 +| #define HAVE_STDLIB_H 1
27099 +| #define HAVE_STRING_H 1
27100 +| #define HAVE_MEMORY_H 1
27101 +| #define HAVE_STRINGS_H 1
27102 +| #define HAVE_INTTYPES_H 1
27103 +| #define HAVE_STDINT_H 1
27104 +| #define HAVE_UNISTD_H 1
27105 +| #define SIZEOF_INT 4
27106 +| #define SIZEOF_LONG 4
27107 +| #define HAVE_INTTYPES_H 1
27108 +| #define HAVE_INDIFFERENT_ALIGNMENT 1
27109 +| #define SIZEOF_LONG_LONG 8
27110 +| #define HAVE_LONG_LONG 1
27111 +| #define HAVE_INT64_TYPES 1
27112 +| #define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
27113 +| #define SIZEOF_STRUCT_TIMEVAL 8
27114 +| #define HAVE_STRUCT_TIMESPEC 1
27115 +| #define SIZEOF_STRUCT_TIMESPEC 8
27116 +| #define HAVE_ENDIAN_H 1
27117 +| #define CLICK_BYTE_ORDER 1234
27118 +| #define HAVE_BYTESWAP_H 1
27119 +| #define HAVE_ARITHMETIC_RIGHT_SHIFT 1
27120 +| #define HAVE_ADDRESSABLE_VA_LIST 1
27121 +| #define HAVE___BUILTIN_CLZ 1
27122 +| #define HAVE___BUILTIN_CLZL 1
27123 +| #define HAVE___BUILTIN_CLZLL 1
27124 +| #define HAVE___BUILTIN_FFS 1
27125 +| #define HAVE___BUILTIN_FFSL 1
27126 +| #define HAVE___BUILTIN_FFSLL 1
27127 +| #define HAVE_STRINGS_H 1
27128 +| #define HAVE_FFS 1
27129 +| #define HAVE_FFSL 1
27130 +| #define HAVE_FFSLL 1
27131 +| #define HAVE_UNISTD_H 1
27132 +| #define HAVE_TERMIO_H 1
27133 +| #define HAVE_NETDB_H 1
27134 +| #define HAVE_PWD_H 1
27135 +| #define HAVE_GRP_H 1
27136 +| #define HAVE_POLL_H 1
27137 +| #define HAVE_SIGACTION 1
27138 +| #define HAVE_DLFCN_H 1
27139 +| #define HAVE_DYNAMIC_LINKING 1
27140 +| #define HAVE_ACCEPT_SOCKLEN_T 1
27141 +| #define HAVE_LARGE_FILE_SUPPORT 1
27142 +| #define SIZEOF_OFF_T 8
27143 +| #define HAVE_SYS_MMAN_H 1
27144 +| #define HAVE_STDLIB_H 1
27145 +| #define HAVE_UNISTD_H 1
27146 +| #define HAVE_GETPAGESIZE 1
27147 +| #define HAVE_MMAP 1
27148 +| #define HAVE_MADVISE 1
27149 +| #define HAVE_DECL_MADVISE 1
27150 +| #define HAVE_LINUXMODULE_2_6 1
27151 +| #define HAVE_CLICK_KERNEL 1
27152 +| #define HAVE_LINUX_STRLEN_EXPOSED 1
27153 +| #define HAVE_LINUX_POLLING 1
27154 +| #define __SMP__ 1
27155 +| #define HAVE_LINUX_ASM_ALTERNATIVE_H 1
27156 +| #define HAVE_STRIDE_SCHED 1
27157 +| #define HAVE_LINUX_IF_TUN_H 1
27158 +| #define HAVE_DECL_PCAP_SETNONBLOCK 1
27159 +| #define HAVE_PCAP 1
27160 +| #define HAVE_PCAP_SETNONBLOCK 1
27161 +| #define HAVE_USERLEVEL_DRIVER 1
27162 +| #define HAVE_EXPAT 1
27163 +| #define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
27164 +| /* end confdefs.h.  */
27165 +| #if HAVE_LINUXMODULE_2_6
27166 +| # define KBUILD_STR(s)               #s
27167 +| # define KBUILD_BASENAME     KBUILD_STR(click)
27168 +| # define KBUILD_MODNAME              KBUILD_STR(click)
27169 +| #endif
27170 +| #define new xxx_new
27171 +| #define this xxx_this
27172 +| #define delete xxx_delete
27173 +| #define class xxx_class
27174 +| #define virtual xxx_virtual
27175 +| #define typename xxx_typename
27176 +| #define private xxx_private
27177 +| #define protected xxx_protected
27178 +| #define public xxx_public
27179 +| #define namespace xxx_namespace
27180 +| #include <linux/autoconf.h>
27181 +| #include <linux/skbuff.h>
27182 +| #include <linux/netdevice.h>
27183 +| 
27184 +| int
27185 +| main ()
27186 +| {
27187 +| #ifndef netif_tx_lock
27188 +|   (void) netif_tx_lock;
27189 +| #endif
27190 +| 
27191 +|   ;
27192 +|   return 0;
27193 +| }
27194 +configure:15463: result: no
27195 +configure:15600: checking for a BSD-compatible install
27196 +configure:15656: result: /usr/bin/install -c
27197 +configure:15669: checking whether install accepts -C
27198 +configure:15678: result: no
27199 +configure:15688: checking for GNU make
27200 +configure:15701: result: make
27201 +configure:15714: checking for working autoconf
27202 +configure:15719: result: found
27203 +configure:15741: checking for perl5
27204 +configure:15771: result: no
27205 +configure:15741: checking for perl
27206 +configure:15757: found /usr/bin/perl
27207 +configure:15768: result: perl
27208 +configure:15864: checking for working makeinfo
27209 +configure:15869: result: found
27210 +configure:15882: checking for working texi2dvi
27211 +configure:15887: result: found
27212 +configure:15903: checking for install-info
27213 +configure:15922: found /usr/bin/install-info
27214 +configure:15935: result: /usr/bin/install-info
27215 +configure:15944: checking for working install-info
27216 +configure:15947: result: found
27217 +configure:15955: checking for working pod2man
27218 +configure:15959: result: found
27219 +configure:16185: creating ./config.status
27220 +
27221 +## ---------------------- ##
27222 +## Running config.status. ##
27223 +## ---------------------- ##
27224 +
27225 +This file was extended by click config.status 1.6.0, which was
27226 +generated by GNU Autoconf 2.61.  Invocation command line was
27227 +
27228 +  CONFIG_FILES    = 
27229 +  CONFIG_HEADERS  = 
27230 +  CONFIG_LINKS    = 
27231 +  CONFIG_COMMANDS = 
27232 +  $ ./config.status 
27233 +
27234 +on joyce
27235 +
27236 +config.status:689: creating Makefile
27237 +config.status:689: creating click-buildtool
27238 +config.status:689: creating click-compile
27239 +config.status:689: creating config.mk
27240 +config.status:689: creating installch
27241 +config.status:689: creating tools/Makefile
27242 +config.status:689: creating tools/lib/Makefile
27243 +config.status:689: creating doc/Makefile
27244 +config.status:689: creating etc/libclick/Makefile
27245 +config.status:689: creating etc/pkg-config.mk
27246 +config.status:689: creating bsdmodule/Makefile
27247 +config.status:689: creating linuxmodule/Makefile
27248 +config.status:689: creating ns/Makefile
27249 +config.status:689: creating userlevel/Makefile
27250 +config.status:689: creating tools/click-align/Makefile
27251 +config.status:689: creating tools/click-check/Makefile
27252 +config.status:689: creating tools/click-combine/Makefile
27253 +config.status:689: creating tools/click-devirtualize/Makefile
27254 +config.status:689: creating tools/click-fastclassifier/Makefile
27255 +config.status:689: creating tools/click-flatten/Makefile
27256 +config.status:689: creating tools/click-mkmindriver/Makefile
27257 +config.status:689: creating tools/click-pretty/Makefile
27258 +config.status:689: creating tools/click-undead/Makefile
27259 +config.status:689: creating tools/click-xform/Makefile
27260 +config.status:689: creating tools/click2xml/Makefile
27261 +config.status:689: creating tools/click-install/Makefile
27262 +config.status:689: creating include/click/config.h
27263 +config.status:989: include/click/config.h is unchanged
27264 +config.status:689: creating include/click/pathvars.h
27265 +config.status:689: creating include/click/config-bsdmodule.h
27266 +config.status:989: include/click/config-bsdmodule.h is unchanged
27267 +config.status:689: creating include/click/config-linuxmodule.h
27268 +config.status:989: include/click/config-linuxmodule.h is unchanged
27269 +config.status:689: creating include/click/config-ns.h
27270 +config.status:989: include/click/config-ns.h is unchanged
27271 +config.status:689: creating include/click/config-userlevel.h
27272 +config.status:989: include/click/config-userlevel.h is unchanged
27273 +config.status:1002: executing default-1 commands
27274 +
27275 +## ---------------- ##
27276 +## Cache variables. ##
27277 +## ---------------- ##
27278 +
27279 +ac_cv_accept_socklen_t=yes
27280 +ac_cv_alignment_indifferent=yes
27281 +ac_cv_arithmetic_right_shift=yes
27282 +ac_cv_bpf_timeval=no
27283 +ac_cv_build=i686-pc-linux-gnu
27284 +ac_cv_c_compiler_gnu=yes
27285 +ac_cv_c_inline=inline
27286 +ac_cv_click_kernel=yes
27287 +ac_cv_click_kernel_tx_notify=no
27288 +ac_cv_cxx_aware_system=yes
27289 +ac_cv_cxx_compiler_gnu=yes
27290 +ac_cv_emulated_poll_h=no
27291 +ac_cv_endian=1234
27292 +ac_cv_env_CCC_set=
27293 +ac_cv_env_CCC_value=
27294 +ac_cv_env_CC_set=
27295 +ac_cv_env_CC_value=
27296 +ac_cv_env_CFLAGS_set=
27297 +ac_cv_env_CFLAGS_value=
27298 +ac_cv_env_CPPFLAGS_set=
27299 +ac_cv_env_CPPFLAGS_value=
27300 +ac_cv_env_CPP_set=
27301 +ac_cv_env_CPP_value=
27302 +ac_cv_env_CXXCPP_set=
27303 +ac_cv_env_CXXCPP_value=
27304 +ac_cv_env_CXXFLAGS_set=
27305 +ac_cv_env_CXXFLAGS_value=
27306 +ac_cv_env_CXX_set=
27307 +ac_cv_env_CXX_value=
27308 +ac_cv_env_LDFLAGS_set=
27309 +ac_cv_env_LDFLAGS_value=
27310 +ac_cv_env_LIBS_set=
27311 +ac_cv_env_LIBS_value=
27312 +ac_cv_env_build_alias_set=
27313 +ac_cv_env_build_alias_value=
27314 +ac_cv_env_host_alias_set=
27315 +ac_cv_env_host_alias_value=
27316 +ac_cv_env_target_alias_set=
27317 +ac_cv_env_target_alias_value=
27318 +ac_cv_f_permissive=no
27319 +ac_cv_func_dlopen=no
27320 +ac_cv_func_ffs=yes
27321 +ac_cv_func_ffsl=yes
27322 +ac_cv_func_ffsll=yes
27323 +ac_cv_func_getpagesize=yes
27324 +ac_cv_func_kqueue=no
27325 +ac_cv_func_madvise=yes
27326 +ac_cv_func_mmap_fixed_mapped=yes
27327 +ac_cv_func_pcap_setnonblock=yes
27328 +ac_cv_func_sigaction=yes
27329 +ac_cv_func_snprintf=yes
27330 +ac_cv_func_strerror=yes
27331 +ac_cv_func_strtoul=yes
27332 +ac_cv_func_tcgetpgrp=yes
27333 +ac_cv_func_vsnprintf=yes
27334 +ac_cv_gnu_make=make
27335 +ac_cv_good_new_hdr=yes
27336 +ac_cv_have___builtin_clz=yes
27337 +ac_cv_have___builtin_clzl=yes
27338 +ac_cv_have___builtin_clzll=yes
27339 +ac_cv_have___builtin_ffs=yes
27340 +ac_cv_have___builtin_ffsl=yes
27341 +ac_cv_have___builtin_ffsll=yes
27342 +ac_cv_have_decl_madvise=yes
27343 +ac_cv_have_decl_net_enable_timestamp=no
27344 +ac_cv_have_decl_netif_tx_lock=no
27345 +ac_cv_have_decl_pcap_setnonblock=yes
27346 +ac_cv_header_byteswap_h=yes
27347 +ac_cv_header_dlfcn_h=yes
27348 +ac_cv_header_endian_h=yes
27349 +ac_cv_header_expat_h=yes
27350 +ac_cv_header_grp_h=yes
27351 +ac_cv_header_inttypes_h=yes
27352 +ac_cv_header_linux_if_tun_h=yes
27353 +ac_cv_header_memory_h=yes
27354 +ac_cv_header_net_bpf_h=no
27355 +ac_cv_header_net_if_tap_h=no
27356 +ac_cv_header_net_if_tun_h=no
27357 +ac_cv_header_netdb_h=yes
27358 +ac_cv_header_poll_h=yes
27359 +ac_cv_header_pwd_h=yes
27360 +ac_cv_header_stdc=yes
27361 +ac_cv_header_stdint_h=yes
27362 +ac_cv_header_stdlib_h=yes
27363 +ac_cv_header_string_h=yes
27364 +ac_cv_header_strings_h=yes
27365 +ac_cv_header_sys_event_h=no
27366 +ac_cv_header_sys_mman_h=yes
27367 +ac_cv_header_sys_stat_h=yes
27368 +ac_cv_header_sys_types_h=yes
27369 +ac_cv_header_termio_h=yes
27370 +ac_cv_header_unistd_h=yes
27371 +ac_cv_host=i686-pc-linux-gnu
27372 +ac_cv_if_data_ifi_datalen=no
27373 +ac_cv_int64_t=yes
27374 +ac_cv_large_file_support=yes
27375 +ac_cv_lib_dl_dlopen=yes
27376 +ac_cv_lib_expat_XML_ParserCreateNS=yes
27377 +ac_cv_linux26=1
27378 +ac_cv_linux_asm_alternative_h=yes
27379 +ac_cv_linux_atomic_set_mask=no
27380 +ac_cv_linux_poll_extension=yes
27381 +ac_cv_linux_read_net_skbcount=no
27382 +ac_cv_linux_strlen_exposed=yes
27383 +ac_cv_linux_tulip_intr_hook=no
27384 +ac_cv_linuxmodule_skb_shinfo_gso_size=no
27385 +ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no
27386 +ac_cv_linuxmodule_skb_shinfo_tso_size=no
27387 +ac_cv_linuxmodule_skb_shinfo_ufo_size=no
27388 +ac_cv_linuxmodule_skbuff_fclone=no
27389 +ac_cv_linuxmodule_skbuff_security=no
27390 +ac_cv_long_64=no
27391 +ac_cv_long_64_linuxmodule=no
27392 +ac_cv_long_long_64=yes
27393 +ac_cv_long_long_64_linuxmodule=yes
27394 +ac_cv_net_enable_timestamp=no
27395 +ac_cv_netif_tx_lock=no
27396 +ac_cv_objext=o
27397 +ac_cv_path_EGREP='/bin/grep -E'
27398 +ac_cv_path_GREP=/bin/grep
27399 +ac_cv_path_INSTALL_INFO=/usr/bin/install-info
27400 +ac_cv_path_install='/usr/bin/install -c'
27401 +ac_cv_pcap_header_path=found
27402 +ac_cv_pcap_library_path=found
27403 +ac_cv_poll_h=yes
27404 +ac_cv_prog_CPP='gcc -W -Wall -E'
27405 +ac_cv_prog_CXXCPP='g++ -W -Wall  -E'
27406 +ac_cv_prog_ac_ct_AR=ar
27407 +ac_cv_prog_ac_ct_CC=gcc
27408 +ac_cv_prog_ac_ct_CXX=g++
27409 +ac_cv_prog_ac_ct_LD=ld
27410 +ac_cv_prog_ac_ct_RANLIB=ranlib
27411 +ac_cv_prog_ac_ct_STRIP=strip
27412 +ac_cv_prog_cc_c89=
27413 +ac_cv_prog_cc_g=yes
27414 +ac_cv_prog_cxx_g=yes
27415 +ac_cv_prog_perl5=perl
27416 +ac_cv_search_connect='none required'
27417 +ac_cv_search_gethostbyname='none required'
27418 +ac_cv_sizeof_int=4
27419 +ac_cv_sizeof_long=4
27420 +ac_cv_sizeof_long_long=8
27421 +ac_cv_sizeof_off_t=8
27422 +ac_cv_sizeof_struct_timespec=8
27423 +ac_cv_sizeof_struct_timeval=8
27424 +ac_cv_smp=yes
27425 +ac_cv_sockaddr_in_sin_len=no
27426 +ac_cv_target=i686-pc-linux-gnu
27427 +ac_cv_type_int=yes
27428 +ac_cv_type_long=yes
27429 +ac_cv_type_long_long=yes
27430 +ac_cv_type_off_t=yes
27431 +ac_cv_type_struct_timespec=yes
27432 +ac_cv_type_struct_timeval=yes
27433 +ac_cv_uint64_t=yes
27434 +ac_cv_under_linux=yes
27435 +ac_cv_va_list_addr=yes
27436 +ac_cv_working_pcap_h=yes
27437 +
27438 +## ----------------- ##
27439 +## Output variables. ##
27440 +## ----------------- ##
27441 +
27442 +AR='ar'
27443 +AR_CREATEFLAGS='cru'
27444 +AUTOCONF='autoconf'
27445 +BUILD_AR=''
27446 +BUILD_CC=''
27447 +BUILD_CXX=''
27448 +BUILD_DL_LIBS=''
27449 +BUILD_RANLIB=''
27450 +CC='gcc -W -Wall'
27451 +CFLAGS='-g -O2'
27452 +CFLAGS_NDEBUG=' -O2'
27453 +CLICKINSTALL='/usr/bin/install -c'
27454 +CLICK_VERSION='1.6.0'
27455 +CPP='gcc -W -Wall -E'
27456 +CPPFLAGS=''
27457 +CXX='g++ -W -Wall '
27458 +CXXCPP='g++ -W -Wall  -E'
27459 +CXXFLAGS='-g -O2'
27460 +CXXFLAGS_NDEBUG=' -O2'
27461 +DEFS='-DHAVE_CONFIG_H'
27462 +DEPCFLAGS='-MD'
27463 +DL_LIBS='-ldl'
27464 +DRIVERS=' userlevel linuxmodule'
27465 +ECHO_C=''
27466 +ECHO_N='-n'
27467 +ECHO_T=''
27468 +EGREP='/bin/grep -E'
27469 +EXEEXT=''
27470 +EXPAT_INCLUDES=''
27471 +EXPAT_LIBS=' -lexpat'
27472 +EXTRA_DRIVER_OBJS=''
27473 +EXTRA_TOOL_OBJS=''
27474 +GMAKE='make'
27475 +GREP='/bin/grep'
27476 +HAVE_BSDMODULE_DRIVER='0'
27477 +HAVE_LINUXMODULE_DRIVER='1'
27478 +HAVE_USERLEVEL_DRIVER='1'
27479 +HOST_TOOLS='host'
27480 +INSTALL_DATA='${INSTALL} -m 644'
27481 +INSTALL_IF_CHANGED='$(top_builddir)/installch'
27482 +INSTALL_INFO='/usr/bin/install-info'
27483 +INSTALL_PROGRAM='${INSTALL}'
27484 +INSTALL_SCRIPT='${INSTALL}'
27485 +KERNEL_CC='gcc -w -W -Wall'
27486 +KERNEL_CXX='g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__'
27487 +LD='ld'
27488 +LDFLAGS=''
27489 +LDMODULEFLAGS='-shared'
27490 +LIBOBJS=''
27491 +LIBS=''
27492 +LINUXMODULE_2_6='1'
27493 +LINUX_CFLAGS=''
27494 +LTLIBOBJS=''
27495 +MAKEINFO='makeinfo'
27496 +OBJEXT='o'
27497 +OTHER_TARGETS=' tools'
27498 +PACKAGE_BUGREPORT=''
27499 +PACKAGE_NAME='click'
27500 +PACKAGE_STRING='click 1.6.0'
27501 +PACKAGE_TARNAME='click'
27502 +PACKAGE_VERSION='1.6.0'
27503 +PATH_SEPARATOR=':'
27504 +PCAP_INCLUDES=''
27505 +PCAP_LIBS='-lpcap'
27506 +PERL='perl'
27507 +POD2MAN='pod2man'
27508 +POSSIBLE_DRIVERS=' bsdmodule linuxmodule ns userlevel'
27509 +PROPER_INCLUDES=''
27510 +PROPER_LIBS=''
27511 +RANLIB='ranlib'
27512 +SHELL='/bin/sh'
27513 +SOCKET_LIBS=''
27514 +STRIP='strip'
27515 +SUBMAKE=''
27516 +TEXI2DVI='texi2dvi'
27517 +TOOLDIRS=' click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install'
27518 +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'
27519 +XML2CLICK='xml2click'
27520 +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'\'''
27521 +ac_ct_CC='gcc'
27522 +ac_ct_CXX='g++'
27523 +bindir='/d/click/click-1.6.0-27/inst/bin'
27524 +build='i686-pc-linux-gnu'
27525 +build_alias=''
27526 +build_cpu='i686'
27527 +build_os='linux-gnu'
27528 +build_vendor='pc'
27529 +clickdatadir='/d/click/click-1.6.0-27/inst/share/click'
27530 +conf_auxdir='$(top_srcdir)'
27531 +datadir='/d/click/click-1.6.0-27/inst/share'
27532 +datarootdir='/d/click/click-1.6.0-27/inst/share'
27533 +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
27534 +dvidir='${docdir}'
27535 +element_groups=' app aqm ethernet icmp ip standard tcpudp'
27536 +exec_prefix='/d/click/click-1.6.0-27/inst'
27537 +freebsd_includedir='/usr/include'
27538 +freebsd_srcdir='NONE'
27539 +host='i686-pc-linux-gnu'
27540 +host_alias=''
27541 +host_cpu='i686'
27542 +host_os='linux-gnu'
27543 +host_vendor='pc'
27544 +htmldir='${docdir}'
27545 +includedir='/d/click/click-1.6.0-27/inst/include'
27546 +infodir='${datarootdir}/info'
27547 +libdir='/d/click/click-1.6.0-27/inst/lib'
27548 +libexecdir='${exec_prefix}/libexec'
27549 +linuxdir='/d/kernels/linux-2.6.27.10-clickport'
27550 +localedir='${datarootdir}/locale'
27551 +localperl5=''
27552 +localstatedir='${prefix}/var'
27553 +mandir='${datarootdir}/man'
27554 +oldincludedir='/usr/include'
27555 +pdfdir='${docdir}'
27556 +perl5='perl'
27557 +prefix='/d/click/click-1.6.0-27/inst'
27558 +program_transform_name='s,x,x,'
27559 +provisions='i686 i386 i586 int64 linux linux_2_6 pcap'
27560 +psdir='${docdir}'
27561 +sbindir='/d/click/click-1.6.0-27/inst/sbin'
27562 +sharedstatedir='${prefix}/com'
27563 +sysconfdir='${prefix}/etc'
27564 +target='i686-pc-linux-gnu'
27565 +target_alias=''
27566 +target_cpu='i686'
27567 +target_os='linux-gnu'
27568 +target_vendor='pc'
27569 +
27570 +## ----------- ##
27571 +## confdefs.h. ##
27572 +## ----------- ##
27573 +
27574 +#define PACKAGE_NAME "click"
27575 +#define PACKAGE_TARNAME "click"
27576 +#define PACKAGE_VERSION "1.6.0"
27577 +#define PACKAGE_STRING "click 1.6.0"
27578 +#define PACKAGE_BUGREPORT ""
27579 +#define CLICK_VERSION "1.6.0"
27580 +#define HAVE_NEW_HDR 1
27581 +#define NUM_CLICK_CPUS 1
27582 +#define HAVE_CLICKFS 1
27583 +#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
27584 +#define FREEBSD_INCLUDEDIR "/usr/include"
27585 +#define HAVE_STRERROR 1
27586 +#define HAVE_SNPRINTF 1
27587 +#define HAVE_STRTOUL 1
27588 +#define HAVE_TCGETPGRP 1
27589 +#define HAVE_VSNPRINTF 1
27590 +#define STDC_HEADERS 1
27591 +#define HAVE_SYS_TYPES_H 1
27592 +#define HAVE_SYS_STAT_H 1
27593 +#define HAVE_STDLIB_H 1
27594 +#define HAVE_STRING_H 1
27595 +#define HAVE_MEMORY_H 1
27596 +#define HAVE_STRINGS_H 1
27597 +#define HAVE_INTTYPES_H 1
27598 +#define HAVE_STDINT_H 1
27599 +#define HAVE_UNISTD_H 1
27600 +#define SIZEOF_INT 4
27601 +#define SIZEOF_LONG 4
27602 +#define HAVE_INTTYPES_H 1
27603 +#define HAVE_INDIFFERENT_ALIGNMENT 1
27604 +#define SIZEOF_LONG_LONG 8
27605 +#define HAVE_LONG_LONG 1
27606 +#define HAVE_INT64_TYPES 1
27607 +#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
27608 +#define SIZEOF_STRUCT_TIMEVAL 8
27609 +#define HAVE_STRUCT_TIMESPEC 1
27610 +#define SIZEOF_STRUCT_TIMESPEC 8
27611 +#define HAVE_ENDIAN_H 1
27612 +#define CLICK_BYTE_ORDER 1234
27613 +#define HAVE_BYTESWAP_H 1
27614 +#define HAVE_ARITHMETIC_RIGHT_SHIFT 1
27615 +#define HAVE_ADDRESSABLE_VA_LIST 1
27616 +#define HAVE___BUILTIN_CLZ 1
27617 +#define HAVE___BUILTIN_CLZL 1
27618 +#define HAVE___BUILTIN_CLZLL 1
27619 +#define HAVE___BUILTIN_FFS 1
27620 +#define HAVE___BUILTIN_FFSL 1
27621 +#define HAVE___BUILTIN_FFSLL 1
27622 +#define HAVE_STRINGS_H 1
27623 +#define HAVE_FFS 1
27624 +#define HAVE_FFSL 1
27625 +#define HAVE_FFSLL 1
27626 +#define HAVE_UNISTD_H 1
27627 +#define HAVE_TERMIO_H 1
27628 +#define HAVE_NETDB_H 1
27629 +#define HAVE_PWD_H 1
27630 +#define HAVE_GRP_H 1
27631 +#define HAVE_POLL_H 1
27632 +#define HAVE_SIGACTION 1
27633 +#define HAVE_DLFCN_H 1
27634 +#define HAVE_DYNAMIC_LINKING 1
27635 +#define HAVE_ACCEPT_SOCKLEN_T 1
27636 +#define HAVE_LARGE_FILE_SUPPORT 1
27637 +#define SIZEOF_OFF_T 8
27638 +#define HAVE_SYS_MMAN_H 1
27639 +#define HAVE_STDLIB_H 1
27640 +#define HAVE_UNISTD_H 1
27641 +#define HAVE_GETPAGESIZE 1
27642 +#define HAVE_MMAP 1
27643 +#define HAVE_MADVISE 1
27644 +#define HAVE_DECL_MADVISE 1
27645 +#define HAVE_LINUXMODULE_2_6 1
27646 +#define HAVE_CLICK_KERNEL 1
27647 +#define HAVE_LINUX_STRLEN_EXPOSED 1
27648 +#define HAVE_LINUX_POLLING 1
27649 +#define __SMP__ 1
27650 +#define HAVE_LINUX_ASM_ALTERNATIVE_H 1
27651 +#define HAVE_STRIDE_SCHED 1
27652 +#define HAVE_LINUX_IF_TUN_H 1
27653 +#define HAVE_DECL_PCAP_SETNONBLOCK 1
27654 +#define HAVE_PCAP 1
27655 +#define HAVE_PCAP_SETNONBLOCK 1
27656 +#define HAVE_USERLEVEL_DRIVER 1
27657 +#define HAVE_EXPAT 1
27658 +#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
27659 +#define HAVE_LINUXMODULE_DRIVER 1
27660 +#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin"
27661 +#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib"
27662 +#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click"
27663 +
27664 +configure: exit 0
27665 diff -Nurb click-1.6.0/config.mk click-1.6.0-27/config.mk
27666 --- click-1.6.0/config.mk       1969-12-31 19:00:00.000000000 -0500
27667 +++ click-1.6.0-27/config.mk    2009-01-28 16:15:43.000000000 -0500
27668 @@ -0,0 +1,13 @@
27669 +clickprefix=/d/click/click-1.6.0-27/inst
27670 +clickbindir=/d/click/click-1.6.0-27/inst/bin
27671 +clicksbindir=/d/click/click-1.6.0-27/inst/sbin
27672 +clicklibdir=/d/click/click-1.6.0-27/inst/lib
27673 +clickincludedir=/d/click/click-1.6.0-27/inst/include
27674 +clickdatadir=/d/click/click-1.6.0-27/inst/share/click
27675 +clicklinuxdir=/d/kernels/linux-2.6.27.10-clickport
27676 +clicksrcdir=/d/click/click-1.6.0-27/inst/share/click/src
27677 +CLICK_HAVE_USERLEVEL_DRIVER=1
27678 +CLICK_HAVE_LINUXMODULE_DRIVER=1
27679 +CLICK_HAVE_BSDMODULE_DRIVER=0
27680 +CLICK_LINUXMODULE_2_6=1
27681 +CLICK_GMAKE=make
27682 diff -Nurb click-1.6.0/config.status click-1.6.0-27/config.status
27683 --- click-1.6.0/config.status   1969-12-31 19:00:00.000000000 -0500
27684 +++ click-1.6.0-27/config.status        2009-01-28 16:15:43.000000000 -0500
27685 @@ -0,0 +1,1022 @@
27686 +#! /bin/sh
27687 +# Generated by configure.
27688 +# Run this file to recreate the current configuration.
27689 +# Compiler output produced by configure, useful for debugging
27690 +# configure, is in config.log if it exists.
27691 +
27692 +debug=false
27693 +ac_cs_recheck=false
27694 +ac_cs_silent=false
27695 +SHELL=${CONFIG_SHELL-/bin/sh}
27696 +## --------------------- ##
27697 +## M4sh Initialization.  ##
27698 +## --------------------- ##
27699 +
27700 +# Be more Bourne compatible
27701 +DUALCASE=1; export DUALCASE # for MKS sh
27702 +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
27703 +  emulate sh
27704 +  NULLCMD=:
27705 +  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
27706 +  # is contrary to our usage.  Disable this feature.
27707 +  alias -g '${1+"$@"}'='"$@"'
27708 +  setopt NO_GLOB_SUBST
27709 +else
27710 +  case `(set -o) 2>/dev/null` in
27711 +  *posix*) set -o posix ;;
27712 +esac
27713 +
27714 +fi
27715 +
27716 +
27717 +
27718 +
27719 +# PATH needs CR
27720 +# Avoid depending upon Character Ranges.
27721 +as_cr_letters='abcdefghijklmnopqrstuvwxyz'
27722 +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
27723 +as_cr_Letters=$as_cr_letters$as_cr_LETTERS
27724 +as_cr_digits='0123456789'
27725 +as_cr_alnum=$as_cr_Letters$as_cr_digits
27726 +
27727 +# The user is always right.
27728 +if test "${PATH_SEPARATOR+set}" != set; then
27729 +  echo "#! /bin/sh" >conf$$.sh
27730 +  echo  "exit 0"   >>conf$$.sh
27731 +  chmod +x conf$$.sh
27732 +  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
27733 +    PATH_SEPARATOR=';'
27734 +  else
27735 +    PATH_SEPARATOR=:
27736 +  fi
27737 +  rm -f conf$$.sh
27738 +fi
27739 +
27740 +# Support unset when possible.
27741 +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
27742 +  as_unset=unset
27743 +else
27744 +  as_unset=false
27745 +fi
27746 +
27747 +
27748 +# IFS
27749 +# We need space, tab and new line, in precisely that order.  Quoting is
27750 +# there to prevent editors from complaining about space-tab.
27751 +# (If _AS_PATH_WALK were called with IFS unset, it would disable word
27752 +# splitting by setting IFS to empty value.)
27753 +as_nl='
27754 +'
27755 +IFS=" ""       $as_nl"
27756 +
27757 +# Find who we are.  Look in the path if we contain no directory separator.
27758 +case $0 in
27759 +  *[\\/]* ) as_myself=$0 ;;
27760 +  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
27761 +for as_dir in $PATH
27762 +do
27763 +  IFS=$as_save_IFS
27764 +  test -z "$as_dir" && as_dir=.
27765 +  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
27766 +done
27767 +IFS=$as_save_IFS
27768 +
27769 +     ;;
27770 +esac
27771 +# We did not find ourselves, most probably we were run as `sh COMMAND'
27772 +# in which case we are not to be found in the path.
27773 +if test "x$as_myself" = x; then
27774 +  as_myself=$0
27775 +fi
27776 +if test ! -f "$as_myself"; then
27777 +  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
27778 +  { (exit 1); exit 1; }
27779 +fi
27780 +
27781 +# Work around bugs in pre-3.0 UWIN ksh.
27782 +for as_var in ENV MAIL MAILPATH
27783 +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
27784 +done
27785 +PS1='$ '
27786 +PS2='> '
27787 +PS4='+ '
27788 +
27789 +# NLS nuisances.
27790 +for as_var in \
27791 +  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
27792 +  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
27793 +  LC_TELEPHONE LC_TIME
27794 +do
27795 +  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
27796 +    eval $as_var=C; export $as_var
27797 +  else
27798 +    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
27799 +  fi
27800 +done
27801 +
27802 +# Required to use basename.
27803 +if expr a : '\(a\)' >/dev/null 2>&1 &&
27804 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
27805 +  as_expr=expr
27806 +else
27807 +  as_expr=false
27808 +fi
27809 +
27810 +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
27811 +  as_basename=basename
27812 +else
27813 +  as_basename=false
27814 +fi
27815 +
27816 +
27817 +# Name of the executable.
27818 +as_me=`$as_basename -- "$0" ||
27819 +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
27820 +        X"$0" : 'X\(//\)$' \| \
27821 +        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
27822 +echo X/"$0" |
27823 +    sed '/^.*\/\([^/][^/]*\)\/*$/{
27824 +           s//\1/
27825 +           q
27826 +         }
27827 +         /^X\/\(\/\/\)$/{
27828 +           s//\1/
27829 +           q
27830 +         }
27831 +         /^X\/\(\/\).*/{
27832 +           s//\1/
27833 +           q
27834 +         }
27835 +         s/.*/./; q'`
27836 +
27837 +# CDPATH.
27838 +$as_unset CDPATH
27839 +
27840 +
27841 +
27842 +  as_lineno_1=$LINENO
27843 +  as_lineno_2=$LINENO
27844 +  test "x$as_lineno_1" != "x$as_lineno_2" &&
27845 +  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
27846 +
27847 +  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
27848 +  # uniformly replaced by the line number.  The first 'sed' inserts a
27849 +  # line-number line after each line using $LINENO; the second 'sed'
27850 +  # does the real work.  The second script uses 'N' to pair each
27851 +  # line-number line with the line containing $LINENO, and appends
27852 +  # trailing '-' during substitution so that $LINENO is not a special
27853 +  # case at line end.
27854 +  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
27855 +  # scripts with optimization help from Paolo Bonzini.  Blame Lee
27856 +  # E. McMahon (1931-1989) for sed's syntax.  :-)
27857 +  sed -n '
27858 +    p
27859 +    /[$]LINENO/=
27860 +  ' <$as_myself |
27861 +    sed '
27862 +      s/[$]LINENO.*/&-/
27863 +      t lineno
27864 +      b
27865 +      :lineno
27866 +      N
27867 +      :loop
27868 +      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
27869 +      t loop
27870 +      s/-\n.*//
27871 +    ' >$as_me.lineno &&
27872 +  chmod +x "$as_me.lineno" ||
27873 +    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
27874 +   { (exit 1); exit 1; }; }
27875 +
27876 +  # Don't try to exec as it changes $[0], causing all sort of problems
27877 +  # (the dirname of $[0] is not the place where we might find the
27878 +  # original and so on.  Autoconf is especially sensitive to this).
27879 +  . "./$as_me.lineno"
27880 +  # Exit status is that of the last command.
27881 +  exit
27882 +}
27883 +
27884 +
27885 +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
27886 +  as_dirname=dirname
27887 +else
27888 +  as_dirname=false
27889 +fi
27890 +
27891 +ECHO_C= ECHO_N= ECHO_T=
27892 +case `echo -n x` in
27893 +-n*)
27894 +  case `echo 'x\c'` in
27895 +  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
27896 +  *)   ECHO_C='\c';;
27897 +  esac;;
27898 +*)
27899 +  ECHO_N='-n';;
27900 +esac
27901 +
27902 +if expr a : '\(a\)' >/dev/null 2>&1 &&
27903 +   test "X`expr 00001 : '.*\(...\)'`" = X001; then
27904 +  as_expr=expr
27905 +else
27906 +  as_expr=false
27907 +fi
27908 +
27909 +rm -f conf$$ conf$$.exe conf$$.file
27910 +if test -d conf$$.dir; then
27911 +  rm -f conf$$.dir/conf$$.file
27912 +else
27913 +  rm -f conf$$.dir
27914 +  mkdir conf$$.dir
27915 +fi
27916 +echo >conf$$.file
27917 +if ln -s conf$$.file conf$$ 2>/dev/null; then
27918 +  as_ln_s='ln -s'
27919 +  # ... but there are two gotchas:
27920 +  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
27921 +  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
27922 +  # In both cases, we have to default to `cp -p'.
27923 +  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
27924 +    as_ln_s='cp -p'
27925 +elif ln conf$$.file conf$$ 2>/dev/null; then
27926 +  as_ln_s=ln
27927 +else
27928 +  as_ln_s='cp -p'
27929 +fi
27930 +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
27931 +rmdir conf$$.dir 2>/dev/null
27932 +
27933 +if mkdir -p . 2>/dev/null; then
27934 +  as_mkdir_p=:
27935 +else
27936 +  test -d ./-p && rmdir ./-p
27937 +  as_mkdir_p=false
27938 +fi
27939 +
27940 +if test -x / >/dev/null 2>&1; then
27941 +  as_test_x='test -x'
27942 +else
27943 +  if ls -dL / >/dev/null 2>&1; then
27944 +    as_ls_L_option=L
27945 +  else
27946 +    as_ls_L_option=
27947 +  fi
27948 +  as_test_x='
27949 +    eval sh -c '\''
27950 +      if test -d "$1"; then
27951 +        test -d "$1/.";
27952 +      else
27953 +       case $1 in
27954 +        -*)set "./$1";;
27955 +       esac;
27956 +       case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
27957 +       ???[sx]*):;;*)false;;esac;fi
27958 +    '\'' sh
27959 +  '
27960 +fi
27961 +as_executable_p=$as_test_x
27962 +
27963 +# Sed expression to map a string onto a valid CPP name.
27964 +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
27965 +
27966 +# Sed expression to map a string onto a valid variable name.
27967 +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
27968 +
27969 +
27970 +exec 6>&1
27971 +
27972 +# Save the log message, to keep $[0] and so on meaningful, and to
27973 +# report actual input values of CONFIG_FILES etc. instead of their
27974 +# values after options handling.
27975 +ac_log="
27976 +This file was extended by click $as_me 1.6.0, which was
27977 +generated by GNU Autoconf 2.61.  Invocation command line was
27978 +
27979 +  CONFIG_FILES    = $CONFIG_FILES
27980 +  CONFIG_HEADERS  = $CONFIG_HEADERS
27981 +  CONFIG_LINKS    = $CONFIG_LINKS
27982 +  CONFIG_COMMANDS = $CONFIG_COMMANDS
27983 +  $ $0 $@
27984 +
27985 +on `(hostname || uname -n) 2>/dev/null | sed 1q`
27986 +"
27987 +
27988 +# Files that config.status was made for.
27989 +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"
27990 +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"
27991 +config_commands=" default-1"
27992 +
27993 +ac_cs_usage="\
27994 +\`$as_me' instantiates files from templates according to the
27995 +current configuration.
27996 +
27997 +Usage: $0 [OPTIONS] [FILE]...
27998 +
27999 +  -h, --help       print this help, then exit
28000 +  -V, --version    print version number and configuration settings, then exit
28001 +  -q, --quiet      do not print progress messages
28002 +  -d, --debug      don't remove temporary files
28003 +      --recheck    update $as_me by reconfiguring in the same conditions
28004 +  --file=FILE[:TEMPLATE]
28005 +                  instantiate the configuration file FILE
28006 +  --header=FILE[:TEMPLATE]
28007 +                  instantiate the configuration header FILE
28008 +
28009 +Configuration files:
28010 +$config_files
28011 +
28012 +Configuration headers:
28013 +$config_headers
28014 +
28015 +Configuration commands:
28016 +$config_commands
28017 +
28018 +Report bugs to <bug-autoconf@gnu.org>."
28019 +
28020 +ac_cs_version="\
28021 +click config.status 1.6.0
28022 +configured by ./configure, generated by GNU Autoconf 2.61,
28023 +  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'\"
28024 +
28025 +Copyright (C) 2006 Free Software Foundation, Inc.
28026 +This config.status script is free software; the Free Software Foundation
28027 +gives unlimited permission to copy, distribute and modify it."
28028 +
28029 +ac_pwd='/d/click/click-1.6.0-27'
28030 +srcdir='.'
28031 +INSTALL='/usr/bin/install -c'
28032 +# If no file are specified by the user, then we need to provide default
28033 +# value.  By we need to know if files were specified by the user.
28034 +ac_need_defaults=:
28035 +while test $# != 0
28036 +do
28037 +  case $1 in
28038 +  --*=*)
28039 +    ac_option=`expr "X$1" : 'X\([^=]*\)='`
28040 +    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
28041 +    ac_shift=:
28042 +    ;;
28043 +  *)
28044 +    ac_option=$1
28045 +    ac_optarg=$2
28046 +    ac_shift=shift
28047 +    ;;
28048 +  esac
28049 +
28050 +  case $ac_option in
28051 +  # Handling of the options.
28052 +  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
28053 +    ac_cs_recheck=: ;;
28054 +  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
28055 +    echo "$ac_cs_version"; exit ;;
28056 +  --debug | --debu | --deb | --de | --d | -d )
28057 +    debug=: ;;
28058 +  --file | --fil | --fi | --f )
28059 +    $ac_shift
28060 +    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
28061 +    ac_need_defaults=false;;
28062 +  --header | --heade | --head | --hea )
28063 +    $ac_shift
28064 +    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
28065 +    ac_need_defaults=false;;
28066 +  --he | --h)
28067 +    # Conflict between --help and --header
28068 +    { echo "$as_me: error: ambiguous option: $1
28069 +Try \`$0 --help' for more information." >&2
28070 +   { (exit 1); exit 1; }; };;
28071 +  --help | --hel | -h )
28072 +    echo "$ac_cs_usage"; exit ;;
28073 +  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
28074 +  | -silent | --silent | --silen | --sile | --sil | --si | --s)
28075 +    ac_cs_silent=: ;;
28076 +
28077 +  # This is an error.
28078 +  -*) { echo "$as_me: error: unrecognized option: $1
28079 +Try \`$0 --help' for more information." >&2
28080 +   { (exit 1); exit 1; }; } ;;
28081 +
28082 +  *) ac_config_targets="$ac_config_targets $1"
28083 +     ac_need_defaults=false ;;
28084 +
28085 +  esac
28086 +  shift
28087 +done
28088 +
28089 +ac_configure_extra_args=
28090 +
28091 +if $ac_cs_silent; then
28092 +  exec 6>/dev/null
28093 +  ac_configure_extra_args="$ac_configure_extra_args --silent"
28094 +fi
28095 +
28096 +if $ac_cs_recheck; then
28097 +  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
28098 +  CONFIG_SHELL=/bin/sh
28099 +  export CONFIG_SHELL
28100 +  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
28101 +fi
28102 +
28103 +exec 5>>config.log
28104 +{
28105 +  echo
28106 +  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
28107 +## Running $as_me. ##
28108 +_ASBOX
28109 +  echo "$ac_log"
28110 +} >&5
28111 +
28112 +#
28113 +# INIT-COMMANDS
28114 +#
28115 +
28116 +
28117 +
28118 +# Handling of arguments.
28119 +for ac_config_target in $ac_config_targets
28120 +do
28121 +  case $ac_config_target in
28122 +    "include/click/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config.h:config.h.in" ;;
28123 +    "include/click/pathvars.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/pathvars.h:pathvars.h.in" ;;
28124 +    "include/click/config-bsdmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-bsdmodule.h:config-bsdmodule.h.in" ;;
28125 +    "include/click/config-linuxmodule.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-linuxmodule.h:config-linuxmodule.h.in" ;;
28126 +    "include/click/config-ns.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-ns.h:config-ns.h.in" ;;
28127 +    "include/click/config-userlevel.h") CONFIG_HEADERS="$CONFIG_HEADERS include/click/config-userlevel.h:config-userlevel.h.in" ;;
28128 +    "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
28129 +    "$config_files") CONFIG_FILES="$CONFIG_FILES $config_files" ;;
28130 +
28131 +  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
28132 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
28133 +   { (exit 1); exit 1; }; };;
28134 +  esac
28135 +done
28136 +
28137 +
28138 +# If the user did not use the arguments to specify the items to instantiate,
28139 +# then the envvar interface is used.  Set only those that are not.
28140 +# We use the long form for the default assignment because of an extremely
28141 +# bizarre bug on SunOS 4.1.3.
28142 +if $ac_need_defaults; then
28143 +  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
28144 +  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
28145 +  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
28146 +fi
28147 +
28148 +# Have a temporary directory for convenience.  Make it in the build tree
28149 +# simply because there is no reason against having it here, and in addition,
28150 +# creating and moving files from /tmp can sometimes cause problems.
28151 +# Hook for its removal unless debugging.
28152 +# Note that there is a small window in which the directory will not be cleaned:
28153 +# after its creation but before its name has been assigned to `$tmp'.
28154 +$debug ||
28155 +{
28156 +  tmp=
28157 +  trap 'exit_status=$?
28158 +  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
28159 +' 0
28160 +  trap '{ (exit 1); exit 1; }' 1 2 13 15
28161 +}
28162 +# Create a (secure) tmp directory for tmp files.
28163 +
28164 +{
28165 +  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
28166 +  test -n "$tmp" && test -d "$tmp"
28167 +}  ||
28168 +{
28169 +  tmp=./conf$$-$RANDOM
28170 +  (umask 077 && mkdir "$tmp")
28171 +} ||
28172 +{
28173 +   echo "$me: cannot create a temporary directory in ." >&2
28174 +   { (exit 1); exit 1; }
28175 +}
28176 +
28177 +#
28178 +# Set up the sed scripts for CONFIG_FILES section.
28179 +#
28180 +
28181 +# No need to generate the scripts if there are no CONFIG_FILES.
28182 +# This happens for instance when ./config.status config.h
28183 +if test -n "$CONFIG_FILES"; then
28184 +
28185 +cat >"$tmp/subs-1.sed" <<\CEOF
28186 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
28187 +s,@SHELL@,|#_!!_#|/bin/sh,g
28188 +s,@PATH_SEPARATOR@,|#_!!_#|:,g
28189 +s,@PACKAGE_NAME@,|#_!!_#|click,g
28190 +s,@PACKAGE_TARNAME@,|#_!!_#|click,g
28191 +s,@PACKAGE_VERSION@,|#_!!_#|1.6.0,g
28192 +s,@PACKAGE_STRING@,|#_!!_#|click 1.6.0,g
28193 +s,@PACKAGE_BUGREPORT@,|#_!!_#|,g
28194 +s,@exec_prefix@,|#_!!_#|/d/click/click-1.6.0-27/inst,g
28195 +s,@prefix@,|#_!!_#|/d/click/click-1.6.0-27/inst,g
28196 +s,@program_transform_name@,|#_!!_#|s\,x\,x\,,g
28197 +s,@bindir@,|#_!!_#|/d/click/click-1.6.0-27/inst/bin,g
28198 +s,@sbindir@,|#_!!_#|/d/click/click-1.6.0-27/inst/sbin,g
28199 +s,@libexecdir@,|#_!!_#|${exec_prefix}/libexec,g
28200 +s,@datarootdir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share,g
28201 +s,@datadir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share,g
28202 +s,@sysconfdir@,|#_!!_#|${prefix}/etc,g
28203 +s,@sharedstatedir@,|#_!!_#|${prefix}/com,g
28204 +s,@localstatedir@,|#_!!_#|${prefix}/var,g
28205 +s,@includedir@,|#_!!_#|/d/click/click-1.6.0-27/inst/include,g
28206 +s,@oldincludedir@,|#_!!_#|/usr/include,g
28207 +s,@docdir@,|#_!!_#|${datarootdir}/doc/${PACKAGE_TARNAME},g
28208 +s,@infodir@,|#_!!_#|${datarootdir}/info,g
28209 +s,@htmldir@,|#_!!_#|${docdir},g
28210 +s,@dvidir@,|#_!!_#|${docdir},g
28211 +s,@pdfdir@,|#_!!_#|${docdir},g
28212 +s,@psdir@,|#_!!_#|${docdir},g
28213 +s,@libdir@,|#_!!_#|/d/click/click-1.6.0-27/inst/lib,g
28214 +s,@localedir@,|#_!!_#|${datarootdir}/locale,g
28215 +s,@mandir@,|#_!!_#|${datarootdir}/man,g
28216 +s,@DEFS@,|#_!!_#|-DHAVE_CONFIG_H,g
28217 +s,@ECHO_C@,|#_!!_#|,g
28218 +s,@ECHO_N@,|#_!!_#|-n,g
28219 +s,@ECHO_T@,|#_!!_#|,g
28220 +s,@LIBS@,|#_!!_#|,g
28221 +s,@build_alias@,|#_!!_#|,g
28222 +s,@host_alias@,|#_!!_#|,g
28223 +s,@target_alias@,|#_!!_#|,g
28224 +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
28225 +s,@CLICK_VERSION@,|#_!!_#|1.6.0,g
28226 +s,@conf_auxdir@,|#_!!_#|$(top_srcdir),g
28227 +s,@build@,|#_!!_#|i686-pc-linux-gnu,g
28228 +s,@build_cpu@,|#_!!_#|i686,g
28229 +s,@build_vendor@,|#_!!_#|pc,g
28230 +s,@build_os@,|#_!!_#|linux-gnu,g
28231 +s,@host@,|#_!!_#|i686-pc-linux-gnu,g
28232 +s,@host_cpu@,|#_!!_#|i686,g
28233 +s,@host_vendor@,|#_!!_#|pc,g
28234 +s,@host_os@,|#_!!_#|linux-gnu,g
28235 +s,@target@,|#_!!_#|i686-pc-linux-gnu,g
28236 +s,@target_cpu@,|#_!!_#|i686,g
28237 +s,@target_vendor@,|#_!!_#|pc,g
28238 +s,@target_os@,|#_!!_#|linux-gnu,g
28239 +s,@CC@,|#_!!_#|gcc -W -Wall,g
28240 +s,@CXX@,|#_!!_#|g++ -W -Wall ,g
28241 +s,@CFLAGS@,|#_!!_#|-g -O2,g
28242 +s,@LDFLAGS@,|#_!!_#|,g
28243 +s,@CPPFLAGS@,|#_!!_#|,g
28244 +s,@ac_ct_CC@,|#_!!_#|gcc,g
28245 +s,@EXEEXT@,|#_!!_#|,g
28246 +s,@OBJEXT@,|#_!!_#|o,g
28247 +s,@DEPCFLAGS@,|#_!!_#|-MD,g
28248 +s,@CFLAGS_NDEBUG@,|#_!!_#| -O2,g
28249 +s,@CPP@,|#_!!_#|gcc -W -Wall -E,g
28250 +s,@CXXFLAGS@,|#_!!_#|-g -O2,g
28251 +s,@ac_ct_CXX@,|#_!!_#|g++,g
28252 +s,@CXXFLAGS_NDEBUG@,|#_!!_#| -O2,g
28253 +s,@CXXCPP@,|#_!!_#|g++ -W -Wall  -E,g
28254 +s,@KERNEL_CC@,|#_!!_#|gcc -w -W -Wall,g
28255 +s,@KERNEL_CXX@,|#_!!_#|g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__,g
28256 +s,@AR@,|#_!!_#|ar,g
28257 +s,@LD@,|#_!!_#|ld,g
28258 +s,@RANLIB@,|#_!!_#|ranlib,g
28259 +s,@STRIP@,|#_!!_#|strip,g
28260 +s,@AR_CREATEFLAGS@,|#_!!_#|cru,g
28261 +s,@linuxdir@,|#_!!_#|/d/kernels/linux-2.6.27.10-clickport,g
28262 +s,@element_groups@,|#_!!_#| app aqm ethernet icmp ip standard tcpudp,g
28263 +s,@freebsd_srcdir@,|#_!!_#|NONE,g
28264 +s,@freebsd_includedir@,|#_!!_#|/usr/include,g
28265 +s,@LIBOBJS@,|#_!!_#|,g
28266 +s,@GREP@,|#_!!_#|/bin/grep,g
28267 +s,@EGREP@,|#_!!_#|/bin/grep -E,g
28268 +s,@BUILD_CC@,|#_!!_#|,g
28269 +s,@BUILD_CXX@,|#_!!_#|,g
28270 +s,@BUILD_AR@,|#_!!_#|,g
28271 +s,@BUILD_RANLIB@,|#_!!_#|,g
28272 +s,@HOST_TOOLS@,|#_!!_#|host,g
28273 +s,@DL_LIBS@,|#_!!_#|-ldl,g
28274 +s,@LDMODULEFLAGS@,|#_!!_#|-shared,g
28275 +s,@BUILD_DL_LIBS@,|#_!!_#|,g
28276 +s,@SOCKET_LIBS@,|#_!!_#|,g
28277 +s,@EXTRA_DRIVER_OBJS@,|#_!!_#|,g
28278 +s,@EXTRA_TOOL_OBJS@,|#_!!_#|,g
28279 +s,@LINUXMODULE_2_6@,|#_!!_#|1,g
28280 +s,@POSSIBLE_DRIVERS@,|#_!!_#| bsdmodule linuxmodule ns userlevel,g
28281 +s,@DRIVERS@,|#_!!_#| userlevel linuxmodule,g
28282 +s,@HAVE_USERLEVEL_DRIVER@,|#_!!_#|1,g
28283 +s,@HAVE_LINUXMODULE_DRIVER@,|#_!!_#|1,g
28284 +CEOF
28285 +cat >"$tmp/subs-2.sed" <<\CEOF
28286 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
28287 +s,@HAVE_BSDMODULE_DRIVER@,|#_!!_#|0,g
28288 +s,@OTHER_TARGETS@,|#_!!_#| tools,g
28289 +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
28290 +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
28291 +s,@PCAP_INCLUDES@,|#_!!_#|,g
28292 +s,@PCAP_LIBS@,|#_!!_#|-lpcap,g
28293 +s,@PROPER_INCLUDES@,|#_!!_#|,g
28294 +s,@PROPER_LIBS@,|#_!!_#|,g
28295 +s,@XML2CLICK@,|#_!!_#|xml2click,g
28296 +s,@EXPAT_INCLUDES@,|#_!!_#|,g
28297 +s,@EXPAT_LIBS@,|#_!!_#| -lexpat,g
28298 +s,@LINUX_CFLAGS@,|#_!!_#|,g
28299 +s,@INSTALL_PROGRAM@,|#_!!_#|${INSTALL},g
28300 +s,@INSTALL_SCRIPT@,|#_!!_#|${INSTALL},g
28301 +s,@INSTALL_DATA@,|#_!!_#|${INSTALL} -m 644,g
28302 +s,@INSTALL_IF_CHANGED@,|#_!!_#|$(top_builddir)/installch,g
28303 +s,@CLICKINSTALL@,|#_!!_#|/usr/bin/install -c,g
28304 +s,@SUBMAKE@,|#_!!_#|,g
28305 +s,@GMAKE@,|#_!!_#|make,g
28306 +s,@AUTOCONF@,|#_!!_#|autoconf,g
28307 +s,@perl5@,|#_!!_#|perl,g
28308 +s,@localperl5@,|#_!!_#|,g
28309 +s,@PERL@,|#_!!_#|perl,g
28310 +s,@INSTALL_INFO@,|#_!!_#|/usr/bin/install-info,g
28311 +s,@MAKEINFO@,|#_!!_#|makeinfo,g
28312 +s,@TEXI2DVI@,|#_!!_#|texi2dvi,g
28313 +s,@POD2MAN@,|#_!!_#|pod2man,g
28314 +s,@clickdatadir@,|#_!!_#|/d/click/click-1.6.0-27/inst/share/click,g
28315 +s,@provisions@,|#_!!_#|i686 i386 i586 int64 linux linux_2_6 pcap,g
28316 +s,@LTLIBOBJS@,|#_!!_#|,g
28317 +:end
28318 +s/|#_!!_#|//g
28319 +CEOF
28320 +fi # test -n "$CONFIG_FILES"
28321 +
28322 +
28323 +for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
28324 +do
28325 +  case $ac_tag in
28326 +  :[FHLC]) ac_mode=$ac_tag; continue;;
28327 +  esac
28328 +  case $ac_mode$ac_tag in
28329 +  :[FHL]*:*);;
28330 +  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
28331 +echo "$as_me: error: Invalid tag $ac_tag." >&2;}
28332 +   { (exit 1); exit 1; }; };;
28333 +  :[FH]-) ac_tag=-:-;;
28334 +  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
28335 +  esac
28336 +  ac_save_IFS=$IFS
28337 +  IFS=:
28338 +  set x $ac_tag
28339 +  IFS=$ac_save_IFS
28340 +  shift
28341 +  ac_file=$1
28342 +  shift
28343 +
28344 +  case $ac_mode in
28345 +  :L) ac_source=$1;;
28346 +  :[FH])
28347 +    ac_file_inputs=
28348 +    for ac_f
28349 +    do
28350 +      case $ac_f in
28351 +      -) ac_f="$tmp/stdin";;
28352 +      *) # Look for the file first in the build tree, then in the source tree
28353 +        # (if the path is not absolute).  The absolute path cannot be DOS-style,
28354 +        # because $ac_f cannot contain `:'.
28355 +        test -f "$ac_f" ||
28356 +          case $ac_f in
28357 +          [\\/$]*) false;;
28358 +          *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
28359 +          esac ||
28360 +          { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
28361 +echo "$as_me: error: cannot find input file: $ac_f" >&2;}
28362 +   { (exit 1); exit 1; }; };;
28363 +      esac
28364 +      ac_file_inputs="$ac_file_inputs $ac_f"
28365 +    done
28366 +
28367 +    # Let's still pretend it is `configure' which instantiates (i.e., don't
28368 +    # use $as_me), people would be surprised to read:
28369 +    #    /* config.h.  Generated by config.status.  */
28370 +    configure_input="Generated from "`IFS=:
28371 +         echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
28372 +    if test x"$ac_file" != x-; then
28373 +      configure_input="$ac_file.  $configure_input"
28374 +      { echo "$as_me:$LINENO: creating $ac_file" >&5
28375 +echo "$as_me: creating $ac_file" >&6;}
28376 +    fi
28377 +
28378 +    case $ac_tag in
28379 +    *:-:* | *:-) cat >"$tmp/stdin";;
28380 +    esac
28381 +    ;;
28382 +  esac
28383 +
28384 +  ac_dir=`$as_dirname -- "$ac_file" ||
28385 +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
28386 +        X"$ac_file" : 'X\(//\)[^/]' \| \
28387 +        X"$ac_file" : 'X\(//\)$' \| \
28388 +        X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
28389 +echo X"$ac_file" |
28390 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
28391 +           s//\1/
28392 +           q
28393 +         }
28394 +         /^X\(\/\/\)[^/].*/{
28395 +           s//\1/
28396 +           q
28397 +         }
28398 +         /^X\(\/\/\)$/{
28399 +           s//\1/
28400 +           q
28401 +         }
28402 +         /^X\(\/\).*/{
28403 +           s//\1/
28404 +           q
28405 +         }
28406 +         s/.*/./; q'`
28407 +  { as_dir="$ac_dir"
28408 +  case $as_dir in #(
28409 +  -*) as_dir=./$as_dir;;
28410 +  esac
28411 +  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
28412 +    as_dirs=
28413 +    while :; do
28414 +      case $as_dir in #(
28415 +      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
28416 +      *) as_qdir=$as_dir;;
28417 +      esac
28418 +      as_dirs="'$as_qdir' $as_dirs"
28419 +      as_dir=`$as_dirname -- "$as_dir" ||
28420 +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
28421 +        X"$as_dir" : 'X\(//\)[^/]' \| \
28422 +        X"$as_dir" : 'X\(//\)$' \| \
28423 +        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
28424 +echo X"$as_dir" |
28425 +    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
28426 +           s//\1/
28427 +           q
28428 +         }
28429 +         /^X\(\/\/\)[^/].*/{
28430 +           s//\1/
28431 +           q
28432 +         }
28433 +         /^X\(\/\/\)$/{
28434 +           s//\1/
28435 +           q
28436 +         }
28437 +         /^X\(\/\).*/{
28438 +           s//\1/
28439 +           q
28440 +         }
28441 +         s/.*/./; q'`
28442 +      test -d "$as_dir" && break
28443 +    done
28444 +    test -z "$as_dirs" || eval "mkdir $as_dirs"
28445 +  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
28446 +echo "$as_me: error: cannot create directory $as_dir" >&2;}
28447 +   { (exit 1); exit 1; }; }; }
28448 +  ac_builddir=.
28449 +
28450 +case "$ac_dir" in
28451 +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
28452 +*)
28453 +  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
28454 +  # A ".." for each directory in $ac_dir_suffix.
28455 +  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
28456 +  case $ac_top_builddir_sub in
28457 +  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
28458 +  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
28459 +  esac ;;
28460 +esac
28461 +ac_abs_top_builddir=$ac_pwd
28462 +ac_abs_builddir=$ac_pwd$ac_dir_suffix
28463 +# for backward compatibility:
28464 +ac_top_builddir=$ac_top_build_prefix
28465 +
28466 +case $srcdir in
28467 +  .)  # We are building in place.
28468 +    ac_srcdir=.
28469 +    ac_top_srcdir=$ac_top_builddir_sub
28470 +    ac_abs_top_srcdir=$ac_pwd ;;
28471 +  [\\/]* | ?:[\\/]* )  # Absolute name.
28472 +    ac_srcdir=$srcdir$ac_dir_suffix;
28473 +    ac_top_srcdir=$srcdir
28474 +    ac_abs_top_srcdir=$srcdir ;;
28475 +  *) # Relative name.
28476 +    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
28477 +    ac_top_srcdir=$ac_top_build_prefix$srcdir
28478 +    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
28479 +esac
28480 +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
28481 +
28482 +
28483 +  case $ac_mode in
28484 +  :F)
28485 +  #
28486 +  # CONFIG_FILE
28487 +  #
28488 +
28489 +  case $INSTALL in
28490 +  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
28491 +  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
28492 +  esac
28493 +# If the template does not know about datarootdir, expand it.
28494 +# FIXME: This hack should be removed a few years after 2.60.
28495 +ac_datarootdir_hack=; ac_datarootdir_seen=
28496 +
28497 +case `sed -n '/datarootdir/ {
28498 +  p
28499 +  q
28500 +}
28501 +/@datadir@/p
28502 +/@docdir@/p
28503 +/@infodir@/p
28504 +/@localedir@/p
28505 +/@mandir@/p
28506 +' $ac_file_inputs` in
28507 +*datarootdir*) ac_datarootdir_seen=yes;;
28508 +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
28509 +  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
28510 +echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
28511 +  ac_datarootdir_hack='
28512 +  s&@datadir@&/d/click/click-1.6.0-27/inst/share&g
28513 +  s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g
28514 +  s&@infodir@&${datarootdir}/info&g
28515 +  s&@localedir@&${datarootdir}/locale&g
28516 +  s&@mandir@&${datarootdir}/man&g
28517 +    s&\${datarootdir}&/d/click/click-1.6.0-27/inst/share&g' ;;
28518 +esac
28519 +  sed "/^[      ]*VPATH[        ]*=/{
28520 +s/:*\$(srcdir):*/:/
28521 +s/:*\${srcdir}:*/:/
28522 +s/:*@srcdir@:*/:/
28523 +s/^\([^=]*=[    ]*\):*/\1/
28524 +s/:*$//
28525 +s/^[^=]*=[      ]*$//
28526 +}
28527 +
28528 +:t
28529 +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
28530 +s&@configure_input@&$configure_input&;t t
28531 +s&@top_builddir@&$ac_top_builddir_sub&;t t
28532 +s&@srcdir@&$ac_srcdir&;t t
28533 +s&@abs_srcdir@&$ac_abs_srcdir&;t t
28534 +s&@top_srcdir@&$ac_top_srcdir&;t t
28535 +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
28536 +s&@builddir@&$ac_builddir&;t t
28537 +s&@abs_builddir@&$ac_abs_builddir&;t t
28538 +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
28539 +s&@INSTALL@&$ac_INSTALL&;t t
28540 +$ac_datarootdir_hack
28541 +" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" >$tmp/out
28542 +
28543 +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
28544 +  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
28545 +  { ac_out=`sed -n '/^[         ]*datarootdir[  ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
28546 +  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
28547 +which seems to be undefined.  Please make sure it is defined." >&5
28548 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
28549 +which seems to be undefined.  Please make sure it is defined." >&2;}
28550 +
28551 +  rm -f "$tmp/stdin"
28552 +  case $ac_file in
28553 +  -) cat "$tmp/out"; rm -f "$tmp/out";;
28554 +  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
28555 +  esac
28556 + ;;
28557 +  :H)
28558 +  #
28559 +  # CONFIG_HEADER
28560 +  #
28561 +    # First, check the format of the line:
28562 +    cat >"$tmp/defines.sed" <<\CEOF
28563 +/^[     ]*#[    ]*undef[        ][      ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[    ]*$/b def
28564 +/^[     ]*#[    ]*define[       ][      ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[(   ]/b def
28565 +b
28566 +:def
28567 +s/$/ /
28568 +s,^\([  #]*\)[^         ]*\([   ]*PACKAGE_NAME\)[       (].*,\1define\2 "click" ,
28569 +s,^\([  #]*\)[^         ]*\([   ]*PACKAGE_TARNAME\)[    (].*,\1define\2 "click" ,
28570 +s,^\([  #]*\)[^         ]*\([   ]*PACKAGE_VERSION\)[    (].*,\1define\2 "1.6.0" ,
28571 +s,^\([  #]*\)[^         ]*\([   ]*PACKAGE_STRING\)[     (].*,\1define\2 "click 1.6.0" ,
28572 +s,^\([  #]*\)[^         ]*\([   ]*PACKAGE_BUGREPORT\)[  (].*,\1define\2 "" ,
28573 +s,^\([  #]*\)[^         ]*\([   ]*CLICK_VERSION\)[      (].*,\1define\2 "1.6.0" ,
28574 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_NEW_HDR\)[       (].*,\1define\2 1 ,
28575 +s,^\([  #]*\)[^         ]*\([   ]*NUM_CLICK_CPUS\)[     (].*,\1define\2 1 ,
28576 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_CLICKFS\)[       (].*,\1define\2 1 ,
28577 +s,^\([  #]*\)[^         ]*\([   ]*LINUX_SRCDIR\)[       (].*,\1define\2 "/d/kernels/linux-2.6.27.10-clickport" ,
28578 +s,^\([  #]*\)[^         ]*\([   ]*FREEBSD_INCLUDEDIR\)[         (].*,\1define\2 "/usr/include" ,
28579 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRERROR\)[      (].*,\1define\2 1 ,
28580 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_SNPRINTF\)[      (].*,\1define\2 1 ,
28581 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRTOUL\)[       (].*,\1define\2 1 ,
28582 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_TCGETPGRP\)[     (].*,\1define\2 1 ,
28583 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_VSNPRINTF\)[     (].*,\1define\2 1 ,
28584 +s,^\([  #]*\)[^         ]*\([   ]*STDC_HEADERS\)[       (].*,\1define\2 1 ,
28585 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_SYS_TYPES_H\)[   (].*,\1define\2 1 ,
28586 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_SYS_STAT_H\)[    (].*,\1define\2 1 ,
28587 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STDLIB_H\)[      (].*,\1define\2 1 ,
28588 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRING_H\)[      (].*,\1define\2 1 ,
28589 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_MEMORY_H\)[      (].*,\1define\2 1 ,
28590 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRINGS_H\)[     (].*,\1define\2 1 ,
28591 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INTTYPES_H\)[    (].*,\1define\2 1 ,
28592 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STDINT_H\)[      (].*,\1define\2 1 ,
28593 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_UNISTD_H\)[      (].*,\1define\2 1 ,
28594 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_INT\)[         (].*,\1define\2 4 ,
28595 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_LONG\)[        (].*,\1define\2 4 ,
28596 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INTTYPES_H\)[    (].*,\1define\2 1 ,
28597 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INDIFFERENT_ALIGNMENT\)[         (].*,\1define\2 1 ,
28598 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_LONG_LONG\)[   (].*,\1define\2 8 ,
28599 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LONG_LONG\)[     (].*,\1define\2 1 ,
28600 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INT64_TYPES\)[   (].*,\1define\2 1 ,
28601 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INT64_IS_LONG_LONG_USERLEVEL\)[  (].*,\1define\2 1 ,
28602 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_STRUCT_TIMEVAL\)[      (].*,\1define\2 8 ,
28603 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRUCT_TIMESPEC\)[       (].*,\1define\2 1 ,
28604 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_STRUCT_TIMESPEC\)[     (].*,\1define\2 8 ,
28605 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_ENDIAN_H\)[      (].*,\1define\2 1 ,
28606 +s,^\([  #]*\)[^         ]*\([   ]*CLICK_BYTE_ORDER\)[   (].*,\1define\2 1234 ,
28607 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_BYTESWAP_H\)[    (].*,\1define\2 1 ,
28608 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_ARITHMETIC_RIGHT_SHIFT\)[        (].*,\1define\2 1 ,
28609 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_ADDRESSABLE_VA_LIST\)[   (].*,\1define\2 1 ,
28610 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_CLZ\)[         (].*,\1define\2 1 ,
28611 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_CLZL\)[        (].*,\1define\2 1 ,
28612 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_CLZLL\)[       (].*,\1define\2 1 ,
28613 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_FFS\)[         (].*,\1define\2 1 ,
28614 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_FFSL\)[        (].*,\1define\2 1 ,
28615 +s,^\([  #]*\)[^         ]*\([   ]*HAVE___BUILTIN_FFSLL\)[       (].*,\1define\2 1 ,
28616 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRINGS_H\)[     (].*,\1define\2 1 ,
28617 +CEOF
28618 +    sed -f "$tmp/defines.sed" $ac_file_inputs >"$tmp/out1"
28619 +    # First, check the format of the line:
28620 +    cat >"$tmp/defines.sed" <<\CEOF
28621 +/^[     ]*#[    ]*undef[        ][      ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[    ]*$/b def
28622 +/^[     ]*#[    ]*define[       ][      ]*[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*[(   ]/b def
28623 +b
28624 +:def
28625 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_FFS\)[   (].*,\1define\2 1 ,
28626 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_FFSL\)[  (].*,\1define\2 1 ,
28627 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_FFSLL\)[         (].*,\1define\2 1 ,
28628 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_UNISTD_H\)[      (].*,\1define\2 1 ,
28629 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_TERMIO_H\)[      (].*,\1define\2 1 ,
28630 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_NETDB_H\)[       (].*,\1define\2 1 ,
28631 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_PWD_H\)[         (].*,\1define\2 1 ,
28632 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_GRP_H\)[         (].*,\1define\2 1 ,
28633 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_POLL_H\)[        (].*,\1define\2 1 ,
28634 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_SIGACTION\)[     (].*,\1define\2 1 ,
28635 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_DLFCN_H\)[       (].*,\1define\2 1 ,
28636 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_DYNAMIC_LINKING\)[       (].*,\1define\2 1 ,
28637 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_ACCEPT_SOCKLEN_T\)[      (].*,\1define\2 1 ,
28638 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LARGE_FILE_SUPPORT\)[    (].*,\1define\2 1 ,
28639 +s,^\([  #]*\)[^         ]*\([   ]*SIZEOF_OFF_T\)[       (].*,\1define\2 8 ,
28640 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_SYS_MMAN_H\)[    (].*,\1define\2 1 ,
28641 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STDLIB_H\)[      (].*,\1define\2 1 ,
28642 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_UNISTD_H\)[      (].*,\1define\2 1 ,
28643 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_GETPAGESIZE\)[   (].*,\1define\2 1 ,
28644 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_MMAP\)[  (].*,\1define\2 1 ,
28645 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_MADVISE\)[       (].*,\1define\2 1 ,
28646 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_DECL_MADVISE\)[  (].*,\1define\2 1 ,
28647 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUXMODULE_2_6\)[       (].*,\1define\2 1 ,
28648 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_CLICK_KERNEL\)[  (].*,\1define\2 1 ,
28649 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUX_STRLEN_EXPOSED\)[  (].*,\1define\2 1 ,
28650 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUX_POLLING\)[         (].*,\1define\2 1 ,
28651 +s,^\([  #]*\)[^         ]*\([   ]*__SMP__\)[    (].*,\1define\2 1 ,
28652 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUX_ASM_ALTERNATIVE_H\)[       (].*,\1define\2 1 ,
28653 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_STRIDE_SCHED\)[  (].*,\1define\2 1 ,
28654 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUX_IF_TUN_H\)[        (].*,\1define\2 1 ,
28655 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_DECL_PCAP_SETNONBLOCK\)[         (].*,\1define\2 1 ,
28656 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_PCAP\)[  (].*,\1define\2 1 ,
28657 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_PCAP_SETNONBLOCK\)[      (].*,\1define\2 1 ,
28658 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_USERLEVEL_DRIVER\)[      (].*,\1define\2 1 ,
28659 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_EXPAT\)[         (].*,\1define\2 1 ,
28660 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_INT64_IS_LONG_LONG_LINUXMODULE\)[        (].*,\1define\2 1 ,
28661 +s,^\([  #]*\)[^         ]*\([   ]*HAVE_LINUXMODULE_DRIVER\)[    (].*,\1define\2 1 ,
28662 +s,^\([  #]*\)[^         ]*\([   ]*CLICK_BINDIR\)[       (].*,\1define\2 "/d/click/click-1.6.0-27/inst/bin" ,
28663 +s,^\([  #]*\)[^         ]*\([   ]*CLICK_LIBDIR\)[       (].*,\1define\2 "/d/click/click-1.6.0-27/inst/lib" ,
28664 +s,^\([  #]*\)[^         ]*\([   ]*CLICK_DATADIR\)[      (].*,\1define\2 "/d/click/click-1.6.0-27/inst/share/click" ,
28665 +s/ $//
28666 +s,^[    #]*u.*,/* & */,
28667 +CEOF
28668 +    sed -f "$tmp/defines.sed" "$tmp/out1" >"$tmp/out2"
28669 +ac_result="$tmp/out2"
28670 +  if test x"$ac_file" != x-; then
28671 +    echo "/* $configure_input  */" >"$tmp/config.h"
28672 +    cat "$ac_result" >>"$tmp/config.h"
28673 +    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
28674 +      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
28675 +echo "$as_me: $ac_file is unchanged" >&6;}
28676 +    else
28677 +      rm -f $ac_file
28678 +      mv "$tmp/config.h" $ac_file
28679 +    fi
28680 +  else
28681 +    echo "/* $configure_input  */"
28682 +    cat "$ac_result"
28683 +  fi
28684 +  rm -f "$tmp/out12"
28685 + ;;
28686 +
28687 +  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
28688 +echo "$as_me: executing $ac_file commands" >&6;}
28689 + ;;
28690 +  esac
28691 +
28692 +
28693 +  case $ac_file$ac_mode in
28694 +    "default-1":C) for ac_file in $CONFIG_HEADERS; do
28695 +    test $ac_file = include/click/config.h:config.h.in && echo > stamp-h
28696 +done
28697 +for ac_file in $CONFIG_FILES; do
28698 +    test $ac_file = click-buildtool && chmod +x click-buildtool
28699 +    test $ac_file = click-compile && chmod +x click-compile
28700 +    test $ac_file = installch && chmod +x installch
28701 +done ;;
28702 +
28703 +  esac
28704 +done # for ac_tag
28705 +
28706 +
28707 +{ (exit 0); exit 0; }
28708 diff -Nurb click-1.6.0/configure click-1.6.0-27/configure
28709 --- click-1.6.0/configure       2007-09-18 16:40:11.000000000 -0400
28710 +++ click-1.6.0-27/configure    2009-01-27 12:14:44.000000000 -0500
28711 @@ -1819,6 +1819,7 @@
28712  ac_compiler_gnu=$ac_cv_c_compiler_gnu
28713  
28714  
28715 +set +x +v
28716  
28717  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"
28718  
28719 @@ -8688,7 +8689,7 @@
28720  
28721                     ac_cv_endian=0
28722             cat > conftest.$ac_ext <<EOF
28723 -#line 8691 "configure"
28724 +#line 8692 "configure"
28725  #include "confdefs.h"
28726  #include <$endian_hdr>
28727  #ifdef __BYTE_ORDER
28728 @@ -14430,8 +14431,7 @@
28729      SAVE_CXX="$CXX"
28730      CXX="$KERNEL_CXX"
28731      saveflags="$CPPFLAGS"
28732 -    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS"
28733 -
28734 +    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS"
28735  
28736      # CLICK_LINUXMODULE_PROLOGUE()
28737  
28738 diff -Nurb click-1.6.0/configure.in click-1.6.0-27/configure.in
28739 --- click-1.6.0/configure.in    2007-09-18 16:40:01.000000000 -0400
28740 +++ click-1.6.0-27/configure.in 2009-01-27 12:14:10.000000000 -0500
28741 @@ -12,6 +12,7 @@
28742  dnl legally binding.
28743  
28744  AC_INIT(click, 1.6.0)
28745 +set +x +v
28746  AC_PREREQ(2.50)
28747  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)
28748  
28749 @@ -848,8 +849,7 @@
28750      SAVE_CXX="$CXX"
28751      CXX="$KERNEL_CXX"
28752      saveflags="$CPPFLAGS"
28753 -    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS"
28754 -
28755 +    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include -I$linuxdir/include/asm/mach-default $LINUX_CFLAGS" 
28756  
28757      # CLICK_LINUXMODULE_PROLOGUE()
28758      AC_DEFUN([CLICK_LINUXMODULE_PROLOGUE], [[#if HAVE_LINUXMODULE_2_6
28759 diff -Nurb click-1.6.0/configure.in.orig click-1.6.0-27/configure.in.orig
28760 --- click-1.6.0/configure.in.orig       1969-12-31 19:00:00.000000000 -0500
28761 +++ click-1.6.0-27/configure.in.orig    2007-09-18 16:40:01.000000000 -0400
28762 @@ -0,0 +1,1286 @@
28763 +dnl -*- mode: shell-script -*-
28764 +dnl Process this file with autoconf to produce a configure script.
28765 +dnl
28766 +dnl Permission is hereby granted, free of charge, to any person obtaining a
28767 +dnl copy of this software and associated documentation files (the "Software"),
28768 +dnl to deal in the Software without restriction, subject to the conditions
28769 +dnl listed in the Click LICENSE file. These conditions include: you must
28770 +dnl preserve this copyright notice, and you cannot mention the copyright
28771 +dnl holders in advertising related to the Software without their permission.
28772 +dnl The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
28773 +dnl notice is a summary of the Click LICENSE file; the license in that file is
28774 +dnl legally binding.
28775 +
28776 +AC_INIT(click, 1.6.0)
28777 +AC_PREREQ(2.50)
28778 +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)
28779 +
28780 +CLICK_VERSION=$PACKAGE_VERSION
28781 +
28782 +AC_SUBST(ac_configure_args)
28783 +AC_DEFINE_UNQUOTED(CLICK_VERSION, "$CLICK_VERSION")
28784 +AC_SUBST(CLICK_VERSION)
28785 +
28786 +CLICK_INIT('$(top_srcdir)')
28787 +
28788 +dnl support for cross compiling
28789 +AC_CANONICAL_SYSTEM
28790 +
28791 +dnl This is wrong!!
28792 +AC_CHECK_TOOL(CC, gcc)
28793 +AC_CHECK_TOOL(CXX, g++)
28794 +
28795 +CLICK_PROG_CC
28796 +AC_PROG_CPP
28797 +AC_C_INLINE
28798 +
28799 +CLICK_PROG_CXX
28800 +AC_PROG_CXXCPP
28801 +
28802 +CLICK_PROG_KERNEL_CC
28803 +CLICK_PROG_KERNEL_CXX
28804 +
28805 +ac_preset_ar="$AR"
28806 +AC_CHECK_TOOL(AR, ar)
28807 +AC_CHECK_TOOL(LD, ld)
28808 +AC_CHECK_TOOL(RANLIB, ranlib, :)
28809 +AC_CHECK_TOOL(STRIP, strip, :)
28810 +
28811 +conf_auxdir='$(top_srcdir)'
28812 +AC_SUBST(conf_auxdir)
28813 +
28814 +test -z "$AR_CREATEFLAGS" && AR_CREATEFLAGS=cru
28815 +AC_SUBST(AR_CREATEFLAGS)
28816 +
28817 +
28818 +dnl
28819 +dnl check drivers to enable
28820 +dnl
28821 +
28822 +dnl userlevel driver and features
28823 +
28824 +AC_ARG_ENABLE(userlevel, [  --disable-userlevel     disable user-level driver], :, enable_userlevel=yes)
28825 +
28826 +AC_ARG_ENABLE(user-multithread, [[    --enable-user-multithread support userlevel multithreading (EXPERIMENTAL)]], :, [enable_user_multithread=no])
28827 +if test "x$enable_user_multithread" = xyes; then
28828 +    AC_DEFINE(HAVE_USER_MULTITHREAD)
28829 +fi
28830 +
28831 +
28832 +dnl linuxmodule driver and features
28833 +
28834 +AC_ARG_ENABLE(linuxmodule, [  --disable-linuxmodule   disable Linux kernel driver], :, [enable_linuxmodule=yes; enable_linuxmodule_default=yes])
28835 +
28836 +AC_ARG_ENABLE(multithread,
28837 +  [[    --enable-multithread[=N]  support kernel multithreading, N threads max]],
28838 +  :, enable_multithread=no)
28839 +
28840 +test "$enable_multithread" = yes && enable_multithread=4
28841 +test "$enable_multithread" = no && enable_multithread=1
28842 +if test "$enable_multithread" -gt 1; then
28843 +    AC_DEFINE_UNQUOTED(NUM_CLICK_CPUS, $enable_multithread)
28844 +    AC_DEFINE_UNQUOTED(__MTCLICK__, 1)
28845 +    saveflags="$CPPFLAGS"
28846 +    CPPFLAGS="$saveflags -D__MTCLICK__"
28847 +else
28848 +    AC_DEFINE_UNQUOTED(NUM_CLICK_CPUS, 1)
28849 +fi
28850 +
28851 +AC_ARG_ENABLE(warp9, [[    --enable-warp9            reduce PollDevice functionality for speed]], :, enable_warp9=no)
28852 +if test "x$enable_warp9" = xyes; then
28853 +    AC_DEFINE(CLICK_WARP9)
28854 +fi
28855 +
28856 +AC_DEFINE(HAVE_CLICKFS)
28857 +
28858 +AC_ARG_ENABLE(kassert, [[    --enable-kassert          enable kernel assertions]], :, enable_kassert=no)
28859 +if test $enable_kassert = yes; then
28860 +    AC_DEFINE(HAVE_KERNEL_ASSERT)
28861 +fi
28862 +
28863 +AC_ARG_ENABLE(adaptive, [[    --enable-adaptive         use adaptive scheduler to flexibly arbitrate
28864 +                              between Click and the kernel (EXPERIMENTAL)]], :, enable_adaptive=no)
28865 +if test "x$enable_adaptive" = xyes; then
28866 +    AC_DEFINE(HAVE_ADAPTIVE_SCHEDULER)
28867 +fi
28868 +
28869 +
28870 +
28871 +dnl bsdmodule driver and features
28872 +
28873 +AC_ARG_ENABLE(bsdmodule, [  --enable-bsdmodule      enable FreeBSD kernel driver (EXPERIMENTAL)], :, enable_bsdmodule=no)
28874 +
28875 +dnl nsclick driver and features
28876 +
28877 +AC_ARG_ENABLE(nsclick, [  --enable-nsclick        enable NS simulator driver (EXPERIMENTAL)], :, enable_nsclick=no)
28878 +
28879 +
28880 +dnl
28881 +dnl How to build linuxmodule driver?
28882 +dnl
28883 +
28884 +AC_ARG_WITH(linux, [[  --with-linux[=DIR]      Linux source code is in DIR]],
28885 +    [linuxdir=$withval], [linuxdir=NONE])
28886 +test -z "$linuxdir" -o "$linuxdir" = yes && linuxdir=yes
28887 +
28888 +AC_ARG_WITH(linux-map, [[  --with-linux-map[=FILE] filename for Linux System.map [LINUXDIR/System.map]]],
28889 +  [linux_system_map=$withval; if test -z "$withval" -o "$withval" = yes; then linux_system_map=NONE; fi],
28890 +  linux_system_map=NONE)
28891 +
28892 +linux_system_map_boot=no
28893 +
28894 +if test "x$linuxdir" = xNONE -o "x$linuxdir" = xyes; then
28895 +    if uname -r 2>/dev/null | grep '^2\.6' >/dev/null 2>&1; then
28896 +       linuxdir=/lib/modules/"`uname -r`"/build
28897 +       linux_system_map_boot="`uname -r`"
28898 +    else
28899 +       linuxdir=/usr/src/linux
28900 +    fi
28901 +    if test ! -d "$linuxdir" -a "x$enable_linuxmodule" = xyes; then
28902 +       if test "x$enable_linuxmodule_default" = xyes; then
28903 +           linuxdir=NONE; enable_linuxmodule=no
28904 +       else
28905 +           AC_MSG_ERROR([
28906 +=========================================
28907 +
28908 +Can't find $linuxdir, so I can't compile the linuxmodule driver!
28909 +(You may need the --with-linux=DIR option.)
28910 +
28911 +=========================================])
28912 +       fi
28913 +    fi
28914 +fi
28915 +
28916 +if test "x$linuxdir" = xNONE -o "x$linuxdir" = xno -o "x$enable_linuxmodule" != xyes; then
28917 +    ac_have_linux_kernel=n
28918 +    linuxdir=NONE
28919 +elif expr "_$linuxdir" : '_[[^/\\]]' >/dev/null; then 
28920 +    AC_MSG_ERROR([
28921 +=========================================
28922 +
28923 +The --with-linux directory $linuxdir is relative.
28924 +You must supply an absolute path starting with /.
28925 +
28926 +=========================================])
28927 +elif test -r $linuxdir/include/linux/skbuff.h; then
28928 +    ac_have_linux_kernel=y
28929 +else
28930 +    AC_MSG_ERROR([
28931 +=========================================
28932 +
28933 +Can't find $linuxdir/include/linux/skbuff.h.
28934 +Are you sure $linuxdir contains Linux kernel source?
28935 +
28936 +=========================================])
28937 +fi
28938 +AC_SUBST(linuxdir)
28939 +AC_DEFINE_UNQUOTED(LINUX_SRCDIR, "${linuxdir}")
28940 +
28941 +
28942 +
28943 +dnl
28944 +dnl element collections
28945 +dnl
28946 +
28947 +AC_ARG_ENABLE(all-elements, [  --enable-all-elements   include all provided element groups])
28948 +
28949 +dnl ELEMENTS_ARG_ENABLE(COLLECTION, HELP-STRING, DEFAULT-VALUE)
28950 +element_groups=""
28951 +AC_SUBST(element_groups)
28952 +AC_DEFUN([ELEMENTS_ARG_ENABLE],
28953 +[AC_ARG_ENABLE($1, [  --]builtin(substr, builtin(ifelse, [$3], yes, dis, en)[able-$1              ], 0, 21)[ ]builtin(ifelse, [$3], yes, [do not ], [])[$2], ,
28954 +[enable_]patsubst([$1], -, _)=$3)dnl
28955 +test "x$enable_all_elements" = xyes -a ["x$enable_]patsubst([$1], -, _)["] = xNO && [enable_]patsubst([$1], -, _)[=yes]
28956 +if test ["x$enable_]patsubst([$1], -, _)["] = xyes; then
28957 +    :
28958 +    $4
28959 +fi])
28960 +
28961 +ELEMENTS_ARG_ENABLE(analysis, [include elements for network analysis], NO)
28962 +ELEMENTS_ARG_ENABLE(app, [include application-level elements], yes)
28963 +ELEMENTS_ARG_ENABLE(aqm, [include active queue management elements], yes)
28964 +ELEMENTS_ARG_ENABLE(ethernet, [include Ethernet elements], yes)
28965 +ELEMENTS_ARG_ENABLE(etherswitch, [include Ethernet switch elements (EXPERIMENTAL)], NO)
28966 +ELEMENTS_ARG_ENABLE(grid, [include Grid elements (see FAQ)], NO)
28967 +ELEMENTS_ARG_ENABLE(icmp, [include ICMP elements], yes)
28968 +ELEMENTS_ARG_ENABLE(ip, [include IP elements], yes)
28969 +ELEMENTS_ARG_ENABLE(ip6, [include IPv6 elements (EXPERIMENTAL)], NO, AC_DEFINE(HAVE_IP6))
28970 +ELEMENTS_ARG_ENABLE(ipsec, [include IP security elements], NO, AC_DEFINE(HAVE_IPSEC))
28971 +ELEMENTS_ARG_ENABLE(local, [include local elements], NO)
28972 +ELEMENTS_ARG_ENABLE(radio, [include radio elements (EXPERIMENTAL)], NO)
28973 +ELEMENTS_ARG_ENABLE(simple, [include simple versions of other elements], NO)
28974 +dnl ELEMENTS_ARG_ENABLE(snmp, [include SNMP elements], NO)
28975 +ELEMENTS_ARG_ENABLE(standard, [include standard elements], yes)
28976 +ELEMENTS_ARG_ENABLE(tcpudp, [include TCP and UDP elements], yes)
28977 +ELEMENTS_ARG_ENABLE(test, [include regression test elements], NO)
28978 +ELEMENTS_ARG_ENABLE(wifi, [include wifi elements and support], NO)
28979 +AC_ARG_ENABLE(experimental, [  --enable-experimental   enable experimental elements in normal groups], :, enable_experimental=no)
28980 +
28981 +for i in `(cd $srcdir/elements; ls | sed '/^CVS$/d;/^bsdmodule$/d;/^exopc$/d;/^linuxmodule$/d;/^ns$/d;/^userlevel$/d')`; do
28982 +    enableval=`eval 'echo $'"enable_$i"`
28983 +    test "x$enable_all_elements" = xyes -a "x$enableval" '!=' 'no' && enableval=yes
28984 +    test -d "$srcdir/elements/$i" -a "$enableval" = "yes" && element_groups="$element_groups $i"
28985 +done
28986 +
28987 +
28988 +
28989 +dnl
28990 +dnl How to build bsdmodule driver?
28991 +dnl
28992 +
28993 +AC_ARG_WITH(freebsd, [[  --with-freebsd[=SRC,INC] FreeBSD source code is in SRC [/usr/src/sys],
28994 +                          include directory is INC [/usr/include]]],
28995 +  [freebsddir=$withval; if test -z "$withval" -o "$withval" = yes; then freebsddir=/usr/src/sys,/usr/include; fi],
28996 +  freebsddir=NONE)
28997 +
28998 +if test "x$freebsddir" = xNONE; then
28999 +  if test -d /usr/src/sys -a -d /usr/include; then
29000 +    freebsddir=/usr/src/sys,/usr/include
29001 +  elif test "x$enable_bsdmodule" = xyes; then
29002 +    AC_MSG_WARN([
29003 +=========================================
29004 +
29005 +Can't find /usr/src/sys and/or /usr/include, so I'm not compiling
29006 +the bsdmodule driver.  (You may need the --with-freebsd=DIR option.)
29007 +
29008 +=========================================])
29009 +  fi
29010 +fi
29011 +
29012 +freebsd_srcdir=`echo "$freebsddir," | sed -e 's/,.*//'`
29013 +freebsd_includedir=`echo "$freebsddir,/usr/include," | sed -e 's/^[[^,]]*,\([[^,]]*\),.*$/\1/'`
29014 +
29015 +if test "x$freebsddir" = xNONE -o "x$freebsddir" = xno -o "x$enable_bsdmodule" != xyes; then
29016 +  ac_have_bsd_kernel=n
29017 +  freebsddir=NONE
29018 +elif expr '(' "_$freebsd_includedir" : '_[[^/\\]]' ')' '|' '(' "_$freebsd_srcdir" : '_[[^/\\]]' ')'; then 
29019 +  AC_MSG_ERROR([
29020 +=========================================
29021 +
29022 +The --with-freebsd directories $freebsd_srcdir,$freebsd_includedir
29023 +are relative.  You must supply absolute paths starting with /.
29024 +
29025 +=========================================])
29026 +elif test -r $freebsd_includedir/net/if_var.h -a -r $freebsd_srcdir/kern/vnode_if.src; then
29027 +  ac_have_bsd_kernel=y
29028 +else
29029 +  AC_MSG_ERROR([
29030 +=========================================
29031 +
29032 +Can't find $freebsd_includedir/net/if_var.h and/or
29033 +$freebsd_srcdir/kern/vnode_if.src.  Are you sure $freebsd_srcdir
29034 +and $freebsd_includedir contain FreeBSD kernel source?
29035 +
29036 +=========================================])
29037 +fi
29038 +
29039 +AC_SUBST(freebsd_srcdir)
29040 +AC_SUBST(freebsd_includedir)
29041 +AC_DEFINE_UNQUOTED(FREEBSD_INCLUDEDIR, "${freebsd_includedir}")
29042 +
29043 +
29044 +dnl
29045 +dnl check whether target is Linux
29046 +dnl
29047 +
29048 +AC_CACHE_CHECK([whether we are compiling for Linux], [ac_cv_under_linux],
29049 +    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[#ifndef __linux__
29050 +#error "fuckers! fuckers!"
29051 +#endif
29052 +return 0;]])], ac_cv_under_linux=yes, ac_cv_under_linux=no)])
29053 +
29054 +
29055 +dnl
29056 +dnl functions
29057 +dnl
29058 +
29059 +AC_LANG_C
29060 +AC_REPLACE_FUNCS(strerror)
29061 +AC_CHECK_FUNCS(snprintf strtoul tcgetpgrp vsnprintf)
29062 +AC_LANG_CPLUSPLUS
29063 +
29064 +
29065 +dnl
29066 +dnl integer types, endianness, int64, addressable va_list
29067 +dnl
29068 +
29069 +AC_ARG_ENABLE(int64, [  --disable-int64         disable 64-bit integer support], :, enable_int64=yes)
29070 +
29071 +AC_CHECK_SIZEOF(int)
29072 +AC_CHECK_SIZEOF(long)
29073 +CLICK_CHECK_INTEGER_TYPES
29074 +CLICK_CHECK_ALIGNMENT
29075 +if test "x$enable_int64" = xyes; then
29076 +    AC_CHECK_SIZEOF(long long)
29077 +    CLICK_CHECK_INT64_TYPES
29078 +fi
29079 +AC_CHECK_SIZEOF([struct timeval])
29080 +AC_CHECK_TYPES([struct timespec], have_timespec=yes, have_timespec=no)
29081 +if test "x$have_timespec" = xyes; then
29082 +    AC_CHECK_SIZEOF([struct timespec])
29083 +fi
29084 +CLICK_CHECK_ENDIAN
29085 +CLICK_CHECK_SIGNED_SHIFT
29086 +CLICK_CHECK_ADDRESSABLE_VA_LIST
29087 +CLICK_CHECK_INTEGER_BUILTINS
29088 +
29089 +
29090 +dnl
29091 +dnl nanosecond-precision timestamps
29092 +dnl
29093 +
29094 +AC_ARG_ENABLE(nanotimestamp, [  --enable-nanotimestamp  enable nanosecond timestamps])
29095 +if test "x$enable_nanotimestamp" = xyes; then
29096 +    AC_DEFINE(HAVE_NANOTIMESTAMP_ENABLED)
29097 +fi
29098 +
29099 +
29100 +dnl
29101 +dnl check whether tools should be built for host or build
29102 +dnl
29103 +
29104 +AC_ARG_ENABLE(tools,
29105 +  [[  --enable-tools=WHERE    enable tools (host/build/mixed/no) [mixed]]],
29106 +  :, enable_tools=mixed)
29107 +
29108 +if test "$enable_tools" != mixed -a "$enable_tools" != host -a "$enable_tools" != build -a "$enable_tools" != no; then
29109 +  AC_MSG_ERROR([
29110 +=========================================
29111 +
29112 +Bad value for --enable-tools.  Try 'host', 'build', 'mixed', or 'no'.
29113 +
29114 +=========================================])
29115 +elif test "$enable_tools" = no; then
29116 +  HOST_TOOLS=host
29117 +elif test "$cross_compiling" = no -o "$enable_tools" = host; then
29118 +  HOST_TOOLS=host
29119 +else
29120 +  dnl This is wrong!! Should at least check that HOST_CC and HOST_CXX work.
29121 +  AC_CHECK_PROGS(BUILD_CC, gcc)
29122 +  AC_CHECK_PROGS(BUILD_CXX, g++)
29123 +  CLICK_PROG_BUILD_CXX
29124 +  AC_CHECK_PROGS(BUILD_AR, ar)
29125 +  AC_CHECK_PROGS(BUILD_RANLIB, ranlib, :)
29126 +  HOST_TOOLS=$enable_tools
29127 +fi
29128 +AC_SUBST(HOST_TOOLS)
29129 +
29130 +
29131 +dnl
29132 +dnl headers, event detection, dynamic linking
29133 +dnl
29134 +
29135 +AC_CHECK_HEADERS(unistd.h termio.h netdb.h sys/event.h pwd.h grp.h)
29136 +CLICK_CHECK_POLL_H
29137 +AC_CHECK_FUNCS(sigaction)
29138 +
29139 +AC_CHECK_FUNCS(kqueue, have_kqueue=yes)
29140 +if test "x$have_kqueue" = xyes; then
29141 +    AC_CACHE_CHECK([whether EV_SET last argument is void *], [ac_cv_ev_set_udata_pointer],
29142 +       [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
29143 +#include <sys/event.h>
29144 +#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])])
29145 +    if test $ac_cv_ev_set_udata_pointer = yes; then
29146 +       AC_DEFINE([HAVE_EV_SET_UDATA_POINTER], [1], [Define if the last argument to EV_SET has pointer type.])
29147 +    fi
29148 +fi
29149 +
29150 +AC_ARG_ENABLE(dynamic-linking, [  --disable-dynamic-linking disable dynamic linking], :, enable_dynamic_linking=yes)
29151 +
29152 +if test "x$enable_dynamic_linking" = xyes; then
29153 +    CLICK_CHECK_DYNAMIC_LINKING
29154 +    if test "$HOST_TOOLS" != host -a "$enable_tools" != no; then
29155 +       CLICK_CHECK_BUILD_DYNAMIC_LINKING
29156 +    fi
29157 +fi
29158 +
29159 +
29160 +dnl
29161 +dnl sockets
29162 +dnl
29163 +
29164 +AC_LANG_C
29165 +SOCKET_LIBS=
29166 +if test "$enable_userlevel" = yes; then
29167 +    savelibs="$LIBS"; LIBS=
29168 +    AC_SEARCH_LIBS(gethostbyname, nsl, , , $savelibs)
29169 +    AC_SEARCH_LIBS(connect, socket, , , $savelibs)
29170 +    SOCKET_LIBS="$LIBS"; LIBS="$savelibs"
29171 +
29172 +    AC_CACHE_CHECK([whether accept() uses socklen_t], [ac_cv_accept_socklen_t],
29173 +           [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
29174 +#include <sys/socket.h>
29175 +]], [[socklen_t sl; (void) accept(0, (struct sockaddr *) 0, &sl);]])],
29176 +       ac_cv_accept_socklen_t=yes, ac_cv_accept_socklen_t=no)])
29177 +    if test "$ac_cv_accept_socklen_t" = yes; then
29178 +       AC_DEFINE([HAVE_ACCEPT_SOCKLEN_T], [1], [Define if accept() uses socklen_t.])
29179 +    fi
29180 +fi
29181 +AC_SUBST(SOCKET_LIBS)
29182 +AC_LANG_CPLUSPLUS
29183 +
29184 +
29185 +dnl
29186 +dnl large file support
29187 +dnl
29188 +
29189 +CLICK_CHECK_LARGE_FILE_SUPPORT
29190 +
29191 +
29192 +dnl
29193 +dnl mmap
29194 +dnl
29195 +
29196 +AC_LANG_C
29197 +AC_CHECK_HEADERS(sys/mman.h)
29198 +AC_FUNC_MMAP
29199 +AC_LANG_CPLUSPLUS
29200 +AC_CHECK_FUNCS(madvise)
29201 +AC_CHECK_DECLS(madvise, [], [], [#if HAVE_SYS_MMAN_H
29202 +#include <sys/types.h>
29203 +#include <sys/mman.h>
29204 +#endif])
29205 +
29206 +
29207 +dnl
29208 +dnl objects required by element collections
29209 +dnl
29210 +
29211 +EXTRA_DRIVER_OBJS=
29212 +EXTRA_TOOL_OBJS=
29213 +if test "x$enable_ip6" = xyes; then
29214 +    EXTRA_DRIVER_OBJS="ip6address.o ip6flowid.o ip6table.o $EXTRA_DRIVER_OBJS"
29215 +    EXTRA_TOOL_OBJS="ip6address.o $EXTRA_TOOL_OBJS"
29216 +fi
29217 +AC_SUBST(EXTRA_DRIVER_OBJS)
29218 +AC_SUBST(EXTRA_TOOL_OBJS)
29219 +
29220 +
29221 +dnl
29222 +dnl stuff in the linux kernel
29223 +dnl
29224 +
29225 +if test $ac_have_linux_kernel = y; then
29226 +
29227 +dnl Look for System.map
29228 +
29229 +if test "$linux_system_map" = NONE; then
29230 +    linux_system_map=$linuxdir/System.map
29231 +    if test "x$linux_system_map_boot" != xno -a ! -f "$linux_system_map"; then
29232 +       linux_system_map=/boot/System.map-"$linux_system_map_boot"
29233 +    fi
29234 +fi
29235 +
29236 +if test ! -f "$linux_system_map"; then
29237 +    if test "x$enable_linuxmodule_default" = xyes; then
29238 +       AC_MSG_WARN([
29239 +=========================================
29240 +
29241 +Can't find Linux System.map file '$linux_system_map',
29242 +so I won't compile the linuxmodule driver.
29243 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
29244 +
29245 +=========================================])
29246 +       ac_have_linux_kernel=no
29247 +    else
29248 +       AC_MSG_ERROR([
29249 +=========================================
29250 +
29251 +Can't find Linux System.map file '$linux_system_map'.
29252 +(You may need the --with-linux=DIR and/or --with-linux-map=MAP options.)
29253 +
29254 +=========================================])
29255 +    fi
29256 +fi
29257 +
29258 +fi
29259 +
29260 +dnl Check for Linux 2.6
29261 +
29262 +if test $ac_have_linux_kernel = y; then
29263 +
29264 +AC_CACHE_CHECK([for Linux 2.6], [ac_cv_linux26],
29265 +    [if grep '^PATCHLEVEL[     ]*=[    ]*6' $linuxdir/Makefile >/dev/null 2>&1; then ac_cv_linux26=1; else ac_cv_linux26=0; fi])
29266 +LINUXMODULE_2_6=$ac_cv_linux26
29267 +AC_SUBST(LINUXMODULE_2_6)
29268 +if test $LINUXMODULE_2_6 = 1; then
29269 +    AC_DEFINE([HAVE_LINUXMODULE_2_6], [1], [Define if the Click linuxmodule is compiled for a 2.6 kernel.])
29270 +fi
29271 +
29272 +AC_CACHE_CHECK(for Click Linux kernel extensions, ac_cv_click_kernel,
29273 +[if grep register_net_in $linux_system_map >/dev/null 2>&1; then
29274 +    ac_cv_click_kernel=yes
29275 +else ac_cv_click_kernel=no; fi])
29276 +if test $ac_cv_click_kernel = yes; then
29277 +    AC_DEFINE(HAVE_CLICK_KERNEL)
29278 +fi
29279 +
29280 +AC_CACHE_CHECK(for Click Linux kernel extensions for transmit notification, ac_cv_click_kernel_tx_notify,
29281 +[if grep register_net_tx $linux_system_map >/dev/null 2>&1; then
29282 +    ac_cv_click_kernel_tx_notify=yes
29283 +else ac_cv_click_kernel_tx_notify=no; fi])
29284 +if test $ac_cv_click_kernel_tx_notify = yes; then
29285 +    AC_DEFINE(HAVE_CLICK_KERNEL_TX_NOTIFY)
29286 +fi
29287 +
29288 +AC_CACHE_CHECK(for read_net_skbcount kernel extension, ac_cv_linux_read_net_skbcount,
29289 +[if grep read_net_skbcount $linux_system_map >/dev/null 2>&1; then
29290 +  ac_cv_linux_read_net_skbcount=yes
29291 +else ac_cv_linux_read_net_skbcount=no; fi])
29292 +if test $ac_cv_linux_read_net_skbcount = yes; then
29293 +    AC_DEFINE(HAVE_LINUX_READ_NET_SKBCOUNT)
29294 +fi
29295 +
29296 +AC_CACHE_CHECK(for strlen kernel symbol, ac_cv_linux_strlen_exposed,
29297 +[if grep ' strlen' $linux_system_map >/dev/null 2>&1; then
29298 +  ac_cv_linux_strlen_exposed=yes
29299 +else ac_cv_linux_strlen_exposed=no; fi])
29300 +if test $ac_cv_linux_strlen_exposed = yes; then
29301 +    AC_DEFINE(HAVE_LINUX_STRLEN_EXPOSED)
29302 +fi
29303 +
29304 +AC_CACHE_CHECK(for tulip_interrupt_hook kernel symbol, ac_cv_linux_tulip_intr_hook,
29305 +[if grep ' tulip_interrupt_hook' $linux_system_map >/dev/null 2>&1; then
29306 +  ac_cv_linux_tulip_intr_hook=yes
29307 +else ac_cv_linux_tulip_intr_hook=no; fi])
29308 +if test $ac_cv_linux_tulip_intr_hook = yes; then
29309 +    AC_DEFINE(HAVE_LINUX_TULIP_INTERRUPT_HOOK)
29310 +fi
29311 +
29312 +AC_CACHE_CHECK(for device polling kernel extension, ac_cv_linux_poll_extension,
29313 +[if grep polling $linuxdir/include/linux/netdevice.h >/dev/null 2>&1; then
29314 +  ac_cv_linux_poll_extension=yes
29315 +else ac_cv_linux_poll_extension=no; fi])
29316 +if test $ac_cv_linux_poll_extension = yes; then
29317 +    AC_DEFINE(HAVE_LINUX_POLLING)
29318 +fi
29319 +
29320 +AC_CACHE_CHECK(for atomic_set_mask, ac_cv_linux_atomic_set_mask,
29321 +[if grep atomic_set_mask $linuxdir/include/asm/atomic.h >/dev/null 2>&1; then
29322 +  ac_cv_linux_atomic_set_mask=yes
29323 +else ac_cv_linux_atomic_set_mask=no; fi])
29324 +if test $ac_cv_linux_atomic_set_mask = yes; then
29325 +    AC_DEFINE(HAVE_LINUX_ATOMIC_SET_MASK)
29326 +fi
29327 +
29328 +AC_CACHE_CHECK(for SMP, ac_cv_smp,
29329 +[if grep "#define CONFIG_SMP 1" $linuxdir/include/linux/autoconf.h >/dev/null 2>&1; then
29330 +  ac_cv_smp=yes
29331 +else ac_cv_smp=no; fi])
29332 +if test $ac_cv_smp = yes; then
29333 +    AC_DEFINE(__SMP__)
29334 +    KERNEL_CXX="$KERNEL_CXX -D__SMP__"
29335 +fi
29336 +
29337 +AC_CACHE_CHECK(for <asm/alternative.h>, ac_cv_linux_asm_alternative_h,
29338 +[if test -r $linuxdir/include/asm/alternative.h >/dev/null 2>&1; then
29339 +  ac_cv_linux_asm_alternative_h=yes
29340 +else ac_cv_linux_asm_alternative_h=no; fi])
29341 +if test $ac_cv_linux_asm_alternative_h = yes; then
29342 +    AC_DEFINE(HAVE_LINUX_ASM_ALTERNATIVE_H)
29343 +fi
29344 +
29345 +fi
29346 +
29347 +
29348 +dnl
29349 +dnl stuff in the bsd kernel
29350 +dnl
29351 +
29352 +if test $ac_have_bsd_kernel = y; then
29353 +    KERNEL_CXX="$KERNEL_CXX -fpermissive"
29354 +    AC_CACHE_CHECK(FreeBSD version, ac_cv_freebsd_version, [
29355 +       save_flags="$CPPFLAGS"
29356 +       CPPFLAGS="$CPPFLAGS -I$freebsd_includedir"
29357 +       AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <sys/param.h>
29358 +#if __FreeBSD_version < 500000
29359 +#include <NONEXISTENT_FILE>
29360 +#endif]])], ac_cv_freebsd_version=yes, ac_cv_freebsd_version=no)
29361 +       CPPFLAGS="$save_flags"])
29362 +    if test $ac_cv_freebsd_version = yes; then
29363 +       AC_DEFINE(HAVE_CLICK_BSD_KERNEL)
29364 +       AC_DEFINE(HAVE_BSD_POLLING)
29365 +    else
29366 +       AC_MSG_WARN([
29367 +=========================================
29368 +
29369 +Your version of FreeBSD is old.  Click works with FreeBSD 5.x and later.
29370 +
29371 +=========================================])
29372 +    fi
29373 +fi
29374 +
29375 +
29376 +dnl
29377 +dnl type of scheduling
29378 +dnl
29379 +
29380 +AC_ARG_ENABLE(stride, [  --disable-stride        disable stride scheduler], :, enable_stride=yes)
29381 +if test $enable_stride = yes; then
29382 +    AC_DEFINE(HAVE_STRIDE_SCHED)
29383 +fi
29384 +
29385 +AC_ARG_ENABLE(task-heap, [  --enable-task-heap      use heap for task list], :, enable_task_heap=no)
29386 +if test $enable_task_heap = yes; then
29387 +    AC_DEFINE(HAVE_TASK_HEAP)
29388 +fi
29389 +
29390 +
29391 +dnl
29392 +dnl debugging malloc
29393 +dnl
29394 +
29395 +AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        enable debugging malloc], :, enable_dmalloc=no)
29396 +if test $enable_dmalloc = yes; then
29397 +    AC_DEFINE(CLICK_DMALLOC)
29398 +fi
29399 +
29400 +
29401 +dnl
29402 +dnl use Intel-specific machine instructions
29403 +dnl
29404 +
29405 +AC_ARG_ENABLE(intel-cpu, [  --enable-intel-cpu      enable Intel-specific machine instructions], :, enable_intel_cpu=no)
29406 +if test $enable_intel_cpu = yes; then
29407 +    AC_DEFINE(HAVE_INTEL_CPU)
29408 +fi
29409 +
29410 +
29411 +dnl
29412 +dnl kernel interfaces
29413 +dnl
29414 +
29415 +AC_CHECK_HEADERS(linux/if_tun.h net/if_tun.h net/if_tap.h net/bpf.h)
29416 +
29417 +
29418 +dnl
29419 +dnl possible drivers
29420 +dnl
29421 +
29422 +POSSIBLE_DRIVERS=
29423 +for i in bsdmodule exopc linuxmodule ns userlevel; do
29424 +    test -f $srcdir/$i/Makefile.in && POSSIBLE_DRIVERS="$POSSIBLE_DRIVERS $i"
29425 +done
29426 +AC_SUBST(POSSIBLE_DRIVERS)
29427 +
29428 +
29429 +dnl
29430 +dnl default drivers
29431 +dnl
29432 +
29433 +DRIVERS=
29434 +AC_SUBST(DRIVERS)
29435 +
29436 +HAVE_USERLEVEL_DRIVER=0
29437 +AC_SUBST(HAVE_USERLEVEL_DRIVER)
29438 +HAVE_LINUXMODULE_DRIVER=0
29439 +AC_SUBST(HAVE_LINUXMODULE_DRIVER)
29440 +HAVE_BSDMODULE_DRIVER=0
29441 +AC_SUBST(HAVE_BSDMODULE_DRIVER)
29442 +
29443 +OTHER_TARGETS=
29444 +AC_SUBST(OTHER_TARGETS)
29445 +
29446 +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
29447 +    test -d $srcdir/tools/$i &&        \
29448 +       TOOLDIRS="$TOOLDIRS $i" TOOL_TARGETS="$TOOL_TARGETS $i"
29449 +done
29450 +for i in click-install; do
29451 +    test -d $srcdir/tools/$i && TOOLDIRS="$TOOLDIRS $i"
29452 +done
29453 +AC_SUBST(TOOLDIRS)
29454 +AC_SUBST(TOOL_TARGETS)
29455 +
29456 +
29457 +dnl pcap library
29458 +dnl note: no longer need pcap under Linux
29459 +
29460 +if test "$enable_userlevel" = yes; then
29461 +    CLICK_CHECK_LIBPCAP
29462 +    if test "$HAVE_PCAP" != yes -a "$ac_cv_under_linux" != yes; then
29463 +       AC_MSG_WARN([
29464 +=========================================
29465 +
29466 +pcap.h and/or -lpcap not found; user-level driver can't steal packets.
29467 +
29468 +=========================================])
29469 +    fi
29470 +    DRIVERS="$DRIVERS userlevel"
29471 +    AC_DEFINE(HAVE_USERLEVEL_DRIVER)
29472 +    HAVE_USERLEVEL_DRIVER=1
29473 +fi
29474 +
29475 +
29476 +dnl other user-level specifics
29477 +
29478 +AC_CACHE_CHECK([whether struct if_data has ifi_datalen], [ac_cv_if_data_ifi_datalen],
29479 +    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <net/if.h>
29480 +#include <net/if_var.h>
29481 +]], [[struct if_msghdr ifm; ifm.ifm_data.ifi_datalen = 0;]])], ac_cv_if_data_ifi_datalen=yes, ac_cv_if_data_ifi_datalen=no)])
29482 +if test "x$ac_cv_if_data_ifi_datalen" = xyes; then
29483 +    AC_DEFINE([HAVE_IF_DATA_IFI_DATALEN], [1], [Define if 'struct if_data' has an 'ifi_datalen' member.])
29484 +fi
29485 +
29486 +AC_CACHE_CHECK([whether struct sockaddr_in has sin_len], [ac_cv_sockaddr_in_sin_len],
29487 +    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>
29488 +#include <netinet/in.h>
29489 +]], [[struct sockaddr_in sin; sin.sin_len = 0;]])], ac_cv_sockaddr_in_sin_len=yes, ac_cv_sockaddr_in_sin_len=no)])
29490 +if test "x$ac_cv_sockaddr_in_sin_len" = xyes; then
29491 +    AC_DEFINE([HAVE_SOCKADDR_IN_SIN_LEN], [1], [Define if 'struct sockaddr_in' has a 'sin_len' member.])
29492 +fi
29493 +
29494 +
29495 +dnl PlanetLab "Privileged Operations" library
29496 +
29497 +explicit_proper=yes
29498 +AC_ARG_WITH(proper, [[  --with-proper[=PREFIX]  use PlanetLab Proper library (optional)]],
29499 +  [properprefix=$withval; if test -z "$withval" -o "$withval" = yes; then properprefix=; fi],
29500 +  [properprefix=no; explicit_proper=no])
29501 +if test "$properprefix" != no; then
29502 +    dnl Proper requires libcurl
29503 +    dnl AC_CHECK_HEADER(curl/curl.h, have_curl_h=yes, have_curl_h=no)
29504 +    dnl AC_CHECK_LIB(curl, curl_easy_init)
29505 +
29506 +    saveflags="$CPPFLAGS"; test -n "$properprefix" && CPPFLAGS="$CPPFLAGS -I$properprefix/include"
29507 +    AC_CHECK_HEADER(prop.h, have_prop_h=yes, have_prop_h=no)
29508 +    CPPFLAGS="$saveflags"
29509 +    
29510 +    AC_LANG_C
29511 +    saveflags="$LDFLAGS"; test -n "$properprefix" && LDFLAGS="$LDFLAGS -L$properprefix/lib"
29512 +    AC_CHECK_LIB(proper, prop_open, have_libproper=yes, have_libproper=no)
29513 +    LDFLAGS="$saveflags"
29514 +    AC_LANG_CPLUSPLUS
29515 +
29516 +    if test $have_prop_h = yes -a $have_libproper = yes; then
29517 +       AC_DEFINE(HAVE_PROPER)
29518 +       test -n "$properprefix" && PROPER_INCLUDES="-I$properprefix/include" && PROPER_LIBS="-L$properprefix/lib"
29519 +       PROPER_LIBS="$PROPER_LIBS -lproper"
29520 +    elif test $explicit_proper = yes; then
29521 +       PROPER_INCLUDES= PROPER_LIBS=
29522 +       AC_MSG_ERROR([
29523 +=========================================
29524 +
29525 +You explicitly specified --with-proper, but I can't find the proper headers
29526 +and/or libraries where you said they would be.  Run again supplying
29527 +--without-proper or --with-proper=PREFIX.
29528 +
29529 +=========================================])
29530 +    fi
29531 +fi
29532 +AC_SUBST(PROPER_INCLUDES)
29533 +AC_SUBST(PROPER_LIBS)
29534 +
29535 +
29536 +dnl expat library
29537 +
29538 +explicit_expat=yes
29539 +AC_ARG_WITH(expat, [[  --with-expat[=PREFIX]   locate expat XML library (optional)]],
29540 +  [expatprefix=$withval; if test -z "$withval" -o "$withval" = yes; then expatprefix=; fi],
29541 +  expatprefix=; explicit_expat=no)
29542 +
29543 +XML2CLICK=
29544 +if test "$expatprefix" != no; then
29545 +    saveflags="$CPPFLAGS"; test -n "$expatprefix" && CPPFLAGS="$CPPFLAGS -I$expatprefix/include"
29546 +    AC_CHECK_HEADER(expat.h, have_expat_h=yes, have_expat_h=no)
29547 +    CPPFLAGS="$saveflags"
29548 +    
29549 +    AC_LANG_C
29550 +    saveflags="$LDFLAGS"; test -n "$expatprefix" && LDFLAGS="$LDFLAGS -L$expatprefix/lib"
29551 +    AC_CHECK_LIB(expat, XML_ParserCreateNS, have_libexpat=yes, have_libexpat=no)
29552 +    LDFLAGS="$saveflags"
29553 +
29554 +    if test $have_expat_h = yes -a $have_libexpat = yes; then
29555 +       AC_DEFINE(HAVE_EXPAT)
29556 +       XML2CLICK=xml2click
29557 +       test -n "$expatprefix" && EXPAT_INCLUDES="-I$expatprefix/include" && EXPAT_LIBS="-L$expatprefix/lib"
29558 +       EXPAT_LIBS="$EXPAT_LIBS -lexpat"
29559 +    elif test $explicit_expat = yes; then
29560 +       EXPAT_INCLUDES= EXPAT_LIBS=
29561 +       AC_MSG_ERROR([
29562 +=========================================
29563 +
29564 +You explicitly specified --with-expat, but I can't find the expat headers
29565 +and/or libraries where you said they would be.  Run again supplying
29566 +--without-expat or --with-expat=PREFIX.
29567 +
29568 +=========================================])
29569 +    fi
29570 +fi
29571 +AC_SUBST(XML2CLICK)
29572 +AC_SUBST(EXPAT_INCLUDES)
29573 +AC_SUBST(EXPAT_LIBS)
29574 +
29575 +
29576 +dnl check linuxmodule for Linux
29577 +
29578 +if test $ac_have_linux_kernel = y; then
29579 +
29580 +    dnl check for Linux 2.6 #includes
29581 +    if test $LINUXMODULE_2_6 = 1; then
29582 +       AC_MSG_CHECKING([for Linux 2.6 compilation flags])
29583 +       echo "include $linuxdir/Makefile
29584 +fwablongie:
29585 +       @echo \$(CFLAGS)" >conftest.mk
29586 +       make -C "${linuxdir}" M="`pwd`" -f "`pwd`/conftest.mk" --no-print-directory fwablongie >conftest.dat
29587 +       if test $? != 0; then
29588 +           AC_MSG_RESULT([not found])
29589 +           AC_MSG_ERROR([
29590 +==============================================
29591 +
29592 +Can't find Linux 2.6 compilation flags.
29593 +
29594 +==============================================])
29595 +       fi
29596 +       LINUX_CFLAGS="`sed -e s,-Iinclude,-I$linuxdir/include,g \
29597 +           -e 's,-W[^ ]*,,g' \
29598 +           -e 's,-Wno-pointer-sign,,g' \
29599 +           -e s,-fno-unit-at-a-time,,g \
29600 +           -e s,-Wstrict-prototypes,,g \
29601 +           -e s,-Wdeclaration-after-statement,,g \
29602 +           -e s,-fno-common,,g <conftest.dat`"
29603 +       AC_MSG_RESULT($LINUX_CFLAGS)
29604 +    else
29605 +       LINUX_CFLAGS=""
29606 +    fi
29607 +    AC_SUBST(LINUX_CFLAGS)
29608 +
29609 +
29610 +    SAVE_CXX="$CXX"
29611 +    CXX="$KERNEL_CXX"
29612 +    saveflags="$CPPFLAGS"
29613 +    CPPFLAGS="$saveflags -D__KERNEL__ -I$linuxdir/include $LINUX_CFLAGS"
29614 +
29615 +
29616 +    # CLICK_LINUXMODULE_PROLOGUE()
29617 +    AC_DEFUN([CLICK_LINUXMODULE_PROLOGUE], [[#if HAVE_LINUXMODULE_2_6
29618 +# define KBUILD_STR(s)         #s
29619 +# define KBUILD_BASENAME       KBUILD_STR(click)
29620 +# define KBUILD_MODNAME                KBUILD_STR(click)
29621 +#endif
29622 +#define new xxx_new
29623 +#define this xxx_this
29624 +#define delete xxx_delete
29625 +#define class xxx_class
29626 +#define virtual xxx_virtual
29627 +#define typename xxx_typename
29628 +#define private xxx_private
29629 +#define protected xxx_protected
29630 +#define public xxx_public
29631 +#define namespace xxx_namespace
29632 +#include <linux/autoconf.h>]])
29633 +
29634 +
29635 +    AC_CACHE_CHECK([for C++-includable kernel header files], [ac_cv_cxx_aware_system],
29636 +       [AC_LANG_CPLUSPLUS
29637 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29638 +#include <linux/signal.h>]], [[return 0]])], ac_cv_cxx_aware_system=yes, ac_cv_cxx_aware_system=no)
29639 +       ])
29640 +
29641 +
29642 +    dnl check whether -fpermissive is required
29643 +    if test $ac_cv_cxx_aware_system = yes; then
29644 +
29645 +       AC_CACHE_CHECK([whether -fpermissive is required], [ac_cv_f_permissive],
29646 +           [AC_LANG_CPLUSPLUS
29647 +           AC_LINK_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29648 +#include <linux/skbuff.h>]], [[]])], ac_cv_f_permissive=no, ac_cv_f_permissive=yes)])
29649 +
29650 +       if test $ac_cv_f_permissive = yes; then
29651 +           CXX="$KERNEL_CXX -fpermissive"
29652 +           AC_CACHE_CHECK([whether -fpermissive is allowed], [ac_cv_f_permissive_ok],
29653 +               [AC_LANG_CPLUSPLUS
29654 +               AC_LINK_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29655 +#include <linux/skbuff.h>]], [[]])], ac_cv_f_permissive_ok=yes, ac_cv_f_permissive_ok=no)])
29656 +
29657 +           if test $ac_cv_f_permissive_ok = no; then
29658 +               ac_cv_cxx_aware_system=no
29659 +           else
29660 +               KERNEL_CXX="$KERNEL_CXX -fpermissive"
29661 +           fi
29662 +       fi
29663 +    fi
29664 +
29665 +
29666 +    AC_CACHE_CHECK([whether long and int64_t are the same type in the Linux kernel],
29667 +       ac_cv_long_64_linuxmodule, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29668 +#include <linux/types.h>
29669 +void f1(long) {
29670 +}
29671 +void f1(int64_t) { // will fail if long and int64_t are the same type
29672 +}]], [[]])], ac_cv_long_64_linuxmodule=no, ac_cv_long_64_linuxmodule=yes)])
29673 +    if test $ac_cv_long_64_linuxmodule = yes; then
29674 +       AC_DEFINE([HAVE_INT64_IS_LONG_LINUXMODULE], [1], [Define if 'int64_t' is typedefed to 'long' in linuxmodule.])
29675 +    fi
29676 +
29677 +
29678 +    AC_CACHE_CHECK([whether long long and int64_t are the same type in the Linux kernel],
29679 +       ac_cv_long_long_64_linuxmodule, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29680 +#include <linux/types.h>
29681 +void f1(long long) {
29682 +}
29683 +void f1(int64_t) { // will fail if long long and int64_t are the same type
29684 +}]], [[]])], ac_cv_long_long_64_linuxmodule=no, ac_cv_long_long_64_linuxmodule=yes)])
29685 +    if test $ac_cv_long_long_64_linuxmodule = yes; then
29686 +       AC_DEFINE([HAVE_INT64_IS_LONG_LONG_LINUXMODULE], [1], [Define if 'int64_t' is typedefed to 'long long' in linuxmodule.])
29687 +    fi
29688 +
29689 +
29690 +    AC_CACHE_CHECK([whether struct sk_buff has a security member], [ac_cv_linuxmodule_skbuff_security],
29691 +       [AC_LANG_C
29692 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29693 +#include <linux/skbuff.h>]],
29694 +[[extern struct sk_buff *s; s->security = 0;]])], 
29695 +       [ac_cv_linuxmodule_skbuff_security=yes], [ac_cv_linuxmodule_skbuff_security=no])])
29696 +    if test $ac_cv_linuxmodule_skbuff_security = yes; then
29697 +       AC_DEFINE([HAVE_LINUX_SKBUFF_SECURITY], [1], [Define if 'struct sk_buff' has a 'security' member.])
29698 +    fi
29699 +
29700 +    AC_CACHE_CHECK([whether struct sk_buff has an fclone member], [ac_cv_linuxmodule_skbuff_fclone],
29701 +       [AC_LANG_C
29702 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29703 +#include <linux/skbuff.h>]],
29704 +[[extern struct sk_buff *s; s->fclone = 0;]])], 
29705 +       [ac_cv_linuxmodule_skbuff_fclone=yes], [ac_cv_linuxmodule_skbuff_fclone=no])])
29706 +    if test $ac_cv_linuxmodule_skbuff_fclone = yes; then
29707 +       AC_DEFINE([HAVE_LINUX_SKBUFF_FCLONE], [1], [Define if 'struct sk_buff' has an 'fclone' member.])
29708 +    fi
29709 +
29710 +    AC_CACHE_CHECK([whether skb_shinfo has a tso_size member], [ac_cv_linuxmodule_skb_shinfo_tso_size],
29711 +       [AC_LANG_C
29712 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29713 +#include <linux/skbuff.h>]],
29714 +[[extern struct sk_buff *s; skb_shinfo(s)->tso_size = 0;]])],
29715 +       [ac_cv_linuxmodule_skb_shinfo_tso_size=yes], [ac_cv_linuxmodule_skb_shinfo_tso_size=no])])
29716 +    if test $ac_cv_linuxmodule_skb_shinfo_tso_size = yes; then
29717 +       AC_DEFINE([HAVE_LINUX_SKB_SHINFO_TSO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'tso_size' member.])
29718 +    fi
29719 +
29720 +    AC_CACHE_CHECK([whether skb_shinfo has a gso_size member], [ac_cv_linuxmodule_skb_shinfo_gso_size],
29721 +       [AC_LANG_C
29722 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29723 +#include <linux/skbuff.h>]],
29724 +[[extern struct sk_buff *s; skb_shinfo(s)->gso_size = 0;]])],
29725 +       [ac_cv_linuxmodule_skb_shinfo_gso_size=yes], [ac_cv_linuxmodule_skb_shinfo_gso_size=no])])
29726 +    if test $ac_cv_linuxmodule_skb_shinfo_gso_size = yes; then
29727 +       AC_DEFINE([HAVE_LINUX_SKB_SHINFO_GSO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'gso_size' member.])
29728 +    fi
29729 +
29730 +    AC_CACHE_CHECK([whether skb_shinfo has a ufo_size member], [ac_cv_linuxmodule_skb_shinfo_ufo_size],
29731 +       [AC_LANG_C
29732 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29733 +#include <linux/skbuff.h>]],
29734 +[[extern struct sk_buff *s; skb_shinfo(s)->ufo_size = 0;]])],
29735 +       [ac_cv_linuxmodule_skb_shinfo_ufo_size=yes], [ac_cv_linuxmodule_skb_shinfo_ufo_size=no])])
29736 +    if test $ac_cv_linuxmodule_skb_shinfo_ufo_size = yes; then
29737 +       AC_DEFINE([HAVE_LINUX_SKB_SHINFO_UFO_SIZE], [1], [Define if 'struct skb_shared_info' has a 'ufo_size' member.])
29738 +    fi
29739 +
29740 +    AC_CACHE_CHECK([whether skb_shinfo has an ip6_frag_id member], [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id],
29741 +       [AC_LANG_C
29742 +       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([CLICK_LINUXMODULE_PROLOGUE()[
29743 +#include <linux/skbuff.h>]],
29744 +[[extern struct sk_buff *s; skb_shinfo(s)->ip6_frag_id = 0;]])],
29745 +       [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=yes], [ac_cv_linuxmodule_skb_shinfo_ip6_frag_id=no])])
29746 +    if test $ac_cv_linuxmodule_skb_shinfo_ip6_frag_id = yes; then
29747 +       AC_DEFINE([HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID], [1], [Define if 'struct skb_shared_info' has an 'ip6_frag_id' member.])
29748 +    fi
29749 +
29750 +    AC_LANG_C
29751 +    AC_CHECK_DECL(net_enable_timestamp, [ac_cv_net_enable_timestamp=yes], [ac_cv_net_enable_timestamp=no], [CLICK_LINUXMODULE_PROLOGUE()[
29752 +#include <linux/skbuff.h>
29753 +#include <linux/netdevice.h>]])
29754 +    if test $ac_cv_net_enable_timestamp = yes; then
29755 +       AC_DEFINE([HAVE_NET_ENABLE_TIMESTAMP], [1], [Define if you have the 'net_enable_timestamp' function.])
29756 +    fi
29757 +
29758 +    AC_CHECK_DECL(netif_tx_lock, [ac_cv_netif_tx_lock=yes], [ac_cv_netif_tx_lock=no], [CLICK_LINUXMODULE_PROLOGUE()[
29759 +#include <linux/skbuff.h>
29760 +#include <linux/netdevice.h>]])
29761 +    if test $ac_cv_netif_tx_lock = yes; then
29762 +       AC_DEFINE([HAVE_NETIF_TX_LOCK], [1], [Define if you have the 'netif_tx_lock' function.])
29763 +    fi
29764 +
29765 +
29766 +    CXX="$SAVE_CXX"
29767 +    CPPFLAGS="$saveflags"
29768 +
29769 +    if test $ac_cv_cxx_aware_system = yes; then
29770 +       DRIVERS="$DRIVERS linuxmodule"
29771 +       TOOL_TARGETS="$TOOL_TARGETS click-install"
29772 +       AC_DEFINE(HAVE_LINUXMODULE_DRIVER)
29773 +       HAVE_LINUXMODULE_DRIVER=1
29774 +    elif test x$enable_linuxmodule_default = xyes; then
29775 +       AC_MSG_WARN([
29776 +=========================================
29777 +
29778 +Your Linux kernel header files cause errors when included by a C++ program,
29779 +so I won't try to compile the linuxmodule driver.
29780 +
29781 +There are two common reasons for this error:
29782 +1. You have not applied the Linux kernel patch that comes with this
29783 +   distribution.  Apply the right patch and try again.  See the INSTALL
29784 +   file for more information.
29785 +2. Your Linux configuration enables some functionality that is not yet
29786 +   covered by our patches.  Turn off this functionality and try again,
29787 +   or fix the error and tell us how you did it.  See the config.log file
29788 +   for more detailed information on the error.
29789 +
29790 +=========================================])
29791 +    else
29792 +       AC_MSG_ERROR([
29793 +=========================================
29794 +
29795 +Your Linux kernel header files cause errors when included by a C++ program.
29796 +
29797 +There are two common reasons for this error:
29798 +1. You have not applied the Linux kernel patch that comes with this
29799 +   distribution.  Apply the right patch and try again.  See the INSTALL
29800 +   file for more information.
29801 +2. Your Linux configuration enables some functionality that is not yet
29802 +   covered by our patches.  Turn off this functionality and try again,
29803 +   or fix the error and tell us how you did it.  See the config.log file
29804 +   for more detailed information on the error.
29805 +
29806 +=========================================])
29807 +    fi
29808 +fi
29809 +
29810 +
29811 +dnl check bsdmodule for BSD
29812 +
29813 +if test $ac_have_bsd_kernel = y; then
29814 +    DRIVERS="$DRIVERS bsdmodule"
29815 +    if echo "$DRIVERS" | grep linuxmodule >/dev/null 2>&1; then :; else
29816 +       TOOL_TARGETS="$TOOL_TARGETS click-install"
29817 +    fi
29818 +    AC_DEFINE(HAVE_BSDMODULE_DRIVER)
29819 +    HAVE_BSDMODULE_DRIVER=1
29820 +fi
29821 +
29822 +
29823 +dnl check ns
29824 +
29825 +if test "x$enable_nsclick" = xyes; then
29826 +    DRIVERS="$DRIVERS ns"
29827 +fi
29828 +
29829 +
29830 +dnl check tools
29831 +
29832 +if test "x$enable_tools" != xno; then
29833 +    OTHER_TARGETS="$OTHER_TARGETS tools"
29834 +fi
29835 +
29836 +
29837 +dnl
29838 +dnl programs needed for build process
29839 +dnl
29840 +
29841 +CLICK_PROG_INSTALL
29842 +CLICK_PROG_GMAKE
29843 +CLICK_PROG_AUTOCONF
29844 +CLICK_PROG_PERL5
29845 +
29846 +if test -z "$GMAKE"; then
29847 +    AC_MSG_ERROR([
29848 +==============================================
29849 +
29850 +Can't find GNU make.  Either put 'gmake' on your PATH and
29851 +rerun './configure', or set the GMAKE environment variable to
29852 +GNU make's pathname.
29853 +
29854 +==============================================])
29855 +fi
29856 +
29857 +
29858 +dnl
29859 +dnl Makeinfo, texi2dvi, install-info, pod2man
29860 +dnl
29861 +
29862 +AC_MSG_CHECKING(for working makeinfo)
29863 +MAKEINFO=${MAKEINFO-makeinfo}
29864 +if ($MAKEINFO --version) < /dev/null > conftest.out 2>&1; then
29865 +    if test `head -n 1 conftest.out | sed 's/^.* \([[0-9]][[0-9]]*\).*$/\1/'` -ge 4; then
29866 +       AC_MSG_RESULT(found)
29867 +    else
29868 +       MAKEINFO='$(conf_auxdir)/missing makeinfo'
29869 +       AC_MSG_RESULT(old)
29870 +    fi
29871 +else
29872 +    MAKEINFO='$(conf_auxdir)/missing makeinfo'
29873 +    AC_MSG_RESULT(missing)
29874 +fi
29875 +
29876 +AC_MSG_CHECKING(for working texi2dvi)
29877 +TEXI2DVI=${TEXI2DVI-texi2dvi}
29878 +if ($TEXI2DVI --version) < /dev/null > conftest.out 2>&1; then
29879 +    dnl Search for a good version of texi2dvi
29880 +    if test `head -n 1 conftest.out | sed 's/.*Texinfo \([[0-9]][[0-9]]*\).*/\1/'` -ge 4; then
29881 +       AC_MSG_RESULT(found)
29882 +    else
29883 +       TEXI2DVI='$(conf_auxdir)/missing texi2dvi'
29884 +       AC_MSG_RESULT(old)
29885 +    fi
29886 +else
29887 +    TEXI2DVI='$(conf_auxdir)/missing texi2dvi'
29888 +    AC_MSG_RESULT(missing)
29889 +fi
29890 +
29891 +dnl Assume any version of install-info is OK
29892 +if test ${INSTALL_INFO-xxx} = xxx; then
29893 +    AC_PATH_PROG(INSTALL_INFO, install-info, '$(conf_auxdir)/missing install-info',
29894 +       $PATH:/sbin:/usr/sbin:/usr/local/sbin)
29895 +fi
29896 +AC_MSG_CHECKING(for working install-info)
29897 +if ($INSTALL_INFO --version) < /dev/null > conftest.out 2>&1; then
29898 +    AC_MSG_RESULT(found)
29899 +else
29900 +    INSTALL_INFO='$(conf_auxdir)/missing install-info'
29901 +    AC_MSG_RESULT(missing)
29902 +fi
29903 +
29904 +AC_MSG_CHECKING(for working pod2man)
29905 +POD2MAN=${POD2MAN-pod2man}
29906 +if ($POD2MAN --help) < /dev/null > conftest.out 2>&1 && grep pod2man conftest.out >/dev/null 2>&1; then
29907 +    AC_MSG_RESULT(found)
29908 +else
29909 +    POD2MAN='$(conf_auxdir)/missing pod2man'
29910 +    AC_MSG_RESULT(missing)
29911 +fi
29912 +
29913 +
29914 +AC_SUBST(MAKEINFO)
29915 +AC_SUBST(TEXI2DVI)
29916 +AC_SUBST(INSTALL_INFO)
29917 +AC_SUBST(POD2MAN)
29918 +
29919 +
29920 +dnl
29921 +dnl set path variables
29922 +dnl
29923 +
29924 +shell_expand () {
29925 +    val=`eval echo '$'"$1"`
29926 +    while echo "x$val" | fgrep '$' >/dev/null 2>&1; do val=`eval echo "$val"`; done
29927 +    eval "$1='$val'"
29928 +}
29929 +
29930 +dnl Preset $prefix and $exec_prefix.
29931 +test "x$prefix" = xNONE && prefix=$ac_default_prefix
29932 +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
29933 +
29934 +dnl Expand 'infodir' to check for Red Hat
29935 +if test x$infodir = 'x${prefix}/info'; then
29936 +    test ! -d ${prefix}/info && test -d ${prefix}/share/info && infodir='${prefix}/share/info'
29937 +fi
29938 +
29939 +shell_expand bindir
29940 +shell_expand sbindir
29941 +shell_expand libdir
29942 +shell_expand datarootdir
29943 +shell_expand datadir
29944 +shell_expand includedir
29945 +
29946 +clickdatadir="$datadir/click"
29947 +AC_SUBST(clickdatadir)
29948 +
29949 +AC_DEFINE_UNQUOTED(CLICK_BINDIR, "$bindir")
29950 +AC_DEFINE_UNQUOTED(CLICK_LIBDIR, "$libdir")
29951 +AC_DEFINE_UNQUOTED(CLICK_DATADIR, "$clickdatadir")
29952 +
29953 +
29954 +dnl
29955 +dnl Provisions
29956 +dnl
29957 +
29958 +dnl start out with CPU
29959 +provisions="$target_cpu"
29960 +case "$target_cpu" in
29961 +    i386) :;;
29962 +    i486|i586) provisions="$provisions i386";;
29963 +    i686|i786) provisions="$provisions i386 i586";;
29964 +esac
29965 +
29966 +dnl add 'analysis' if analysis elements are available
29967 +if test "x$enable_analysis" = xyes; then
29968 +    provisions="$provisions analysis"
29969 +fi
29970 +
29971 +dnl add 'experimental' if --enable-experimental was supplied
29972 +if test "x$enable_experimental" = xyes; then
29973 +    provisions="$provisions experimental"
29974 +fi
29975 +
29976 +dnl add 'int64' if 64-bit integers are available
29977 +if test "x$have_int64_types" = xyes; then
29978 +    provisions="$provisions int64"
29979 +fi
29980 +
29981 +dnl add 'ip6' if ip6 elements are available
29982 +if test "x$enable_ip6" = xyes; then
29983 +    provisions="$provisions ip6"
29984 +fi
29985 +
29986 +dnl add 'linux' if compiling under linux
29987 +if test "x$ac_cv_under_linux" = xyes; then
29988 +    provisions="$provisions linux"
29989 +fi
29990 +
29991 +dnl add provision for linux kernel version
29992 +if test $ac_have_linux_kernel = y; then
29993 +    ac_linux_version_code=`grep LINUX_VERSION_CODE $linuxdir/include/linux/version.h | sed 's/^.*CODE //'`
29994 +    if test $ac_linux_version_code -ge 131584 -a $ac_linux_version_code -lt 131840; then
29995 +       provisions="$provisions linux_2_2"
29996 +    elif test $ac_linux_version_code -ge 132096 -a $ac_linux_version_code -lt 132352; then
29997 +       provisions="$provisions linux_2_4"
29998 +    elif test $ac_linux_version_code -ge 132608 -a $ac_linux_version_code -lt 132864; then
29999 +       provisions="$provisions linux_2_6"
30000 +    fi
30001 +fi
30002 +
30003 +dnl add 'pcap' if libpcap is available
30004 +if test "x$HAVE_PCAP" = xyes; then
30005 +    provisions="$provisions pcap"
30006 +fi
30007 +
30008 +dnl add 'smpclick' if compiled with --enable-multithread > 1
30009 +if test "$enable_multithread" -gt 1; then
30010 +    provisions="$provisions smpclick"
30011 +fi
30012 +
30013 +dnl add 'umultithread' if compiled with --enable-user-multithread
30014 +if test "x$enable_user_multithread" = xyes; then
30015 +    provisions="$provisions umultithread"
30016 +fi
30017 +
30018 +dnl add 'wifi' if wifi elements are available
30019 +if test "x$enable_wifi" = xyes; then
30020 +    provisions="$provisions wifi"
30021 +fi
30022 +
30023 +AC_SUBST(provisions)
30024 +
30025 +dnl
30026 +dnl Output
30027 +dnl
30028 +
30029 +config_files="Makefile click-buildtool click-compile config.mk installch tools/Makefile tools/lib/Makefile doc/Makefile etc/libclick/Makefile etc/pkg-config.mk"
30030 +for ac_dir in $POSSIBLE_DRIVERS; do
30031 +    config_files="$config_files $ac_dir/Makefile"
30032 +done
30033 +for ac_dir in $TOOLDIRS; do
30034 +    config_files="$config_files tools/$ac_dir/Makefile"
30035 +done
30036 +for ac_dir in etc include; do
30037 +    test ! -d "$ac_dir" && mkdir "$ac_dir"
30038 +done
30039 +
30040 +AC_OUTPUT_COMMANDS([for ac_file in $CONFIG_HEADERS; do
30041 +    test $ac_file = include/click/config.h:config.h.in && echo > stamp-h
30042 +done
30043 +for ac_file in $CONFIG_FILES; do
30044 +    test $ac_file = click-buildtool && chmod +x click-buildtool
30045 +    test $ac_file = click-compile && chmod +x click-compile
30046 +    test $ac_file = installch && chmod +x installch
30047 +done])
30048 +AC_OUTPUT($config_files)
30049 diff -Nurb click-1.6.0/diff click-1.6.0-27/diff
30050 --- click-1.6.0/diff    1969-12-31 19:00:00.000000000 -0500
30051 +++ click-1.6.0-27/diff 2009-01-26 14:37:19.000000000 -0500
30052 @@ -0,0 +1,780 @@
30053 +--- ./lib/string.cc.orig       2007-09-09 23:45:30.000000000 -0400
30054 ++++ ./lib/string.cc    2009-01-20 16:09:36.000000000 -0500
30055 +@@ -17,6 +17,7 @@
30056 +  * legally binding.
30057 +  */
30058
30059 ++#include <linux/autoconf.h>
30060 + #include <click/config.h>
30061 + #include <click/string.hh>
30062 + #include <click/straccum.hh>
30063 +--- ./lib/straccum.cc.orig     2007-08-28 01:08:36.000000000 -0400
30064 ++++ ./lib/straccum.cc  2009-01-20 20:23:30.000000000 -0500
30065 +@@ -17,6 +17,7 @@
30066 +  * legally binding.
30067 +  */
30068
30069 ++#include <linux/autoconf.h>
30070 + #include <click/config.h>
30071 + #include <click/straccum.hh>
30072 + #include <click/string.hh>
30073 +--- ./lib/ino.cc.orig  2007-09-11 15:39:22.000000000 -0400
30074 ++++ ./lib/ino.cc       2009-01-20 22:34:50.000000000 -0500
30075 +@@ -34,6 +34,16 @@
30076 +     _generation = 0;
30077 + }
30078
30079 ++#define DT_UNKNOWN      0
30080 ++#define DT_FIFO         1
30081 ++#define DT_CHR          2
30082 ++#define DT_DIR          4
30083 ++#define DT_BLK          6
30084 ++#define DT_REG          8
30085 ++#define DT_LNK          10
30086 ++#define DT_SOCK         12
30087 ++#define DT_WHT          14
30088 ++
30089 + void
30090 + ClickIno::cleanup()
30091 + {
30092 +--- ./lib/bitvector.cc.orig    2007-07-16 19:47:50.000000000 -0400
30093 ++++ ./lib/bitvector.cc 2009-01-20 22:28:27.000000000 -0500
30094 +@@ -17,6 +17,7 @@
30095 +  * legally binding.
30096 +  */
30097
30098 ++#include <linux/autoconf.h>
30099 + #include <click/config.h>
30100 + #include <click/bitvector.hh>
30101 + CLICK_DECLS
30102 +--- ./lib/nameinfo.cc.orig     2007-07-16 19:47:50.000000000 -0400
30103 ++++ ./lib/nameinfo.cc  2009-01-20 20:24:08.000000000 -0500
30104 +@@ -16,6 +16,7 @@
30105 +  * legally binding.
30106 +  */
30107
30108 ++#include <linux/autoconf.h>
30109 + #include <click/config.h>
30110 + #include <click/nameinfo.hh>
30111 + #include <click/glue.hh>
30112 +--- ./include/clicknet/ip.h.orig       2007-07-16 19:47:50.000000000 -0400
30113 ++++ ./include/clicknet/ip.h    2009-01-19 16:01:43.000000000 -0500
30114 +@@ -5,6 +5,7 @@
30115 + #include <click/cxxprotect.h>
30116 + CLICK_CXX_PROTECT
30117 + #if CLICK_LINUXMODULE
30118 ++#include <linux/autoconf.h>
30119 + # include <net/checksum.h>
30120 + # include <linux/in.h>
30121 + #else
30122 +--- ./include/click/glue.hh.orig       2007-09-12 18:24:50.000000000 -0400
30123 ++++ ./include/click/glue.hh    2009-01-19 16:05:45.000000000 -0500
30124 +@@ -15,6 +15,7 @@
30125 + # endif
30126 + # include <click/cxxprotect.h>
30127 + CLICK_CXX_PROTECT
30128 ++#include <linux/autoconf.h>
30129 + # ifdef WANT_MOD_USE_COUNT
30130 + #  define __NO_VERSION__
30131 + #  include <linux/module.h>
30132 +--- ./include/click/packet.hh.orig     2007-09-07 16:11:26.000000000 -0400
30133 ++++ ./include/click/packet.hh  2009-01-20 22:21:20.000000000 -0500
30134 +@@ -1,6 +1,7 @@
30135 + // -*- related-file-name: "../../lib/packet.cc" -*-
30136 + #ifndef CLICK_PACKET_HH
30137 + #define CLICK_PACKET_HH
30138 ++#include <linux/autoconf.h>
30139 + #include <click/ipaddress.hh>
30140 + #include <click/ip6address.hh>
30141 + #include <click/glue.hh>
30142 +@@ -452,7 +453,7 @@
30143 + Packet::mac_header() const
30144 + {
30145 + #if CLICK_LINUXMODULE
30146 +-    return skb()->mac.raw;
30147 ++    return skb_mac_header(skb());
30148 + #else
30149 +     return _mac;
30150 + #endif
30151 +@@ -462,7 +463,7 @@
30152 + Packet::network_header() const
30153 + {
30154 + #if CLICK_LINUXMODULE
30155 +-    return skb()->nh.raw;
30156 ++    return skb_network_header(skb());
30157 + #else
30158 +     return _nh;
30159 + #endif
30160 +@@ -472,7 +473,7 @@
30161 + Packet::transport_header() const
30162 + {
30163 + #if CLICK_LINUXMODULE
30164 +-    return skb()->h.raw;
30165 ++    return skb_transport_header(skb());
30166 + #else
30167 +     return _h;
30168 + #endif
30169 +@@ -567,7 +568,7 @@
30170 + # if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
30171 +     memcpy(&skb()->stamp, &timestamp, 8);
30172 + # else
30173 +-    skb_set_timestamp(skb(), &timestamp.timeval());
30174 ++    memcpy(&skb()->tstamp, &timestamp, 8);
30175 + # endif
30176 + #else
30177 +     _timestamp = timestamp;
30178 +@@ -904,7 +905,7 @@
30179 + Packet::set_mac_header(const unsigned char *h)
30180 + {
30181 + #if CLICK_LINUXMODULE /* Linux kernel module */
30182 +-    skb()->mac.raw = const_cast<unsigned char *>(h);
30183 ++    skb()->mac_header = const_cast<unsigned char *>(h);
30184 + #else                         /* User-space and BSD kernel module */
30185 +     _mac = const_cast<unsigned char *>(h);
30186 + #endif
30187 +@@ -914,8 +915,8 @@
30188 + Packet::set_mac_header(const unsigned char *h, uint32_t len)
30189 + {
30190 + #if CLICK_LINUXMODULE /* Linux kernel module */
30191 +-    skb()->mac.raw = const_cast<unsigned char *>(h);
30192 +-    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
30193 ++    skb()->mac_header = const_cast<unsigned char *>(h);
30194 ++    skb()->network_header = const_cast<unsigned char *>(h) + len;
30195 + #else                         /* User-space and BSD kernel module */
30196 +     _mac = const_cast<unsigned char *>(h);
30197 +     _nh = const_cast<unsigned char *>(h) + len;
30198 +@@ -956,8 +957,8 @@
30199 + Packet::set_network_header(const unsigned char *h, uint32_t len)
30200 + {
30201 + #if CLICK_LINUXMODULE /* Linux kernel module */
30202 +-    skb()->nh.raw = const_cast<unsigned char *>(h);
30203 +-    skb()->h.raw = const_cast<unsigned char *>(h) + len;
30204 ++    skb()->network_header = const_cast<unsigned char *>(h);
30205 ++    skb()->transport_header = const_cast<unsigned char *>(h) + len;
30206 + #else                         /* User-space and BSD kernel module */
30207 +     _nh = const_cast<unsigned char *>(h);
30208 +     _h = const_cast<unsigned char *>(h) + len;
30209 +@@ -968,7 +969,7 @@
30210 + Packet::set_network_header_length(uint32_t len)
30211 + {
30212 + #if CLICK_LINUXMODULE /* Linux kernel module */
30213 +-    skb()->h.raw = skb()->nh.raw + len;
30214 ++    skb()->transport_header = skb()->network_header + len;
30215 + #else                         /* User-space and BSD kernel module */
30216 +     _h = _nh + len;
30217 + #endif
30218 +@@ -1076,9 +1077,9 @@
30219 +   _h += (_h ? shift : 0);
30220 + #else
30221 +   struct sk_buff *mskb = skb();
30222 +-  mskb->mac.raw += (mskb->mac.raw ? shift : 0);
30223 +-  mskb->nh.raw += (mskb->nh.raw ? shift : 0);
30224 +-  mskb->h.raw += (mskb->h.raw ? shift : 0);
30225 ++  mskb->mac_header += (mskb->mac_header ? shift : 0);
30226 ++  mskb->network_header += (mskb->network_header ? shift : 0);
30227 ++  mskb->transport_header += (mskb->transport_header ? shift : 0);
30228 + #endif
30229 + }
30230
30231 +--- ./include/click/config-linuxmodule.h.orig  2009-01-19 15:07:24.000000000 -0500
30232 ++++ ./include/click/config-linuxmodule.h       2009-01-20 22:30:23.000000000 -0500
30233 +@@ -87,12 +87,13 @@
30234 + #endif
30235
30236 + /* Include integer type definitions. */
30237 ++# include <linux/autoconf.h>
30238 + #if !HAVE_LINUXMODULE_2_6
30239 + # include <linux/autoconf.h>
30240 + #endif
30241 + #include <linux/types.h>
30242 + typedef ptrdiff_t intptr_t;
30243 +-typedef unsigned long uintptr_t; /* XXX? */
30244 ++//typedef unsigned long uintptr_t; /* XXX? */
30245
30246 + /* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
30247 + #ifdef HAVE_INT64_IS_LONG_LINUXMODULE
30248 +@@ -114,11 +115,11 @@
30249 + #ifdef __cplusplus
30250
30251 + /* Declare operator new. */
30252 +-void *operator new(size_t) throw ();
30253 +-void *operator new[](size_t) throw ();
30254 ++void *operator new(unsigned int) throw ();
30255 ++void *operator new[](unsigned int) throw ();
30256
30257 + /* Provide placement new. */
30258 +-inline void *operator new(size_t, void *v) { return v; }
30259 ++inline void *operator new(unsigned int, void *v) { return v; }
30260 + #define HAVE_PLACEMENT_NEW 1
30261
30262 + /* Define macros that surround Click declarations. */
30263 +--- ./linuxmodule/Makefile.orig        2009-01-19 15:15:55.000000000 -0500
30264 ++++ ./linuxmodule/Makefile     2009-01-20 10:22:39.000000000 -0500
30265 +@@ -95,7 +95,7 @@
30266
30267 + CLICKDEFS = -DHAVE_CONFIG_H 
30268 + CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
30269 +-      -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
30270 ++      -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default
30271
30272 + CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
30273 +       $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
30274 +@@ -177,7 +177,7 @@
30275
30276 + CC = gcc -w -W -Wall
30277 + CPP = gcc -W -Wall -E
30278 +-CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
30279 ++CXX = g++ -w -W -fno-exceptions -fno-rtti  -D__SMP__
30280 + CXXCPP = g++ -W -Wall  -E
30281 + LD = ld
30282 + STRIP = strip
30283 +--- ./elements/linuxmodule/anydevice.cc.orig   2007-08-29 04:03:55.000000000 -0400
30284 ++++ ./elements/linuxmodule/anydevice.cc        2009-01-21 14:44:39.000000000 -0500
30285 +@@ -49,7 +49,7 @@
30286 + int
30287 + AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh)
30288 + {
30289 +-    _dev = dev_get_by_name(_devname.c_str());
30290 ++    _dev = dev_get_by_name(&init_net,_devname.c_str());
30291 +     _devname_exists = (bool) _dev;
30292 +     if (!_dev)
30293 +       _dev = dev_get_by_ether_address(_devname, this);
30294 +@@ -233,7 +233,7 @@
30295 +       return 0;
30296 +     read_lock(&dev_base_lock);
30297 +     net_device *dev;
30298 +-    for (dev = dev_base; dev; dev = dev->next)
30299 ++    for_each_netdev(&init_net, dev)//for (dev = dev_base; dev; dev = dev->next)
30300 +       if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)
30301 +           && memcmp(en, dev->dev_addr, 6) == 0) {
30302 +           dev_hold(dev);      // dev_get_by_name does dev_hold; so
30303 +--- ./elements/standard/addressinfo.cc.orig    2007-09-12 02:14:04.000000000 -0400
30304 ++++ ./elements/standard/addressinfo.cc 2009-01-21 13:08:40.000000000 -0500
30305 +@@ -272,7 +272,7 @@
30306 +     // if it's a device name, return a primary IP address
30307 + #if CLICK_LINUXMODULE
30308 + # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
30309 +-    net_device *dev = dev_get_by_name(s.c_str());
30310 ++    net_device *dev = dev_get_by_name(&init_net,s.c_str());
30311 +     if (dev) {
30312 +       bool found = false;
30313 +       in_device *in_dev = in_dev_get(dev);
30314 +@@ -383,7 +383,7 @@
30315 + # if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
30316 + #  define dev_put(dev) /* nada */
30317 + # endif
30318 +-    net_device *dev = dev_get_by_name(s.c_str());
30319 ++    net_device *dev = dev_get_by_name(&init_net,s.c_str());
30320 +     if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) {
30321 +       memcpy(store, dev->dev_addr, 6);
30322 +       dev_put(dev);
30323 +--- ./drivers/e1000-4.x/src/e1000_param.c.orig 2007-07-16 19:47:50.000000000 -0400
30324 ++++ ./drivers/e1000-4.x/src/e1000_param.c      2007-07-16 19:47:50.000000000 -0400
30325 +@@ -362,7 +362,7 @@
30326 +                       type: list_option,
30327 +                       name: "Flow Control",
30328 +                       err:  "reading default settings from EEPROM",
30329 +-                      def:  e1000_fc_default,
30330 ++                      def:  e1000_fc_none, /* RTM, was e1000_fc_default */
30331 +                       arg: { l: { nr: ARRAY_SIZE(fc_list), p: fc_list }}
30332 +               };
30333
30334 +--- ./drivers/e1000-4.x/src/e1000.h.orig       2007-07-16 19:47:50.000000000 -0400
30335 ++++ ./drivers/e1000-4.x/src/e1000.h    2007-07-16 19:47:50.000000000 -0400
30336 +@@ -150,6 +150,8 @@
30337
30338 + #define E1000_DESC_UNUSED(R) \
30339 + ((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count))
30340 ++#define E1000_RX_DESC_UNUSED(R) \
30341 ++((((R)->next_to_clean + (R)->count) - ((R)->next_to_use)) % ((R)->count))
30342
30343 + #define E1000_GET_DESC(R, i, type)    (&(((struct type *)((R).desc))[i]))
30344 + #define E1000_RX_DESC(R, i)           E1000_GET_DESC(R, i, e1000_rx_desc)
30345 +@@ -240,5 +242,7 @@
30346
30347 +       /* Semaphore for locking HW access vs. i2c-i8254x SMBUS driver */
30348 +       struct semaphore smbus_lock;
30349 ++
30350 ++        int do_poll_watchdog; /* Click polling */
30351 + };
30352 + #endif /* _E1000_H_ */
30353 +--- ./drivers/e1000-4.x/src/e1000_main.c.orig  2007-07-16 19:47:50.000000000 -0400
30354 ++++ ./drivers/e1000-4.x/src/e1000_main.c       2007-07-16 19:47:50.000000000 -0400
30355 +@@ -146,6 +146,7 @@
30356 + static void e1000_set_multi(struct net_device *netdev);
30357 + static void e1000_update_phy_info(unsigned long data);
30358 + static void e1000_watchdog(unsigned long data);
30359 ++void e1000_watchdog_1(struct e1000_adapter *adapter);
30360 + static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
30361 + static struct net_device_stats * e1000_get_stats(struct net_device *netdev);
30362 + static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
30363 +@@ -181,6 +182,16 @@
30364 + static int e1000_resume(struct pci_dev *pdev);
30365 + #endif
30366
30367 ++/* For Click polling */
30368 ++static int e1000_tx_pqueue(struct net_device *dev, struct sk_buff *skb);
30369 ++static int e1000_tx_start(struct net_device *dev);
30370 ++static int e1000_rx_refill(struct net_device *dev, struct sk_buff **);
30371 ++static int e1000_tx_eob(struct net_device *dev);
30372 ++static struct sk_buff *e1000_tx_clean(struct net_device *dev);
30373 ++static struct sk_buff *e1000_rx_poll(struct net_device *dev, int *want);
30374 ++static int e1000_poll_on(struct net_device *dev);
30375 ++static int e1000_poll_off(struct net_device *dev);
30376 ++
30377 + struct notifier_block e1000_notifier = {
30378 +       notifier_call:  e1000_notify_reboot,
30379 +       next:           NULL,
30380 +@@ -231,6 +242,8 @@
30381 +       printk(KERN_INFO "%s - version %s\n",
30382 +              e1000_driver_string, e1000_driver_version);
30383
30384 ++        printk(KERN_INFO " w/ Click polling\n");
30385 ++
30386 +       printk(KERN_INFO "%s\n", e1000_copyright);
30387
30388 +       ret = pci_module_init(&e1000_driver);
30389 +@@ -416,6 +429,17 @@
30390 +       netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid;
30391 + #endif
30392
30393 ++        /* Click - polling extensions */
30394 ++        netdev->polling = 0;
30395 ++        netdev->rx_poll = e1000_rx_poll;
30396 ++        netdev->rx_refill = e1000_rx_refill;
30397 ++        netdev->tx_queue = e1000_tx_pqueue;
30398 ++        netdev->tx_eob = e1000_tx_eob;
30399 ++        netdev->tx_start = e1000_tx_start;
30400 ++        netdev->tx_clean = e1000_tx_clean;
30401 ++        netdev->poll_off = e1000_poll_off;
30402 ++        netdev->poll_on = e1000_poll_on;
30403 ++
30404 +       netdev->irq = pdev->irq;
30405 +       netdev->mem_start = mmio_start;
30406 +       netdev->base_addr = adapter->hw.io_base;
30407 +@@ -1303,7 +1327,20 @@
30408 + static void
30409 + e1000_watchdog(unsigned long data)
30410 + {
30411 +-      struct e1000_adapter *adapter = (struct e1000_adapter *) data;
30412 ++  struct e1000_adapter *adapter = (struct e1000_adapter *) data;
30413 ++
30414 ++  if(adapter->netdev->polling){
30415 ++    adapter->do_poll_watchdog = 1;
30416 ++  } else {
30417 ++    e1000_watchdog_1(adapter);
30418 ++  }
30419 ++
30420 ++  mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
30421 ++}
30422 ++
30423 ++void
30424 ++e1000_watchdog_1(struct e1000_adapter *adapter)
30425 ++{
30426 +       struct net_device *netdev = adapter->netdev;
30427 +       struct e1000_desc_ring *txdr = &adapter->tx_ring;
30428 +       int i;
30429 +@@ -1388,9 +1425,6 @@
30430 +          time_after(jiffies, txdr->buffer_info[i].time_stamp + HZ) &&
30431 +          !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF))
30432 +               netif_stop_queue(netdev);
30433 +-
30434 +-      /* Reset the timer */
30435 +-      mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
30436 + }
30437
30438 + #define E1000_TX_FLAGS_CSUM           0x00000001
30439 +@@ -1893,8 +1927,18 @@
30440 +                       mod_timer(&adapter->watchdog_timer, jiffies);
30441 +               }
30442
30443 +-              e1000_clean_rx_irq(adapter);
30444 +-              e1000_clean_tx_irq(adapter);
30445 ++              /* 26.Jun.2004 - Do not print a message if we get an interrupt
30446 ++                   in polling mode.  Andy Van Maele reports that e1000
30447 ++                   adapters can share interrupts with other devices, such as
30448 ++                   other network cards.  Thus, it is not necessarily a problem
30449 ++                   if we get an interrupt; and printing a message is very
30450 ++                   expensive. So scrap it.  It might be better to keep a
30451 ++                   counter. */
30452 ++                if(!netdev->polling){
30453 ++                  e1000_clean_rx_irq(adapter);
30454 ++                  e1000_clean_tx_irq(adapter);
30455 ++                }
30456 ++
30457 +               i--;
30458
30459 + #ifdef E1000_COUNT_ICR
30460 +@@ -2533,4 +2577,335 @@
30461 +       return ret_val;
30462 + }
30463
30464 ++/* Click polling support */
30465 ++
30466 ++static struct sk_buff *
30467 ++e1000_rx_poll(struct net_device *dev, int *want)
30468 ++{
30469 ++  struct e1000_adapter *adapter = dev->priv;
30470 ++  struct pci_dev *pdev = adapter->pdev;
30471 ++  struct e1000_rx_desc *rx_desc;
30472 ++  int i;
30473 ++  uint32_t length;
30474 ++  struct sk_buff *skb;
30475 ++  uint8_t last_byte;
30476 ++  unsigned long flags;
30477 ++  struct sk_buff *skb_head = 0, *skb_last = 0;
30478 ++  int good;
30479 ++  int got = 0;
30480 ++
30481 ++  i = adapter->rx_ring.next_to_clean;
30482 ++  rx_desc = E1000_RX_DESC(adapter->rx_ring, i);
30483 ++
30484 ++  while(got < *want){
30485 ++    if((rx_desc->status & E1000_RXD_STAT_DD) == 0)
30486 ++      break;
30487 ++    pci_unmap_single(pdev, adapter->rx_ring.buffer_info[i].dma,
30488 ++                     adapter->rx_ring.buffer_info[i].length,
30489 ++                     PCI_DMA_FROMDEVICE);
30490 ++
30491 ++    skb = adapter->rx_ring.buffer_info[i].skb;
30492 ++    length = le16_to_cpu(rx_desc->length);
30493 ++    good = 1;
30494 ++
30495 ++    if(!(rx_desc->status & E1000_RXD_STAT_EOP))
30496 ++      good = 0;
30497 ++    
30498 ++    if(good && (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)){
30499 ++      last_byte = *(skb->data + length - 1);
30500 ++      if(TBI_ACCEPT(&adapter->hw,rx_desc->status,rx_desc->errors,length,
30501 ++                    last_byte)) {
30502 ++        spin_lock_irqsave(&adapter->stats_lock, flags);
30503 ++        e1000_tbi_adjust_stats(&adapter->hw, &adapter->stats,
30504 ++                               length, skb->data);
30505 ++        spin_unlock_irqrestore(&adapter->stats_lock, flags);
30506 ++        length--;
30507 ++      } else {
30508 ++        good = 0;
30509 ++      }
30510 ++    }
30511 ++
30512 ++    if(good){
30513 ++      skb_put(skb, length - CRC_LENGTH);
30514 ++      e1000_rx_checksum(adapter, rx_desc, skb);
30515 ++      skb_pull(skb, dev->hard_header_len);
30516 ++      if (got == 0) {
30517 ++        skb_head = skb;
30518 ++        skb_last = skb;
30519 ++        skb_last->next = NULL;
30520 ++      } else {
30521 ++        skb_last->next = skb;
30522 ++        skb->next = NULL;
30523 ++        skb_last = skb;
30524 ++      }
30525 ++      got++;
30526 ++    } else {
30527 ++      dev_kfree_skb(skb);
30528 ++    }
30529 ++    
30530 ++#if 0
30531 ++    memset(rx_desc, 0, 16);
30532 ++#endif
30533 ++
30534 ++#if 0
30535 ++    /*
30536 ++     * This mb() generates a "lock addl" even on a uniprocessor.
30537 ++     * It's slow (slows down ip forwarding by 15%?) and I do
30538 ++     * not believe it's needed.
30539 ++     */
30540 ++    mb();
30541 ++#endif
30542 ++    adapter->rx_ring.buffer_info[i].skb = NULL;
30543 ++    i = i + 1;
30544 ++    if(i >= adapter->rx_ring.count)
30545 ++      i = 0;
30546 ++    rx_desc = E1000_RX_DESC(adapter->rx_ring, i);
30547 ++  }
30548 ++
30549 ++  adapter->rx_ring.next_to_clean = i;
30550 ++  *want = got;
30551 ++
30552 ++  return skb_head;
30553 ++}
30554 ++
30555 ++int
30556 ++e1000_rx_refill(struct net_device *dev, struct sk_buff **skbs)
30557 ++{
30558 ++  struct e1000_adapter *adapter = dev->priv;
30559 ++  struct pci_dev *pdev = adapter->pdev;
30560 ++  struct e1000_rx_desc *rx_desc;
30561 ++  int i, nfilled = 0, last_filled = -1;
30562 ++  struct sk_buff *skb_list;
30563 ++
30564 ++  if(skbs == 0)
30565 ++    return E1000_RX_DESC_UNUSED(&adapter->rx_ring);
30566 ++
30567 ++  i = adapter->rx_ring.next_to_use;
30568 ++  skb_list = *skbs;
30569 ++  
30570 ++  while(adapter->rx_ring.buffer_info[i].skb == NULL && skb_list){
30571 ++    struct sk_buff *skb = skb_list;
30572 ++    skb_list = skb_list->next;
30573 ++    rx_desc = E1000_RX_DESC(adapter->rx_ring, i);
30574 ++    skb->dev = dev;
30575 ++    adapter->rx_ring.buffer_info[i].skb = skb;
30576 ++    adapter->rx_ring.buffer_info[i].length = adapter->rx_buffer_len;
30577 ++    adapter->rx_ring.buffer_info[i].dma =
30578 ++      pci_map_single(pdev, skb->data, adapter->rx_buffer_len,
30579 ++                     PCI_DMA_FROMDEVICE);
30580 ++    rx_desc->status = 0;
30581 ++    rx_desc->buffer_addr = cpu_to_le64(adapter->rx_ring.buffer_info[i].dma);
30582 ++    last_filled = i;
30583 ++    i = i + 1;
30584 ++    if(i >= adapter->rx_ring.count)
30585 ++      i = 0;
30586 ++    nfilled++;
30587 ++  }
30588 ++
30589 ++  *skbs = skb_list;
30590 ++
30591 ++  adapter->rx_ring.next_to_use = i;
30592 ++  if(nfilled){
30593 ++#if 0
30594 ++    mb();
30595 ++#endif
30596 ++    /*
30597 ++     * Intel driver code sets RDT to last filled slot.
30598 ++     * e1000 manual implies (I think) one beyond.
30599 ++     */
30600 ++    E1000_WRITE_REG(&adapter->hw, RDT, last_filled);
30601 ++  }
30602 ++
30603 ++  /*
30604 ++   * Update statistics counters, check link.
30605 ++   * do_poll_watchdog is set by the timer interrupt e1000_watchdog(),
30606 ++   * but we don't want to do the work in an interrupt (since it may
30607 ++   * happen while polling code is active), so defer it to here.
30608 ++   */
30609 ++  if(adapter->do_poll_watchdog){
30610 ++    adapter->do_poll_watchdog = 0;
30611 ++    e1000_watchdog_1(adapter);
30612 ++  }
30613 ++
30614 ++  return E1000_RX_DESC_UNUSED(&adapter->rx_ring);
30615 ++}
30616 ++
30617 ++static int
30618 ++e1000_tx_pqueue(struct net_device *netdev, struct sk_buff *skb)
30619 ++{
30620 ++  /*
30621 ++   * This function is just a streamlined version of
30622 ++   * return e1000_xmit_frame(skb, netdev);
30623 ++   */
30624 ++
30625 ++  struct e1000_adapter *adapter = netdev->priv;
30626 ++  struct pci_dev *pdev = adapter->pdev;
30627 ++  struct e1000_tx_desc *tx_desc;
30628 ++  int i, len, offset, txd_needed;
30629 ++  uint32_t txd_upper, txd_lower;
30630 ++
30631 ++  if(!netif_carrier_ok(netdev)) {
30632 ++    netif_stop_queue(netdev);
30633 ++    return 1;
30634 ++  }
30635 ++
30636 ++  txd_needed = TXD_USE_COUNT(skb->len, adapter->max_data_per_txd);
30637 ++
30638 ++  /* make sure there are enough Tx descriptors available in the ring */
30639 ++  if(E1000_DESC_UNUSED(&adapter->tx_ring) <= (txd_needed + 1)) {
30640 ++    adapter->net_stats.tx_dropped++;
30641 ++    netif_stop_queue(netdev);
30642 ++    return 1;
30643 ++  }
30644 ++
30645 ++  txd_upper = 0;
30646 ++  txd_lower = adapter->txd_cmd;
30647 ++
30648 ++  if(e1000_tx_csum(adapter, skb)){
30649 ++    txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D;
30650 ++    txd_upper |= E1000_TXD_POPTS_TXSM << 8;
30651 ++  }
30652 ++
30653 ++  i = adapter->tx_ring.next_to_use;
30654 ++  tx_desc = E1000_TX_DESC(adapter->tx_ring, i);
30655 ++
30656 ++  len = skb->len;
30657 ++  offset = 0;
30658 ++
30659 ++  adapter->tx_ring.buffer_info[i].length = len;
30660 ++  adapter->tx_ring.buffer_info[i].dma =
30661 ++    pci_map_page(pdev, virt_to_page(skb->data + offset),
30662 ++                 (unsigned long) (skb->data + offset) & ~PAGE_MASK, len,
30663 ++                 PCI_DMA_TODEVICE);
30664 ++
30665 ++  tx_desc->buffer_addr = cpu_to_le64(adapter->tx_ring.buffer_info[i].dma);
30666 ++  tx_desc->lower.data = cpu_to_le32(txd_lower | len);
30667 ++  tx_desc->upper.data = cpu_to_le32(txd_upper);
30668 ++
30669 ++    /* EOP and SKB pointer go with the last fragment */
30670 ++  tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP);
30671 ++  adapter->tx_ring.buffer_info[i].skb = skb;
30672 ++
30673 ++  i = i + 1;
30674 ++  if(i >= adapter->tx_ring.count)
30675 ++    i = 0;
30676 ++
30677 ++  /* Move the HW Tx Tail Pointer */
30678 ++  adapter->tx_ring.next_to_use = i;
30679 ++
30680 ++  netdev->trans_start = jiffies;
30681 ++
30682 ++  return 0;
30683 ++}
30684 ++
30685 ++static int
30686 ++e1000_tx_eob(struct net_device *dev)
30687 ++{
30688 ++  struct e1000_adapter *adapter = dev->priv;
30689 ++  E1000_WRITE_REG(&adapter->hw, TDT, adapter->tx_ring.next_to_use);
30690 ++  return 0;
30691 ++}
30692 ++
30693 ++static int
30694 ++e1000_tx_start(struct net_device *dev)
30695 ++{
30696 ++  /*   printk("e1000_tx_start called\n"); */
30697 ++  e1000_tx_eob(dev);
30698 ++  return 0;
30699 ++}
30700 ++
30701 ++static struct sk_buff *
30702 ++e1000_tx_clean(struct net_device *netdev)
30703 ++{
30704 ++  /*
30705 ++   * This function is a streamlined version of
30706 ++   * return e1000_clean_tx_irq(adapter, 1);
30707 ++   */
30708 ++
30709 ++  struct e1000_adapter *adapter = netdev->priv;
30710 ++  struct pci_dev *pdev = adapter->pdev;
30711 ++  int i;
30712 ++  struct e1000_tx_desc *tx_desc;
30713 ++  struct sk_buff *skb_head, *skb_last;
30714 ++
30715 ++  skb_head = skb_last = 0;
30716 ++
30717 ++  i = adapter->tx_ring.next_to_clean;
30718 ++  tx_desc = E1000_TX_DESC(adapter->tx_ring, i);
30719 ++
30720 ++  while(tx_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) {
30721 ++    if(adapter->tx_ring.buffer_info[i].dma != 0) {
30722 ++      pci_unmap_page(pdev, adapter->tx_ring.buffer_info[i].dma,
30723 ++                     adapter->tx_ring.buffer_info[i].length,
30724 ++                     PCI_DMA_TODEVICE);
30725 ++      adapter->tx_ring.buffer_info[i].dma = 0;
30726 ++    }
30727 ++
30728 ++    if(adapter->tx_ring.buffer_info[i].skb != NULL) {
30729 ++      struct sk_buff *skb = adapter->tx_ring.buffer_info[i].skb;
30730 ++      if (skb_head == 0) {
30731 ++        skb_head = skb;
30732 ++        skb_last = skb;
30733 ++        skb_last->next = NULL;
30734 ++      } else {
30735 ++        skb_last->next = skb;
30736 ++        skb->next = NULL;
30737 ++        skb_last = skb;
30738 ++      }
30739 ++      adapter->tx_ring.buffer_info[i].skb = NULL;
30740 ++    }
30741 ++    
30742 ++    i = i + 1;
30743 ++    if(i >= adapter->tx_ring.count)
30744 ++      i = 0;
30745 ++
30746 ++    tx_desc->upper.data = 0;
30747 ++    tx_desc = E1000_TX_DESC(adapter->tx_ring, i);
30748 ++  }
30749 ++
30750 ++  adapter->tx_ring.next_to_clean = i;
30751 ++
30752 ++  if(netif_queue_stopped(netdev) &&
30753 ++     (E1000_DESC_UNUSED(&adapter->tx_ring) > E1000_TX_QUEUE_WAKE)) {
30754 ++    netif_start_queue(netdev);
30755 ++  }
30756 ++
30757 ++  return skb_head;
30758 ++}
30759 ++
30760 ++static int
30761 ++e1000_poll_on(struct net_device *dev)
30762 ++{
30763 ++  struct e1000_adapter *adapter = dev->priv;
30764 ++  unsigned long flags;
30765 ++
30766 ++  if (!dev->polling) {
30767 ++    printk("e1000_poll_on\n");
30768 ++
30769 ++    save_flags(flags);
30770 ++    cli();
30771 ++
30772 ++    dev->polling = 2;
30773 ++    e1000_irq_disable(adapter);
30774 ++
30775 ++    restore_flags(flags);
30776 ++  }
30777 ++
30778 ++  return 0;
30779 ++}
30780 ++
30781 ++static int
30782 ++e1000_poll_off(struct net_device *dev)
30783 ++{
30784 ++  struct e1000_adapter *adapter = dev->priv;
30785 ++
30786 ++  if(dev->polling > 0){
30787 ++    dev->polling = 0;
30788 ++    e1000_irq_enable(adapter);
30789 ++    printk("e1000_poll_off\n");
30790 ++  }
30791 ++
30792 ++  return 0;
30793 ++}
30794 ++
30795 + /* e1000_main.c */
30796 +--- ./drivers/e1000-4.x/src/e1000_idiag.c.orig 2007-07-16 19:47:50.000000000 -0400
30797 ++++ ./drivers/e1000-4.x/src/e1000_idiag.c      2007-07-16 19:47:50.000000000 -0400
30798 +@@ -322,10 +322,12 @@
30799 +       if(rxdr->desc)
30800 +               pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma);
30801
30802 ++#if 0
30803 +       if(txdr->buffer_info)
30804 +               kfree(txdr->buffer_info);
30805 +       if(rxdr->buffer_info)
30806 +               kfree(rxdr->buffer_info);
30807 ++#endif
30808
30809 +       return;
30810 + }
30811 +@@ -344,8 +346,10 @@
30812 +       txdr->count = 80;
30813
30814 +       size = txdr->count * sizeof(struct e1000_buffer);
30815 ++#if 0
30816 +       if(!(txdr->buffer_info = kmalloc(size, GFP_KERNEL)))
30817 +               goto err_nomem;
30818 ++#endif
30819 +       memset(txdr->buffer_info, 0, size);
30820
30821 +       txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
30822 +@@ -393,8 +397,10 @@
30823 +       rxdr->count = 80;
30824
30825 +       size = rxdr->count * sizeof(struct e1000_buffer);
30826 ++#if 0
30827 +       if(!(rxdr->buffer_info = kmalloc(size, GFP_KERNEL)))
30828 +               goto err_nomem;
30829 ++#endif
30830 +       memset(rxdr->buffer_info, 0, size);
30831
30832 +       rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc);
30833 diff -Nurb click-1.6.0/doc/Makefile click-1.6.0-27/doc/Makefile
30834 --- click-1.6.0/doc/Makefile    1969-12-31 19:00:00.000000000 -0500
30835 +++ click-1.6.0-27/doc/Makefile 2009-01-28 16:15:43.000000000 -0500
30836 @@ -0,0 +1,120 @@
30837 +SHELL = /bin/sh
30838 +
30839 +top_srcdir = ..
30840 +srcdir = .
30841 +top_builddir = ..
30842 +subdir = doc
30843 +conf_auxdir = $(top_srcdir)
30844 +
30845 +prefix = /d/click/click-1.6.0-27/inst
30846 +exec_prefix = /d/click/click-1.6.0-27/inst
30847 +bindir = /d/click/click-1.6.0-27/inst/bin
30848 +mandir = ${datarootdir}/man
30849 +datarootdir = /d/click/click-1.6.0-27/inst/share
30850 +datadir = /d/click/click-1.6.0-27/inst/share
30851 +clickdatadir = $(datadir)/click
30852 +infodir = ${datarootdir}/info
30853 +
30854 +PERL = perl
30855 +INSTALL = /usr/bin/install -c
30856 +INSTALL_DATA = /usr/bin/install -c -m 644
30857 +INSTALL_INFO = /usr/bin/install-info
30858 +MAKEINFO = makeinfo
30859 +TEXI2DVI = texi2dvi
30860 +POD2MAN = pod2man
30861 +CP_PRESERVE = /bin/cp -p
30862 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
30863 +
30864 +EXTRA_PROVIDES =
30865 +
30866 +all: Makefile
30867 +
30868 +Makefile: $(srcdir)/Makefile.in
30869 +       cd $(top_builddir) \
30870 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
30871 +
30872 +install: Makefile install-man install-info
30873 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
30874 +       $(INSTALL) $(srcdir)/click-elem2man $(DESTDIR)$(bindir)/click-elem2man
30875 +install-man: testie.1 $(top_builddir)/elementmap.xml Makefile
30876 +       $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man3 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8 $(DESTDIR)$(mandir)/mann
30877 +       $(INSTALL_DATA) $(srcdir)/click.1 $(DESTDIR)$(mandir)/man1/click.1
30878 +       $(INSTALL_DATA) $(srcdir)/click.5 $(DESTDIR)$(mandir)/man5/click.5
30879 +       $(INSTALL_DATA) $(srcdir)/click.o.8 $(DESTDIR)$(mandir)/man8/click.o.8
30880 +       $(INSTALL_DATA) $(srcdir)/click-align.1 $(DESTDIR)$(mandir)/man1/click-align.1
30881 +       $(INSTALL_DATA) $(srcdir)/click-combine.1 $(DESTDIR)$(mandir)/man1/click-combine.1
30882 +       $(INSTALL_DATA) $(srcdir)/click-devirtualize.1 $(DESTDIR)$(mandir)/man1/click-devirtualize.1
30883 +       $(INSTALL_DATA) $(srcdir)/click-fastclassifier.1 $(DESTDIR)$(mandir)/man1/click-fastclassifier.1
30884 +       $(INSTALL_DATA) $(srcdir)/click-flatten.1 $(DESTDIR)$(mandir)/man1/click-flatten.1
30885 +       $(INSTALL_DATA) $(srcdir)/click-install.1 $(DESTDIR)$(mandir)/man1/click-install.1
30886 +       $(INSTALL_DATA) $(srcdir)/click-mkmindriver.1 $(DESTDIR)$(mandir)/man1/click-mkmindriver.1
30887 +       $(INSTALL_DATA) $(srcdir)/click-pretty.1 $(DESTDIR)$(mandir)/man1/click-pretty.1
30888 +       $(INSTALL_DATA) $(srcdir)/click-uncombine.1 $(DESTDIR)$(mandir)/man1/click-uncombine.1
30889 +       $(INSTALL_DATA) $(srcdir)/click-undead.1 $(DESTDIR)$(mandir)/man1/click-undead.1
30890 +       $(INSTALL_DATA) $(srcdir)/click-uninstall.1 $(DESTDIR)$(mandir)/man1/click-uninstall.1
30891 +       $(INSTALL_DATA) $(srcdir)/click-xform.1 $(DESTDIR)$(mandir)/man1/click-xform.1
30892 +       $(INSTALL_DATA) $(srcdir)/elementdoc.7 $(DESTDIR)$(mandir)/man7/elementdoc.7
30893 +       $(INSTALL_DATA) testie.1 $(DESTDIR)$(mandir)/man1/testie.1
30894 +       $(PERL) $(srcdir)/click-elem2man -l -d $(DESTDIR)$(mandir)/mann -P DEFAULT -p $(top_srcdir) $(top_builddir)/elementmap.xml
30895 +install-info: Makefile click.info
30896 +       $(mkinstalldirs) $(DESTDIR)$(infodir)
30897 +       @for f in click.info click.info-[0-9] click.info-[0-9][0-9]; do \
30898 +         if test -f $$f; then \
30899 +           echo "$(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$f"; \
30900 +           $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$f || exit 1; fi; \
30901 +       done
30902 +       -$(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) $(DESTDIR)$(infodir)/click.info 2>&1 >/dev/null
30903 +
30904 +uninstall: uninstall-man uninstall-info
30905 +       /bin/rm -f $(DESTDIR)$(bindir)/click-elem2man
30906 +uninstall-man: $(top_builddir)/elementmap.xml
30907 +       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
30908 +       cd $(DESTDIR)$(mandir)/man5; /bin/rm -f click.5
30909 +       cd $(DESTDIR)$(mandir)/man7; /bin/rm -f elementdoc.7
30910 +       cd $(DESTDIR)$(mandir)/man8; /bin/rm -f click.o.8
30911 +       $(PERL) $(srcdir)/click-elem2man -l -d $(DESTDIR)$(mandir)/mann -P DEFAULT -p $(top_srcdir) -u $(top_builddir)/elementmap.xml
30912 +uninstall-info: click.info
30913 +       @for f in click.info click.info-[0-9] click.info-[0-9][0-9]; do \
30914 +         if test -f $$f; then \
30915 +           echo "/bin/rm -f $(DESTDIR)$(infodir)/$$f"; \
30916 +           /bin/rm -f $(DESTDIR)$(infodir)/$$f; fi; \
30917 +       done
30918 +
30919 +info: click.info
30920 +       @:
30921 +click.info: $(srcdir)/click.texi
30922 +       @-if [ ! -f click.info -a -f $(srcdir)/click.info ]; then \
30923 +           echo $(CP_PRESERVE) "$(srcdir)/click.info*" .; \
30924 +           $(CP_PRESERVE) $(srcdir)/click.info* .; \
30925 +           $(MAKE) click.info; \
30926 +       else \
30927 +           echo $(MAKEINFO) $(srcdir)/click.texi; \
30928 +           $(MAKEINFO) $(srcdir)/click.texi; \
30929 +       fi
30930 +click.html: $(srcdir)/click.texi
30931 +       $(MAKEINFO) --html --no-split --number-sections $(srcdir)/click.texi
30932 +       $(PERL) -pi -e 's|^<h3(.*)</h4|<h3$$1</h3|' click.html
30933 +       $(PERL) -pi -e 's|^<h3(.*)</h5|<h4$$1</h4|' click.html
30934 +click.dvi: $(srcdir)/click.texi always
30935 +       $(TEXI2DVI) $(srcdir)/click.texi
30936 +
30937 +testie.1: $(top_srcdir)/test/testie
30938 +       @-if [ ! -f testie.1 -a -f $(srcdir)/testie.1 ]; then \
30939 +          echo $(CP_PRESERVE) $(srcdir)/testie.1 testie.1; \
30940 +          $(CP_PRESERVE) $(srcdir)/testie.1 testie.1; \
30941 +          $(MAKE) testie.1; \
30942 +       else \
30943 +          echo $(POD2MAN) -d '' -c '' $(top_srcdir)/test/testie testie.1; \
30944 +          $(POD2MAN) -d '' -c '' $(top_srcdir)/test/testie testie.1; \
30945 +       fi
30946 +
30947 +always:
30948 +       @:
30949 +
30950 +clean:
30951 +       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
30952 +distclean: clean
30953 +       -rm -f Makefile
30954 +
30955 +.PHONY: all clean distclean info always \
30956 +       install install-man install-info uninstall uninstall-man uninstall-info
30957 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
30958 --- click-1.6.0/drivers/e1000-4.x/src/e1000.h.orig      2007-07-16 19:47:50.000000000 -0400
30959 +++ click-1.6.0-27/drivers/e1000-4.x/src/e1000.h.orig   1969-12-31 19:00:00.000000000 -0500
30960 @@ -1,244 +0,0 @@
30961 -/*******************************************************************************
30962 -
30963 -  
30964 -  Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
30965 -  
30966 -  This program is free software; you can redistribute it and/or modify it 
30967 -  under the terms of the GNU General Public License as published by the Free 
30968 -  Software Foundation; either version 2 of the License, or (at your option) 
30969 -  any later version.
30970 -  
30971 -  This program is distributed in the hope that it will be useful, but WITHOUT 
30972 -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
30973 -  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
30974 -  more details.
30975 -  
30976 -  You should have received a copy of the GNU General Public License along with
30977 -  this program; if not, write to the Free Software Foundation, Inc., 59 
30978 -  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
30979 -  
30980 -  The full GNU General Public License is included in this distribution in the
30981 -  file called LICENSE.
30982 -  
30983 -  Contact Information:
30984 -  Linux NICS <linux.nics@intel.com>
30985 -  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
30986 -
30987 -*******************************************************************************/
30988 -
30989 -
30990 -/* Linux PRO/1000 Ethernet Driver main header file */
30991 -
30992 -#ifndef _E1000_H_
30993 -#define _E1000_H_
30994 -#ifndef __E1000_MAIN__
30995 -#define __NO_VERSION__
30996 -#endif
30997 -
30998 -#include <linux/stddef.h>
30999 -#include <linux/config.h>
31000 -#include <linux/module.h>
31001 -#include <linux/types.h>
31002 -#include <asm/byteorder.h>
31003 -#include <linux/init.h>
31004 -#include <linux/mm.h>
31005 -#include <linux/errno.h>
31006 -#include <linux/ioport.h>
31007 -#include <linux/pci.h>
31008 -#include <linux/kernel.h>
31009 -#include <linux/netdevice.h>
31010 -#include <linux/etherdevice.h>
31011 -#include <linux/skbuff.h>
31012 -#include <linux/delay.h>
31013 -#include <linux/timer.h>
31014 -#include <linux/slab.h>
31015 -#include <linux/interrupt.h>
31016 -#include <linux/string.h>
31017 -#include <linux/pagemap.h>
31018 -#include <asm/bitops.h>
31019 -#include <asm/io.h>
31020 -#include <asm/irq.h>
31021 -#include <linux/capability.h>
31022 -#include <linux/in.h>
31023 -#include <linux/ip.h>
31024 -#include <linux/tcp.h>
31025 -#include <linux/udp.h>
31026 -#include <net/pkt_sched.h>
31027 -#include <linux/list.h>
31028 -#include <linux/reboot.h>
31029 -#ifdef SIOCETHTOOL
31030 -#include <linux/ethtool.h>
31031 -#endif
31032 -#ifdef NETIF_F_HW_VLAN_TX
31033 -#include <linux/if_vlan.h>
31034 -#endif
31035 -
31036 -#define BAR_0          0
31037 -#define BAR_1          1
31038 -#define BAR_5          5
31039 -#define PCI_DMA_64BIT  0xffffffffffffffffULL
31040 -#define PCI_DMA_32BIT  0x00000000ffffffffULL
31041 -
31042 -#include "kcompat.h"
31043 -
31044 -struct e1000_adapter;
31045 -
31046 -#include "e1000_hw.h"
31047 -#ifdef IANS
31048 -#include "base_comm.h"
31049 -#include "ans_driver.h"
31050 -#include "ans.h"
31051 -#endif
31052 -#ifdef IDIAG
31053 -#include "idiag_pro.h"
31054 -#endif
31055 -
31056 -#if DBG
31057 -#define E1000_DBG(args...) printk(KERN_DEBUG "e1000: " args)
31058 -#else
31059 -#define E1000_DBG(args...)
31060 -#endif
31061 -
31062 -#define E1000_ERR(args...) printk(KERN_ERR "e1000: " args)
31063 -
31064 -#define E1000_MAX_INTR 10
31065 -
31066 -/* Supported Rx Buffer Sizes */
31067 -#define E1000_RXBUFFER_2048  2048
31068 -#define E1000_RXBUFFER_4096  4096
31069 -#define E1000_RXBUFFER_8192  8192
31070 -#define E1000_RXBUFFER_16384 16384
31071 -
31072 -/* How many Tx Descriptors do we need to call netif_wake_queue ? */
31073 -#define E1000_TX_QUEUE_WAKE    16
31074 -/* How many Rx Buffers do we bundle into one write to the hardware ? */
31075 -#define E1000_RX_BUFFER_WRITE  16
31076 -
31077 -#define E1000_JUMBO_PBA      0x00000028
31078 -#define E1000_DEFAULT_PBA    0x00000030
31079 -
31080 -#define AUTO_ALL_MODES       0
31081 -
31082 -/* only works for sizes that are powers of 2 */
31083 -#define E1000_ROUNDUP(i, size) ((i) = (((i) + (size) - 1) & ~((size) - 1)))
31084 -
31085 -/* wrapper around a pointer to a socket buffer,
31086 - * so a DMA handle can be stored along with the buffer */
31087 -struct e1000_buffer {
31088 -       struct sk_buff *skb;
31089 -       uint64_t dma;
31090 -       unsigned long length;
31091 -       unsigned long time_stamp;
31092 -};
31093 -
31094 -struct e1000_desc_ring {
31095 -       /* pointer to the descriptor ring memory */
31096 -       void *desc;
31097 -       /* physical address of the descriptor ring */
31098 -       dma_addr_t dma;
31099 -       /* length of descriptor ring in bytes */
31100 -       unsigned int size;
31101 -       /* number of descriptors in the ring */
31102 -       unsigned int count;
31103 -       /* next descriptor to associate a buffer with */
31104 -       unsigned int next_to_use;
31105 -       /* next descriptor to check for DD status bit */
31106 -       unsigned int next_to_clean;
31107 -       /* array of buffer information structs */
31108 -       struct e1000_buffer *buffer_info;
31109 -};
31110 -
31111 -#define E1000_DESC_UNUSED(R) \
31112 -((((R)->next_to_clean + (R)->count) - ((R)->next_to_use + 1)) % ((R)->count))
31113 -
31114 -#define E1000_GET_DESC(R, i, type)     (&(((struct type *)((R).desc))[i]))
31115 -#define E1000_RX_DESC(R, i)            E1000_GET_DESC(R, i, e1000_rx_desc)
31116 -#define E1000_TX_DESC(R, i)            E1000_GET_DESC(R, i, e1000_tx_desc)
31117 -#define E1000_CONTEXT_DESC(R, i)       E1000_GET_DESC(R, i, e1000_context_desc)
31118 -
31119 -/* board specific private data structure */
31120 -
31121 -struct e1000_adapter {
31122 -#ifdef IANS
31123 -       void *iANSReserved;
31124 -       piANSsupport_t iANSdata;
31125 -       uint32_t ans_link;
31126 -       uint32_t ans_speed;
31127 -       uint32_t ans_duplex;
31128 -       uint32_t ans_suspend;
31129 -       IANS_BD_TAGGING_MODE tag_mode;
31130 -#endif
31131 -       struct timer_list watchdog_timer;
31132 -       struct timer_list phy_info_timer;
31133 -#ifdef CONFIG_PROC_FS
31134 -       struct list_head proc_list_head;
31135 -#endif
31136 -#ifdef NETIF_F_HW_VLAN_TX
31137 -       struct vlan_group *vlgrp;
31138 -#endif
31139 -       char *id_string;
31140 -       uint32_t bd_number;
31141 -       uint32_t rx_buffer_len;
31142 -       uint32_t part_num;
31143 -       uint32_t wol;
31144 -       uint16_t link_speed;
31145 -       uint16_t link_duplex;
31146 -       spinlock_t stats_lock;
31147 -       atomic_t irq_sem;
31148 -
31149 -#ifdef ETHTOOL_PHYS_ID
31150 -       struct timer_list blink_timer;
31151 -       unsigned long led_status;
31152 -#endif
31153 -
31154 -       /* TX */
31155 -       struct e1000_desc_ring tx_ring;
31156 -       uint32_t txd_cmd;
31157 -       uint32_t tx_int_delay;
31158 -       uint32_t tx_abs_int_delay;
31159 -       int max_data_per_txd;
31160 -
31161 -       /* RX */
31162 -       struct e1000_desc_ring rx_ring;
31163 -       uint64_t hw_csum_err;
31164 -       uint64_t hw_csum_good;
31165 -       uint32_t rx_int_delay;
31166 -       uint32_t rx_abs_int_delay;
31167 -       boolean_t rx_csum;
31168 -
31169 -       /* OS defined structs */
31170 -       struct net_device *netdev;
31171 -       struct pci_dev *pdev;
31172 -       struct net_device_stats net_stats;
31173 -
31174 -       /* structs defined in e1000_hw.h */
31175 -       struct e1000_hw hw;
31176 -       struct e1000_hw_stats stats;
31177 -       struct e1000_phy_info phy_info;
31178 -       struct e1000_phy_stats phy_stats;
31179 -
31180 -#ifdef IDIAG
31181 -       uint32_t diag_icr;
31182 -       struct e1000_desc_ring diag_tx_ring;
31183 -       struct e1000_desc_ring diag_rx_ring;
31184 -#endif
31185 -
31186 -#ifdef E1000_COUNT_ICR
31187 -       uint64_t icr_txdw;
31188 -       uint64_t icr_txqe;
31189 -       uint64_t icr_lsc;
31190 -       uint64_t icr_rxseq;
31191 -       uint64_t icr_rxdmt;
31192 -       uint64_t icr_rxo;
31193 -       uint64_t icr_rxt;
31194 -       uint64_t icr_mdac;
31195 -       uint64_t icr_rxcfg;
31196 -       uint64_t icr_gpi;
31197 -#endif
31198 -
31199 -       uint32_t pci_state[16];
31200 -
31201 -       /* Semaphore for locking HW access vs. i2c-i8254x SMBUS driver */
31202 -       struct semaphore smbus_lock;
31203 -};
31204 -#endif /* _E1000_H_ */
31205 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
31206 --- click-1.6.0/drivers/e1000-4.x/src/e1000_idiag.c.orig        2007-07-16 19:47:50.000000000 -0400
31207 +++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_idiag.c.orig     1969-12-31 19:00:00.000000000 -0500
31208 @@ -1,1048 +0,0 @@
31209 -/*******************************************************************************
31210 -
31211 -  
31212 -  Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
31213 -  
31214 -  This program is free software; you can redistribute it and/or modify it 
31215 -  under the terms of the GNU General Public License as published by the Free 
31216 -  Software Foundation; either version 2 of the License, or (at your option) 
31217 -  any later version.
31218 -  
31219 -  This program is distributed in the hope that it will be useful, but WITHOUT 
31220 -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
31221 -  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
31222 -  more details.
31223 -  
31224 -  You should have received a copy of the GNU General Public License along with
31225 -  this program; if not, write to the Free Software Foundation, Inc., 59 
31226 -  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
31227 -  
31228 -  The full GNU General Public License is included in this distribution in the
31229 -  file called LICENSE.
31230 -  
31231 -  Contact Information:
31232 -  Linux NICS <linux.nics@intel.com>
31233 -  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
31234 -
31235 -*******************************************************************************/
31236 -
31237 -/*
31238 - * Intel PRO diagnostics
31239 - */
31240 -
31241 -#include "e1000.h"
31242 -#include "idiag_pro.h"
31243 -#include "idiag_e1000.h"
31244 -
31245 -extern int e1000_up(struct e1000_adapter *adapter);
31246 -extern void e1000_down(struct e1000_adapter *adapter);
31247 -extern void e1000_reset(struct e1000_adapter *adapter);
31248 -
31249 -#define REG_PATTERN_TEST(R, M, W)                                          \
31250 -{                                                                          \
31251 -       uint32_t pat, value;                                               \
31252 -       uint32_t test[] =                                                  \
31253 -               {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};          \
31254 -       for(pat = 0; pat < sizeof(test)/sizeof(test[0]); pat++) {          \
31255 -               E1000_WRITE_REG(&adapter->hw, R, (test[pat] & W));     \
31256 -               value = E1000_READ_REG(&adapter->hw, R);               \
31257 -               if(value != (test[pat] & W & M)) {                         \
31258 -                       param->reg =                                       \
31259 -                               (adapter->hw.mac_type < e1000_82543) ? \
31260 -                               E1000_82542_##R : E1000_##R;               \
31261 -                       param->write_value = test[pat] & W;                \
31262 -                       param->read_value = value;                         \
31263 -                       return IDIAG_PRO_STAT_TEST_FAILED;                 \
31264 -               }                                                          \
31265 -       }                                                                  \
31266 -}
31267 -
31268 -#define REG_SET_AND_CHECK(R, M, W)                                         \
31269 -{                                                                          \
31270 -       uint32_t value;                                                    \
31271 -       E1000_WRITE_REG(&adapter->hw, R, W & M);                       \
31272 -       value = E1000_READ_REG(&adapter->hw, R);                       \
31273 -       if ((W & M) != (value & M)) {                                      \
31274 -               param->reg = (adapter->hw.mac_type < e1000_82543) ?    \
31275 -                       E1000_82542_##R : E1000_##R;                       \
31276 -               param->write_value = W & M;                                \
31277 -               param->read_value = value & M;                             \
31278 -               return IDIAG_PRO_STAT_TEST_FAILED;                         \
31279 -       }                                                                  \
31280 -}
31281 -
31282 -static enum idiag_pro_stat
31283 -e1000_diag_reg_test(struct e1000_adapter *adapter,
31284 -                   uint8_t *diag_param)
31285 -{
31286 -       struct idiag_e1000_diag_reg_test_param *param =
31287 -               (struct idiag_e1000_diag_reg_test_param *) diag_param;
31288 -       uint32_t value;
31289 -       uint32_t i;
31290 -
31291 -       /* The status register is Read Only, so a write should fail.
31292 -        * Some bits that get toggled are ignored.
31293 -        */
31294 -       value = (E1000_READ_REG(&adapter->hw, STATUS) & (0xFFFFF833));
31295 -       E1000_WRITE_REG(&adapter->hw, STATUS, (0xFFFFFFFF));
31296 -       if(value != (E1000_READ_REG(&adapter->hw, STATUS) & (0xFFFFF833))) {
31297 -               param->reg = E1000_STATUS;
31298 -               param->write_value = 0xFFFFFFFF;
31299 -               param->read_value = value;
31300 -               return IDIAG_PRO_STAT_TEST_FAILED;
31301 -       }
31302 -
31303 -       REG_PATTERN_TEST(FCAL, 0xFFFFFFFF, 0xFFFFFFFF);
31304 -       REG_PATTERN_TEST(FCAH, 0x0000FFFF, 0xFFFFFFFF);
31305 -       REG_PATTERN_TEST(FCT, 0x0000FFFF, 0xFFFFFFFF);
31306 -       REG_PATTERN_TEST(VET, 0x0000FFFF, 0xFFFFFFFF);
31307 -       REG_PATTERN_TEST(RDTR, 0x0000FFFF, 0xFFFFFFFF);
31308 -       REG_PATTERN_TEST(RDBAH, 0xFFFFFFFF, 0xFFFFFFFF);
31309 -       REG_PATTERN_TEST(RDLEN, 0x000FFF80, 0x000FFFFF);
31310 -       REG_PATTERN_TEST(RDH, 0x0000FFFF, 0x0000FFFF);
31311 -       REG_PATTERN_TEST(RDT, 0x0000FFFF, 0x0000FFFF);
31312 -       REG_PATTERN_TEST(FCRTH, 0x0000FFF8, 0x0000FFF8);
31313 -       REG_PATTERN_TEST(FCTTV, 0x0000FFFF, 0x0000FFFF);
31314 -       REG_PATTERN_TEST(TIPG, 0x3FFFFFFF, 0x3FFFFFFF);
31315 -       REG_PATTERN_TEST(TDBAH, 0xFFFFFFFF, 0xFFFFFFFF);
31316 -       REG_PATTERN_TEST(TDLEN, 0x000FFF80, 0x000FFFFF);
31317 -
31318 -       REG_SET_AND_CHECK(RCTL, 0xFFFFFFFF, 0x00000000);
31319 -       REG_SET_AND_CHECK(RCTL, 0x06DFB3FE, 0x003FFFFB);
31320 -       REG_SET_AND_CHECK(TCTL, 0xFFFFFFFF, 0x00000000);
31321 -
31322 -       if(adapter->hw.mac_type >= e1000_82543) {
31323 -
31324 -               REG_SET_AND_CHECK(RCTL, 0x06DFB3FE, 0xFFFFFFFF);
31325 -               REG_PATTERN_TEST(RDBAL, 0xFFFFFFF0, 0xFFFFFFFF);
31326 -               REG_PATTERN_TEST(TXCW, 0xC000FFFF, 0x0000FFFF);
31327 -               REG_PATTERN_TEST(TDBAL, 0xFFFFFFF0, 0xFFFFFFFF);
31328 -               REG_PATTERN_TEST(TIDV, 0x0000FFFF, 0x0000FFFF);
31329 -
31330 -               for(i = 0; i < E1000_RAR_ENTRIES; i++) {
31331 -                       REG_PATTERN_TEST(RA + ((i << 1) << 2), 0xFFFFFFFF,
31332 -                                        0xFFFFFFFF);
31333 -                       REG_PATTERN_TEST(RA + (((i << 1) + 1) << 2), 0x8003FFFF,
31334 -                                        0xFFFFFFFF);
31335 -               }
31336 -
31337 -       } else {
31338 -
31339 -               REG_SET_AND_CHECK(RCTL, 0xFFFFFFFF, 0x01FFFFFF);
31340 -               REG_PATTERN_TEST(RDBAL, 0xFFFFF000, 0xFFFFFFFF);
31341 -               REG_PATTERN_TEST(TXCW, 0x0000FFFF, 0x0000FFFF);
31342 -               REG_PATTERN_TEST(TDBAL, 0xFFFFF000, 0xFFFFFFFF);
31343 -
31344 -       }
31345 -
31346 -       for(i = 0; i < E1000_MC_TBL_SIZE; i++)
31347 -               REG_PATTERN_TEST(MTA + (i << 2), 0xFFFFFFFF, 0xFFFFFFFF);
31348 -
31349 -       return IDIAG_PRO_STAT_OK;
31350 -}
31351 -
31352 -
31353 -static enum idiag_pro_stat
31354 -e1000_diag_eeprom_test(struct e1000_adapter *adapter,
31355 -                      uint8_t *diag_param)
31356 -{
31357 -       struct idiag_e1000_diag_eeprom_test_param *param =
31358 -               (struct idiag_e1000_diag_eeprom_test_param *) diag_param;
31359 -       uint16_t temp;
31360 -       uint16_t checksum = 0;
31361 -       uint16_t i;
31362 -
31363 -       /* Read and add up the contents of the EEPROM */
31364 -       for(i = 0; i < (EEPROM_CHECKSUM_REG + 1); i++) {
31365 -               if((e1000_read_eeprom(&adapter->hw, i, &temp)) < 0) {
31366 -                       param->actual_checksum = checksum;
31367 -                       param->expected_checksum = EEPROM_SUM;
31368 -                       return IDIAG_PRO_STAT_TEST_FATAL;
31369 -               }
31370 -               checksum += temp;
31371 -       }
31372 -
31373 -       /* If Checksum is not Correct return error else test passed */
31374 -       if(checksum != (uint16_t) EEPROM_SUM) {
31375 -               param->actual_checksum = checksum;
31376 -               param->expected_checksum = EEPROM_SUM;
31377 -               return IDIAG_PRO_STAT_TEST_FAILED;
31378 -       }
31379 -
31380 -       return IDIAG_PRO_STAT_OK;
31381 -}
31382 -
31383 -static void
31384 -e1000_diag_intr(int irq,
31385 -               void *data,
31386 -               struct pt_regs *regs)
31387 -{
31388 -       struct net_device *netdev = (struct net_device *) data;
31389 -       struct e1000_adapter *adapter = netdev->priv;
31390 -
31391 -       adapter->diag_icr |= E1000_READ_REG(&adapter->hw, ICR);
31392 -
31393 -       return;
31394 -}
31395 -
31396 -static enum idiag_pro_stat
31397 -e1000_diag_intr_test(struct e1000_adapter *adapter,
31398 -                    uint8_t *diag_param)
31399 -{
31400 -       struct net_device *netdev = adapter->netdev;
31401 -       enum idiag_e1000_diag_intr_test_param *param =
31402 -               (enum idiag_e1000_diag_intr_test_param *) diag_param;
31403 -       uint32_t icr, i, mask;
31404 -
31405 -       *param = IDIAG_E1000_INTR_TEST_OK;
31406 -
31407 -       /* Hook up diag interrupt handler just for this test */
31408 -       if(request_irq
31409 -          (netdev->irq, &e1000_diag_intr, SA_SHIRQ, netdev->name, netdev))
31410 -               return IDIAG_PRO_STAT_TEST_FATAL;
31411 -
31412 -       /* Disable all the interrupts */
31413 -       E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF);
31414 -       msec_delay(10);
31415 -
31416 -       /* Interrupts are disabled, so read interrupt cause
31417 -        * register (icr) twice to verify that there are no interrupts
31418 -        * pending.  icr is clear on read.
31419 -        */
31420 -       icr = E1000_READ_REG(&adapter->hw, ICR);
31421 -       icr = E1000_READ_REG(&adapter->hw, ICR);
31422 -
31423 -       if(icr != 0) {
31424 -               /* if icr is non-zero, there is no point
31425 -                * running other interrupt tests.
31426 -                */
31427 -               *param = IDIAG_E1000_INTR_TEST_NOT_EXEC;
31428 -               return IDIAG_PRO_STAT_TEST_FAILED;
31429 -       }
31430 -
31431 -       /* Test each interrupt */
31432 -       for(i = 0; i < 10; i++) {
31433 -
31434 -               /* Interrupt to test */
31435 -               mask = 1 << i;
31436 -
31437 -               /* Disable the interrupt to be reported in
31438 -                * the cause register and then force the same
31439 -                * interrupt and see if one gets posted.  If
31440 -                * an interrupt was posted to the bus, the
31441 -                * test failed.
31442 -                */
31443 -               adapter->diag_icr = 0;
31444 -               E1000_WRITE_REG(&adapter->hw, IMC, mask);
31445 -               E1000_WRITE_REG(&adapter->hw, ICS, mask);
31446 -               msec_delay(10);
31447 -
31448 -               if(adapter->diag_icr & mask) {
31449 -                       *param = IDIAG_E1000_INTR_TEST_FAILED_WHILE_DISABLED;
31450 -                       break;
31451 -               }
31452 -
31453 -               /* Enable the interrupt to be reported in
31454 -                * the cause register and then force the same
31455 -                * interrupt and see if one gets posted.  If
31456 -                * an interrupt was not posted to the bus, the
31457 -                * test failed.
31458 -                */
31459 -               adapter->diag_icr = 0;
31460 -               E1000_WRITE_REG(&adapter->hw, IMS, mask);
31461 -               E1000_WRITE_REG(&adapter->hw, ICS, mask);
31462 -               msec_delay(10);
31463 -
31464 -               if(!(adapter->diag_icr & mask)) {
31465 -                       *param = IDIAG_E1000_INTR_TEST_FAILED_WHILE_ENABLED;
31466 -                       break;
31467 -               }
31468 -
31469 -               /* Disable the other interrupts to be reported in
31470 -                * the cause register and then force the other
31471 -                * interrupts and see if any get posted.  If
31472 -                * an interrupt was posted to the bus, the
31473 -                * test failed.
31474 -                */
31475 -               adapter->diag_icr = 0;
31476 -               E1000_WRITE_REG(&adapter->hw, IMC, ~mask);
31477 -               E1000_WRITE_REG(&adapter->hw, ICS, ~mask);
31478 -               msec_delay(10);
31479 -
31480 -               if(adapter->diag_icr) {
31481 -                       *param = IDIAG_E1000_INTR_TEST_FAILED_MASKED_ENABLED;
31482 -                       break;
31483 -               }
31484 -       }
31485 -
31486 -       /* Disable all the interrupts */
31487 -       E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF);
31488 -       msec_delay(10);
31489 -
31490 -       /* Unhook diag interrupt handler */
31491 -       free_irq(netdev->irq, netdev);
31492 -
31493 -       return (*param ==
31494 -               IDIAG_E1000_INTR_TEST_OK) ? IDIAG_PRO_STAT_OK :
31495 -               IDIAG_PRO_STAT_TEST_FAILED;
31496 -}
31497 -
31498 -static void
31499 -e1000_free_desc_rings(struct e1000_adapter *adapter)
31500 -{
31501 -       struct e1000_desc_ring *txdr = &adapter->diag_tx_ring;
31502 -       struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring;
31503 -       struct pci_dev *pdev = adapter->pdev;
31504 -       int i;
31505 -
31506 -       if(txdr->desc && txdr->buffer_info) {
31507 -               for(i = 0; i < txdr->count; i++) {
31508 -                       if(txdr->buffer_info[i].dma)
31509 -                               pci_unmap_single(pdev, txdr->buffer_info[i].dma,
31510 -                                                txdr->buffer_info[i].length,
31511 -                                                PCI_DMA_TODEVICE);
31512 -                       if(txdr->buffer_info[i].skb)
31513 -                               dev_kfree_skb(txdr->buffer_info[i].skb);
31514 -               }
31515 -       }
31516 -
31517 -       if(rxdr->desc && rxdr->buffer_info) {
31518 -               for(i = 0; i < rxdr->count; i++) {
31519 -                       if(rxdr->buffer_info[i].dma)
31520 -                               pci_unmap_single(pdev, rxdr->buffer_info[i].dma,
31521 -                                                rxdr->buffer_info[i].length,
31522 -                                                PCI_DMA_FROMDEVICE);
31523 -                       if(rxdr->buffer_info[i].skb)
31524 -                               dev_kfree_skb(rxdr->buffer_info[i].skb);
31525 -               }
31526 -       }
31527 -
31528 -       if(txdr->desc)
31529 -               pci_free_consistent(pdev, txdr->size, txdr->desc, txdr->dma);
31530 -       if(rxdr->desc)
31531 -               pci_free_consistent(pdev, rxdr->size, rxdr->desc, rxdr->dma);
31532 -
31533 -       if(txdr->buffer_info)
31534 -               kfree(txdr->buffer_info);
31535 -       if(rxdr->buffer_info)
31536 -               kfree(rxdr->buffer_info);
31537 -
31538 -       return;
31539 -}
31540 -
31541 -static int
31542 -e1000_setup_desc_rings(struct e1000_adapter *adapter)
31543 -{
31544 -       struct e1000_desc_ring *txdr = &adapter->diag_tx_ring;
31545 -       struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring;
31546 -       struct pci_dev *pdev = adapter->pdev;
31547 -       uint32_t rctl;
31548 -       int size, i;
31549 -
31550 -       /* Setup Tx descriptor ring and Tx buffers */
31551 -
31552 -       txdr->count = 80;
31553 -
31554 -       size = txdr->count * sizeof(struct e1000_buffer);
31555 -       if(!(txdr->buffer_info = kmalloc(size, GFP_KERNEL)))
31556 -               goto err_nomem;
31557 -       memset(txdr->buffer_info, 0, size);
31558 -
31559 -       txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
31560 -       E1000_ROUNDUP(txdr->size, 4096);
31561 -       if(!(txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma)))
31562 -               goto err_nomem;
31563 -       memset(txdr->desc, 0, txdr->size);
31564 -       txdr->next_to_use = txdr->next_to_clean = 0;
31565 -
31566 -       E1000_WRITE_REG(&adapter->hw, TDBAL,
31567 -                       ((uint64_t) txdr->dma & 0x00000000FFFFFFFF));
31568 -       E1000_WRITE_REG(&adapter->hw, TDBAH, ((uint64_t) txdr->dma >> 32));
31569 -       E1000_WRITE_REG(&adapter->hw, TDLEN,
31570 -                       txdr->count * sizeof(struct e1000_tx_desc));
31571 -       E1000_WRITE_REG(&adapter->hw, TDH, 0);
31572 -       E1000_WRITE_REG(&adapter->hw, TDT, 0);
31573 -       E1000_WRITE_REG(&adapter->hw, TCTL,
31574 -                       E1000_TCTL_PSP | E1000_TCTL_EN |
31575 -                       E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT |
31576 -                       E1000_FDX_COLLISION_DISTANCE << E1000_COLD_SHIFT);
31577 -
31578 -       for(i = 0; i < txdr->count; i++) {
31579 -               struct e1000_tx_desc *tx_desc = E1000_TX_DESC(*txdr, i);
31580 -               struct sk_buff *skb;
31581 -               unsigned int size = 1024;
31582 -
31583 -               if(!(skb = alloc_skb(size, GFP_KERNEL)))
31584 -                       goto err_nomem;
31585 -               skb_put(skb, size);
31586 -               txdr->buffer_info[i].skb = skb;
31587 -               txdr->buffer_info[i].length = skb->len;
31588 -               txdr->buffer_info[i].dma =
31589 -                       pci_map_single(pdev, skb->data, skb->len,
31590 -                                      PCI_DMA_TODEVICE);
31591 -               tx_desc->buffer_addr = cpu_to_le64(txdr->buffer_info[i].dma);
31592 -               tx_desc->lower.data = cpu_to_le32(skb->len);
31593 -               tx_desc->lower.data |= E1000_TXD_CMD_EOP;
31594 -               tx_desc->lower.data |= E1000_TXD_CMD_IFCS;
31595 -               tx_desc->lower.data |= E1000_TXD_CMD_RPS;
31596 -               tx_desc->upper.data = 0;
31597 -       }
31598 -
31599 -       /* Setup Rx descriptor ring and Rx buffers */
31600 -
31601 -       rxdr->count = 80;
31602 -
31603 -       size = rxdr->count * sizeof(struct e1000_buffer);
31604 -       if(!(rxdr->buffer_info = kmalloc(size, GFP_KERNEL)))
31605 -               goto err_nomem;
31606 -       memset(rxdr->buffer_info, 0, size);
31607 -
31608 -       rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc);
31609 -       if(!(rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma)))
31610 -               goto err_nomem;
31611 -       memset(rxdr->desc, 0, rxdr->size);
31612 -       rxdr->next_to_use = rxdr->next_to_clean = 0;
31613 -
31614 -       rctl = E1000_READ_REG(&adapter->hw, RCTL);
31615 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl & ~E1000_RCTL_EN);
31616 -       E1000_WRITE_REG(&adapter->hw, RDBAL,
31617 -                       ((uint64_t) rxdr->dma & 0xFFFFFFFF));
31618 -       E1000_WRITE_REG(&adapter->hw, RDBAH, ((uint64_t) rxdr->dma >> 32));
31619 -       E1000_WRITE_REG(&adapter->hw, RDLEN, rxdr->size);
31620 -       E1000_WRITE_REG(&adapter->hw, RDH, 0);
31621 -       E1000_WRITE_REG(&adapter->hw, RDT, 0);
31622 -       rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 |
31623 -               E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF | 
31624 -               (adapter->hw.mc_filter_type << E1000_RCTL_MO_SHIFT);
31625 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
31626 -
31627 -       for(i = 0; i < rxdr->count; i++) {
31628 -               struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i);
31629 -               struct sk_buff *skb;
31630 -
31631 -               if(!(skb = alloc_skb(E1000_RXBUFFER_2048 + 2, GFP_KERNEL)))
31632 -                       goto err_nomem;
31633 -               skb_reserve(skb, 2);
31634 -               rxdr->buffer_info[i].skb = skb;
31635 -               rxdr->buffer_info[i].length = E1000_RXBUFFER_2048;
31636 -               rxdr->buffer_info[i].dma =
31637 -                       pci_map_single(pdev, skb->data, E1000_RXBUFFER_2048,
31638 -                                      PCI_DMA_FROMDEVICE);
31639 -               rx_desc->buffer_addr = cpu_to_le64(rxdr->buffer_info[i].dma);
31640 -               memset(skb->data, 0x00, skb->len);
31641 -       }
31642 -
31643 -       return 0;
31644 -
31645 -      err_nomem:
31646 -       e1000_free_desc_rings(adapter);
31647 -       return -ENOMEM;
31648 -}
31649 -
31650 -/**
31651 - * e1000_phy_disable_receiver - This routine disables the receiver
31652 - * during loopback testing to insure that if, in the middle of a
31653 - * loopback test, a link partner is connected, it won't change the
31654 - * speed or link status and thus cause a failure.
31655 - *
31656 - * @adapter: board private structure
31657 - **/
31658 -
31659 -static void
31660 -e1000_phy_disable_receiver(struct e1000_adapter *adapter)
31661 -{
31662 -       /* Write out to PHY registers 29 and 30 to disable the Receiver. */
31663 -       e1000_write_phy_reg(&adapter->hw, 29, 0x001F);
31664 -       e1000_write_phy_reg(&adapter->hw, 30, 0x8FFC);
31665 -       e1000_write_phy_reg(&adapter->hw, 29, 0x001A);
31666 -       e1000_write_phy_reg(&adapter->hw, 30, 0x8FF0);
31667 -
31668 -       return;
31669 -}
31670 -
31671 -/**
31672 - * e1000_phy_reset_clk_and_crs - This routine resets the TX_CLK and
31673 - * TX_CRS registers on the non-integrated PHY.
31674 - *
31675 - * @adapter: board private structure
31676 - **/
31677 -
31678 -static void
31679 -e1000_phy_reset_clk_and_crs(struct e1000_adapter *adapter)
31680 -{
31681 -       uint16_t phy_reg;
31682 -
31683 -       /* Because we reset the PHY above, we need to re-force TX_CLK in the
31684 -        * Extended PHY Specific Control Register to 25MHz clock.  This
31685 -        * value defaults back to a 2.5MHz clock when the PHY is reset.
31686 -        */
31687 -       e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
31688 -       phy_reg |= M88E1000_EPSCR_TX_CLK_25;
31689 -       e1000_write_phy_reg(&adapter->hw, 
31690 -               M88E1000_EXT_PHY_SPEC_CTRL, phy_reg);
31691 -
31692 -       /* In addition, because of the s/w reset above, we need to enable
31693 -        * CRS on TX.  This must be set for both full and half duplex
31694 -        * operation.
31695 -        */
31696 -       e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
31697 -       phy_reg |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
31698 -       e1000_write_phy_reg(&adapter->hw, 
31699 -               M88E1000_PHY_SPEC_CTRL, phy_reg);
31700 -}
31701 -
31702 -/**
31703 - * e1000_nonintegrated_phy_loopback - This routine enables the PHY 
31704 - * loopback circuit to work on the non-integrated PHY, under *any* link
31705 - * condition.
31706 - *
31707 - * @adapter: board private structure
31708 - *
31709 - * Returns 0 on success, 1 on failure
31710 - **/
31711 -
31712 -static int
31713 -e1000_nonintegrated_phy_loopback(struct e1000_adapter *adapter)
31714 -{
31715 -       uint32_t ctrl_reg;
31716 -       uint16_t phy_reg;
31717 -       int status = 1;
31718 -
31719 -       /* Setup the Device Control Register for PHY loopback test. */
31720 -
31721 -       ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
31722 -       ctrl_reg |= (E1000_CTRL_ILOS |          /* Invert Loss-Of-Signal */
31723 -                    E1000_CTRL_FRCSPD |        /* Set the Force Speed Bit */
31724 -                    E1000_CTRL_FRCDPX |        /* Set the Force Duplex Bit */
31725 -                    E1000_CTRL_SPD_1000 |      /* Force Speed to 1000 */
31726 -                    E1000_CTRL_FD);            /* Force Duplex to FULL */
31727 -
31728 -       E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
31729 -
31730 -       /* Read the PHY Specific Control Register (0x10) */
31731 -       e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
31732 -
31733 -       /* Clear Auto-Crossover bits in PHY Specific Control Register
31734 -        * (bits 6:5).
31735 -        */
31736 -       phy_reg &= ~M88E1000_PSCR_AUTO_X_MODE;
31737 -       e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, phy_reg);
31738 -
31739 -       /* Perform software reset on the PHY */
31740 -       e1000_phy_reset(&adapter->hw);
31741 -
31742 -       /* Have to setup TX_CLK and TX_CRS after software reset */
31743 -       e1000_phy_reset_clk_and_crs(adapter);
31744 -
31745 -       e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100);
31746 -
31747 -       /* Wait for reset to complete. */
31748 -       usec_delay(500);
31749 -
31750 -       /* Have to setup TX_CLK and TX_CRS after software reset */
31751 -       e1000_phy_reset_clk_and_crs(adapter);
31752 -
31753 -       /* Write out to PHY registers 29 and 30 to disable the Receiver. */
31754 -       e1000_phy_disable_receiver(adapter);
31755 -
31756 -       /* Set the loopback bit in the PHY control register. */
31757 -       e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
31758 -       phy_reg |= MII_CR_LOOPBACK;
31759 -       e1000_write_phy_reg(&adapter->hw, PHY_CTRL, phy_reg);
31760 -
31761 -       /* Setup TX_CLK and TX_CRS one more time. */
31762 -       e1000_phy_reset_clk_and_crs(adapter);
31763 -
31764 -       status = 0;
31765 -
31766 -       /* Check Phy Configuration */
31767 -       e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
31768 -       if(phy_reg != 0x4100) {
31769 -               status = 1;
31770 -       }
31771 -
31772 -       e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
31773 -       if(phy_reg != 0x0070) {
31774 -               status = 1;
31775 -       }
31776 -
31777 -       e1000_read_phy_reg(&adapter->hw, 29, &phy_reg);
31778 -       if(phy_reg != 0x001A) {
31779 -               status = 1;
31780 -       }
31781 -
31782 -       return status;
31783 -}
31784 -
31785 -/**
31786 - * e1000_integrated_phy_loopback - This routine is used by diagnostic
31787 - * software to put the 82544, 82540, 82545, and 82546 MAC based network
31788 - * cards into loopback mode.
31789 - *
31790 - * @adapter: board private structure
31791 - * @speed: speed
31792 - *               
31793 - *  Current procedure is to:
31794 - *    1) Disable auto-MDI/MDIX
31795 - *    2) Perform SW phy reset (bit 15 of PHY_CTRL)
31796 - *    3) Disable autoneg and reset
31797 - *    4) For the specified speed, set the loopback
31798 - *       mode for that speed.  Also force the MAC
31799 - *       to the correct speed and duplex for the
31800 - *       specified operation.
31801 - *    5) If this is an 82543, setup the TX_CLK and
31802 - *       TX_CRS again.
31803 - *    6) Disable the receiver so a cable disconnect
31804 - *       and reconnect will not cause autoneg to
31805 - *       begin.
31806 - *
31807 - * Returns 0 on success, 1 on failure
31808 - **/
31809 -
31810 -static int
31811 -e1000_integrated_phy_loopback(struct e1000_adapter *adapter,
31812 -                             uint16_t speed)
31813 -{
31814 -       uint32_t ctrl_reg = 0;
31815 -       uint32_t stat_reg = 0;
31816 -       boolean_t loopback_mode_set = FALSE;
31817 -
31818 -       adapter->hw.autoneg = FALSE;
31819 -
31820 -       /* Set up desired loopback speed and duplex depending on input
31821 -        * into this function.
31822 -        */
31823 -       switch (speed) {
31824 -       case SPEED_1000:
31825 -               /* Set up the MII control reg to the desired loopback speed. */
31826 -
31827 -               /* Auto-MDI/MDIX Off */
31828 -               e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL,
31829 -                                   0x0808);
31830 -               /* reset to update Auto-MDI/MDIX */
31831 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140);
31832 -               /* autoneg off */
31833 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140);
31834 -               /* force 1000, set loopback */
31835 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4140);
31836 -
31837 -               /* Now set up the MAC to the same speed/duplex as the PHY. */
31838 -               ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
31839 -               ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */
31840 -               ctrl_reg |= (E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */
31841 -                            E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */
31842 -                            E1000_CTRL_SPD_1000 |/* Force Speed to 1000 */
31843 -                            E1000_CTRL_FD);     /* Force Duplex to FULL */
31844 -
31845 -               if(adapter->hw.media_type == e1000_media_type_copper) {
31846 -                       ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */
31847 -               } else {
31848 -                       /* Set the ILOS bit on the fiber Nic is half
31849 -                        * duplex link is detected. */
31850 -                       stat_reg = E1000_READ_REG(&adapter->hw, STATUS);
31851 -                       if((stat_reg & E1000_STATUS_FD) == 0)
31852 -                               ctrl_reg |= (E1000_CTRL_ILOS | E1000_CTRL_SLU);
31853 -               }
31854 -
31855 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
31856 -               loopback_mode_set = TRUE;
31857 -               break;
31858 -
31859 -       case SPEED_100:
31860 -               /* Set up the MII control reg to the desired loopback speed. */
31861 -
31862 -               /* Auto-MDI/MDIX Off */
31863 -               e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL,
31864 -                                   0x0808);
31865 -               /* reset to update Auto-MDI/MDIX */
31866 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140);
31867 -               /* autoneg off */
31868 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140);
31869 -               /* reset to update autoneg */
31870 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100);
31871 -               /* MAC interface speed to 100Mbps */
31872 -               e1000_write_phy_reg(&adapter->hw,
31873 -                                   M88E1000_EXT_PHY_SPEC_CTRL, 0x0c14);
31874 -               /* reset to update MAC interface speed */
31875 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0xe100);
31876 -               /* force 100, set loopback */
31877 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x6100);
31878 -
31879 -               /* Now set up the MAC to the same speed/duplex as the PHY. */
31880 -               ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
31881 -               ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */
31882 -               ctrl_reg |= (E1000_CTRL_ILOS |   /* Invert Loss-Of-Signal */
31883 -                            E1000_CTRL_SLU |    /* Set the Force Link Bit */
31884 -                            E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */
31885 -                            E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */
31886 -                            E1000_CTRL_SPD_100 |/* Force Speed to 100 */
31887 -                            E1000_CTRL_FD);     /* Force Duplex to FULL */
31888 -
31889 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
31890 -               loopback_mode_set = TRUE;
31891 -               break;
31892 -
31893 -       case SPEED_10:
31894 -               /* Set up the MII control reg to the desired loopback speed. */
31895 -
31896 -               /* Auto-MDI/MDIX Off */
31897 -               e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL,
31898 -                                   0x0808);
31899 -               /* reset to update Auto-MDI/MDIX */
31900 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140);
31901 -               /* autoneg off */
31902 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140);
31903 -               /* reset to update autoneg */
31904 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100);
31905 -               /* MAC interface speed to 10Mbps */
31906 -               e1000_write_phy_reg(&adapter->hw,
31907 -                                   M88E1000_EXT_PHY_SPEC_CTRL, 0x0c04);
31908 -               /* reset to update MAC interface speed */
31909 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100);
31910 -               /* force 10, set loopback */
31911 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4100);
31912 -
31913 -               /* Now set up the MAC to the same speed/duplex as the PHY. */
31914 -               ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
31915 -               ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */
31916 -               ctrl_reg |= (E1000_CTRL_SLU |   /* Set the Force Link Bit */
31917 -                            E1000_CTRL_FRCSPD |/* Set the Force Speed Bit */
31918 -                            E1000_CTRL_FRCDPX |/* Set the Force Duplex Bit */
31919 -                            E1000_CTRL_SPD_10 |/* Force Speed to 10 */
31920 -                            E1000_CTRL_FD);    /* Force Duplex to FULL */
31921 -
31922 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
31923 -               loopback_mode_set = TRUE;
31924 -               break;
31925 -
31926 -       default:
31927 -               loopback_mode_set = FALSE;
31928 -               break;
31929 -       }
31930 -
31931 -       /* Disable the receiver on the PHY so when a cable is plugged
31932 -        * in, the PHY does not begin to autoneg when a cable is 
31933 -        * reconnected to the NIC.
31934 -        */
31935 -       e1000_phy_disable_receiver(adapter);
31936 -
31937 -       usec_delay(500);
31938 -
31939 -       return loopback_mode_set ? 0 : 1;
31940 -}
31941 -
31942 -/**
31943 - * e1000_set_phy_loopback - Set the PHY into loopback mode.
31944 - * @adapter: board private structure
31945 - *
31946 - * Returns 0 on success, 1 on failure
31947 - **/
31948 -
31949 -static int
31950 -e1000_set_phy_loopback(struct e1000_adapter *adapter)
31951 -{
31952 -       uint16_t phy_reg = 0;
31953 -       uint16_t speed = 0;
31954 -       uint16_t duplex = 0;
31955 -       int status = 1;
31956 -       int count;
31957 -
31958 -       switch (adapter->hw.mac_type) {
31959 -       case e1000_82543:
31960 -               if(adapter->hw.media_type == e1000_media_type_copper) {
31961 -                       /* Attempt to setup Loopback mode on Non-
31962 -                        * integrated PHY.  Some PHY registers get
31963 -                        * corrupted at random, so attempt this
31964 -                        * 10 times.
31965 -                        */
31966 -                       for(count = 0; count < 10; count++)
31967 -                               if(!e1000_nonintegrated_phy_loopback(adapter))
31968 -                                       break;
31969 -                       status = 0;
31970 -               }
31971 -               break;
31972 -
31973 -       case e1000_82544:
31974 -               if(adapter->hw.media_type == e1000_media_type_copper)
31975 -                       e1000_get_speed_and_duplex(&adapter->hw, &speed,
31976 -                                                  &duplex);
31977 -                       status = e1000_integrated_phy_loopback(adapter, speed);
31978 -               break;
31979 -
31980 -       case e1000_82540:
31981 -       case e1000_82545:
31982 -       case e1000_82546:
31983 -               e1000_get_speed_and_duplex(&adapter->hw, &speed, &duplex);
31984 -               status = e1000_integrated_phy_loopback(adapter, speed);
31985 -               break;
31986 -
31987 -       default:
31988 -               /* Default PHY loopback work is to read the MII 
31989 -                * control register and assert bit 14 (loopback mode).
31990 -                */
31991 -               e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
31992 -               phy_reg |= MII_CR_LOOPBACK;
31993 -               e1000_write_phy_reg(&adapter->hw, PHY_CTRL,
31994 -                                   phy_reg);
31995 -               status = 0;
31996 -               break;
31997 -       }
31998 -
31999 -       return status;
32000 -}
32001 -
32002 -static int
32003 -e1000_set_loopback_mode(struct e1000_adapter *adapter,
32004 -                       enum idiag_e1000_diag_loopback_mode mode)
32005 -{
32006 -       uint32_t rctl;
32007 -       uint16_t phy_reg;
32008 -       int status = 1;
32009 -
32010 -       switch (mode) {
32011 -
32012 -       case IDIAG_E1000_DIAG_NONE_LB:
32013 -               /* Clear bits 7:6 to turn off loopback mode */
32014 -               rctl = E1000_READ_REG(&adapter->hw, RCTL);
32015 -               rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
32016 -               E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
32017 -               /* Only modify the GMII/MII PHY device if the
32018 -                * media type is copper.
32019 -                */
32020 -               if(adapter->hw.media_type == e1000_media_type_copper ||
32021 -                 (adapter->hw.media_type == e1000_media_type_fiber &&
32022 -                 (adapter->hw.mac_type == e1000_82545 ||
32023 -                  adapter->hw.mac_type == e1000_82546))) {
32024 -                       adapter->hw.autoneg = TRUE;
32025 -                       /* De-assert bit 14 (loopback mode) in PHY */
32026 -                       e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
32027 -                       /* Only turn off PHY loopback if enabled */
32028 -                       if(phy_reg & MII_CR_LOOPBACK) {
32029 -                               phy_reg &= ~MII_CR_LOOPBACK;
32030 -                               e1000_write_phy_reg(&adapter->hw, PHY_CTRL,
32031 -                                                   phy_reg);
32032 -                               /* Reset the PHY to make sure we
32033 -                                * regain link */
32034 -                               e1000_phy_reset(&adapter->hw);
32035 -                       }
32036 -               }
32037 -               status = 0;
32038 -               break;
32039 -
32040 -
32041 -       case IDIAG_E1000_DIAG_MAC_LB:
32042 -               /* Not supported */
32043 -               break;
32044 -
32045 -       case IDIAG_E1000_DIAG_PHY_TCVR_LB:
32046 -               if(adapter->hw.media_type == e1000_media_type_fiber) {
32047 -                       if(adapter->hw.mac_type == e1000_82545 ||
32048 -                          adapter->hw.mac_type == e1000_82546) {
32049 -                               status = e1000_set_phy_loopback(adapter);
32050 -                       } else {
32051 -                               rctl = E1000_READ_REG(&adapter->hw, RCTL);
32052 -                               rctl |= E1000_RCTL_LBM_TCVR;
32053 -                               E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
32054 -                               status = 0;
32055 -                       }
32056 -               }
32057 -               if(adapter->hw.media_type == e1000_media_type_copper) {
32058 -                       status = e1000_set_phy_loopback(adapter);
32059 -               }
32060 -               break;
32061 -       }
32062 -
32063 -       return status;
32064 -}
32065 -
32066 -static void
32067 -e1000_create_lbtest_frame(struct sk_buff *skb,
32068 -                         unsigned int frame_size)
32069 -{
32070 -       memset(skb->data, 0xFF, frame_size);
32071 -       frame_size = (frame_size % 2) ? (frame_size - 1) : frame_size;
32072 -       memset(&skb->data[frame_size / 2], 0xAA, frame_size / 2 - 1);
32073 -       memset(&skb->data[frame_size / 2 + 10], 0xBE, 1);
32074 -       memset(&skb->data[frame_size / 2 + 12], 0xAF, 1);
32075 -}
32076 -
32077 -static int
32078 -e1000_check_lbtest_frame(struct sk_buff *skb,
32079 -                        unsigned int frame_size)
32080 -{
32081 -       frame_size = (frame_size % 2) ? (frame_size - 1) : frame_size;
32082 -       if(*(skb->data + 3) == 0xFF) {
32083 -               if((*(skb->data + frame_size / 2 + 10) == 0xBE) &&
32084 -                  (*(skb->data + frame_size / 2 + 12) == 0xAF)) {
32085 -                       return 1;
32086 -               }
32087 -       }
32088 -       return 0;
32089 -}
32090 -
32091 -static enum idiag_e1000_diag_loopback_result
32092 -e1000_loopback_test(struct e1000_adapter *adapter)
32093 -{
32094 -       struct e1000_desc_ring *txdr = &adapter->diag_tx_ring;
32095 -       struct e1000_desc_ring *rxdr = &adapter->diag_rx_ring;
32096 -       struct pci_dev *pdev = adapter->pdev;
32097 -       int i;
32098 -
32099 -       E1000_WRITE_REG(&adapter->hw, RDT, rxdr->count - 1);
32100 -
32101 -       for(i = 0; i < 64; i++) {
32102 -               e1000_create_lbtest_frame(txdr->buffer_info[i].skb, 1024);
32103 -               pci_dma_sync_single(pdev, txdr->buffer_info[i].dma,
32104 -                                   txdr->buffer_info[i].length,
32105 -                                   PCI_DMA_TODEVICE);
32106 -       }
32107 -       E1000_WRITE_REG(&adapter->hw, TDT, i);
32108 -
32109 -       msec_delay(200);
32110 -
32111 -       pci_dma_sync_single(pdev, rxdr->buffer_info[0].dma,
32112 -                           rxdr->buffer_info[0].length, PCI_DMA_FROMDEVICE);
32113 -       if(e1000_check_lbtest_frame(rxdr->buffer_info[0].skb, 1024))
32114 -               return IDIAG_E1000_LOOPBACK_TEST_OK;
32115 -       else
32116 -               return IDIAG_E1000_LOOPBACK_TEST_FAILED;
32117 -}
32118 -
32119 -static enum idiag_pro_stat
32120 -e1000_diag_loopback_test(struct e1000_adapter *adapter,
32121 -                        uint8_t *diag_param)
32122 -{
32123 -       struct idiag_e1000_diag_loopback_test_param *param =
32124 -               (struct idiag_e1000_diag_loopback_test_param *) diag_param;
32125 -
32126 -       if(param->mode == IDIAG_E1000_DIAG_MAC_LB) {
32127 -               /* Loopback test not support */
32128 -               param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC;
32129 -               return IDIAG_PRO_STAT_NOT_SUPPORTED;
32130 -       }
32131 -
32132 -       if(e1000_setup_desc_rings(adapter)) {
32133 -               param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC;
32134 -               return IDIAG_PRO_STAT_TEST_FAILED;
32135 -       }
32136 -
32137 -       if(e1000_set_loopback_mode(adapter, param->mode)) {
32138 -               param->result = IDIAG_E1000_LOOPBACK_TEST_NOT_EXEC;
32139 -               e1000_free_desc_rings(adapter);
32140 -               return IDIAG_PRO_STAT_TEST_FAILED;
32141 -       }
32142 -       param->result = e1000_loopback_test(adapter);
32143 -       e1000_set_loopback_mode(adapter, IDIAG_E1000_DIAG_NONE_LB);
32144 -
32145 -       e1000_free_desc_rings(adapter);
32146 -
32147 -       return (param->result ==
32148 -               IDIAG_E1000_LOOPBACK_TEST_OK) ? IDIAG_PRO_STAT_OK :
32149 -               IDIAG_PRO_STAT_TEST_FAILED;
32150 -}
32151 -
32152 -static enum idiag_pro_stat
32153 -e1000_diag_link_test(struct e1000_adapter *adapter,
32154 -                    uint8_t *diag_param)
32155 -{
32156 -       e1000_check_for_link(&adapter->hw);
32157 -
32158 -       if(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU)
32159 -               return IDIAG_PRO_STAT_OK;
32160 -       else
32161 -               return IDIAG_PRO_STAT_TEST_FAILED;
32162 -}
32163 -
32164 -int
32165 -e1000_diag_ioctl(struct net_device *netdev,
32166 -                struct ifreq *ifr)
32167 -{
32168 -       struct e1000_adapter *adapter = netdev->priv;
32169 -       struct idiag_pro_data *diag_data =
32170 -               (struct idiag_pro_data *) ifr->ifr_data;
32171 -       boolean_t run_offline;
32172 -       boolean_t interface_up = netif_running(netdev);
32173 -
32174 -       diag_data->status = IDIAG_PRO_STAT_NOT_SUPPORTED;
32175 -
32176 -       if(!capable(CAP_NET_ADMIN))
32177 -               /* must have admin capabilities */
32178 -               return -EPERM;
32179 -
32180 -       if(diag_data->interface_ver != IDIAG_PRO_VERSION)
32181 -               /* incorrect diagnostics interface version */
32182 -               return -EFAULT;
32183 -
32184 -       if(diag_data->cmd != IDIAG_PRO_IDENTIFY_DRIVER &&
32185 -          diag_data->driver_id != IDIAG_E1000_DRIVER)
32186 -               /* incorrect driver identifier */
32187 -               return -EFAULT;
32188 -
32189 -       /* Some test requring exclusive access to hardware, so
32190 -        * we need to teardown the hardware setup, run the test,
32191 -        * and restore the hardware to resume the network 
32192 -        * connection. 
32193 -        */
32194 -       run_offline =  (diag_data->cmd == IDIAG_E1000_DIAG_REG_TEST ||
32195 -                       diag_data->cmd == IDIAG_E1000_DIAG_INTR_TEST ||
32196 -                       diag_data->cmd == IDIAG_E1000_DIAG_LOOPBACK_TEST);
32197 -
32198 -       if(run_offline) {
32199 -               if(interface_up)
32200 -                       e1000_down(adapter);
32201 -               else
32202 -                       e1000_reset(adapter);
32203 -       }
32204 -
32205 -       /* Run the diagnotic test */
32206 -       switch (diag_data->cmd) {
32207 -
32208 -       case IDIAG_PRO_IDENTIFY_DRIVER:
32209 -               diag_data->driver_id = IDIAG_E1000_DRIVER;
32210 -               diag_data->status = IDIAG_PRO_STAT_OK;
32211 -               break;
32212 -
32213 -       case IDIAG_E1000_DIAG_REG_TEST:
32214 -               diag_data->status =
32215 -                       e1000_diag_reg_test(adapter, diag_data->diag_param);
32216 -               break;
32217 -
32218 -       case IDIAG_E1000_DIAG_XSUM_TEST:
32219 -               diag_data->status =
32220 -                       e1000_diag_eeprom_test(adapter, diag_data->diag_param);
32221 -               break;
32222 -
32223 -       case IDIAG_E1000_DIAG_INTR_TEST:
32224 -               diag_data->status =
32225 -                       e1000_diag_intr_test(adapter, diag_data->diag_param);
32226 -               break;
32227 -
32228 -       case IDIAG_E1000_DIAG_LOOPBACK_TEST:
32229 -               diag_data->status =
32230 -                       e1000_diag_loopback_test(adapter,
32231 -                                                diag_data->diag_param);
32232 -               break;
32233 -
32234 -       case IDIAG_E1000_DIAG_LINK_TEST:
32235 -               diag_data->status =
32236 -                       e1000_diag_link_test(adapter, diag_data->diag_param);
32237 -               break;
32238 -
32239 -       default:
32240 -               diag_data->status = IDIAG_PRO_STAT_NOT_SUPPORTED;
32241 -               break;
32242 -       }
32243 -
32244 -       if(run_offline) {
32245 -               e1000_reset(adapter);
32246 -               if(interface_up) {
32247 -                       if(e1000_up(adapter)) {
32248 -                               diag_data->status = IDIAG_PRO_STAT_TEST_FATAL;
32249 -                               return -EFAULT;
32250 -                       }
32251 -               }
32252 -       }
32253 -
32254 -       return 0;
32255 -}
32256 -
32257 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
32258 --- click-1.6.0/drivers/e1000-4.x/src/e1000_main.c.orig 2007-07-16 19:47:50.000000000 -0400
32259 +++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_main.c.orig      1969-12-31 19:00:00.000000000 -0500
32260 @@ -1,2536 +0,0 @@
32261 -/*******************************************************************************
32262 -
32263 -  
32264 -  Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
32265 -  
32266 -  This program is free software; you can redistribute it and/or modify it 
32267 -  under the terms of the GNU General Public License as published by the Free 
32268 -  Software Foundation; either version 2 of the License, or (at your option) 
32269 -  any later version.
32270 -  
32271 -  This program is distributed in the hope that it will be useful, but WITHOUT 
32272 -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
32273 -  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
32274 -  more details.
32275 -  
32276 -  You should have received a copy of the GNU General Public License along with
32277 -  this program; if not, write to the Free Software Foundation, Inc., 59 
32278 -  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32279 -  
32280 -  The full GNU General Public License is included in this distribution in the
32281 -  file called LICENSE.
32282 -  
32283 -  Contact Information:
32284 -  Linux NICS <linux.nics@intel.com>
32285 -  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
32286 -
32287 -*******************************************************************************/
32288 -
32289 -#define __E1000_MAIN__
32290 -#ifdef IANS
32291 -#define _IANS_MAIN_MODULE_C_
32292 -#endif
32293 -#include "e1000.h"
32294 -
32295 -/* Change Log
32296 - *
32297 - * 4.3.15      8/9/02
32298 - *   o Clean up: prepended a shortened version of the license that references
32299 - *     the full license in LICENSE.
32300 - *   o Clean up: copied small packets to small socket buffers for truesize
32301 - *     bug that is exposed with the NFS mount daemon.
32302 - *   o Clean up: added pci reads for pci posting issues.
32303 - *   o Bug fix: added memory barriers for IA64.
32304 - *   o Feature: added locking mechanism for asf functionality.
32305 - *
32306 - * 4.3.2       7/5/02
32307 - *   o Bug fix: perform controller reset using I/O rather than mmio because
32308 - *     some chipsets try to perform a 64-bit write, but the controller ignores
32309 - *     the upper 32-bit write once the reset is intiated by the lower 32-bit
32310 - *     write, causing a master abort.
32311 - *   o Bug fix: fixed jumbo frames sized from 1514 to 2048.
32312 - *   o ASF support: disable ARP when driver is loaded or resumed; enable when
32313 - *     driver is removed or suspended.
32314 - *   o Bug fix: changed default setting for RxIntDelay to 0 for 82542/3/4
32315 - *     controllers to workaround h/w errata where controller will hang when
32316 - *     RxIntDelay <> 0 under certian network conditions.
32317 - *   o Clean up: removed unused and undocumented user-settable settings for
32318 - *     PHY.
32319 - *   o Bug fix: ethtool GEEPROM was using byte address rather than word
32320 - *     addressing.
32321 - *   o Feature: added support for ethtool SEEPROM.
32322 - *   o Feature: added support for entropy pool.
32323 - *
32324 - * 4.2.17      5/30/02
32325 - */
32326
32327 -char e1000_driver_name[] = "e1000";
32328 -char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";
32329 -char e1000_driver_version[] = "4.3.15";
32330 -char e1000_copyright[] = "Copyright (c) 1999-2002 Intel Corporation.";
32331 -
32332 -/* e1000_pci_tbl - PCI Device ID Table
32333 - *
32334 - * Private driver_data field (last one) stores an index into e1000_strings
32335 - * Wildcard entries (PCI_ANY_ID) should come last
32336 - * Last entry must be all 0s
32337 - *
32338 - * { Vendor ID, Device ID, SubVendor ID, SubDevice ID,
32339 - *   Class, Class Mask, String Index }
32340 - */
32341 -static struct pci_device_id e1000_pci_tbl[] __devinitdata = {
32342 -       /* Intel(R) PRO/1000 Network Connection */
32343 -       {0x8086, 0x1000, 0x8086, 0x1000, 0, 0, 0},
32344 -       {0x8086, 0x1001, 0x8086, 0x1003, 0, 0, 0},
32345 -       {0x8086, 0x1004, 0x8086, 0x1004, 0, 0, 0},
32346 -       {0x8086, 0x1008, 0x8086, 0x1107, 0, 0, 0},
32347 -       {0x8086, 0x1009, 0x8086, 0x1109, 0, 0, 0},
32348 -       {0x8086, 0x100C, 0x8086, 0x1112, 0, 0, 0},
32349 -       {0x8086, 0x100E, 0x8086, 0x001E, 0, 0, 0},
32350 -       /* Compaq Gigabit Ethernet Server Adapter */
32351 -       {0x8086, 0x1000, 0x0E11, PCI_ANY_ID, 0, 0, 1},
32352 -       {0x8086, 0x1001, 0x0E11, PCI_ANY_ID, 0, 0, 1},
32353 -       {0x8086, 0x1004, 0x0E11, PCI_ANY_ID, 0, 0, 1},
32354 -       /* IBM Mobile, Desktop & Server Adapters */
32355 -       {0x8086, 0x1000, 0x1014, PCI_ANY_ID, 0, 0, 2},
32356 -       {0x8086, 0x1001, 0x1014, PCI_ANY_ID, 0, 0, 2},
32357 -       {0x8086, 0x1004, 0x1014, PCI_ANY_ID, 0, 0, 2},
32358 -       /* Generic */
32359 -       {0x8086, 0x1000, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32360 -       {0x8086, 0x1001, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32361 -       {0x8086, 0x1004, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32362 -       {0x8086, 0x1008, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32363 -       {0x8086, 0x1009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32364 -       {0x8086, 0x100C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32365 -       {0x8086, 0x100D, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32366 -       {0x8086, 0x100E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32367 -       {0x8086, 0x100F, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32368 -       {0x8086, 0x1011, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32369 -       {0x8086, 0x1010, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32370 -       {0x8086, 0x1012, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
32371 -       /* required last entry */
32372 -       {0,}
32373 -};
32374 -
32375 -MODULE_DEVICE_TABLE(pci, e1000_pci_tbl);
32376 -
32377 -static char *e1000_strings[] = {
32378 -       "Intel(R) PRO/1000 Network Connection",
32379 -       "Compaq Gigabit Ethernet Server Adapter",
32380 -       "IBM Mobile, Desktop & Server Adapters"
32381 -};
32382 -
32383 -/* Local Function Prototypes */
32384 -
32385 -int e1000_up(struct e1000_adapter *adapter);
32386 -void e1000_down(struct e1000_adapter *adapter);
32387 -void e1000_reset(struct e1000_adapter *adapter);
32388 -void e1000_smbus_lock(struct pci_dev *pdev, boolean_t lock);
32389 -
32390 -static int e1000_init_module(void);
32391 -static void e1000_exit_module(void);
32392 -static int e1000_probe(struct pci_dev *pdev, const struct pci_device_id *ent);
32393 -static void e1000_remove(struct pci_dev *pdev);
32394 -static void e1000_sw_init(struct e1000_adapter *adapter);
32395 -static int e1000_open(struct net_device *netdev);
32396 -static int e1000_close(struct net_device *netdev);
32397 -static int e1000_setup_tx_resources(struct e1000_adapter *adapter);
32398 -static int e1000_setup_rx_resources(struct e1000_adapter *adapter);
32399 -static void e1000_configure_tx(struct e1000_adapter *adapter);
32400 -static void e1000_configure_rx(struct e1000_adapter *adapter);
32401 -static void e1000_setup_rctl(struct e1000_adapter *adapter);
32402 -static void e1000_clean_tx_ring(struct e1000_adapter *adapter);
32403 -static void e1000_clean_rx_ring(struct e1000_adapter *adapter);
32404 -static void e1000_free_tx_resources(struct e1000_adapter *adapter);
32405 -static void e1000_free_rx_resources(struct e1000_adapter *adapter);
32406 -static void e1000_set_multi(struct net_device *netdev);
32407 -static void e1000_update_phy_info(unsigned long data);
32408 -static void e1000_watchdog(unsigned long data);
32409 -static int e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev);
32410 -static struct net_device_stats * e1000_get_stats(struct net_device *netdev);
32411 -static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
32412 -static int e1000_set_mac(struct net_device *netdev, void *p);
32413 -static void e1000_update_stats(struct e1000_adapter *adapter);
32414 -static inline void e1000_irq_disable(struct e1000_adapter *adapter);
32415 -static inline void e1000_irq_enable(struct e1000_adapter *adapter);
32416 -static void e1000_intr(int irq, void *data, struct pt_regs *regs);
32417 -static void e1000_clean_tx_irq(struct e1000_adapter *adapter);
32418 -static void e1000_clean_rx_irq(struct e1000_adapter *adapter);
32419 -static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter);
32420 -static int e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd);
32421 -static void e1000_enter_82542_rst(struct e1000_adapter *adapter);
32422 -static void e1000_leave_82542_rst(struct e1000_adapter *adapter);
32423 -static inline void e1000_rx_checksum(struct e1000_adapter *adapter,
32424 -                                     struct e1000_rx_desc *rx_desc,
32425 -                                     struct sk_buff *skb);
32426 -static boolean_t e1000_smbus_arp_enable(struct e1000_adapter *adapter,
32427 -                                       boolean_t arp_enable);
32428 -#ifdef HAVE_TX_TIMEOUT
32429 -static void e1000_tx_timeout(struct net_device *dev);
32430 -#endif
32431 -
32432 -#ifdef NETIF_F_HW_VLAN_TX
32433 -static void e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp);
32434 -static void e1000_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid);
32435 -static void e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid);
32436 -#endif
32437 -
32438 -static int e1000_notify_reboot(struct notifier_block *, unsigned long event, void *ptr);
32439 -static int e1000_suspend(struct pci_dev *pdev, uint32_t state);
32440 -#ifdef CONFIG_PM
32441 -static int e1000_resume(struct pci_dev *pdev);
32442 -#endif
32443 -
32444 -struct notifier_block e1000_notifier = {
32445 -       notifier_call:  e1000_notify_reboot,
32446 -       next:           NULL,
32447 -       priority:       0
32448 -};
32449 -
32450 -/* Exported from other modules */
32451 -
32452 -extern void e1000_check_options(struct e1000_adapter *adapter);
32453 -extern void e1000_proc_dev_setup(struct e1000_adapter *adapter);
32454 -extern void e1000_proc_dev_free(struct e1000_adapter *adapter);
32455 -extern int e1000_ethtool_ioctl(struct net_device *netdev, struct ifreq *ifr);
32456 -#ifdef IDIAG
32457 -extern int e1000_diag_ioctl(struct net_device *netdev, struct ifreq *ifr);
32458 -#endif
32459 -
32460 -static struct pci_driver e1000_driver = {
32461 -       name:     e1000_driver_name,
32462 -       id_table: e1000_pci_tbl,
32463 -       probe:    e1000_probe,
32464 -       remove:   __devexit_p(e1000_remove),
32465 -       /* Power Managment Hooks */
32466 -#ifdef CONFIG_PM
32467 -       suspend:  e1000_suspend,
32468 -       resume:   e1000_resume
32469 -#endif
32470 -};
32471 -
32472 -MODULE_AUTHOR("Intel Corporation, <linux.nics@intel.com>");
32473 -MODULE_DESCRIPTION("Intel(R) PRO/1000 Network Driver");
32474 -MODULE_LICENSE("GPL");
32475 -
32476 -#ifdef EXPORT_SYMTAB
32477 -EXPORT_SYMBOL(e1000_smbus_lock);
32478 -#endif
32479 -
32480 -/**
32481 - * e1000_init_module - Driver Registration Routine
32482 - *
32483 - * e1000_init_module is the first routine called when the driver is
32484 - * loaded. All it does is register with the PCI subsystem.
32485 - **/
32486 -
32487 -static int __init
32488 -e1000_init_module(void)
32489 -{
32490 -       int ret;
32491 -       printk(KERN_INFO "%s - version %s\n",
32492 -              e1000_driver_string, e1000_driver_version);
32493 -
32494 -       printk(KERN_INFO "%s\n", e1000_copyright);
32495 -
32496 -       ret = pci_module_init(&e1000_driver);
32497 -       if(ret >= 0)
32498 -               register_reboot_notifier(&e1000_notifier);
32499 -       return ret;
32500 -}
32501 -
32502 -module_init(e1000_init_module);
32503 -
32504 -/**
32505 - * e1000_exit_module - Driver Exit Cleanup Routine
32506 - *
32507 - * e1000_exit_module is called just before the driver is removed
32508 - * from memory.
32509 - **/
32510 -
32511 -static void __exit
32512 -e1000_exit_module(void)
32513 -{
32514 -       unregister_reboot_notifier(&e1000_notifier);
32515 -       pci_unregister_driver(&e1000_driver);
32516 -}
32517 -
32518 -module_exit(e1000_exit_module);
32519 -
32520 -
32521 -int
32522 -e1000_up(struct e1000_adapter *adapter)
32523 -{
32524 -       struct net_device *netdev = adapter->netdev;
32525 -
32526 -       if(request_irq(netdev->irq, &e1000_intr, SA_SHIRQ | SA_SAMPLE_RANDOM,
32527 -                      netdev->name, netdev))
32528 -               return -1;
32529 -
32530 -       /* hardware has been reset, we need to reload some things */
32531 -
32532 -       e1000_set_multi(netdev);
32533 -#ifdef IANS
32534 -       if((ANS_PRIVATE_DATA_FIELD(adapter)->tag_mode) != IANS_BD_TAGGING_NONE)
32535 -           bd_ans_hw_EnableVLAN(adapter);
32536 -#endif
32537 -
32538 -       e1000_configure_tx(adapter);
32539 -       e1000_setup_rctl(adapter);
32540 -       e1000_configure_rx(adapter);
32541 -       e1000_alloc_rx_buffers(adapter);
32542 -
32543 -       mod_timer(&adapter->watchdog_timer, jiffies);
32544 -       e1000_irq_enable(adapter);
32545 -
32546 -       return 0;
32547 -}
32548 -
32549 -void
32550 -e1000_down(struct e1000_adapter *adapter)
32551 -{
32552 -       struct net_device *netdev = adapter->netdev;
32553 -
32554 -       e1000_irq_disable(adapter);
32555 -       free_irq(netdev->irq, netdev);
32556 -       del_timer_sync(&adapter->watchdog_timer);
32557 -       del_timer_sync(&adapter->phy_info_timer);
32558 -       adapter->link_speed = 0;
32559 -       adapter->link_duplex = 0;
32560 -       netif_carrier_off(netdev);
32561 -       netif_stop_queue(netdev);
32562 -
32563 -       e1000_reset(adapter);
32564 -       e1000_clean_tx_ring(adapter);
32565 -       e1000_clean_rx_ring(adapter);
32566 -}
32567 -
32568 -void
32569 -e1000_reset(struct e1000_adapter *adapter)
32570 -{
32571 -       /* Repartition Pba for greater than 9k mtu
32572 -        * To take effect CTRL.RST is required.
32573 -        */
32574 -
32575 -       if(adapter->rx_buffer_len > E1000_RXBUFFER_8192)
32576 -               E1000_WRITE_REG(&adapter->hw, PBA, E1000_JUMBO_PBA);
32577 -       else
32578 -               E1000_WRITE_REG(&adapter->hw, PBA, E1000_DEFAULT_PBA);
32579 -
32580 -       adapter->hw.fc = adapter->hw.original_fc;
32581 -       down(&adapter->smbus_lock);
32582 -       e1000_reset_hw(&adapter->hw);
32583 -       up(&adapter->smbus_lock);
32584 -       if(adapter->hw.mac_type >= e1000_82544)
32585 -               E1000_WRITE_REG(&adapter->hw, WUC, 0);
32586 -       e1000_init_hw(&adapter->hw);
32587 -       e1000_reset_adaptive(&adapter->hw);
32588 -       e1000_phy_get_info(&adapter->hw, &adapter->phy_info);
32589 -}
32590 -
32591 -/**
32592 - * e1000_probe - Device Initialization Routine
32593 - * @pdev: PCI device information struct
32594 - * @ent: entry in e1000_pci_tbl
32595 - *
32596 - * Returns 0 on success, negative on failure
32597 - *
32598 - * e1000_probe initializes an adapter identified by a pci_dev structure.
32599 - * The OS initialization, configuring of the adapter private structure,
32600 - * and a hardware reset occur.
32601 - **/
32602 -
32603 -static int __devinit
32604 -e1000_probe(struct pci_dev *pdev,
32605 -            const struct pci_device_id *ent)
32606 -{
32607 -       struct net_device *netdev;
32608 -       struct e1000_adapter *adapter;
32609 -       static int cards_found = 0;
32610 -       unsigned long mmio_start;
32611 -       int mmio_len;
32612 -       int pci_using_dac;
32613 -       int i;
32614 -
32615 -       if((i = pci_enable_device(pdev)))
32616 -               return i;
32617 -
32618 -       if(!(i = pci_set_dma_mask(pdev, PCI_DMA_64BIT))) {
32619 -               pci_using_dac = 1;
32620 -       } else {
32621 -               if((i = pci_set_dma_mask(pdev, PCI_DMA_32BIT))) {
32622 -                       E1000_ERR("No usable DMA configuration, aborting\n");
32623 -                       return i;
32624 -               }
32625 -               pci_using_dac = 0;
32626 -       }
32627 -
32628 -       if((i = pci_request_regions(pdev, e1000_driver_name)))
32629 -               return i;
32630 -
32631 -       pci_set_master(pdev);
32632 -
32633 -       netdev = alloc_etherdev(sizeof(struct e1000_adapter));
32634 -       if(!netdev)
32635 -               goto err_alloc_etherdev;
32636 -
32637 -       SET_MODULE_OWNER(netdev);
32638 -
32639 -       pci_set_drvdata(pdev, netdev);
32640 -       adapter = netdev->priv;
32641 -       adapter->netdev = netdev;
32642 -       adapter->pdev = pdev;
32643 -       adapter->hw.back = adapter;
32644 -
32645 -       mmio_start = pci_resource_start(pdev, BAR_0);
32646 -       mmio_len = pci_resource_len(pdev, BAR_0);
32647 -
32648 -       adapter->hw.hw_addr = ioremap(mmio_start, mmio_len);
32649 -       if(!adapter->hw.hw_addr)
32650 -               goto err_ioremap;
32651 -
32652 -       for(i = BAR_1; i <= BAR_5; i++) {
32653 -               if(pci_resource_len(pdev, i) == 0)
32654 -                       continue;
32655 -               if(pci_resource_flags(pdev, i) & IORESOURCE_IO) {
32656 -                       adapter->hw.io_base = pci_resource_start(pdev, i);
32657 -                       break;
32658 -               }
32659 -       }
32660 -
32661 -       netdev->open = &e1000_open;
32662 -       netdev->stop = &e1000_close;
32663 -       netdev->hard_start_xmit = &e1000_xmit_frame;
32664 -       netdev->get_stats = &e1000_get_stats;
32665 -       netdev->set_multicast_list = &e1000_set_multi;
32666 -       netdev->set_mac_address = &e1000_set_mac;
32667 -       netdev->change_mtu = &e1000_change_mtu;
32668 -       netdev->do_ioctl = &e1000_ioctl;
32669 -#ifdef HAVE_TX_TIMEOUT
32670 -       netdev->tx_timeout = &e1000_tx_timeout;
32671 -       netdev->watchdog_timeo = HZ;
32672 -#endif
32673 -#ifdef NETIF_F_HW_VLAN_TX
32674 -       netdev->vlan_rx_register = e1000_vlan_rx_register;
32675 -       netdev->vlan_rx_add_vid = e1000_vlan_rx_add_vid;
32676 -       netdev->vlan_rx_kill_vid = e1000_vlan_rx_kill_vid;
32677 -#endif
32678 -
32679 -       netdev->irq = pdev->irq;
32680 -       netdev->mem_start = mmio_start;
32681 -       netdev->base_addr = adapter->hw.io_base;
32682 -
32683 -       adapter->bd_number = cards_found;
32684 -       adapter->id_string = e1000_strings[ent->driver_data];
32685 -
32686 -       /* setup the private structure */
32687 -
32688 -       e1000_sw_init(adapter);
32689 -
32690 -#ifdef MAX_SKB_FRAGS
32691 -       if(adapter->hw.mac_type >= e1000_82543) {
32692 -#ifdef NETIF_F_HW_VLAN_TX
32693 -               netdev->features = NETIF_F_SG |
32694 -                                  NETIF_F_HW_CSUM |
32695 -                                  NETIF_F_HW_VLAN_TX |
32696 -                                  NETIF_F_HW_VLAN_RX |
32697 -                                  NETIF_F_HW_VLAN_FILTER;
32698 -#else
32699 -               netdev->features = NETIF_F_SG | NETIF_F_HW_CSUM;
32700 -#endif
32701 -       } else {
32702 -               netdev->features = NETIF_F_SG;
32703 -       }
32704 -
32705 -       if(pci_using_dac)
32706 -               netdev->features |= NETIF_F_HIGHDMA;
32707 -#endif
32708 -
32709 -       /* make sure the EEPROM is good */
32710 -
32711 -       if(e1000_validate_eeprom_checksum(&adapter->hw) < 0) {
32712 -               printk(KERN_ERR "The EEPROM Checksum Is Not Valid\n");
32713 -               goto err_eeprom;
32714 -       }
32715 -
32716 -       /* copy the MAC address out of the EEPROM */
32717 -
32718 -       e1000_read_mac_addr(&adapter->hw);
32719 -       memcpy(netdev->dev_addr, adapter->hw.mac_addr, netdev->addr_len);
32720 -
32721 -       if(!is_valid_ether_addr(netdev->dev_addr))
32722 -               goto err_eeprom;
32723 -
32724 -       e1000_read_part_num(&adapter->hw, &(adapter->part_num));
32725 -
32726 -       e1000_get_bus_info(&adapter->hw);
32727 -
32728 -       if((adapter->hw.mac_type == e1000_82544) &&
32729 -          (adapter->hw.bus_type == e1000_bus_type_pcix))
32730 -
32731 -               adapter->max_data_per_txd = 4096;
32732 -       else
32733 -               adapter->max_data_per_txd = MAX_JUMBO_FRAME_SIZE;
32734 -
32735 -#ifdef IANS
32736 -       adapter->iANSdata = kmalloc(sizeof(iANSsupport_t), GFP_KERNEL);
32737 -
32738 -       if(!adapter->iANSdata)
32739 -               goto err_eeprom;
32740 -
32741 -       memset(adapter->iANSdata, 0, sizeof(iANSsupport_t));
32742 -       bd_ans_drv_InitANS(adapter, adapter->iANSdata);
32743 -#endif
32744 -
32745 -       init_timer(&adapter->watchdog_timer);
32746 -       adapter->watchdog_timer.function = &e1000_watchdog;
32747 -       adapter->watchdog_timer.data = (unsigned long) adapter;
32748 -
32749 -       init_timer(&adapter->phy_info_timer);
32750 -       adapter->phy_info_timer.function = &e1000_update_phy_info;
32751 -       adapter->phy_info_timer.data = (unsigned long) adapter;
32752 -
32753 -       register_netdev(netdev);
32754 -
32755 -       /* we're going to reset, so assume we have no link for now */
32756 -
32757 -       netif_carrier_off(netdev);
32758 -       netif_stop_queue(netdev);
32759 -
32760 -       printk(KERN_INFO "%s: %s\n", netdev->name, adapter->id_string);
32761 -       e1000_check_options(adapter);
32762 -       e1000_proc_dev_setup(adapter);
32763 -
32764 -       /* Initial Wake on LAN setting
32765 -        * If APM wake is enabled in the EEPROM,
32766 -        * enable the ACPI Magic Packet filter
32767 -        */
32768 -
32769 -       if((adapter->hw.mac_type >= e1000_82544) &&
32770 -          (E1000_READ_REG(&adapter->hw, WUC) & E1000_WUC_APME))
32771 -               adapter->wol |= E1000_WUFC_MAG;
32772 -
32773 -       /* reset the hardware with the new settings */
32774 -
32775 -       e1000_reset(adapter);
32776 -
32777 -       cards_found++;
32778 -       return 0;
32779 -
32780 -err_eeprom:
32781 -       iounmap(adapter->hw.hw_addr);
32782 -err_ioremap:
32783 -       pci_release_regions(pdev);
32784 -       kfree(netdev);
32785 -err_alloc_etherdev:
32786 -       return -ENOMEM;
32787 -}
32788 -
32789 -/**
32790 - * e1000_remove - Device Removal Routine
32791 - * @pdev: PCI device information struct
32792 - *
32793 - * e1000_remove is called by the PCI subsystem to alert the driver
32794 - * that it should release a PCI device.  The could be caused by a
32795 - * Hot-Plug event, or because the driver is going to be removed from
32796 - * memory.
32797 - **/
32798 -
32799 -static void __devexit
32800 -e1000_remove(struct pci_dev *pdev)
32801 -{
32802 -       struct net_device *netdev = pci_get_drvdata(pdev);
32803 -       struct e1000_adapter *adapter = netdev->priv;
32804 -
32805 -       e1000_smbus_arp_enable(adapter, TRUE);
32806 -
32807 -       unregister_netdev(netdev);
32808 -
32809 -       e1000_phy_hw_reset(&adapter->hw);
32810 -
32811 -       e1000_proc_dev_free(adapter);
32812 -
32813 -#ifdef IANS
32814 -       if(adapter->iANSdata)
32815 -               kfree(adapter->iANSdata);
32816 -#endif
32817 -       iounmap(adapter->hw.hw_addr);
32818 -       pci_release_regions(pdev);
32819 -
32820 -       kfree(netdev);
32821 -}
32822 -
32823 -/**
32824 - * e1000_sw_init - Initialize general software structures (struct e1000_adapter)
32825 - * @adapter: board private structure to initialize
32826 - *
32827 - * e1000_sw_init initializes the Adapter private data structure.
32828 - * Fields are initialized based on PCI device information and
32829 - * OS network device settings (MTU size).
32830 - **/
32831 -
32832 -static void __devinit
32833 -e1000_sw_init(struct e1000_adapter *adapter)
32834 -{
32835 -       struct e1000_hw *hw = &adapter->hw;
32836 -       struct net_device *netdev = adapter->netdev;
32837 -       struct pci_dev *pdev = adapter->pdev;
32838 -
32839 -       /* PCI config space info */
32840 -
32841 -       pci_read_config_word(pdev, PCI_VENDOR_ID, &hw->vendor_id);
32842 -       pci_read_config_word(pdev, PCI_DEVICE_ID, &hw->device_id);
32843 -       pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
32844 -       pci_read_config_word(pdev, PCI_SUBSYSTEM_VENDOR_ID,
32845 -                             &hw->subsystem_vendor_id);
32846 -       pci_read_config_word(pdev, PCI_SUBSYSTEM_ID, &hw->subsystem_id);
32847 -
32848 -       pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);
32849 -
32850 -       adapter->rx_buffer_len = E1000_RXBUFFER_2048;
32851 -       hw->max_frame_size = netdev->mtu +
32852 -                                ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
32853 -       hw->min_frame_size = MINIMUM_ETHERNET_FRAME_SIZE;
32854 -
32855 -       /* identify the MAC */
32856 -
32857 -       if (e1000_set_mac_type(hw)) {
32858 -               E1000_ERR("Unknown MAC Type\n");
32859 -               BUG();
32860 -       }
32861 -
32862 -       /* flow control settings */
32863 -
32864 -       hw->fc_high_water = FC_DEFAULT_HI_THRESH;
32865 -       hw->fc_low_water = FC_DEFAULT_LO_THRESH;
32866 -       hw->fc_pause_time = FC_DEFAULT_TX_TIMER;
32867 -       hw->fc_send_xon = 1;
32868 -
32869 -       /* Media type - copper or fiber */
32870 -
32871 -       if(hw->mac_type >= e1000_82543) {
32872 -               uint32_t status = E1000_READ_REG(hw, STATUS);
32873 -
32874 -               if(status & E1000_STATUS_TBIMODE)
32875 -                       hw->media_type = e1000_media_type_fiber;
32876 -               else
32877 -                       hw->media_type = e1000_media_type_copper;
32878 -       } else {
32879 -               hw->media_type = e1000_media_type_fiber;
32880 -       }
32881 -
32882 -       if(hw->mac_type < e1000_82543)
32883 -               hw->report_tx_early = 0;
32884 -       else
32885 -               hw->report_tx_early = 1;
32886 -
32887 -       hw->wait_autoneg_complete = FALSE;
32888 -       hw->tbi_compatibility_en = TRUE;
32889 -       hw->adaptive_ifs = TRUE;
32890 -
32891 -       /* Copper options */
32892 -       
32893 -       if(hw->media_type == e1000_media_type_copper) {
32894 -               hw->mdix = AUTO_ALL_MODES;
32895 -               hw->disable_polarity_correction = FALSE;
32896 -       }
32897 -
32898 -       atomic_set(&adapter->irq_sem, 1);
32899 -       spin_lock_init(&adapter->stats_lock);
32900 -       init_MUTEX(&adapter->smbus_lock);
32901 -}
32902 -
32903 -/**
32904 - * e1000_open - Called when a network interface is made active
32905 - * @netdev: network interface device structure
32906 - *
32907 - * Returns 0 on success, negative value on failure
32908 - *
32909 - * The open entry point is called when a network interface is made
32910 - * active by the system (IFF_UP).  At this point all resources needed
32911 - * for transmit and receive operations are allocated, the interrupt
32912 - * handler is registered with the OS, the watchdog timer is started,
32913 - * and the stack is notified that the interface is ready.
32914 - **/
32915 -
32916 -static int
32917 -e1000_open(struct net_device *netdev)
32918 -{
32919 -       struct e1000_adapter *adapter = netdev->priv;
32920 -
32921 -       /* allocate transmit descriptors */
32922 -
32923 -       if(e1000_setup_tx_resources(adapter))
32924 -               goto err_setup_tx;
32925 -
32926 -       /* allocate receive descriptors */
32927 -
32928 -       if(e1000_setup_rx_resources(adapter))
32929 -               goto err_setup_rx;
32930 -
32931 -       if(e1000_up(adapter))
32932 -               goto err_up;
32933 -
32934 -       MOD_INC_USE_COUNT;
32935 -       return 0;
32936 -
32937 -err_up:
32938 -       e1000_free_rx_resources(adapter);
32939 -err_setup_rx:
32940 -       e1000_free_tx_resources(adapter);
32941 -err_setup_tx:
32942 -       e1000_reset(adapter);
32943 -
32944 -       return -EBUSY;
32945 -}
32946 -
32947 -/**
32948 - * e1000_close - Disables a network interface
32949 - * @netdev: network interface device structure
32950 - *
32951 - * Returns 0, this is not allowed to fail
32952 - *
32953 - * The close entry point is called when an interface is de-activated
32954 - * by the OS.  The hardware is still under the drivers control, but
32955 - * needs to be disabled.  A global MAC reset is issued to stop the
32956 - * hardware, and all transmit and receive resources are freed.
32957 - **/
32958 -
32959 -static int
32960 -e1000_close(struct net_device *netdev)
32961 -{
32962 -       struct e1000_adapter *adapter = netdev->priv;
32963 -
32964 -       e1000_down(adapter);
32965 -
32966 -       e1000_free_tx_resources(adapter);
32967 -       e1000_free_rx_resources(adapter);
32968 -
32969 -       MOD_DEC_USE_COUNT;
32970 -       return 0;
32971 -}
32972 -
32973 -/**
32974 - * e1000_setup_tx_resources - allocate Tx resources (Descriptors)
32975 - * @adapter: board private structure
32976 - *
32977 - * Return 0 on success, negative on failure
32978 - **/
32979 -
32980 -static int
32981 -e1000_setup_tx_resources(struct e1000_adapter *adapter)
32982 -{
32983 -       struct e1000_desc_ring *txdr = &adapter->tx_ring;
32984 -       struct pci_dev *pdev = adapter->pdev;
32985 -       int size;
32986 -
32987 -       size = sizeof(struct e1000_buffer) * txdr->count;
32988 -       txdr->buffer_info = kmalloc(size, GFP_KERNEL);
32989 -       if(!txdr->buffer_info) {
32990 -               return -ENOMEM;
32991 -       }
32992 -       memset(txdr->buffer_info, 0, size);
32993 -
32994 -       /* round up to nearest 4K */
32995 -
32996 -       txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
32997 -       E1000_ROUNDUP(txdr->size, 4096);
32998 -
32999 -       txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);
33000 -       if(!txdr->desc) {
33001 -               kfree(txdr->buffer_info);
33002 -               return -ENOMEM;
33003 -       }
33004 -       memset(txdr->desc, 0, txdr->size);
33005 -
33006 -       txdr->next_to_use = 0;
33007 -       txdr->next_to_clean = 0;
33008 -
33009 -       return 0;
33010 -}
33011 -
33012 -/**
33013 - * e1000_configure_tx - Configure 8254x Transmit Unit after Reset
33014 - * @adapter: board private structure
33015 - *
33016 - * Configure the Tx unit of the MAC after a reset.
33017 - **/
33018 -
33019 -static void
33020 -e1000_configure_tx(struct e1000_adapter *adapter)
33021 -{
33022 -       uint64_t tdba = adapter->tx_ring.dma;
33023 -       uint32_t tdlen = adapter->tx_ring.count * sizeof(struct e1000_tx_desc);
33024 -       uint32_t tctl, tipg;
33025 -
33026 -       E1000_WRITE_REG(&adapter->hw, TDBAL, (tdba & 0x00000000ffffffffULL));
33027 -       E1000_WRITE_REG(&adapter->hw, TDBAH, (tdba >> 32));
33028 -
33029 -       E1000_WRITE_REG(&adapter->hw, TDLEN, tdlen);
33030 -
33031 -       /* Setup the HW Tx Head and Tail descriptor pointers */
33032 -
33033 -       E1000_WRITE_REG(&adapter->hw, TDH, 0);
33034 -       E1000_WRITE_REG(&adapter->hw, TDT, 0);
33035 -
33036 -       /* Set the default values for the Tx Inter Packet Gap timer */
33037 -
33038 -       switch (adapter->hw.mac_type) {
33039 -       case e1000_82542_rev2_0:
33040 -       case e1000_82542_rev2_1:
33041 -               tipg = DEFAULT_82542_TIPG_IPGT;
33042 -               tipg |= DEFAULT_82542_TIPG_IPGR1 << E1000_TIPG_IPGR1_SHIFT;
33043 -               tipg |= DEFAULT_82542_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT;
33044 -               break;
33045 -       default:
33046 -               if(adapter->hw.media_type == e1000_media_type_fiber)
33047 -                       tipg = DEFAULT_82543_TIPG_IPGT_FIBER;
33048 -               else
33049 -                       tipg = DEFAULT_82543_TIPG_IPGT_COPPER;
33050 -               tipg |= DEFAULT_82543_TIPG_IPGR1 << E1000_TIPG_IPGR1_SHIFT;
33051 -               tipg |= DEFAULT_82543_TIPG_IPGR2 << E1000_TIPG_IPGR2_SHIFT;
33052 -       }
33053 -       E1000_WRITE_REG(&adapter->hw, TIPG, tipg);
33054 -
33055 -       /* Set the Tx Interrupt Delay register */
33056 -
33057 -       E1000_WRITE_REG(&adapter->hw, TIDV, adapter->tx_int_delay);
33058 -       if(adapter->hw.mac_type >= e1000_82540)
33059 -               E1000_WRITE_REG(&adapter->hw, TADV, adapter->tx_abs_int_delay);
33060 -
33061 -       /* Program the Transmit Control Register */
33062 -
33063 -       tctl = E1000_READ_REG(&adapter->hw, TCTL);
33064 -
33065 -       tctl &= ~E1000_TCTL_CT;
33066 -       tctl |= E1000_TCTL_EN | E1000_TCTL_PSP |
33067 -              (E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT);
33068 -
33069 -       E1000_WRITE_REG(&adapter->hw, TCTL, tctl);
33070 -
33071 -       e1000_config_collision_dist(&adapter->hw);
33072 -
33073 -       /* Setup Transmit Descriptor Settings for this adapter */
33074 -       adapter->txd_cmd = E1000_TXD_CMD_IFCS | E1000_TXD_CMD_IDE;
33075 -
33076 -       if(adapter->hw.report_tx_early == 1)
33077 -               adapter->txd_cmd |= E1000_TXD_CMD_RS;
33078 -       else
33079 -               adapter->txd_cmd |= E1000_TXD_CMD_RPS;
33080 -}
33081 -
33082 -/**
33083 - * e1000_setup_rx_resources - allocate Rx resources (Descriptors)
33084 - * @adapter: board private structure
33085 - *
33086 - * Returns 0 on success, negative on failure
33087 - **/
33088 -
33089 -static int
33090 -e1000_setup_rx_resources(struct e1000_adapter *adapter)
33091 -{
33092 -       struct e1000_desc_ring *rxdr = &adapter->rx_ring;
33093 -       struct pci_dev *pdev = adapter->pdev;
33094 -       int size;
33095 -
33096 -       size = sizeof(struct e1000_buffer) * rxdr->count;
33097 -       rxdr->buffer_info = kmalloc(size, GFP_KERNEL);
33098 -       if(!rxdr->buffer_info) {
33099 -               return -ENOMEM;
33100 -       }
33101 -       memset(rxdr->buffer_info, 0, size);
33102 -
33103 -       /* Round up to nearest 4K */
33104 -
33105 -       rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc);
33106 -       E1000_ROUNDUP(rxdr->size, 4096);
33107 -
33108 -       rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma);
33109 -
33110 -       if(!rxdr->desc) {
33111 -               kfree(rxdr->buffer_info);
33112 -               return -ENOMEM;
33113 -       }
33114 -       memset(rxdr->desc, 0, rxdr->size);
33115 -
33116 -       rxdr->next_to_clean = 0;
33117 -       rxdr->next_to_use = 0;
33118 -
33119 -       return 0;
33120 -}
33121 -
33122 -/**
33123 - * e1000_setup_rctl - configure the receive control register
33124 - * @adapter: Board private structure
33125 - **/
33126 -
33127 -static void
33128 -e1000_setup_rctl(struct e1000_adapter *adapter)
33129 -{
33130 -       uint32_t rctl;
33131 -
33132 -       rctl = E1000_READ_REG(&adapter->hw, RCTL);
33133 -
33134 -       rctl &= ~(3 << E1000_RCTL_MO_SHIFT);
33135 -
33136 -       rctl |= E1000_RCTL_EN | E1000_RCTL_BAM |
33137 -               E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
33138 -               (adapter->hw.mc_filter_type << E1000_RCTL_MO_SHIFT);
33139 -
33140 -       if(adapter->hw.tbi_compatibility_on == 1)
33141 -               rctl |= E1000_RCTL_SBP;
33142 -       else
33143 -               rctl &= ~E1000_RCTL_SBP;
33144 -
33145 -       rctl &= ~(E1000_RCTL_SZ_4096);
33146 -       switch (adapter->rx_buffer_len) {
33147 -       case E1000_RXBUFFER_2048:
33148 -       default:
33149 -               rctl |= E1000_RCTL_SZ_2048;
33150 -               rctl &= ~(E1000_RCTL_BSEX | E1000_RCTL_LPE);
33151 -               break;
33152 -       case E1000_RXBUFFER_4096:
33153 -               rctl |= E1000_RCTL_SZ_4096 | E1000_RCTL_BSEX | E1000_RCTL_LPE;
33154 -               break;
33155 -       case E1000_RXBUFFER_8192:
33156 -               rctl |= E1000_RCTL_SZ_8192 | E1000_RCTL_BSEX | E1000_RCTL_LPE;
33157 -               break;
33158 -       case E1000_RXBUFFER_16384:
33159 -               rctl |= E1000_RCTL_SZ_16384 | E1000_RCTL_BSEX | E1000_RCTL_LPE;
33160 -               break;
33161 -       }
33162 -
33163 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
33164 -}
33165 -
33166 -/**
33167 - * e1000_configure_rx - Configure 8254x Receive Unit after Reset
33168 - * @adapter: board private structure
33169 - *
33170 - * Configure the Rx unit of the MAC after a reset.
33171 - **/
33172 -
33173 -static void
33174 -e1000_configure_rx(struct e1000_adapter *adapter)
33175 -{
33176 -       uint64_t rdba = adapter->rx_ring.dma;
33177 -       uint32_t rdlen = adapter->rx_ring.count * sizeof(struct e1000_rx_desc);
33178 -       uint32_t rctl;
33179 -       uint32_t rxcsum;
33180 -
33181 -       /* make sure receives are disabled while setting up the descriptors */
33182 -
33183 -       rctl = E1000_READ_REG(&adapter->hw, RCTL);
33184 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl & ~E1000_RCTL_EN);
33185 -
33186 -       /* set the Receive Delay Timer Register */
33187 -
33188 -       if(adapter->hw.mac_type >= e1000_82540) {
33189 -               E1000_WRITE_REG(&adapter->hw, RDTR, adapter->rx_int_delay);
33190 -               E1000_WRITE_REG(&adapter->hw, RADV, adapter->rx_abs_int_delay);
33191 -
33192 -               /* Set the interrupt throttling rate.  Value is calculated
33193 -                * as DEFAULT_ITR = 1/(MAX_INTS_PER_SEC * 256ns) */
33194 -#define MAX_INTS_PER_SEC        8000
33195 -#define DEFAULT_ITR             1000000000/(MAX_INTS_PER_SEC * 256)
33196 -               E1000_WRITE_REG(&adapter->hw, ITR, DEFAULT_ITR);
33197 -
33198 -#ifdef HAVE_TX_TIMEOUT
33199 -       } else {
33200 -               E1000_WRITE_REG(&adapter->hw, RDTR, adapter->rx_int_delay);
33201 -#endif
33202 -       }
33203 -
33204 -       /* Setup the Base and Length of the Rx Descriptor Ring */
33205 -
33206 -       E1000_WRITE_REG(&adapter->hw, RDBAL, (rdba & 0x00000000ffffffffULL));
33207 -       E1000_WRITE_REG(&adapter->hw, RDBAH, (rdba >> 32));
33208 -
33209 -       E1000_WRITE_REG(&adapter->hw, RDLEN, rdlen);
33210 -
33211 -       /* Setup the HW Rx Head and Tail Descriptor Pointers */
33212 -       E1000_WRITE_REG(&adapter->hw, RDH, 0);
33213 -       E1000_WRITE_REG(&adapter->hw, RDT, 0);
33214 -
33215 -       /* Enable 82543 Receive Checksum Offload for TCP and UDP */
33216 -       if((adapter->hw.mac_type >= e1000_82543) &&
33217 -          (adapter->rx_csum == TRUE)) {
33218 -               rxcsum = E1000_READ_REG(&adapter->hw, RXCSUM);
33219 -               rxcsum |= E1000_RXCSUM_TUOFL;
33220 -               E1000_WRITE_REG(&adapter->hw, RXCSUM, rxcsum);
33221 -       }
33222 -
33223 -       /* Enable Receives */
33224 -
33225 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
33226 -}
33227 -
33228 -/**
33229 - * e1000_free_tx_resources - Free Tx Resources
33230 - * @adapter: board private structure
33231 - *
33232 - * Free all transmit software resources
33233 - **/
33234 -
33235 -static void
33236 -e1000_free_tx_resources(struct e1000_adapter *adapter)
33237 -{
33238 -       struct pci_dev *pdev = adapter->pdev;
33239 -
33240 -       e1000_clean_tx_ring(adapter);
33241 -
33242 -       kfree(adapter->tx_ring.buffer_info);
33243 -       adapter->tx_ring.buffer_info = NULL;
33244 -
33245 -       pci_free_consistent(pdev, adapter->tx_ring.size,
33246 -                           adapter->tx_ring.desc, adapter->tx_ring.dma);
33247 -
33248 -       adapter->tx_ring.desc = NULL;
33249 -}
33250 -
33251 -/**
33252 - * e1000_clean_tx_ring - Free Tx Buffers
33253 - * @adapter: board private structure
33254 - **/
33255 -
33256 -static void
33257 -e1000_clean_tx_ring(struct e1000_adapter *adapter)
33258 -{
33259 -       struct pci_dev *pdev = adapter->pdev;
33260 -       unsigned long size;
33261 -       int i;
33262 -
33263 -       /* Free all the Tx ring sk_buffs */
33264 -
33265 -       for(i = 0; i < adapter->tx_ring.count; i++) {
33266 -               if(adapter->tx_ring.buffer_info[i].skb) {
33267 -
33268 -                       pci_unmap_page(pdev,
33269 -                                      adapter->tx_ring.buffer_info[i].dma,
33270 -                                      adapter->tx_ring.buffer_info[i].length,
33271 -                                      PCI_DMA_TODEVICE);
33272 -
33273 -                       dev_kfree_skb(adapter->tx_ring.buffer_info[i].skb);
33274 -
33275 -                       adapter->tx_ring.buffer_info[i].skb = NULL;
33276 -               }
33277 -       }
33278 -
33279 -       size = sizeof(struct e1000_buffer) * adapter->tx_ring.count;
33280 -       memset(adapter->tx_ring.buffer_info, 0, size);
33281 -
33282 -       /* Zero out the descriptor ring */
33283 -
33284 -       memset(adapter->tx_ring.desc, 0, adapter->tx_ring.size);
33285 -
33286 -       adapter->tx_ring.next_to_use = 0;
33287 -       adapter->tx_ring.next_to_clean = 0;
33288 -
33289 -       E1000_WRITE_REG(&adapter->hw, TDH, 0);
33290 -       E1000_WRITE_REG(&adapter->hw, TDT, 0);
33291 -}
33292 -
33293 -/**
33294 - * e1000_free_rx_resources - Free Rx Resources
33295 - * @adapter: board private structure
33296 - *
33297 - * Free all receive software resources
33298 - **/
33299 -
33300 -static void
33301 -e1000_free_rx_resources(struct e1000_adapter *adapter)
33302 -{
33303 -       struct pci_dev *pdev = adapter->pdev;
33304 -
33305 -       e1000_clean_rx_ring(adapter);
33306 -
33307 -       kfree(adapter->rx_ring.buffer_info);
33308 -       adapter->rx_ring.buffer_info = NULL;
33309 -
33310 -       pci_free_consistent(pdev, adapter->rx_ring.size,
33311 -                           adapter->rx_ring.desc, adapter->rx_ring.dma);
33312 -
33313 -       adapter->rx_ring.desc = NULL;
33314 -}
33315 -
33316 -/**
33317 - * e1000_clean_rx_ring - Free Rx Buffers
33318 - * @adapter: board private structure
33319 - **/
33320 -
33321 -static void
33322 -e1000_clean_rx_ring(struct e1000_adapter *adapter)
33323 -{
33324 -       struct pci_dev *pdev = adapter->pdev;
33325 -       unsigned long size;
33326 -       int i;
33327 -
33328 -       /* Free all the Rx ring sk_buffs */
33329 -
33330 -       for(i = 0; i < adapter->rx_ring.count; i++) {
33331 -               if(adapter->rx_ring.buffer_info[i].skb) {
33332 -
33333 -                       pci_unmap_single(pdev,
33334 -                                        adapter->rx_ring.buffer_info[i].dma,
33335 -                                        adapter->rx_ring.buffer_info[i].length,
33336 -                                        PCI_DMA_FROMDEVICE);
33337 -
33338 -                       dev_kfree_skb(adapter->rx_ring.buffer_info[i].skb);
33339 -
33340 -                       adapter->rx_ring.buffer_info[i].skb = NULL;
33341 -               }
33342 -       }
33343 -
33344 -       size = sizeof(struct e1000_buffer) * adapter->rx_ring.count;
33345 -       memset(adapter->rx_ring.buffer_info, 0, size);
33346 -
33347 -       /* Zero out the descriptor ring */
33348 -
33349 -       memset(adapter->rx_ring.desc, 0, adapter->rx_ring.size);
33350 -
33351 -       adapter->rx_ring.next_to_clean = 0;
33352 -       adapter->rx_ring.next_to_use = 0;
33353 -
33354 -       E1000_WRITE_REG(&adapter->hw, RDH, 0);
33355 -       E1000_WRITE_REG(&adapter->hw, RDT, 0);
33356 -}
33357 -
33358 -/* The 82542 2.0 (revision 2) needs to have the receive unit in reset
33359 - * and memory write and invalidate disabled for certain operations
33360 - */
33361 -static void
33362 -e1000_enter_82542_rst(struct e1000_adapter *adapter)
33363 -{
33364 -       struct net_device *netdev = adapter->netdev;
33365 -       uint32_t rctl;
33366 -
33367 -       e1000_pci_clear_mwi(&adapter->hw);
33368 -
33369 -       rctl = E1000_READ_REG(&adapter->hw, RCTL);
33370 -       rctl |= E1000_RCTL_RST;
33371 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
33372 -       E1000_WRITE_FLUSH(&adapter->hw);
33373 -       mdelay(5);
33374 -
33375 -       if(netif_running(netdev))
33376 -               e1000_clean_rx_ring(adapter);
33377 -}
33378 -
33379 -static void
33380 -e1000_leave_82542_rst(struct e1000_adapter *adapter)
33381 -{
33382 -       struct net_device *netdev = adapter->netdev;
33383 -       uint32_t rctl;
33384 -
33385 -       rctl = E1000_READ_REG(&adapter->hw, RCTL);
33386 -       rctl &= ~E1000_RCTL_RST;
33387 -       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
33388 -       E1000_WRITE_FLUSH(&adapter->hw);
33389 -       mdelay(5);
33390 -
33391 -       if(adapter->hw.pci_cmd_word & PCI_COMMAND_INVALIDATE)
33392 -               e1000_pci_set_mwi(&adapter->hw);
33393 -
33394 -       if(netif_running(netdev)) {
33395 -               e1000_configure_rx(adapter);
33396 -               e1000_alloc_rx_buffers(adapter);
33397 -       }
33398 -}
33399 -
33400 -/**
33401 - * e1000_set_mac - Change the Ethernet Address of the NIC
33402 - * @netdev: network interface device structure
33403 - * @p: pointer to an address structure
33404 - *
33405 - * Returns 0 on success, negative on failure
33406 - **/
33407 -
33408 -static int
33409 -e1000_set_mac(struct net_device *netdev, void *p)
33410 -{
33411 -       struct e1000_adapter *adapter = netdev->priv;
33412 -       struct sockaddr *addr = p;
33413 -
33414 -       /* 82542 2.0 needs to be in reset to write receive address registers */
33415 -
33416 -       if(adapter->hw.mac_type == e1000_82542_rev2_0)
33417 -               e1000_enter_82542_rst(adapter);
33418 -
33419 -       memcpy(netdev->dev_addr, addr->sa_data, netdev->addr_len);
33420 -       memcpy(adapter->hw.mac_addr, addr->sa_data, netdev->addr_len);
33421 -
33422 -       e1000_rar_set(&adapter->hw, adapter->hw.mac_addr, 0);
33423 -
33424 -       if(adapter->hw.mac_type == e1000_82542_rev2_0)
33425 -               e1000_leave_82542_rst(adapter);
33426 -
33427 -       return 0;
33428 -}
33429 -
33430 -/**
33431 - * e1000_set_multi - Multicast and Promiscuous mode set
33432 - * @netdev: network interface device structure
33433 - *
33434 - * The set_multi entry point is called whenever the multicast address
33435 - * list or the network interface flags are updated.  This routine is
33436 - * resposible for configuring the hardware for proper multicast,
33437 - * promiscuous mode, and all-multi behavior.
33438 - **/
33439 -
33440 -static void
33441 -e1000_set_multi(struct net_device *netdev)
33442 -{
33443 -       struct e1000_adapter *adapter = netdev->priv;
33444 -       struct e1000_hw *hw = &adapter->hw;
33445 -       struct dev_mc_list *mc_ptr;
33446 -       uint32_t rctl;
33447 -       uint32_t hash_value;
33448 -       int i;
33449 -
33450 -       /* Check for Promiscuous and All Multicast modes */
33451 -
33452 -       rctl = E1000_READ_REG(hw, RCTL);
33453 -
33454 -       if(netdev->flags & IFF_PROMISC) {
33455 -               rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE);
33456 -       } else if(netdev->flags & IFF_ALLMULTI) {
33457 -               rctl |= E1000_RCTL_MPE;
33458 -               rctl &= ~E1000_RCTL_UPE;
33459 -       } else {
33460 -               rctl &= ~(E1000_RCTL_UPE | E1000_RCTL_MPE);
33461 -       }
33462 -
33463 -       E1000_WRITE_REG(hw, RCTL, rctl);
33464 -
33465 -       /* 82542 2.0 needs to be in reset to write receive address registers */
33466 -
33467 -       if(hw->mac_type == e1000_82542_rev2_0)
33468 -               e1000_enter_82542_rst(adapter);
33469 -
33470 -       /* load the first 15 multicast address into the exact filters 1-15
33471 -        * RAR 0 is used for the station MAC adddress
33472 -        * if there are not 15 addresses, go ahead and clear the filters
33473 -        */
33474 -       mc_ptr = netdev->mc_list;
33475 -
33476 -       for(i = 1; i < E1000_RAR_ENTRIES; i++) {
33477 -               if(mc_ptr) {
33478 -                       e1000_rar_set(hw, mc_ptr->dmi_addr, i);
33479 -                       mc_ptr = mc_ptr->next;
33480 -               } else {
33481 -                       E1000_WRITE_REG_ARRAY(hw, RA, i << 1, 0);
33482 -                       E1000_WRITE_REG_ARRAY(hw, RA, (i << 1) + 1, 0);
33483 -               }
33484 -       }
33485 -
33486 -       /* clear the old settings from the multicast hash table */
33487 -
33488 -       for(i = 0; i < E1000_NUM_MTA_REGISTERS; i++)
33489 -               E1000_WRITE_REG_ARRAY(hw, MTA, i, 0);
33490 -
33491 -       /* load any remaining addresses into the hash table */
33492 -
33493 -       for(; mc_ptr; mc_ptr = mc_ptr->next) {
33494 -               hash_value = e1000_hash_mc_addr(hw, mc_ptr->dmi_addr);
33495 -               e1000_mta_set(hw, hash_value);
33496 -       }
33497 -
33498 -       if(hw->mac_type == e1000_82542_rev2_0)
33499 -               e1000_leave_82542_rst(adapter);
33500 -}
33501 -
33502 -#ifdef IANS
33503 -
33504 -static void
33505 -e1000_tx_flush(struct e1000_adapter *adapter)
33506 -{
33507 -       uint32_t ctrl, tctl, txcw, icr;
33508 -
33509 -       e1000_irq_disable(adapter);
33510 -
33511 -       /* TODO , does the ILOS trick work for 82542 also? */
33512 -
33513 -       if(adapter->hw.mac_type < e1000_82543) {
33514 -               /* Transmit Unit Reset */
33515 -
33516 -               tctl = E1000_READ_REG(&adapter->hw, TCTL);
33517 -               E1000_WRITE_REG(&adapter->hw, TCTL, tctl | E1000_TCTL_RST);
33518 -               E1000_WRITE_REG(&adapter->hw, TCTL, tctl);
33519 -               e1000_clean_tx_ring(adapter);
33520 -               e1000_configure_tx(adapter);
33521 -
33522 -       } else {
33523 -               /* turn off autoneg, set link up, and invert loss of signal */
33524 -
33525 -               txcw = E1000_READ_REG(&adapter->hw, TXCW);
33526 -               E1000_WRITE_REG(&adapter->hw, TXCW, txcw & ~E1000_TXCW_ANE);
33527 -
33528 -               ctrl = E1000_READ_REG(&adapter->hw, CTRL);
33529 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl | E1000_CTRL_SLU | E1000_CTRL_ILOS);
33530 -
33531 -               /* delay to flush queue, then clean up */
33532 -
33533 -               mdelay(10);
33534 -
33535 -               e1000_clean_tx_irq(adapter);
33536 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl);
33537 -               E1000_WRITE_REG(&adapter->hw, TXCW, txcw);
33538 -
33539 -               /* clear the link status change interrupts this caused */
33540 -
33541 -               icr = E1000_READ_REG(&adapter->hw, ICR);
33542 -       }
33543 -
33544 -       e1000_irq_enable(adapter);
33545 -}
33546 -
33547 -#endif
33548 -
33549 -/* need to wait a few seconds after link up to get diagnostic information from the phy */
33550 -
33551 -static void
33552 -e1000_update_phy_info(unsigned long data)
33553 -{
33554 -       struct e1000_adapter *adapter = (struct e1000_adapter *) data;
33555 -       e1000_phy_get_info(&adapter->hw, &adapter->phy_info);
33556 -}
33557 -
33558 -/**
33559 - * e1000_watchdog - Timer Call-back
33560 - * @data: pointer to netdev cast into an unsigned long
33561 - **/
33562 -
33563 -static void
33564 -e1000_watchdog(unsigned long data)
33565 -{
33566 -       struct e1000_adapter *adapter = (struct e1000_adapter *) data;
33567 -       struct net_device *netdev = adapter->netdev;
33568 -       struct e1000_desc_ring *txdr = &adapter->tx_ring;
33569 -       int i;
33570 -
33571 -       e1000_check_for_link(&adapter->hw);
33572 -
33573 -       if(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU) {
33574 -               if(!netif_carrier_ok(netdev)) {
33575 -#ifdef IANS
33576 -                       if((adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) &&
33577 -                          (adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON))
33578 -                               if(ans_notify)
33579 -                                       ans_notify(netdev, IANS_IND_XMIT_QUEUE_READY);
33580 -#endif
33581 -                       e1000_get_speed_and_duplex(&adapter->hw,
33582 -                                                  &adapter->link_speed,
33583 -                                                  &adapter->link_duplex);
33584 -
33585 -                       printk(KERN_INFO
33586 -                              "e1000: %s NIC Link is Up %d Mbps %s\n",
33587 -                              netdev->name, adapter->link_speed,
33588 -                              adapter->link_duplex == FULL_DUPLEX ?
33589 -                              "Full Duplex" : "Half Duplex");
33590 -
33591 -                       netif_carrier_on(netdev);
33592 -                       netif_wake_queue(netdev);
33593 -                       mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ);
33594 -               }
33595 -       } else {
33596 -               if(netif_carrier_ok(netdev)) {
33597 -                       adapter->link_speed = 0;
33598 -                       adapter->link_duplex = 0;
33599 -                       printk(KERN_INFO
33600 -                              "e1000: %s NIC Link is Down\n",
33601 -                              netdev->name);
33602 -                       netif_carrier_off(netdev);
33603 -                       netif_stop_queue(netdev);
33604 -                       mod_timer(&adapter->phy_info_timer, jiffies + 2 * HZ);
33605 -               }
33606 -       }
33607 -
33608 -       e1000_update_stats(adapter);
33609 -       e1000_update_adaptive(&adapter->hw);
33610 -
33611 -#ifdef IANS
33612 -{
33613 -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
33614 -       unsigned long flags;
33615 -#endif
33616 -       if(adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) {
33617 -
33618 -               if(adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON)
33619 -                       bd_ans_os_Watchdog(netdev, adapter);
33620 -
33621 -               if(!netif_carrier_ok(netdev)) {
33622 -                       /* don't sit on SKBs while link is down */
33623 -
33624 -                       if(E1000_DESC_UNUSED(&adapter->tx_ring) + 1 < adapter->tx_ring.count) {
33625 -
33626 -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
33627 -                               spin_lock_irqsave(&netdev->xmit_lock, flags);
33628 -                               e1000_tx_flush(adapter);
33629 -                               spin_unlock_irqrestore(&netdev->xmit_lock, flags);
33630 -#else
33631 -                               e1000_tx_flush(adapter);
33632 -#endif
33633 -                       }
33634 -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0))
33635 -                       spin_lock_irqsave(&netdev->queue_lock, flags);
33636 -                       qdisc_reset(netdev->qdisc);
33637 -                       spin_unlock_irqrestore(&netdev->queue_lock, flags);
33638 -#else
33639 -                       qdisc_reset(netdev->qdisc);
33640 -#endif
33641 -               }
33642 -       }
33643 -}
33644 -#endif
33645 -       /* Early detection of hung controller */
33646 -       i = txdr->next_to_clean;
33647 -       if(txdr->buffer_info[i].dma &&
33648 -          time_after(jiffies, txdr->buffer_info[i].time_stamp + HZ) &&
33649 -          !(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_TXOFF))
33650 -               netif_stop_queue(netdev);
33651 -
33652 -       /* Reset the timer */
33653 -       mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
33654 -}
33655 -
33656 -#define E1000_TX_FLAGS_CSUM            0x00000001
33657 -#define E1000_TX_FLAGS_VLAN            0x00000002
33658 -#define E1000_TX_FLAGS_VLAN_MASK       0xffff0000
33659 -#define E1000_TX_FLAGS_VLAN_SHIFT      16
33660 -
33661 -static inline boolean_t
33662 -e1000_tx_csum(struct e1000_adapter *adapter, struct sk_buff *skb)
33663 -{
33664 -       struct e1000_context_desc *context_desc;
33665 -       int i;
33666 -       uint8_t css, cso;
33667 -
33668 -       if(skb->ip_summed == CHECKSUM_HW) {
33669 -               css = skb->h.raw - skb->data;
33670 -               cso = (skb->h.raw + skb->csum) - skb->data;
33671 -
33672 -               i = adapter->tx_ring.next_to_use;
33673 -               context_desc = E1000_CONTEXT_DESC(adapter->tx_ring, i);
33674 -
33675 -               context_desc->upper_setup.tcp_fields.tucss = css;
33676 -               context_desc->upper_setup.tcp_fields.tucso = cso;
33677 -               context_desc->upper_setup.tcp_fields.tucse = 0;
33678 -               context_desc->tcp_seg_setup.data = 0;
33679 -               context_desc->cmd_and_length =
33680 -                       cpu_to_le32(adapter->txd_cmd | E1000_TXD_CMD_DEXT);
33681 -
33682 -               i = (i + 1) % adapter->tx_ring.count;
33683 -               adapter->tx_ring.next_to_use = i;
33684 -
33685 -               return TRUE;
33686 -       }
33687 -
33688 -       return FALSE;
33689 -}
33690 -
33691 -static inline int
33692 -e1000_tx_map(struct e1000_adapter *adapter, struct sk_buff *skb)
33693 -{
33694 -       struct e1000_desc_ring *tx_ring = &adapter->tx_ring;
33695 -       int len, offset, size, count, i;
33696 -
33697 -#ifdef MAX_SKB_FRAGS
33698 -       int f;
33699 -       len = skb->len - skb->data_len;
33700 -#else
33701 -       len = skb->len;
33702 -#endif
33703 -
33704 -       i = (tx_ring->next_to_use + tx_ring->count - 1) % tx_ring->count;
33705 -       count = 0;
33706 -
33707 -       offset = 0;
33708 -
33709 -       while(len) {
33710 -               i = (i + 1) % tx_ring->count;
33711 -               size = min(len, adapter->max_data_per_txd);
33712 -               tx_ring->buffer_info[i].length = size;
33713 -               tx_ring->buffer_info[i].dma =
33714 -                       pci_map_single(adapter->pdev,
33715 -                               skb->data + offset,
33716 -                               size,
33717 -                               PCI_DMA_TODEVICE);
33718 -               tx_ring->buffer_info[i].time_stamp = jiffies;
33719 -
33720 -               len -= size;
33721 -               offset += size;
33722 -               count++;
33723 -       }
33724 -
33725 -#ifdef MAX_SKB_FRAGS
33726 -       for(f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
33727 -               struct skb_frag_struct *frag;
33728 -
33729 -               frag = &skb_shinfo(skb)->frags[f];
33730 -               len = frag->size;
33731 -               offset = 0;
33732 -
33733 -               while(len) {
33734 -                       i = (i + 1) % tx_ring->count;
33735 -                       size = min(len, adapter->max_data_per_txd);
33736 -                       tx_ring->buffer_info[i].length = size;
33737 -                       tx_ring->buffer_info[i].dma =
33738 -                               pci_map_page(adapter->pdev,
33739 -                                       frag->page,
33740 -                                       frag->page_offset + offset,
33741 -                                       size,
33742 -                                       PCI_DMA_TODEVICE);
33743 -
33744 -                       len -= size;
33745 -                       offset += size;
33746 -                       count++;
33747 -               }
33748 -       }
33749 -#endif
33750 -       tx_ring->buffer_info[i].skb = skb;
33751 -
33752 -       return count;
33753 -}
33754 -
33755 -static inline void
33756 -e1000_tx_queue(struct e1000_adapter *adapter, int count, int tx_flags)
33757 -{
33758 -       struct e1000_desc_ring *tx_ring = &adapter->tx_ring;
33759 -       struct e1000_tx_desc *tx_desc = NULL;
33760 -       uint32_t txd_upper, txd_lower;
33761 -       int i;
33762 -
33763 -       txd_upper = 0;
33764 -       txd_lower = adapter->txd_cmd;
33765 -
33766 -       if(tx_flags & E1000_TX_FLAGS_CSUM) {
33767 -               txd_lower |= E1000_TXD_CMD_DEXT | E1000_TXD_DTYP_D;
33768 -               txd_upper |= E1000_TXD_POPTS_TXSM << 8;
33769 -       }
33770 -
33771 -       if(tx_flags & E1000_TX_FLAGS_VLAN) {
33772 -               txd_lower |= E1000_TXD_CMD_VLE;
33773 -               txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK);
33774 -       }
33775 -
33776 -       i = tx_ring->next_to_use;
33777 -
33778 -       while(count--) {
33779 -               tx_desc = E1000_TX_DESC(*tx_ring, i);
33780 -               tx_desc->buffer_addr = cpu_to_le64(tx_ring->buffer_info[i].dma);
33781 -               tx_desc->lower.data =
33782 -                       cpu_to_le32(txd_lower | tx_ring->buffer_info[i].length);
33783 -               tx_desc->upper.data = cpu_to_le32(txd_upper);
33784 -               i = (i + 1) % tx_ring->count;
33785 -       }
33786 -
33787 -       tx_desc->lower.data |= cpu_to_le32(E1000_TXD_CMD_EOP);
33788 -
33789 -       /* Force memory writes to complete before letting h/w
33790 -        * know there are new descriptors to fetch.  (Only
33791 -        * applicable for weak-ordered memory model archs,
33792 -        * such as IA-64). */
33793 -       wmb();
33794 -
33795 -       tx_ring->next_to_use = i;
33796 -       E1000_WRITE_REG(&adapter->hw, TDT, i);
33797 -}
33798 -
33799 -#define TXD_USE_COUNT(S, X) (((S) / (X)) + (((S) % (X)) ? 1 : 0))
33800 -#ifdef IANS
33801 -#define ANS_XMIT_FULL() do { \
33802 -       iANSsupport_t *ans = adapter->iANSdata; \
33803 -       if((ans->iANS_status == IANS_COMMUNICATION_UP) && \
33804 -          (ans->reporting_mode == IANS_STATUS_REPORTING_ON) && \
33805 -          (ans_notify)) \
33806 -               ans_notify(netdev, IANS_IND_XMIT_QUEUE_FULL); \
33807 -} while (0)
33808 -#endif
33809 -
33810 -static int
33811 -e1000_xmit_frame(struct sk_buff *skb, struct net_device *netdev)
33812 -{
33813 -       struct e1000_adapter *adapter = netdev->priv;
33814 -       int tx_flags = 0, count;
33815 -
33816 -#ifdef MAX_SKB_FRAGS
33817 -       int f;
33818 -#endif
33819 -
33820 -       if(!netif_carrier_ok(netdev)) {
33821 -               netif_stop_queue(netdev);
33822 -#ifdef IANS
33823 -               ANS_XMIT_FULL();
33824 -#endif
33825 -               return 1;
33826 -       }
33827 -
33828 -#ifdef MAX_SKB_FRAGS
33829 -       count = TXD_USE_COUNT(skb->len - skb->data_len,
33830 -                             adapter->max_data_per_txd);
33831 -       for(f = 0; f < skb_shinfo(skb)->nr_frags; f++)
33832 -               count += TXD_USE_COUNT(skb_shinfo(skb)->frags[f].size,
33833 -                                      adapter->max_data_per_txd);
33834 -       if(skb->ip_summed == CHECKSUM_HW)
33835 -               count++;
33836 -#else
33837 -       count = TXD_USE_COUNT(skb->len, adapter->max_data_per_txd);
33838 -#endif
33839 -
33840 -       if(E1000_DESC_UNUSED(&adapter->tx_ring) < count) {
33841 -               netif_stop_queue(netdev);
33842 -#ifdef IANS
33843 -               ANS_XMIT_FULL();
33844 -#endif
33845 -               return 1;
33846 -       }
33847 -
33848 -       if(e1000_tx_csum(adapter, skb))
33849 -               tx_flags |= E1000_TX_FLAGS_CSUM;
33850 -
33851 -#ifdef IANS
33852 -if(adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) {
33853 -       struct e1000_tx_desc *tx_desc;
33854 -       tx_desc = E1000_TX_DESC(adapter->tx_ring, adapter->tx_ring.next_to_use);
33855 -
33856 -       if(bd_ans_os_Transmit(adapter, tx_desc, &skb) == BD_ANS_FAILURE)
33857 -               return 1;
33858 -
33859 -       if(tx_desc->lower.data & E1000_TXD_CMD_VLE) {
33860 -               tx_flags |= E1000_TX_FLAGS_VLAN;
33861 -               tx_flags |= (tx_desc->upper.data & E1000_TX_FLAGS_VLAN_MASK);
33862 -       }
33863 -}
33864 -#endif
33865 -#ifdef NETIF_F_HW_VLAN_TX
33866 -       if(adapter->vlgrp && vlan_tx_tag_present(skb)) {
33867 -               tx_flags |= E1000_TX_FLAGS_VLAN;
33868 -               tx_flags |= (vlan_tx_tag_get(skb) << E1000_TX_FLAGS_VLAN_SHIFT);
33869 -       }
33870 -#endif
33871 -
33872 -       count = e1000_tx_map(adapter, skb);
33873 -
33874 -       e1000_tx_queue(adapter, count, tx_flags);
33875 -
33876 -       netdev->trans_start = jiffies;
33877 -
33878 -       return 0;
33879 -}
33880 -
33881 -#ifdef HAVE_TX_TIMEOUT
33882 -/**
33883 - * e1000_tx_timeout - Respond to a Tx Hang
33884 - * @netdev: network interface device structure
33885 - **/
33886 -
33887 -static void
33888 -e1000_tx_timeout(struct net_device *netdev)
33889 -{
33890 -       struct e1000_adapter *adapter = netdev->priv;
33891 -
33892 -       e1000_down(adapter);
33893 -#ifdef IANS
33894 -       if((adapter->iANSdata->iANS_status == IANS_COMMUNICATION_UP) &&
33895 -          (adapter->iANSdata->reporting_mode == IANS_STATUS_REPORTING_ON)) {
33896 -               netif_carrier_off(netdev);
33897 -               bd_ans_os_Watchdog(netdev, adapter);
33898 -               netif_carrier_on(netdev);
33899 -       }
33900 -#endif
33901 -       e1000_up(adapter);
33902 -}
33903 -#endif
33904 -
33905 -/**
33906 - * e1000_get_stats - Get System Network Statistics
33907 - * @netdev: network interface device structure
33908 - *
33909 - * Returns the address of the device statistics structure.
33910 - * The statistics are actually updated from the timer callback.
33911 - **/
33912 -
33913 -static struct net_device_stats *
33914 -e1000_get_stats(struct net_device *netdev)
33915 -{
33916 -       struct e1000_adapter *adapter = netdev->priv;
33917 -
33918 -       return &adapter->net_stats;
33919 -}
33920 -
33921 -/**
33922 - * e1000_change_mtu - Change the Maximum Transfer Unit
33923 - * @netdev: network interface device structure
33924 - * @new_mtu: new value for maximum frame size
33925 - *
33926 - * Returns 0 on success, negative on failure
33927 - **/
33928 -
33929 -static int
33930 -e1000_change_mtu(struct net_device *netdev, int new_mtu)
33931 -{
33932 -       struct e1000_adapter *adapter = netdev->priv;
33933 -       int old_mtu = adapter->rx_buffer_len;
33934 -       int max_frame = new_mtu + ENET_HEADER_SIZE + ETHERNET_FCS_SIZE;
33935 -
33936 -       if((max_frame < MINIMUM_ETHERNET_FRAME_SIZE) ||
33937 -          (max_frame > MAX_JUMBO_FRAME_SIZE)) {
33938 -               E1000_ERR("Invalid MTU setting\n");
33939 -               return -EINVAL;
33940 -       }
33941 -
33942 -       if(max_frame <= MAXIMUM_ETHERNET_FRAME_SIZE) {
33943 -               adapter->rx_buffer_len = E1000_RXBUFFER_2048;
33944 -
33945 -       } else if(adapter->hw.mac_type < e1000_82543) {
33946 -               E1000_ERR("Jumbo Frames not supported on 82542\n");
33947 -               return -EINVAL;
33948 -
33949 -       } else if(max_frame <= E1000_RXBUFFER_4096) {
33950 -               adapter->rx_buffer_len = E1000_RXBUFFER_4096;
33951 -
33952 -       } else if(max_frame <= E1000_RXBUFFER_8192) {
33953 -               adapter->rx_buffer_len = E1000_RXBUFFER_8192;
33954 -
33955 -       } else {
33956 -               adapter->rx_buffer_len = E1000_RXBUFFER_16384;
33957 -       }
33958 -
33959 -       if(old_mtu != adapter->rx_buffer_len && netif_running(netdev)) {
33960 -
33961 -               e1000_down(adapter);
33962 -               e1000_up(adapter);
33963 -       }
33964 -
33965 -       netdev->mtu = new_mtu;
33966 -       adapter->hw.max_frame_size = max_frame;
33967 -
33968 -       return 0;
33969 -}
33970 -
33971 -/**
33972 - * e1000_update_stats - Update the board statistics counters
33973 - * @adapter: board private structure
33974 - **/
33975 -
33976 -static void
33977 -e1000_update_stats(struct e1000_adapter *adapter)
33978 -{
33979 -       struct e1000_hw *hw = &adapter->hw;
33980 -       unsigned long flags;
33981 -       uint16_t phy_tmp;
33982 -
33983 -#define PHY_IDLE_ERROR_COUNT_MASK 0x00FF
33984 -
33985 -       spin_lock_irqsave(&adapter->stats_lock, flags);
33986 -
33987 -       /* these counters are modified from e1000_adjust_tbi_stats,
33988 -        * called from the interrupt context, so they must only
33989 -        * be written while holding adapter->stats_lock
33990 -        */
33991 -
33992 -       adapter->stats.crcerrs += E1000_READ_REG(hw, CRCERRS);
33993 -       adapter->stats.gprc += E1000_READ_REG(hw, GPRC);
33994 -       adapter->stats.gorcl += E1000_READ_REG(hw, GORCL);
33995 -       adapter->stats.gorch += E1000_READ_REG(hw, GORCH);
33996 -       adapter->stats.bprc += E1000_READ_REG(hw, BPRC);
33997 -       adapter->stats.mprc += E1000_READ_REG(hw, MPRC);
33998 -       adapter->stats.roc += E1000_READ_REG(hw, ROC);
33999 -       adapter->stats.prc64 += E1000_READ_REG(hw, PRC64);
34000 -       adapter->stats.prc127 += E1000_READ_REG(hw, PRC127);
34001 -       adapter->stats.prc255 += E1000_READ_REG(hw, PRC255);
34002 -       adapter->stats.prc511 += E1000_READ_REG(hw, PRC511);
34003 -       adapter->stats.prc1023 += E1000_READ_REG(hw, PRC1023);
34004 -       adapter->stats.prc1522 += E1000_READ_REG(hw, PRC1522);
34005 -
34006 -       spin_unlock_irqrestore(&adapter->stats_lock, flags);
34007 -
34008 -       /* the rest of the counters are only modified here */
34009 -
34010 -       adapter->stats.symerrs += E1000_READ_REG(hw, SYMERRS);
34011 -       adapter->stats.mpc += E1000_READ_REG(hw, MPC);
34012 -       adapter->stats.scc += E1000_READ_REG(hw, SCC);
34013 -       adapter->stats.ecol += E1000_READ_REG(hw, ECOL);
34014 -       adapter->stats.mcc += E1000_READ_REG(hw, MCC);
34015 -       adapter->stats.latecol += E1000_READ_REG(hw, LATECOL);
34016 -       adapter->stats.dc += E1000_READ_REG(hw, DC);
34017 -       adapter->stats.sec += E1000_READ_REG(hw, SEC);
34018 -       adapter->stats.rlec += E1000_READ_REG(hw, RLEC);
34019 -       adapter->stats.xonrxc += E1000_READ_REG(hw, XONRXC);
34020 -       adapter->stats.xontxc += E1000_READ_REG(hw, XONTXC);
34021 -       adapter->stats.xoffrxc += E1000_READ_REG(hw, XOFFRXC);
34022 -       adapter->stats.xofftxc += E1000_READ_REG(hw, XOFFTXC);
34023 -       adapter->stats.fcruc += E1000_READ_REG(hw, FCRUC);
34024 -       adapter->stats.gptc += E1000_READ_REG(hw, GPTC);
34025 -       adapter->stats.gotcl += E1000_READ_REG(hw, GOTCL);
34026 -       adapter->stats.gotch += E1000_READ_REG(hw, GOTCH);
34027 -       adapter->stats.rnbc += E1000_READ_REG(hw, RNBC);
34028 -       adapter->stats.ruc += E1000_READ_REG(hw, RUC);
34029 -       adapter->stats.rfc += E1000_READ_REG(hw, RFC);
34030 -       adapter->stats.rjc += E1000_READ_REG(hw, RJC);
34031 -       adapter->stats.torl += E1000_READ_REG(hw, TORL);
34032 -       adapter->stats.torh += E1000_READ_REG(hw, TORH);
34033 -       adapter->stats.totl += E1000_READ_REG(hw, TOTL);
34034 -       adapter->stats.toth += E1000_READ_REG(hw, TOTH);
34035 -       adapter->stats.tpr += E1000_READ_REG(hw, TPR);
34036 -       adapter->stats.ptc64 += E1000_READ_REG(hw, PTC64);
34037 -       adapter->stats.ptc127 += E1000_READ_REG(hw, PTC127);
34038 -       adapter->stats.ptc255 += E1000_READ_REG(hw, PTC255);
34039 -       adapter->stats.ptc511 += E1000_READ_REG(hw, PTC511);
34040 -       adapter->stats.ptc1023 += E1000_READ_REG(hw, PTC1023);
34041 -       adapter->stats.ptc1522 += E1000_READ_REG(hw, PTC1522);
34042 -       adapter->stats.mptc += E1000_READ_REG(hw, MPTC);
34043 -       adapter->stats.bptc += E1000_READ_REG(hw, BPTC);
34044 -
34045 -       /* used for adaptive IFS */
34046 -
34047 -       hw->tx_packet_delta = E1000_READ_REG(hw, TPT);
34048 -       adapter->stats.tpt += hw->tx_packet_delta;
34049 -       hw->collision_delta = E1000_READ_REG(hw, COLC);
34050 -       adapter->stats.colc += hw->collision_delta;
34051 -
34052 -       if(hw->mac_type >= e1000_82543) {
34053 -               adapter->stats.algnerrc += E1000_READ_REG(hw, ALGNERRC);
34054 -               adapter->stats.rxerrc += E1000_READ_REG(hw, RXERRC);
34055 -               adapter->stats.tncrs += E1000_READ_REG(hw, TNCRS);
34056 -               adapter->stats.cexterr += E1000_READ_REG(hw, CEXTERR);
34057 -               adapter->stats.tsctc += E1000_READ_REG(hw, TSCTC);
34058 -               adapter->stats.tsctfc += E1000_READ_REG(hw, TSCTFC);
34059 -       }
34060 -
34061 -       /* Fill out the OS statistics structure */
34062 -
34063 -       adapter->net_stats.rx_packets = adapter->stats.gprc;
34064 -       adapter->net_stats.tx_packets = adapter->stats.gptc;
34065 -       adapter->net_stats.rx_bytes = adapter->stats.gorcl;
34066 -       adapter->net_stats.tx_bytes = adapter->stats.gotcl;
34067 -       adapter->net_stats.multicast = adapter->stats.mprc;
34068 -       adapter->net_stats.collisions = adapter->stats.colc;
34069 -
34070 -       /* Rx Errors */
34071 -
34072 -       adapter->net_stats.rx_errors = adapter->stats.rxerrc +
34073 -               adapter->stats.crcerrs + adapter->stats.algnerrc +
34074 -               adapter->stats.rlec + adapter->stats.rnbc +
34075 -               adapter->stats.mpc + adapter->stats.cexterr;
34076 -       adapter->net_stats.rx_dropped = adapter->stats.rnbc;
34077 -       adapter->net_stats.rx_length_errors = adapter->stats.rlec;
34078 -       adapter->net_stats.rx_crc_errors = adapter->stats.crcerrs;
34079 -       adapter->net_stats.rx_frame_errors = adapter->stats.algnerrc;
34080 -       adapter->net_stats.rx_fifo_errors = adapter->stats.mpc;
34081 -       adapter->net_stats.rx_missed_errors = adapter->stats.mpc;
34082 -
34083 -       /* Tx Errors */
34084 -
34085 -       adapter->net_stats.tx_errors = adapter->stats.ecol +
34086 -                                      adapter->stats.latecol;
34087 -       adapter->net_stats.tx_aborted_errors = adapter->stats.ecol;
34088 -       adapter->net_stats.tx_window_errors = adapter->stats.latecol;
34089 -
34090 -       /* Tx Dropped needs to be maintained elsewhere */
34091 -
34092 -       /* Phy Stats */
34093 -
34094 -       if(hw->media_type == e1000_media_type_copper) {
34095 -               if((adapter->link_speed == SPEED_1000) &&
34096 -                  (!e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_tmp))) {
34097 -                       phy_tmp &= PHY_IDLE_ERROR_COUNT_MASK;
34098 -                       adapter->phy_stats.idle_errors += phy_tmp;
34099 -               }
34100 -
34101 -               if(!e1000_read_phy_reg(hw, M88E1000_RX_ERR_CNTR, &phy_tmp))
34102 -                       adapter->phy_stats.receive_errors += phy_tmp;
34103 -       }
34104 -}
34105 -
34106 -/**
34107 - * e1000_irq_disable - Mask off interrupt generation on the NIC
34108 - * @adapter: board private structure
34109 - **/
34110 -
34111 -static inline void
34112 -e1000_irq_disable(struct e1000_adapter *adapter)
34113 -{
34114 -       atomic_inc(&adapter->irq_sem);
34115 -       E1000_WRITE_REG(&adapter->hw, IMC, ~0);
34116 -       E1000_WRITE_FLUSH(&adapter->hw);
34117 -       synchronize_irq();
34118 -}
34119 -
34120 -/**
34121 - * e1000_irq_enable - Enable default interrupt generation settings
34122 - * @adapter: board private structure
34123 - **/
34124 -
34125 -static inline void
34126 -e1000_irq_enable(struct e1000_adapter *adapter)
34127 -{
34128 -       if(atomic_dec_and_test(&adapter->irq_sem)) {
34129 -               E1000_WRITE_REG(&adapter->hw, IMS, IMS_ENABLE_MASK);
34130 -               E1000_WRITE_FLUSH(&adapter->hw);
34131 -       }
34132 -}
34133 -
34134 -/**
34135 - * e1000_intr - Interrupt Handler
34136 - * @irq: interrupt number
34137 - * @data: pointer to a network interface device structure
34138 - * @pt_regs: CPU registers structure
34139 - **/
34140 -
34141 -static void
34142 -e1000_intr(int irq, void *data, struct pt_regs *regs)
34143 -{
34144 -       struct net_device *netdev = data;
34145 -       struct e1000_adapter *adapter = netdev->priv;
34146 -       uint32_t icr;
34147 -       int i = E1000_MAX_INTR;
34148 -
34149 -       while(i && (icr = E1000_READ_REG(&adapter->hw, ICR))) {
34150 -
34151 -               if(icr & (E1000_ICR_RXSEQ | E1000_ICR_LSC)) {
34152 -                       adapter->hw.get_link_status = 1;
34153 -                       mod_timer(&adapter->watchdog_timer, jiffies);
34154 -               }
34155 -
34156 -               e1000_clean_rx_irq(adapter);
34157 -               e1000_clean_tx_irq(adapter);
34158 -               i--;
34159 -
34160 -#ifdef E1000_COUNT_ICR
34161 -               adapter->icr_txdw += icr & 0x01;
34162 -               icr >>= 1;
34163 -               adapter->icr_txqe += icr & 0x01;
34164 -               icr >>= 1;
34165 -               adapter->icr_lsc += icr & 0x01;
34166 -               icr >>= 1;
34167 -               adapter->icr_rxseq += icr & 0x01;
34168 -               icr >>= 1;
34169 -               adapter->icr_rxdmt += icr & 0x01;
34170 -               icr >>= 2;
34171 -               adapter->icr_rxo += icr & 0x01;
34172 -               icr >>= 1;
34173 -               adapter->icr_rxt += icr & 0x01;
34174 -               icr >>= 2;
34175 -               adapter->icr_mdac += icr & 0x01;
34176 -               icr >>= 1;
34177 -               adpater->icr_rxcfg += icr & 0x01;
34178 -               icr >>= 1;
34179 -               adpater->icr_gpi += icr & 0x01;
34180 -#endif
34181 -       }
34182 -}
34183 -
34184 -/**
34185 - * e1000_clean_tx_irq - Reclaim resources after transmit completes
34186 - * @adapter: board private structure
34187 - **/
34188 -
34189 -static void
34190 -e1000_clean_tx_irq(struct e1000_adapter *adapter)
34191 -{
34192 -       struct e1000_desc_ring *tx_ring = &adapter->tx_ring;
34193 -       struct net_device *netdev = adapter->netdev;
34194 -       struct pci_dev *pdev = adapter->pdev;
34195 -       struct e1000_tx_desc *tx_desc;
34196 -       int i;
34197 -
34198 -       i = tx_ring->next_to_clean;
34199 -       tx_desc = E1000_TX_DESC(*tx_ring, i);
34200 -
34201 -       while(tx_desc->upper.data & cpu_to_le32(E1000_TXD_STAT_DD)) {
34202 -
34203 -               if(tx_ring->buffer_info[i].dma) {
34204 -
34205 -                       pci_unmap_page(pdev,
34206 -                                      tx_ring->buffer_info[i].dma,
34207 -                                      tx_ring->buffer_info[i].length,
34208 -                                      PCI_DMA_TODEVICE);
34209 -
34210 -                       tx_ring->buffer_info[i].dma = 0;
34211 -               }
34212 -
34213 -               if(tx_ring->buffer_info[i].skb) {
34214 -
34215 -                       dev_kfree_skb_any(tx_ring->buffer_info[i].skb);
34216 -
34217 -                       tx_ring->buffer_info[i].skb = NULL;
34218 -               }
34219 -
34220 -               tx_desc->upper.data = 0;
34221 -
34222 -               i = (i + 1) % tx_ring->count;
34223 -               tx_desc = E1000_TX_DESC(*tx_ring, i);
34224 -       }
34225 -
34226 -       tx_ring->next_to_clean = i;
34227 -
34228 -       if(netif_queue_stopped(netdev) && netif_carrier_ok(netdev) &&
34229 -          (E1000_DESC_UNUSED(tx_ring) > E1000_TX_QUEUE_WAKE)) {
34230 -
34231 -#ifdef IANS
34232 -{
34233 -       iANSsupport_t *ans = adapter->iANSdata;
34234 -
34235 -       if((ans->iANS_status == IANS_COMMUNICATION_UP) &&
34236 -          (ans->reporting_mode == IANS_STATUS_REPORTING_ON) &&
34237 -          (ans_notify))
34238 -               ans_notify(netdev, IANS_IND_XMIT_QUEUE_READY);
34239 -}
34240 -#endif
34241 -               netif_wake_queue(netdev);
34242 -       }
34243 -}
34244 -
34245 -/**
34246 - * e1000_clean_rx_irq - Send received data up the network stack,
34247 - * @adapter: board private structure
34248 - **/
34249 -
34250 -static void
34251 -e1000_clean_rx_irq(struct e1000_adapter *adapter)
34252 -{
34253 -       struct e1000_desc_ring *rx_ring = &adapter->rx_ring;
34254 -       struct net_device *netdev = adapter->netdev;
34255 -       struct pci_dev *pdev = adapter->pdev;
34256 -       struct e1000_rx_desc *rx_desc;
34257 -       struct sk_buff *skb;
34258 -       unsigned long flags;
34259 -       uint32_t length;
34260 -       uint8_t last_byte;
34261 -       int i;
34262 -
34263 -       i = rx_ring->next_to_clean;
34264 -       rx_desc = E1000_RX_DESC(*rx_ring, i);
34265 -
34266 -       while(rx_desc->status & E1000_RXD_STAT_DD) {
34267 -
34268 -               pci_unmap_single(pdev,
34269 -                                rx_ring->buffer_info[i].dma,
34270 -                                rx_ring->buffer_info[i].length,
34271 -                                PCI_DMA_FROMDEVICE);
34272 -
34273 -               skb = rx_ring->buffer_info[i].skb;
34274 -               length = le16_to_cpu(rx_desc->length);
34275 -
34276 -               if(!(rx_desc->status & E1000_RXD_STAT_EOP)) {
34277 -
34278 -                       /* All receives must fit into a single buffer */
34279 -
34280 -                       E1000_DBG("Receive packet consumed multiple buffers\n");
34281 -
34282 -                       dev_kfree_skb_irq(skb);
34283 -                       rx_desc->status = 0;
34284 -                       rx_ring->buffer_info[i].skb = NULL;
34285 -
34286 -                       i = (i + 1) % rx_ring->count;
34287 -
34288 -                       rx_desc = E1000_RX_DESC(*rx_ring, i);
34289 -                       continue;
34290 -               }
34291 -
34292 -               if(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK) {
34293 -
34294 -                       last_byte = *(skb->data + length - 1);
34295 -
34296 -                       if(TBI_ACCEPT(&adapter->hw, rx_desc->status,
34297 -                                     rx_desc->errors, length, last_byte)) {
34298 -
34299 -                               spin_lock_irqsave(&adapter->stats_lock, flags);
34300 -
34301 -                               e1000_tbi_adjust_stats(&adapter->hw,
34302 -                                                      &adapter->stats,
34303 -                                                      length, skb->data);
34304 -
34305 -                               spin_unlock_irqrestore(&adapter->stats_lock,
34306 -                                                      flags);
34307 -                               length--;
34308 -                       } else {
34309 -
34310 -                               dev_kfree_skb_irq(skb);
34311 -                               rx_desc->status = 0;
34312 -                               rx_ring->buffer_info[i].skb = NULL;
34313 -
34314 -                               i = (i + 1) % rx_ring->count;
34315 -
34316 -                               rx_desc = E1000_RX_DESC(*rx_ring, i);
34317 -                               continue;
34318 -                       }
34319 -               }
34320 -
34321 -               /* Good Receive */
34322 -               skb_put(skb, length - ETHERNET_FCS_SIZE);
34323 -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,0))
34324 -               /* NFS mountd workaround on 2.2.x */
34325 -               if(length < 512) {
34326 -                       struct sk_buff *tmp_skb;
34327 -                       tmp_skb = alloc_skb(E1000_RXBUFFER_2048>>1, GFP_ATOMIC);
34328 -                       if(tmp_skb != NULL) {
34329 -                               tmp_skb->dev = skb->dev;
34330 -                               skb_reserve(tmp_skb, skb->data - skb->head);
34331 -                               skb_put(tmp_skb, skb->len);
34332 -                               memcpy(tmp_skb->head, skb->head,
34333 -                                      tmp_skb->end - tmp_skb->head);
34334 -                               dev_kfree_skb(skb);
34335 -                               skb = tmp_skb;
34336 -                       }
34337 -               }
34338 -#endif
34339 -
34340 -               /* Receive Checksum Offload */
34341 -               e1000_rx_checksum(adapter, rx_desc, skb);
34342 -
34343 -#ifdef IANS
34344 -{
34345 -       iANSsupport_t *ans = adapter->iANSdata;
34346 -
34347 -       if(ans->iANS_status == IANS_COMMUNICATION_UP) {
34348 -               if(bd_ans_os_Receive(adapter, rx_desc, skb) == BD_ANS_FAILURE)
34349 -                       dev_kfree_skb_irq(skb);
34350 -               else
34351 -                       netif_rx(skb);
34352 -       } else {
34353 -#endif
34354 -               skb->protocol = eth_type_trans(skb, netdev);
34355 -#ifdef NETIF_F_HW_VLAN_TX
34356 -               if(adapter->vlgrp && (rx_desc->status & E1000_RXD_STAT_VP)) {
34357 -                       vlan_hwaccel_rx(skb, adapter->vlgrp,
34358 -                               (rx_desc->special & E1000_RXD_SPC_VLAN_MASK));
34359 -               } else {
34360 -                       netif_rx(skb);
34361 -               }
34362 -#else
34363 -               netif_rx(skb);
34364 -#endif
34365 -#ifdef IANS
34366 -       }
34367 -}
34368 -#endif
34369 -               netdev->last_rx = jiffies;
34370 -
34371 -               rx_desc->status = 0;
34372 -               rx_ring->buffer_info[i].skb = NULL;
34373 -
34374 -               i = (i + 1) % rx_ring->count;
34375 -
34376 -               rx_desc = E1000_RX_DESC(*rx_ring, i);
34377 -       }
34378 -
34379 -       rx_ring->next_to_clean = i;
34380 -
34381 -       e1000_alloc_rx_buffers(adapter);
34382 -}
34383 -
34384 -/**
34385 - * e1000_alloc_rx_buffers - Replace used receive buffers
34386 - * @data: address of board private structure
34387 - **/
34388 -
34389 -static void
34390 -e1000_alloc_rx_buffers(struct e1000_adapter *adapter)
34391 -{
34392 -       struct e1000_desc_ring *rx_ring = &adapter->rx_ring;
34393 -       struct net_device *netdev = adapter->netdev;
34394 -       struct pci_dev *pdev = adapter->pdev;
34395 -       struct e1000_rx_desc *rx_desc;
34396 -       struct sk_buff *skb;
34397 -       int reserve_len;
34398 -       int i;
34399 -
34400 -#ifdef IANS
34401 -       reserve_len = BD_ANS_INFO_SIZE;
34402 -       E1000_ROUNDUP(reserve_len, 16);
34403 -       reserve_len += 2;
34404 -#else
34405 -       reserve_len = 2;
34406 -#endif
34407 -
34408 -       i = rx_ring->next_to_use;
34409 -
34410 -       while(!rx_ring->buffer_info[i].skb) {
34411 -               rx_desc = E1000_RX_DESC(*rx_ring, i);
34412 -
34413 -               skb = alloc_skb(adapter->rx_buffer_len + reserve_len,
34414 -                               GFP_ATOMIC);
34415 -
34416 -               if(!skb) {
34417 -                       /* Better luck next round */
34418 -                       break;
34419 -               }
34420 -
34421 -               /* Make buffer alignment 2 beyond a 16 byte boundary
34422 -                * this will result in a 16 byte aligned IP header after
34423 -                * the 14 byte MAC header is removed
34424 -                */
34425 -               skb_reserve(skb, reserve_len);
34426 -
34427 -               skb->dev = netdev;
34428 -
34429 -               rx_ring->buffer_info[i].skb = skb;
34430 -               rx_ring->buffer_info[i].length = adapter->rx_buffer_len;
34431 -               rx_ring->buffer_info[i].dma =
34432 -                       pci_map_single(pdev,
34433 -                                      skb->data,
34434 -                                      adapter->rx_buffer_len,
34435 -                                      PCI_DMA_FROMDEVICE);
34436 -
34437 -               rx_desc->buffer_addr = cpu_to_le64(rx_ring->buffer_info[i].dma);
34438 -
34439 -               if(!(i % E1000_RX_BUFFER_WRITE)) {
34440 -                       /* Force memory writes to complete before letting h/w
34441 -                        * know there are new descriptors to fetch.  (Only
34442 -                        * applicable for weak-ordered memory model archs,
34443 -                        * such as IA-64). */
34444 -                       wmb();
34445 -
34446 -                       E1000_WRITE_REG(&adapter->hw, RDT, i);
34447 -               }
34448 -
34449 -               i = (i + 1) % rx_ring->count;
34450 -       }
34451 -
34452 -       rx_ring->next_to_use = i;
34453 -}
34454 -
34455 -/**
34456 - * e1000_ioctl -
34457 - * @netdev:
34458 - * @ifreq:
34459 - * @cmd:
34460 - **/
34461 -
34462 -static int
34463 -e1000_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
34464 -{
34465 -       switch (cmd) {
34466 -#ifdef IANS
34467 -       case IANS_BASE_SIOC: {
34468 -               IANS_BD_PARAM_HEADER *header;
34469 -
34470 -               header = (IANS_BD_PARAM_HEADER *) ifr->ifr_data;
34471 -               if((header->Opcode != IANS_OP_EXT_GET_STATUS) &&
34472 -                  (!capable(CAP_NET_ADMIN)))
34473 -                       return -EPERM;
34474 -
34475 -               return bd_ans_os_Ioctl(netdev, ifr, cmd);
34476 -       }
34477 -#endif
34478 -#ifdef IDIAG
34479 -       case IDIAG_PRO_BASE_SIOC:
34480 -               return e1000_diag_ioctl(netdev, ifr);
34481 -#endif
34482 -#ifdef SIOCETHTOOL
34483 -       case SIOCETHTOOL:
34484 -               return e1000_ethtool_ioctl(netdev, ifr);
34485 -#endif
34486 -       default:
34487 -               return -EOPNOTSUPP;
34488 -       }
34489 -}
34490 -
34491 -/**
34492 - * e1000_rx_checksum - Receive Checksum Offload for 82543
34493 - * @adapter: board private structure
34494 - * @rx_desc: receive descriptor
34495 - * @sk_buff: socket buffer with received data
34496 - **/
34497 -
34498 -static inline void
34499 -e1000_rx_checksum(struct e1000_adapter *adapter,
34500 -                  struct e1000_rx_desc *rx_desc,
34501 -                  struct sk_buff *skb)
34502 -{
34503 -       /* 82543 or newer only */
34504 -       if((adapter->hw.mac_type < e1000_82543) ||
34505 -       /* Ignore Checksum bit is set */
34506 -       (rx_desc->status & E1000_RXD_STAT_IXSM) ||
34507 -       /* TCP Checksum has not been calculated */
34508 -       (!(rx_desc->status & E1000_RXD_STAT_TCPCS))) {
34509 -               skb->ip_summed = CHECKSUM_NONE;
34510 -               return;
34511 -       }
34512 -
34513 -       /* At this point we know the hardware did the TCP checksum */
34514 -       /* now look at the TCP checksum error bit */
34515 -       if(rx_desc->errors & E1000_RXD_ERR_TCPE) {
34516 -               /* let the stack verify checksum errors */
34517 -               skb->ip_summed = CHECKSUM_NONE;
34518 -               adapter->hw_csum_err++;
34519 -       } else {
34520 -       /* TCP checksum is good */
34521 -               skb->ip_summed = CHECKSUM_UNNECESSARY;
34522 -               adapter->hw_csum_good++;
34523 -       }
34524 -}
34525 -
34526 -void
34527 -e1000_pci_set_mwi(struct e1000_hw *hw)
34528 -{
34529 -       struct e1000_adapter *adapter = hw->back;
34530 -
34531 -#ifdef HAVE_PCI_SET_MWI
34532 -       pci_set_mwi(adapter->pdev);
34533 -#else
34534 -       pci_write_config_word(adapter->pdev, PCI_COMMAND,
34535 -                             adapter->hw.pci_cmd_word |
34536 -                             PCI_COMMAND_INVALIDATE);
34537 -#endif
34538 -}
34539 -
34540 -void
34541 -e1000_pci_clear_mwi(struct e1000_hw *hw)
34542 -{
34543 -       struct e1000_adapter *adapter = hw->back;
34544 -
34545 -#ifdef HAVE_PCI_SET_MWI
34546 -       pci_clear_mwi(adapter->pdev);
34547 -#else
34548 -       pci_write_config_word(adapter->pdev, PCI_COMMAND,
34549 -                             adapter->hw.pci_cmd_word &
34550 -                             ~PCI_COMMAND_INVALIDATE);
34551 -#endif
34552 -}
34553 -
34554 -void
34555 -e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t *value)
34556 -{
34557 -       struct e1000_adapter *adapter = hw->back;
34558 -
34559 -       pci_read_config_word(adapter->pdev, reg, value);
34560 -}
34561 -
34562 -void
34563 -e1000_write_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t *value)
34564 -{
34565 -       struct e1000_adapter *adapter = hw->back;
34566 -
34567 -       pci_write_config_word(adapter->pdev, reg, *value);
34568 -}
34569 -
34570 -uint32_t
34571 -e1000_io_read(struct e1000_hw *hw, uint32_t port)
34572 -{
34573 -       return inl(port);
34574 -}
34575 -
34576 -void
34577 -e1000_io_write(struct e1000_hw *hw, uint32_t port, uint32_t value)
34578 -{
34579 -       outl(value, port);
34580 -}
34581 -
34582 -#ifdef NETIF_F_HW_VLAN_TX
34583 -static void
34584 -e1000_vlan_rx_register(struct net_device *netdev, struct vlan_group *grp)
34585 -{
34586 -       struct e1000_adapter *adapter = netdev->priv;
34587 -       uint32_t ctrl, rctl;
34588 -
34589 -       e1000_irq_disable(adapter);
34590 -       adapter->vlgrp = grp;
34591 -
34592 -       if(grp) {
34593 -               /* enable VLAN tag insert/strip */
34594 -
34595 -               E1000_WRITE_REG(&adapter->hw, VET, ETHERNET_IEEE_VLAN_TYPE);
34596 -
34597 -               ctrl = E1000_READ_REG(&adapter->hw, CTRL);
34598 -               ctrl |= E1000_CTRL_VME;
34599 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl);
34600 -
34601 -               /* enable VLAN receive filtering */
34602 -
34603 -               rctl = E1000_READ_REG(&adapter->hw, RCTL);
34604 -               rctl |= E1000_RCTL_VFE;
34605 -               rctl &= ~E1000_RCTL_CFIEN;
34606 -               E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
34607 -       } else {
34608 -               /* disable VLAN tag insert/strip */
34609 -
34610 -               ctrl = E1000_READ_REG(&adapter->hw, CTRL);
34611 -               ctrl &= ~E1000_CTRL_VME;
34612 -               E1000_WRITE_REG(&adapter->hw, CTRL, ctrl);
34613 -
34614 -               /* disable VLAN filtering */
34615 -
34616 -               rctl = E1000_READ_REG(&adapter->hw, RCTL);
34617 -               rctl &= ~E1000_RCTL_VFE;
34618 -               E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
34619 -       }
34620 -
34621 -       e1000_irq_enable(adapter);
34622 -}
34623 -
34624 -static void
34625 -e1000_vlan_rx_add_vid(struct net_device *netdev, uint16_t vid)
34626 -{
34627 -       struct e1000_adapter *adapter = netdev->priv;
34628 -       uint32_t vfta, index;
34629 -
34630 -       /* add VID to filter table */
34631 -
34632 -       index = (vid >> 5) & 0x7F;
34633 -       vfta = E1000_READ_REG_ARRAY(&adapter->hw, VFTA, index);
34634 -       vfta |= (1 << (vid & 0x1F));
34635 -       e1000_write_vfta(&adapter->hw, index, vfta);
34636 -}
34637 -
34638 -static void
34639 -e1000_vlan_rx_kill_vid(struct net_device *netdev, uint16_t vid)
34640 -{
34641 -       struct e1000_adapter *adapter = netdev->priv;
34642 -       uint32_t vfta, index;
34643 -
34644 -       e1000_irq_disable(adapter);
34645 -
34646 -       if(adapter->vlgrp)
34647 -               adapter->vlgrp->vlan_devices[vid] = NULL;
34648 -
34649 -       e1000_irq_enable(adapter);
34650 -
34651 -       /* remove VID from filter table*/
34652 -
34653 -       index = (vid >> 5) & 0x7F;
34654 -       vfta = E1000_READ_REG_ARRAY(&adapter->hw, VFTA, index);
34655 -       vfta &= ~(1 << (vid & 0x1F));
34656 -       e1000_write_vfta(&adapter->hw, index, vfta);
34657 -}
34658 -#endif
34659 -
34660 -static int
34661 -e1000_notify_reboot(struct notifier_block *nb, unsigned long event, void *p)
34662 -{
34663 -       struct pci_dev *pdev = NULL;
34664 -
34665 -       switch(event) {
34666 -       case SYS_DOWN:
34667 -       case SYS_HALT:
34668 -       case SYS_POWER_OFF:
34669 -               pci_for_each_dev(pdev) {
34670 -                       if(pci_dev_driver(pdev) == &e1000_driver)
34671 -                               e1000_suspend(pdev, 3);
34672 -               }
34673 -       }
34674 -       return NOTIFY_DONE;
34675 -}
34676 -
34677 -static int
34678 -e1000_suspend(struct pci_dev *pdev, uint32_t state)
34679 -{
34680 -       struct net_device *netdev = pci_get_drvdata(pdev);
34681 -       struct e1000_adapter *adapter = netdev->priv;
34682 -       uint32_t ctrl, ctrl_ext, rctl;
34683 -
34684 -       netif_device_detach(netdev);
34685 -
34686 -       if(netif_running(netdev))
34687 -               e1000_down(adapter);
34688 -
34689 -       if(adapter->wol) {
34690 -               e1000_setup_rctl(adapter);
34691 -               e1000_set_multi(netdev);
34692 -
34693 -               if(adapter->wol & E1000_WUFC_MC) {
34694 -                       rctl = E1000_READ_REG(&adapter->hw, RCTL);
34695 -                       rctl |= E1000_RCTL_MPE;
34696 -                       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
34697 -               }
34698 -
34699 -               if(adapter->hw.media_type == e1000_media_type_fiber) {
34700 -                       #define E1000_CTRL_ADVD3WUC 0x00100000
34701 -                       ctrl = E1000_READ_REG(&adapter->hw, CTRL);
34702 -                       ctrl |= E1000_CTRL_ADVD3WUC;
34703 -                       E1000_WRITE_REG(&adapter->hw, CTRL, ctrl);
34704 -
34705 -                       ctrl_ext = E1000_READ_REG(&adapter->hw, CTRL_EXT);
34706 -                       ctrl_ext |= E1000_CTRL_EXT_SDP7_DATA;
34707 -                       E1000_WRITE_REG(&adapter->hw, CTRL_EXT, ctrl_ext);
34708 -               }
34709 -
34710 -               E1000_WRITE_REG(&adapter->hw, WUC, 0);
34711 -               E1000_WRITE_REG(&adapter->hw, WUFC, adapter->wol);
34712 -               pci_enable_wake(pdev, 3, 1);
34713 -       } else {
34714 -               E1000_WRITE_REG(&adapter->hw, WUC, 0);
34715 -               E1000_WRITE_REG(&adapter->hw, WUFC, 0);
34716 -               pci_enable_wake(pdev, 3, 0);
34717 -       }
34718 -
34719 -       pci_save_state(pdev, adapter->pci_state);
34720 -
34721 -       if(!e1000_smbus_arp_enable(adapter, TRUE))
34722 -               pci_set_power_state(pdev, 3);
34723 -
34724 -       return 0;
34725 -}
34726 -
34727 -#ifdef CONFIG_PM
34728 -static int
34729 -e1000_resume(struct pci_dev *pdev)
34730 -{
34731 -       struct net_device *netdev = pci_get_drvdata(pdev);
34732 -       struct e1000_adapter *adapter = netdev->priv;
34733 -
34734 -       pci_set_power_state(pdev, 0);
34735 -       pci_restore_state(pdev, adapter->pci_state);
34736 -       pci_enable_wake(pdev, 0, 0);
34737 -
34738 -       /* Clear the wakeup status bits */
34739 -
34740 -       E1000_WRITE_REG(&adapter->hw, WUS, ~0);
34741 -
34742 -       if(netif_running(netdev))
34743 -               e1000_up(adapter);
34744 -
34745 -       netif_device_attach(netdev);
34746 -
34747 -       e1000_smbus_arp_enable(adapter, FALSE);
34748 -
34749 -       return 0;
34750 -}
34751 -#endif
34752 -
34753 -/**
34754 - * e1000_smbus_lock - Exported for lock/unlock external smbus hw access
34755 - * @pdev: PCI device information struct
34756 - * @lock: TRUE to lock hw access; FALSE to unlock
34757 - *
34758 - * e1000_smbus_lock is designed to allow synchronization between e1000
34759 - * driver and i2c-i8254x SMBUS bus driver when accessing e1000 hardware
34760 - **/
34761 -void
34762 -e1000_smbus_lock(struct pci_dev *pdev, boolean_t lock)
34763 -{
34764 -       struct net_device *netdev = pci_get_drvdata(pdev);
34765 -       struct e1000_adapter *adapter = netdev->priv;
34766 -
34767 -       if (lock)
34768 -               down(&adapter->smbus_lock);
34769 -       else
34770 -               up(&adapter->smbus_lock);
34771 -}
34772 -
34773 -static boolean_t
34774 -e1000_smbus_arp_enable(struct e1000_adapter *adapter, boolean_t arp_enable)
34775 -{
34776 -       uint32_t manc;
34777 -       boolean_t ret_val = FALSE;
34778 -
34779 -       if(adapter->hw.mac_type < e1000_82540)
34780 -               return ret_val;
34781 -
34782 -       down(&adapter->smbus_lock);
34783 -       manc = E1000_READ_REG(&adapter->hw, MANC);
34784 -       if(!arp_enable) {
34785 -               manc &= ~(E1000_MANC_ARP_EN);
34786 -       } else if(manc & E1000_MANC_SMBUS_EN) {
34787 -               manc |= E1000_MANC_ARP_EN;
34788 -               ret_val = TRUE;
34789 -       }
34790 -       E1000_WRITE_REG(&adapter->hw, MANC, manc);
34791 -       up(&adapter->smbus_lock);
34792 -
34793 -       return ret_val;
34794 -}
34795 -
34796 -/* e1000_main.c */
34797 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
34798 --- click-1.6.0/drivers/e1000-4.x/src/e1000_param.c.orig        2007-07-16 19:47:50.000000000 -0400
34799 +++ click-1.6.0-27/drivers/e1000-4.x/src/e1000_param.c.orig     1969-12-31 19:00:00.000000000 -0500
34800 @@ -1,657 +0,0 @@
34801 -/*******************************************************************************
34802 -
34803 -  
34804 -  Copyright(c) 1999 - 2002 Intel Corporation. All rights reserved.
34805 -  
34806 -  This program is free software; you can redistribute it and/or modify it 
34807 -  under the terms of the GNU General Public License as published by the Free 
34808 -  Software Foundation; either version 2 of the License, or (at your option) 
34809 -  any later version.
34810 -  
34811 -  This program is distributed in the hope that it will be useful, but WITHOUT 
34812 -  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
34813 -  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
34814 -  more details.
34815 -  
34816 -  You should have received a copy of the GNU General Public License along with
34817 -  this program; if not, write to the Free Software Foundation, Inc., 59 
34818 -  Temple Place - Suite 330, Boston, MA  02111-1307, USA.
34819 -  
34820 -  The full GNU General Public License is included in this distribution in the
34821 -  file called LICENSE.
34822 -  
34823 -  Contact Information:
34824 -  Linux NICS <linux.nics@intel.com>
34825 -  Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
34826 -
34827 -*******************************************************************************/
34828 -
34829 -#include "e1000.h"
34830 -
34831 -/* This is the only thing that needs to be changed to adjust the
34832 - * maximum number of ports that the driver can manage.
34833 - */
34834 -
34835 -#define E1000_MAX_NIC 32
34836 -
34837 -#define OPTION_UNSET    -1
34838 -#define OPTION_DISABLED 0
34839 -#define OPTION_ENABLED  1
34840 -
34841 -/* Module Parameters are always initialized to -1, so that the driver
34842 - * can tell the difference between no user specified value or the
34843 - * user asking for the default value.
34844 - * The true default values are loaded in when e1000_check_options is called.
34845 - *
34846 - * This is a GCC extension to ANSI C.
34847 - * See the item "Labeled Elements in Initializers" in the section
34848 - * "Extensions to the C Language Family" of the GCC documentation.
34849 - */
34850 -
34851 -#define E1000_PARAM_INIT { [0 ... E1000_MAX_NIC] = OPTION_UNSET }
34852 -
34853 -/* All parameters are treated the same, as an integer array of values.
34854 - * This macro just reduces the need to repeat the same declaration code
34855 - * over and over (plus this helps to avoid typo bugs).
34856 - */
34857 -
34858 -#define E1000_PARAM(X, S) \
34859 -static const int __devinitdata X[E1000_MAX_NIC + 1] = E1000_PARAM_INIT; \
34860 -MODULE_PARM(X, "1-" __MODULE_STRING(E1000_MAX_NIC) "i"); \
34861 -MODULE_PARM_DESC(X, S);
34862 -
34863 -/* Transmit Descriptor Count
34864 - *
34865 - * Valid Range: 80-256 for 82542 and 82543 gigabit ethernet controllers
34866 - * Valid Range: 80-4096 for 82544
34867 - *
34868 - * Default Value: 256
34869 - */
34870 -
34871 -E1000_PARAM(TxDescriptors, "Number of transmit descriptors");
34872 -
34873 -/* Receive Descriptor Count
34874 - *
34875 - * Valid Range: 80-256 for 82542 and 82543 gigabit ethernet controllers
34876 - * Valid Range: 80-4096 for 82544
34877 - *
34878 - * Default Value: 80
34879 - */
34880 -
34881 -E1000_PARAM(RxDescriptors, "Number of receive descriptors");
34882 -
34883 -/* User Specified Speed Override
34884 - *
34885 - * Valid Range: 0, 10, 100, 1000
34886 - *  - 0    - auto-negotiate at all supported speeds
34887 - *  - 10   - only link at 10 Mbps
34888 - *  - 100  - only link at 100 Mbps
34889 - *  - 1000 - only link at 1000 Mbps
34890 - *
34891 - * Default Value: 0
34892 - */
34893 -
34894 -E1000_PARAM(Speed, "Speed setting");
34895 -
34896 -/* User Specified Duplex Override
34897 - *
34898 - * Valid Range: 0-2
34899 - *  - 0 - auto-negotiate for duplex
34900 - *  - 1 - only link at half duplex
34901 - *  - 2 - only link at full duplex
34902 - *
34903 - * Default Value: 0
34904 - */
34905 -
34906 -E1000_PARAM(Duplex, "Duplex setting");
34907 -
34908 -/* Auto-negotiation Advertisement Override
34909 - *
34910 - * Valid Range: 0x01-0x0F, 0x20-0x2F
34911 - *
34912 - * The AutoNeg value is a bit mask describing which speed and duplex
34913 - * combinations should be advertised during auto-negotiation.
34914 - * The supported speed and duplex modes are listed below
34915 - *
34916 - * Bit           7     6     5      4      3     2     1      0
34917 - * Speed (Mbps)  N/A   N/A   1000   N/A    100   100   10     10
34918 - * Duplex                    Full          Full  Half  Full   Half
34919 - *
34920 - * Default Value: 0x2F
34921 - */
34922 -
34923 -E1000_PARAM(AutoNeg, "Advertised auto-negotiation setting");
34924 -
34925 -/* User Specified Flow Control Override
34926 - *
34927 - * Valid Range: 0-3
34928 - *  - 0 - No Flow Control
34929 - *  - 1 - Rx only, respond to PAUSE frames but do not generate them
34930 - *  - 2 - Tx only, generate PAUSE frames but ignore them on receive
34931 - *  - 3 - Full Flow Control Support
34932 - *
34933 - * Default Value: Read flow control settings from the EEPROM
34934 - */
34935 -
34936 -E1000_PARAM(FlowControl, "Flow Control setting");
34937 -
34938 -/* XsumRX - Receive Checksum Offload Enable/Disable
34939 - *
34940 - * Valid Range: 0, 1
34941 - *  - 0 - disables all checksum offload
34942 - *  - 1 - enables receive IP/TCP/UDP checksum offload
34943 - *        on 82543 based NICs
34944 - *
34945 - * Default Value: 1
34946 - */
34947 -
34948 -E1000_PARAM(XsumRX, "Disable or enable Receive Checksum offload");
34949 -
34950 -/* Transmit Interrupt Delay in units of 1.024 microseconds
34951 - *
34952 - * Valid Range: 0-65535
34953 - *
34954 - * Default Value: 64
34955 - */
34956 -
34957 -E1000_PARAM(TxIntDelay, "Transmit Interrupt Delay");
34958 -
34959 -/* Transmit Absolute Interrupt Delay in units of 1.024 microseconds
34960 - *
34961 - * Valid Range: 0-65535
34962 - *
34963 - * Default Value: 0
34964 - */
34965 -
34966 -E1000_PARAM(TxAbsIntDelay, "Transmit Absolute Interrupt Delay");
34967 -
34968 -/* Receive Interrupt Delay in units of 1.024 microseconds
34969 - *
34970 - * Valid Range: 0-65535
34971 - *
34972 - * Default Value: 0/128
34973 - */
34974 -
34975 -E1000_PARAM(RxIntDelay, "Receive Interrupt Delay");
34976 -
34977 -/* Receive Absolute Interrupt Delay in units of 1.024 microseconds
34978 - *
34979 - * Valid Range: 0-65535
34980 - *
34981 - * Default Value: 128
34982 - */
34983 -
34984 -E1000_PARAM(RxAbsIntDelay, "Receive Absolute Interrupt Delay");
34985 -
34986 -#define AUTONEG_ADV_DEFAULT  0x2F
34987 -#define AUTONEG_ADV_MASK     0x2F
34988 -#define FLOW_CONTROL_DEFAULT FLOW_CONTROL_FULL
34989 -
34990 -#define DEFAULT_TXD                  256
34991 -#define MAX_TXD                      256
34992 -#define MIN_TXD                       80
34993 -#define MAX_82544_TXD               4096
34994 -
34995 -#define DEFAULT_RXD                   80
34996 -#define MAX_RXD                      256
34997 -#define MIN_RXD                       80
34998 -#define MAX_82544_RXD               4096
34999 -
35000 -#define DEFAULT_RDTR                 128
35001 -#define DEFAULT_RDTR_82544             0
35002 -#define MAX_RXDELAY               0xFFFF
35003 -#define MIN_RXDELAY                    0
35004 -
35005 -#define DEFAULT_RADV                 128
35006 -#define MAX_RXABSDELAY            0xFFFF
35007 -#define MIN_RXABSDELAY                 0
35008 -
35009 -#define DEFAULT_TIDV                 64
35010 -#define MAX_TXDELAY              0xFFFF
35011 -#define MIN_TXDELAY                   0
35012 -
35013 -#define DEFAULT_TADV                 64
35014 -#define MAX_TXABSDELAY           0xFFFF
35015 -#define MIN_TXABSDELAY                0
35016 -
35017 -struct e1000_option {
35018 -       enum { enable_option, range_option, list_option } type;
35019 -       char *name;
35020 -       char *err;
35021 -       int  def;
35022 -       union {
35023 -               struct { /* range_option info */
35024 -                       int min;
35025 -                       int max;
35026 -               } r;
35027 -               struct { /* list_option info */
35028 -                       int nr;
35029 -                       struct e1000_opt_list { int i; char *str; } *p;
35030 -               } l;
35031 -       } arg;
35032 -};
35033 -
35034 -
35035 -static int __devinit
35036 -e1000_validate_option(int *value, struct e1000_option *opt)
35037 -{
35038 -       if(*value == OPTION_UNSET) {
35039 -               *value = opt->def;
35040 -               return 0;
35041 -       }
35042 -
35043 -       switch (opt->type) {
35044 -       case enable_option:
35045 -               switch (*value) {
35046 -               case OPTION_ENABLED:
35047 -                       printk(KERN_INFO "%s Enabled\n", opt->name);
35048 -                       return 0;
35049 -               case OPTION_DISABLED:
35050 -                       printk(KERN_INFO "%s Disabled\n", opt->name);
35051 -                       return 0;
35052 -               }
35053 -               break;
35054 -       case range_option:
35055 -               if(*value >= opt->arg.r.min && *value <= opt->arg.r.max) {
35056 -                       printk(KERN_INFO "%s set to %i\n", opt->name, *value);
35057 -                       return 0;
35058 -               }
35059 -               break;
35060 -       case list_option: {
35061 -               int i;
35062 -               struct e1000_opt_list *ent;
35063 -
35064 -               for(i = 0; i < opt->arg.l.nr; i++) {
35065 -                       ent = &opt->arg.l.p[i];
35066 -                       if(*value == ent->i) {
35067 -                               if(ent->str[0] != '\0')
35068 -                                       printk(KERN_INFO "%s\n", ent->str);
35069 -                               return 0;
35070 -                       }
35071 -               }
35072 -       }
35073 -               break;
35074 -       default:
35075 -               BUG();
35076 -       }
35077 -               
35078 -       printk(KERN_INFO "Invalid %s specified (%i) %s\n",
35079 -              opt->name, *value, opt->err);
35080 -       *value = opt->def;
35081 -       return -1;
35082 -}
35083 -
35084 -static void e1000_check_fiber_options(struct e1000_adapter *adapter);
35085 -static void e1000_check_copper_options(struct e1000_adapter *adapter);
35086 -
35087 -/**
35088 - * e1000_check_options - Range Checking for Command Line Parameters
35089 - * @adapter: board private structure
35090 - *
35091 - * This routine checks all command line paramters for valid user
35092 - * input.  If an invalid value is given, or if no user specified
35093 - * value exists, a default value is used.  The final value is stored
35094 - * in a variable in the adapter structure.
35095 - **/
35096 -
35097 -void __devinit
35098 -e1000_check_options(struct e1000_adapter *adapter)
35099 -{
35100 -       int bd = adapter->bd_number;
35101 -       if(bd >= E1000_MAX_NIC) {
35102 -               printk(KERN_NOTICE 
35103 -                      "Warning: no configuration for board #%i\n", bd);
35104 -               printk(KERN_NOTICE "Using defaults for all values\n");
35105 -               bd = E1000_MAX_NIC;
35106 -       }
35107 -
35108 -       { /* Transmit Descriptor Count */
35109 -               struct e1000_option opt = {
35110 -                       type: range_option,
35111 -                       name: "Transmit Descriptors",
35112 -                       err:  "using default of " __MODULE_STRING(DEFAULT_TXD),
35113 -                       def:  DEFAULT_TXD,
35114 -                       arg: { r: { min: MIN_TXD }}
35115 -               };
35116 -               struct e1000_desc_ring *tx_ring = &adapter->tx_ring;
35117 -               e1000_mac_type mac_type = adapter->hw.mac_type;
35118 -               opt.arg.r.max = mac_type < e1000_82544 ? MAX_TXD : MAX_82544_TXD;
35119 -
35120 -               tx_ring->count = TxDescriptors[bd];
35121 -               e1000_validate_option(&tx_ring->count, &opt);
35122 -               E1000_ROUNDUP(tx_ring->count, REQ_TX_DESCRIPTOR_MULTIPLE);
35123 -       }
35124 -       { /* Receive Descriptor Count */
35125 -               struct e1000_option opt = {
35126 -                       type: range_option,
35127 -                       name: "Receive Descriptors",
35128 -                       err:  "using default of " __MODULE_STRING(DEFAULT_RXD),
35129 -                       def:  DEFAULT_RXD,
35130 -                       arg: { r: { min: MIN_RXD }}
35131 -               };
35132 -               struct e1000_desc_ring *rx_ring = &adapter->rx_ring;
35133 -               e1000_mac_type mac_type = adapter->hw.mac_type;
35134 -               opt.arg.r.max = mac_type < e1000_82544 ? MAX_RXD : MAX_82544_RXD;
35135 -
35136 -               rx_ring->count = RxDescriptors[bd];
35137 -               e1000_validate_option(&rx_ring->count, &opt);
35138 -               E1000_ROUNDUP(rx_ring->count, REQ_RX_DESCRIPTOR_MULTIPLE);
35139 -       }
35140 -       { /* Checksum Offload Enable/Disable */
35141 -               struct e1000_option opt = {
35142 -                       type: enable_option,
35143 -                       name: "Checksum Offload",
35144 -                       err:  "defaulting to Enabled",
35145 -                       def:  OPTION_ENABLED
35146 -               };
35147 -               
35148 -               int rx_csum = XsumRX[bd];
35149 -               e1000_validate_option(&rx_csum, &opt);
35150 -               adapter->rx_csum = rx_csum;
35151 -       }
35152 -       { /* Flow Control */
35153 -               
35154 -               struct e1000_opt_list fc_list[] =
35155 -                       {{ e1000_fc_none,    "Flow Control Disabled" },
35156 -                        { e1000_fc_rx_pause,"Flow Control Receive Only" },
35157 -                        { e1000_fc_tx_pause,"Flow Control Transmit Only" },
35158 -                        { e1000_fc_full,    "Flow Control Enabled" },
35159 -                        { e1000_fc_default, "Flow Control Hardware Default" }};
35160 -
35161 -               struct e1000_option opt = {
35162 -                       type: list_option,
35163 -                       name: "Flow Control",
35164 -                       err:  "reading default settings from EEPROM",
35165 -                       def:  e1000_fc_default,
35166 -                       arg: { l: { nr: ARRAY_SIZE(fc_list), p: fc_list }}
35167 -               };
35168 -
35169 -               int fc = FlowControl[bd];
35170 -               e1000_validate_option(&fc, &opt);
35171 -               adapter->hw.fc = adapter->hw.original_fc = fc;
35172 -       }
35173 -       { /* Transmit Interrupt Delay */
35174 -               char *tidv = "using default of " __MODULE_STRING(DEFAULT_TIDV);
35175 -               struct e1000_option opt = {
35176 -                       type: range_option,
35177 -                       name: "Transmit Interrupt Delay",
35178 -                       arg: { r: { min: MIN_TXDELAY, max: MAX_TXDELAY }}
35179 -               };
35180 -               opt.def = DEFAULT_TIDV;
35181 -               opt.err = tidv;
35182 -
35183 -               adapter->tx_int_delay = TxIntDelay[bd];
35184 -               e1000_validate_option(&adapter->tx_int_delay, &opt);
35185 -       }
35186 -       { /* Transmit Absolute Interrupt Delay */
35187 -               char *tadv = "using default of " __MODULE_STRING(DEFAULT_TADV);
35188 -               struct e1000_option opt = {
35189 -                       type: range_option,
35190 -                       name: "Transmit Absolute Interrupt Delay",
35191 -                       arg: { r: { min: MIN_TXABSDELAY, max: MAX_TXABSDELAY }}
35192 -               };
35193 -               opt.def = DEFAULT_TADV;
35194 -               opt.err = tadv;
35195 -
35196 -               adapter->tx_abs_int_delay = TxAbsIntDelay[bd];
35197 -               e1000_validate_option(&adapter->tx_abs_int_delay, &opt);
35198 -       }
35199 -       { /* Receive Interrupt Delay */
35200 -               char *rdtr = "using default of " __MODULE_STRING(DEFAULT_RDTR);
35201 -               char *rdtr_82544 = "using default of "
35202 -                                  __MODULE_STRING(DEFAULT_RDTR_82544);
35203 -               struct e1000_option opt = {
35204 -                       type: range_option,
35205 -                       name: "Receive Interrupt Delay",
35206 -                       arg: { r: { min: MIN_RXDELAY, max: MAX_RXDELAY }}
35207 -               };
35208 -               e1000_mac_type mac_type = adapter->hw.mac_type;
35209 -               opt.def = mac_type > e1000_82544 ? DEFAULT_RDTR : 0;
35210 -               opt.err = mac_type > e1000_82544 ? rdtr : rdtr_82544;
35211 -
35212 -               adapter->rx_int_delay = RxIntDelay[bd];
35213 -               e1000_validate_option(&adapter->rx_int_delay, &opt);
35214 -       }
35215 -       { /* Receive Absolute Interrupt Delay */
35216 -               char *radv = "using default of " __MODULE_STRING(DEFAULT_RADV);
35217 -               struct e1000_option opt = {
35218 -                       type: range_option,
35219 -                       name: "Receive Absolute Interrupt Delay",
35220 -                       arg: { r: { min: MIN_RXABSDELAY, max: MAX_RXABSDELAY }}
35221 -               };
35222 -               opt.def = DEFAULT_RADV;
35223 -               opt.err = radv;
35224 -
35225 -               adapter->rx_abs_int_delay = RxAbsIntDelay[bd];
35226 -               e1000_validate_option(&adapter->rx_abs_int_delay, &opt);
35227 -       }
35228 -       
35229 -       switch(adapter->hw.media_type) {
35230 -       case e1000_media_type_fiber:
35231 -               e1000_check_fiber_options(adapter);
35232 -               break;
35233 -       case e1000_media_type_copper:
35234 -               e1000_check_copper_options(adapter);
35235 -               break;
35236 -       default:
35237 -               BUG();
35238 -       }
35239 -}
35240 -
35241 -/**
35242 - * e1000_check_fiber_options - Range Checking for Link Options, Fiber Version
35243 - * @adapter: board private structure
35244 - *
35245 - * Handles speed and duplex options on fiber adapters
35246 - **/
35247 -
35248 -static void __devinit
35249 -e1000_check_fiber_options(struct e1000_adapter *adapter)
35250 -{
35251 -       int bd = adapter->bd_number;
35252 -       bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd;
35253 -
35254 -       if((Speed[bd] != OPTION_UNSET)) {
35255 -               printk(KERN_INFO "Speed not valid for fiber adapters, "
35256 -                      "parameter ignored\n");
35257 -       }
35258 -       if((Duplex[bd] != OPTION_UNSET)) {
35259 -               printk(KERN_INFO "Duplex not valid for fiber adapters, "
35260 -                      "parameter ignored\n");
35261 -       }
35262 -       if((AutoNeg[bd] != OPTION_UNSET)) {
35263 -               printk(KERN_INFO "AutoNeg not valid for fiber adapters, "
35264 -                      "parameter ignored\n");
35265 -       }
35266 -}
35267 -
35268 -/**
35269 - * e1000_check_copper_options - Range Checking for Link Options, Copper Version
35270 - * @adapter: board private structure
35271 - *
35272 - * Handles speed and duplex options on copper adapters
35273 - **/
35274 -
35275 -static void __devinit
35276 -e1000_check_copper_options(struct e1000_adapter *adapter)
35277 -{
35278 -       int speed, dplx;
35279 -       int bd = adapter->bd_number;
35280 -       bd = bd > E1000_MAX_NIC ? E1000_MAX_NIC : bd;
35281 -
35282 -       { /* Speed */
35283 -               struct e1000_opt_list speed_list[] = {{          0, "" },
35284 -                                                     {   SPEED_10, "" },
35285 -                                                     {  SPEED_100, "" },
35286 -                                                     { SPEED_1000, "" }};
35287 -               struct e1000_option opt = {
35288 -                       type: list_option,
35289 -                       name: "Speed",
35290 -                       err:  "parameter ignored",
35291 -                       def:  0,
35292 -                       arg: { l: { nr: ARRAY_SIZE(speed_list), p: speed_list }}
35293 -               };
35294 -
35295 -               speed = Speed[bd];
35296 -               e1000_validate_option(&speed, &opt);
35297 -       }
35298 -       { /* Duplex */
35299 -               struct e1000_opt_list dplx_list[] = {{           0, "" },
35300 -                                                    { HALF_DUPLEX, "" },
35301 -                                                    { FULL_DUPLEX, "" }};
35302 -               struct e1000_option opt = {
35303 -                       type: list_option,
35304 -                       name: "Duplex",
35305 -                       err:  "parameter ignored",
35306 -                       def:  0,
35307 -                       arg: { l: { nr: ARRAY_SIZE(dplx_list), p: dplx_list }}
35308 -               };
35309 -
35310 -               dplx = Duplex[bd];
35311 -               e1000_validate_option(&dplx, &opt);
35312 -       }
35313 -
35314 -       if(AutoNeg[bd] != OPTION_UNSET && (speed != 0 || dplx != 0)) {
35315 -               printk(KERN_INFO
35316 -                      "AutoNeg specified along with Speed or Duplex, "
35317 -                      "parameter ignored\n");
35318 -               adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT;
35319 -       } else { /* Autoneg */
35320 -               struct e1000_opt_list an_list[] =
35321 -                       #define AA "AutoNeg advertising "
35322 -                       {{ 0x01, AA "10/HD" },
35323 -                        { 0x02, AA "10/FD" },
35324 -                        { 0x03, AA "10/FD, 10/HD" },
35325 -                        { 0x04, AA "100/HD" },
35326 -                        { 0x05, AA "100/HD, 10/HD" },
35327 -                        { 0x06, AA "100/HD, 10/FD" },
35328 -                        { 0x07, AA "100/HD, 10/FD, 10/HD" },
35329 -                        { 0x08, AA "100/FD" },
35330 -                        { 0x09, AA "100/FD, 10/HD" },
35331 -                        { 0x0a, AA "100/FD, 10/FD" },
35332 -                        { 0x0b, AA "100/FD, 10/FD, 10/HD" },
35333 -                        { 0x0c, AA "100/FD, 100/HD" },
35334 -                        { 0x0d, AA "100/FD, 100/HD, 10/HD" },
35335 -                        { 0x0e, AA "100/FD, 100/HD, 10/FD" },
35336 -                        { 0x0f, AA "100/FD, 100/HD, 10/FD, 10/HD" },
35337 -                        { 0x20, AA "1000/FD" },
35338 -                        { 0x21, AA "1000/FD, 10/HD" },
35339 -                        { 0x22, AA "1000/FD, 10/FD" },
35340 -                        { 0x23, AA "1000/FD, 10/FD, 10/HD" },
35341 -                        { 0x24, AA "1000/FD, 100/HD" },
35342 -                        { 0x25, AA "1000/FD, 100/HD, 10/HD" },
35343 -                        { 0x26, AA "1000/FD, 100/HD, 10/FD" },
35344 -                        { 0x27, AA "1000/FD, 100/HD, 10/FD, 10/HD" },
35345 -                        { 0x28, AA "1000/FD, 100/FD" },
35346 -                        { 0x29, AA "1000/FD, 100/FD, 10/HD" },
35347 -                        { 0x2a, AA "1000/FD, 100/FD, 10/FD" },
35348 -                        { 0x2b, AA "1000/FD, 100/FD, 10/FD, 10/HD" },
35349 -                        { 0x2c, AA "1000/FD, 100/FD, 100/HD" },
35350 -                        { 0x2d, AA "1000/FD, 100/FD, 100/HD, 10/HD" },
35351 -                        { 0x2e, AA "1000/FD, 100/FD, 100/HD, 10/FD" },
35352 -                        { 0x2f, AA "1000/FD, 100/FD, 100/HD, 10/FD, 10/HD" }};
35353 -
35354 -               struct e1000_option opt = {
35355 -                       type: list_option,
35356 -                       name: "AutoNeg",
35357 -                       err:  "parameter ignored",
35358 -                       def:  AUTONEG_ADV_DEFAULT,
35359 -                       arg: { l: { nr: ARRAY_SIZE(an_list), p: an_list }}
35360 -               };
35361 -
35362 -               int an = AutoNeg[bd];
35363 -               e1000_validate_option(&an, &opt);
35364 -               adapter->hw.autoneg_advertised = an;
35365 -       }
35366 -
35367 -       switch (speed + dplx) {
35368 -       case 0:
35369 -               adapter->hw.autoneg = 1;
35370 -               if(Speed[bd] != OPTION_UNSET || Duplex[bd] != OPTION_UNSET)
35371 -                       printk(KERN_INFO
35372 -                              "Speed and duplex autonegotiation enabled\n");
35373 -               break;
35374 -       case HALF_DUPLEX:
35375 -               printk(KERN_INFO "Half Duplex specified without Speed\n");
35376 -               printk(KERN_INFO "Using Autonegotiation at Half Duplex only\n");
35377 -               adapter->hw.autoneg = 1;
35378 -               adapter->hw.autoneg_advertised = ADVERTISE_10_HALF | 
35379 -                                                ADVERTISE_100_HALF;
35380 -               break;
35381 -       case FULL_DUPLEX:
35382 -               printk(KERN_INFO "Full Duplex specified without Speed\n");
35383 -               printk(KERN_INFO "Using Autonegotiation at Full Duplex only\n");
35384 -               adapter->hw.autoneg = 1;
35385 -               adapter->hw.autoneg_advertised = ADVERTISE_10_FULL |
35386 -                                                ADVERTISE_100_FULL |
35387 -                                                ADVERTISE_1000_FULL;
35388 -               break;
35389 -       case SPEED_10:
35390 -               printk(KERN_INFO "10 Mbps Speed specified without Duplex\n");
35391 -               printk(KERN_INFO "Using Autonegotiation at 10 Mbps only\n");
35392 -               adapter->hw.autoneg = 1;
35393 -               adapter->hw.autoneg_advertised = ADVERTISE_10_HALF |
35394 -                                                ADVERTISE_10_FULL;
35395 -               break;
35396 -       case SPEED_10 + HALF_DUPLEX:
35397 -               printk(KERN_INFO "Forcing to 10 Mbps Half Duplex\n");
35398 -               adapter->hw.autoneg = 0;
35399 -               adapter->hw.forced_speed_duplex = e1000_10_half;
35400 -               adapter->hw.autoneg_advertised = 0;
35401 -               break;
35402 -       case SPEED_10 + FULL_DUPLEX:
35403 -               printk(KERN_INFO "Forcing to 10 Mbps Full Duplex\n");
35404 -               adapter->hw.autoneg = 0;
35405 -               adapter->hw.forced_speed_duplex = e1000_10_full;
35406 -               adapter->hw.autoneg_advertised = 0;
35407 -               break;
35408 -       case SPEED_100:
35409 -               printk(KERN_INFO "100 Mbps Speed specified without Duplex\n");
35410 -               printk(KERN_INFO "Using Autonegotiation at 100 Mbps only\n");
35411 -               adapter->hw.autoneg = 1;
35412 -               adapter->hw.autoneg_advertised = ADVERTISE_100_HALF |
35413 -                                                ADVERTISE_100_FULL;
35414 -               break;
35415 -       case SPEED_100 + HALF_DUPLEX:
35416 -               printk(KERN_INFO "Forcing to 100 Mbps Half Duplex\n");
35417 -               adapter->hw.autoneg = 0;
35418 -               adapter->hw.forced_speed_duplex = e1000_100_half;
35419 -               adapter->hw.autoneg_advertised = 0;
35420 -               break;
35421 -       case SPEED_100 + FULL_DUPLEX:
35422 -               printk(KERN_INFO "Forcing to 100 Mbps Full Duplex\n");
35423 -               adapter->hw.autoneg = 0;
35424 -               adapter->hw.forced_speed_duplex = e1000_100_full;
35425 -               adapter->hw.autoneg_advertised = 0;
35426 -               break;
35427 -       case SPEED_1000:
35428 -               printk(KERN_INFO "1000 Mbps Speed specified without Duplex\n");
35429 -               printk(KERN_INFO
35430 -                      "Using Autonegotiation at 1000 Mbps Full Duplex only\n");
35431 -               adapter->hw.autoneg = 1;
35432 -               adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL;
35433 -               break;
35434 -       case SPEED_1000 + HALF_DUPLEX:
35435 -               printk(KERN_INFO "Half Duplex is not supported at 1000 Mbps\n");
35436 -               printk(KERN_INFO
35437 -                      "Using Autonegotiation at 1000 Mbps Full Duplex only\n");
35438 -               adapter->hw.autoneg = 1;
35439 -               adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL;
35440 -               break;
35441 -       case SPEED_1000 + FULL_DUPLEX:
35442 -               printk(KERN_INFO
35443 -                      "Using Autonegotiation at 1000 Mbps Full Duplex only\n");
35444 -               adapter->hw.autoneg = 1;
35445 -               adapter->hw.autoneg_advertised = ADVERTISE_1000_FULL;
35446 -               break;
35447 -       default:
35448 -               BUG();
35449 -       }
35450 -
35451 -       /* Speed, AutoNeg and MDI/MDI-X must all play nice */
35452 -       if (e1000_validate_mdi_setting(&(adapter->hw)) < 0) {
35453 -               printk(KERN_INFO "Speed, AutoNeg and MDI-X specifications are "
35454 -                      "incompatible. Setting MDI-X to a compatible value.\n");
35455 -       }
35456 -}
35457 -
35458 diff -Nurb click-1.6.0/elements/linuxmodule/anydevice.cc click-1.6.0-27/elements/linuxmodule/anydevice.cc
35459 --- click-1.6.0/elements/linuxmodule/anydevice.cc       2007-08-29 04:03:55.000000000 -0400
35460 +++ click-1.6.0-27/elements/linuxmodule/anydevice.cc    2009-01-21 14:44:39.000000000 -0500
35461 @@ -49,7 +49,7 @@
35462  int
35463  AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh)
35464  {
35465 -    _dev = dev_get_by_name(_devname.c_str());
35466 +    _dev = dev_get_by_name(&init_net,_devname.c_str());
35467      _devname_exists = (bool) _dev;
35468      if (!_dev)
35469         _dev = dev_get_by_ether_address(_devname, this);
35470 @@ -233,7 +233,7 @@
35471         return 0;
35472      read_lock(&dev_base_lock);
35473      net_device *dev;
35474 -    for (dev = dev_base; dev; dev = dev->next)
35475 +    for_each_netdev(&init_net, dev)//for (dev = dev_base; dev; dev = dev->next)
35476         if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)
35477             && memcmp(en, dev->dev_addr, 6) == 0) {
35478             dev_hold(dev);      // dev_get_by_name does dev_hold; so
35479 diff -Nurb click-1.6.0/elements/linuxmodule/anydevice.cc.orig click-1.6.0-27/elements/linuxmodule/anydevice.cc.orig
35480 --- click-1.6.0/elements/linuxmodule/anydevice.cc.orig  1969-12-31 19:00:00.000000000 -0500
35481 +++ click-1.6.0-27/elements/linuxmodule/anydevice.cc.orig       2007-08-29 04:03:55.000000000 -0400
35482 @@ -0,0 +1,248 @@
35483 +// -*- mode: c++; c-basic-offset: 4 -*-
35484 +/*
35485 + * anydevice.{cc,hh} -- support Linux device interaction
35486 + * Eddie Kohler
35487 + *
35488 + * Copyright (c) 2001 International Computer Science Institute
35489 + * Copyright (c) 2000 Massachusetts Institute of Technology
35490 + * Copyright (c) 2000 Mazu Networks, Inc.
35491 + * Copyright (c) 2004-2007 Regents of the University of California
35492 + *
35493 + * Permission is hereby granted, free of charge, to any person obtaining a
35494 + * copy of this software and associated documentation files (the "Software"),
35495 + * to deal in the Software without restriction, subject to the conditions
35496 + * listed in the Click LICENSE file. These conditions include: you must
35497 + * preserve this copyright notice, and you cannot mention the copyright
35498 + * holders in advertising related to the Software without their permission.
35499 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
35500 + * notice is a summary of the Click LICENSE file; the license in that file is
35501 + * legally binding.
35502 + */
35503 +
35504 +#include <click/config.h>
35505 +#include <click/glue.hh>
35506 +#include "anydevice.hh"
35507 +#include <click/confparse.hh>
35508 +#include <click/error.hh>
35509 +#include <clicknet/ether.h>
35510 +#include <click/cxxprotect.h>
35511 +CLICK_CXX_PROTECT
35512 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
35513 +#include <linux/if_arp.h>
35514 +#endif
35515 +#include <linux/smp_lock.h>
35516 +CLICK_CXX_UNPROTECT
35517 +#include <click/cxxunprotect.h>
35518 +
35519 +AnyDevice::AnyDevice()
35520 +    : _dev(0), _promisc(false), _timestamp(true), _in_map(false),
35521 +      _quiet(false), _allow_nonexistent(false), _devname_exists(false), _next(0)
35522 +{
35523 +}
35524 +
35525 +AnyDevice::~AnyDevice()
35526 +{
35527 +    if (_in_map || _dev)
35528 +       click_chatter("%s: bad device destructor!", name().c_str());
35529 +}
35530 +
35531 +int
35532 +AnyDevice::find_device(AnyDeviceMap *adm, ErrorHandler *errh)
35533 +{
35534 +    _dev = dev_get_by_name(_devname.c_str());
35535 +    _devname_exists = (bool) _dev;
35536 +    if (!_dev)
35537 +       _dev = dev_get_by_ether_address(_devname, this);
35538 +
35539 +    if (!_dev && !_allow_nonexistent)
35540 +       return errh->error("unknown device '%s'", _devname.c_str());
35541 +    else if (!_dev && !_quiet)
35542 +       errh->warning("unknown device '%s'", _devname.c_str());
35543 +    else if (_dev && !(_dev->flags & IFF_UP)) {
35544 +       if (!_quiet)
35545 +           errh->warning("device '%s' is down", _devname.c_str());
35546 +       dev_put(_dev);
35547 +       _dev = 0;
35548 +    }
35549 +
35550 +    if (_dev && _promisc)
35551 +       dev_set_promiscuity(_dev, 1);
35552 +#if HAVE_NET_ENABLE_TIMESTAMP
35553 +    if (_dev && _timestamp)
35554 +       net_enable_timestamp();
35555 +#endif
35556 +    if (adm)
35557 +       adm->insert(this, false);
35558 +
35559 +    return 0;
35560 +}
35561 +
35562 +void
35563 +AnyDevice::set_device(net_device *dev, AnyDeviceMap *adm, bool locked)
35564 +{
35565 +    if (_dev == dev)           // changing to the same device is a noop
35566 +       return;
35567 +    
35568 +    if (_dev && !_quiet)
35569 +       click_chatter("%s: device '%s' went down", declaration().c_str(), _devname.c_str());
35570 +    if (dev && !_quiet)
35571 +       click_chatter("%s: device '%s' came up", declaration().c_str(), _devname.c_str());
35572 +    
35573 +    if (_dev && _promisc)
35574 +       dev_set_promiscuity(_dev, -1);
35575 +#if HAVE_NET_ENABLE_TIMESTAMP
35576 +    if (_dev && _timestamp)
35577 +       net_disable_timestamp();
35578 +#endif
35579 +    
35580 +    if (adm && _in_map)
35581 +       adm->remove(this, locked);
35582 +    if (_dev)
35583 +       dev_put(_dev);
35584 +    _dev = dev;
35585 +    if (_dev)
35586 +       dev_hold(_dev);
35587 +    if (adm)
35588 +       adm->insert(this, locked);
35589 +
35590 +    if (_dev && _promisc)
35591 +       dev_set_promiscuity(_dev, 1);
35592 +#if HAVE_NET_ENABLE_TIMESTAMP
35593 +    if (_dev && _timestamp)
35594 +       net_enable_timestamp();
35595 +#endif
35596 +}
35597 +
35598 +void
35599 +AnyDevice::clear_device(AnyDeviceMap *adm)
35600 +{
35601 +    if (_dev && _promisc)
35602 +       dev_set_promiscuity(_dev, -1);
35603 +#if HAVE_NET_ENABLE_TIMESTAMP
35604 +    if (_dev && _timestamp)
35605 +       net_disable_timestamp();
35606 +#endif
35607 +    if (adm && _in_map)
35608 +       adm->remove(this, false);
35609 +    if (_dev)
35610 +       dev_put(_dev);
35611 +    _dev = 0;
35612 +}
35613 +
35614 +
35615 +AnyTaskDevice::AnyTaskDevice()
35616 +    : _task(this), _idles(0)
35617 +{
35618 +}
35619 +
35620 +
35621 +void
35622 +AnyDeviceMap::initialize()
35623 +{
35624 +    _unknown_map = 0;
35625 +    for (int i = 0; i < MAP_SIZE; i++)
35626 +       _map[i] = 0;
35627 +    rwlock_init(&_lock);
35628 +}
35629 +
35630 +void
35631 +AnyDeviceMap::insert(AnyDevice *d, bool locked)
35632 +{
35633 +    // lock when manipulating device map
35634 +    if (!locked)
35635 +       lock(true);
35636 +    
35637 +    // put new devices last on list
35638 +    int ifi = d->ifindex();
35639 +    AnyDevice **pprev = (ifi >= 0 ? &_map[ifi % MAP_SIZE] : &_unknown_map);
35640 +    AnyDevice *trav = *pprev;
35641 +    while (trav) {
35642 +       pprev = &trav->_next;
35643 +       trav = *pprev;
35644 +    }
35645 +    d->_next = 0;
35646 +    *pprev = d;
35647 +
35648 +    d->_in_map = true;
35649 +    if (!locked)
35650 +       unlock(true);
35651 +}
35652 +
35653 +void
35654 +AnyDeviceMap::remove(AnyDevice *d, bool locked)
35655 +{
35656 +    if (!locked)
35657 +       lock(true);
35658 +    int ifi = d->ifindex();
35659 +    AnyDevice **pprev = (ifi >= 0 ? &_map[ifi % MAP_SIZE] : &_unknown_map);
35660 +    AnyDevice *trav = *pprev;
35661 +    while (trav && trav != d) {
35662 +       pprev = &trav->_next;
35663 +       trav = *pprev;
35664 +    }
35665 +    if (trav)
35666 +       *pprev = d->_next;
35667 +    d->_in_map = false;
35668 +    if (!locked)
35669 +       unlock(true);
35670 +}
35671 +
35672 +AnyDevice *
35673 +AnyDeviceMap::lookup_unknown(net_device *dev, AnyDevice *last) const
35674 +    // must be called between AnyDeviceMap::lock() ... unlock()
35675 +{
35676 +    // make sure device is valid
35677 +    if (!dev)
35678 +       return 0;
35679 +
35680 +    // look by device name and Ethernet address
35681 +    String dev_name = dev->name;
35682 +    unsigned char en[6];
35683 +    
35684 +    for (AnyDevice *d = (last ? last->_next : _unknown_map); d; d = d->_next)
35685 +       if (d->devname() == dev_name) {
35686 +           d->_devname_exists = true;
35687 +           return d;
35688 +       } else if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)
35689 +                  && !d->_devname_exists
35690 +                  && cp_ethernet_address(d->devname(), en, d)
35691 +                  && memcmp(en, dev->dev_addr, 6) == 0)
35692 +           return d;
35693 +
35694 +    return 0;
35695 +}
35696 +
35697 +void
35698 +AnyDeviceMap::lookup_all(net_device *dev, bool known, Vector<AnyDevice *> &v) const
35699 +    // must be called between AnyDeviceMap::lock() ... unlock()
35700 +{
35701 +    if (known)
35702 +       for (AnyDevice *d = 0; d = lookup(dev, d); v.push_back(d))
35703 +           /* nada */;
35704 +    else
35705 +       for (AnyDevice *d = 0; d = lookup_unknown(dev, d); v.push_back(d))
35706 +           /* nada */;
35707 +}
35708 +
35709 +
35710 +net_device *
35711 +dev_get_by_ether_address(const String &name, Element *context)
35712 +{
35713 +    unsigned char en[6];
35714 +    if (!cp_ethernet_address(name, en, context))
35715 +       return 0;
35716 +    read_lock(&dev_base_lock);
35717 +    net_device *dev;
35718 +    for (dev = dev_base; dev; dev = dev->next)
35719 +       if ((dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)
35720 +           && memcmp(en, dev->dev_addr, 6) == 0) {
35721 +           dev_hold(dev);      // dev_get_by_name does dev_hold; so
35722 +                               // should we
35723 +           break;
35724 +       }
35725 +    read_unlock(&dev_base_lock);
35726 +    return dev;
35727 +}
35728 +
35729 +ELEMENT_REQUIRES(linuxmodule)
35730 +ELEMENT_PROVIDES(AnyDevice)
35731 diff -Nurb click-1.6.0/elements/linuxmodule/fromdevice.cc click-1.6.0-27/elements/linuxmodule/fromdevice.cc
35732 --- click-1.6.0/elements/linuxmodule/fromdevice.cc      2007-08-29 04:01:48.000000000 -0400
35733 +++ click-1.6.0-27/elements/linuxmodule/fromdevice.cc   2009-01-26 14:38:07.000000000 -0500
35734 @@ -258,7 +258,7 @@
35735         assert(skb_shared(skb) == 0); /* else skb = skb_clone(skb, GFP_ATOMIC); */
35736  
35737         /* Retrieve the MAC header. */
35738 -       skb_push(skb, skb->data - skb->mac.raw);
35739 +       skb_push(skb, skb->data - skb_mac_header(skb));
35740  
35741         Packet *p = Packet::make(skb);
35742         _queue[_tail] = p; /* hand it to run_task */
35743 diff -Nurb click-1.6.0/elements/linuxmodule/fromdevice.cc.orig click-1.6.0-27/elements/linuxmodule/fromdevice.cc.orig
35744 --- click-1.6.0/elements/linuxmodule/fromdevice.cc.orig 1969-12-31 19:00:00.000000000 -0500
35745 +++ click-1.6.0-27/elements/linuxmodule/fromdevice.cc.orig      2007-08-29 04:01:48.000000000 -0400
35746 @@ -0,0 +1,395 @@
35747 +// -*- mode: c++; c-basic-offset: 4 -*-
35748 +/*
35749 + * fromdevice.{cc,hh} -- element steals packets from Linux devices using
35750 + * register_net_in
35751 + * Eddie Kohler
35752 + * Robert Morris
35753 + * Benjie Chen: scheduling, internal queue
35754 + *
35755 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
35756 + * Copyright (c) 2000 Mazu Networks, Inc.
35757 + * Copyright (c) 2001 International Computer Science Institute
35758 + * Copyright (c) 2007 Regents of the University of California
35759 + *
35760 + * Permission is hereby granted, free of charge, to any person obtaining a
35761 + * copy of this software and associated documentation files (the "Software"),
35762 + * to deal in the Software without restriction, subject to the conditions
35763 + * listed in the Click LICENSE file. These conditions include: you must
35764 + * preserve this copyright notice, and you cannot mention the copyright
35765 + * holders in advertising related to the Software without their permission.
35766 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
35767 + * notice is a summary of the Click LICENSE file; the license in that file is
35768 + * legally binding.
35769 + */
35770 +
35771 +#include <click/config.h>
35772 +#include <click/glue.hh>
35773 +#include "fromdevice.hh"
35774 +#include <click/error.hh>
35775 +#include <click/confparse.hh>
35776 +#include <click/router.hh>
35777 +#include <click/standard/scheduleinfo.hh>
35778 +#include <click/straccum.hh>
35779 +
35780 +static AnyDeviceMap from_device_map;
35781 +static int registered_readers;
35782 +#ifdef HAVE_CLICK_KERNEL
35783 +static struct notifier_block packet_notifier;
35784 +#endif
35785 +static struct notifier_block device_notifier;
35786 +
35787 +extern "C" {
35788 +#ifdef HAVE_CLICK_KERNEL
35789 +static int packet_notifier_hook(struct notifier_block *nb, unsigned long val, void *v);
35790 +#endif
35791 +static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v);
35792 +}
35793 +
35794 +void
35795 +FromDevice::static_initialize()
35796 +{
35797 +    from_device_map.initialize();
35798 +#ifdef HAVE_CLICK_KERNEL
35799 +    packet_notifier.notifier_call = packet_notifier_hook;
35800 +    packet_notifier.priority = 1;
35801 +    packet_notifier.next = 0;
35802 +#endif
35803 +    device_notifier.notifier_call = device_notifier_hook;
35804 +    device_notifier.priority = 1;
35805 +    device_notifier.next = 0;
35806 +    register_netdevice_notifier(&device_notifier);
35807 +}
35808 +
35809 +void
35810 +FromDevice::static_cleanup()
35811 +{
35812 +#ifdef HAVE_CLICK_KERNEL
35813 +    if (registered_readers)
35814 +       unregister_net_in(&packet_notifier);
35815 +#endif
35816 +    unregister_netdevice_notifier(&device_notifier);
35817 +}
35818 +
35819 +FromDevice::FromDevice()
35820 +{
35821 +    _head = _tail = 0;
35822 +}
35823 +
35824 +FromDevice::~FromDevice()
35825 +{
35826 +}
35827 +
35828 +void *
35829 +FromDevice::cast(const char *n)
35830 +{
35831 +    if (strcmp(n, "Storage") == 0)
35832 +       return (Storage *)this;
35833 +    else if (strcmp(n, "FromDevice") == 0)
35834 +       return (Element *)this;
35835 +    else
35836 +       return 0;
35837 +}
35838 +
35839 +int
35840 +FromDevice::configure(Vector<String> &conf, ErrorHandler *errh)
35841 +{
35842 +    bool promisc = false, quiet = false, allow_nonexistent = false, timestamp = true;
35843 +    _burst = 8;
35844 +    if (cp_va_parse(conf, this, errh, 
35845 +                   cpString, "device name", &_devname, 
35846 +                   cpOptional,
35847 +                   cpBool, "enter promiscuous mode?", &promisc,
35848 +                   cpUnsigned, "burst size", &_burst,
35849 +                   cpKeywords,
35850 +                   "PROMISC", cpBool, "enter promiscuous mode?", &promisc,
35851 +                   "PROMISCUOUS", cpBool, "enter promiscuous mode?", &promisc,
35852 +                   "BURST", cpUnsigned, "burst size", &_burst,
35853 +                   "TIMESTAMP", cpBool, "set timestamps?", &timestamp,
35854 +                   "QUIET", cpBool, "suppress up/down messages?", &quiet,
35855 +                   "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent,
35856 +                   cpEnd) < 0)
35857 +       return -1;
35858 +    set_device_flags(promisc, timestamp, allow_nonexistent, quiet);
35859 +
35860 +    // make queue look full so packets sent to us are ignored
35861 +    _head = _tail = _capacity = 0;
35862 +
35863 +    return find_device(&from_device_map, errh);
35864 +}
35865 +
35866 +/*
35867 + * Use a Linux interface added by us, in net/core/dev.c,
35868 + * to register to grab incoming packets.
35869 + */
35870 +int
35871 +FromDevice::initialize(ErrorHandler *errh)
35872 +{
35873 +    // check for duplicate readers
35874 +    if (ifindex() >= 0) {
35875 +       void *&used = router()->force_attachment("device_reader_" + String(ifindex()));
35876 +       if (used)
35877 +           return errh->error("duplicate reader for device '%s'", _devname.c_str());
35878 +       used = this;
35879 +    }
35880 +
35881 +    if (!registered_readers) {
35882 +#ifdef HAVE_CLICK_KERNEL
35883 +       packet_notifier.next = 0;
35884 +       register_net_in(&packet_notifier);
35885 +#else
35886 +       errh->warning("can't get packets: not compiled for a Click kernel");
35887 +#endif
35888 +    }
35889 +    registered_readers++;
35890 +
35891 +    _drops = 0;
35892 +    reset_counts();
35893 +
35894 +    ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh);
35895 +#ifdef HAVE_STRIDE_SCHED
35896 +    // user specifies max number of tickets; we start with default
35897 +    _max_tickets = _task.tickets();
35898 +    _task.set_tickets(Task::DEFAULT_TICKETS);
35899 +#endif
35900 +
35901 +    // set true queue size (now we can start receiving packets)
35902 +    _capacity = QSIZE;
35903 +    
35904 +    return 0;
35905 +}
35906 +
35907 +void
35908 +FromDevice::cleanup(CleanupStage stage)
35909 +{
35910 +    if (stage >= CLEANUP_INITIALIZED) {
35911 +       registered_readers--;
35912 +#ifdef HAVE_CLICK_KERNEL
35913 +       if (registered_readers == 0)
35914 +           unregister_net_in(&packet_notifier);
35915 +#endif
35916 +    }
35917 +    
35918 +    clear_device(&from_device_map);
35919 +
35920 +    if (stage >= CLEANUP_INITIALIZED)
35921 +       for (unsigned i = _head; i != _tail; i = next_i(i))
35922 +           _queue[i]->kill();
35923 +    _head = _tail = 0;
35924 +}
35925 +
35926 +void
35927 +FromDevice::take_state(Element *e, ErrorHandler *errh)
35928 +{
35929 +    if (FromDevice *fd = (FromDevice *)e->cast("FromDevice")) {
35930 +       SpinlockIRQ::flags_t flags;
35931 +       local_irq_save(flags);
35932 +
35933 +       unsigned fd_i = fd->_head;
35934 +       while (fd_i != fd->_tail) {
35935 +           unsigned next = next_i(_tail);
35936 +           if (next == _head)
35937 +               break;
35938 +           _queue[_tail] = fd->_queue[fd_i];
35939 +           fd_i = fd->next_i(fd_i);
35940 +           _tail = next;
35941 +       }
35942 +       for (; fd_i != fd->_tail; fd_i = fd->next_i(fd_i))
35943 +           fd->_queue[fd_i]->kill();
35944 +       if (_head != _tail)
35945 +           _task.reschedule();
35946 +
35947 +       fd->_head = fd->_tail = fd->_capacity = 0;
35948 +
35949 +       local_irq_restore(flags);
35950 +    }
35951 +}
35952 +
35953 +/*
35954 + * Called by Linux net_bh[2.2]/net_rx_action[2.4] with each packet.
35955 + */
35956 +extern "C" {
35957 +
35958 +#ifdef HAVE_CLICK_KERNEL
35959 +static int
35960 +packet_notifier_hook(struct notifier_block *nb, unsigned long backlog_len, void *v)
35961 +{
35962 +    struct sk_buff *skb = (struct sk_buff *)v;
35963 +    int stolen = 0;
35964 +    FromDevice *fd = 0;
35965 +    from_device_map.lock(false);
35966 +    while (stolen == 0 && (fd = (FromDevice *)from_device_map.lookup(skb->dev, fd)))
35967 +       stolen = fd->got_skb(skb);
35968 +    from_device_map.unlock(false);
35969 +    return (stolen ? NOTIFY_STOP_MASK : 0);
35970 +}
35971 +#endif
35972 +
35973 +static int
35974 +device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v)
35975 +{
35976 +#ifdef NETDEV_GOING_DOWN
35977 +    if (flags == NETDEV_GOING_DOWN)
35978 +       flags = NETDEV_DOWN;
35979 +#endif
35980 +    if (flags == NETDEV_DOWN || flags == NETDEV_UP) {
35981 +       bool down = (flags == NETDEV_DOWN);
35982 +       net_device* dev = (net_device*)v;
35983 +       Vector<AnyDevice*> es;
35984 +       from_device_map.lock(true);
35985 +       from_device_map.lookup_all(dev, down, es);
35986 +       for (int i = 0; i < es.size(); i++)
35987 +           ((FromDevice*)(es[i]))->set_device(down ? 0 : dev, &from_device_map, true);
35988 +       from_device_map.unlock(true);
35989 +    }
35990 +    return 0;
35991 +}
35992 +
35993 +}
35994 +
35995 +/*
35996 + * Per-FromDevice packet input routine.
35997 + */
35998 +int
35999 +FromDevice::got_skb(struct sk_buff *skb)
36000 +{
36001 +    unsigned next = next_i(_tail);
36002 +
36003 +    if (next != _head) { /* ours */
36004 +       assert(skb_shared(skb) == 0); /* else skb = skb_clone(skb, GFP_ATOMIC); */
36005 +
36006 +       /* Retrieve the MAC header. */
36007 +       skb_push(skb, skb->data - skb->mac.raw);
36008 +
36009 +       Packet *p = Packet::make(skb);
36010 +       _queue[_tail] = p; /* hand it to run_task */
36011 +
36012 +#if CLICK_DEBUG_SCHEDULING
36013 +       click_gettimeofday(&_schinfo[_tail].enq_time);
36014 +       RouterThread *rt = _task.thread();
36015 +       _schinfo[_tail].enq_state = rt->thread_state();
36016 +       int enq_process_asleep = rt->sleeper() && rt->sleeper()->state != TASK_RUNNING;
36017 +       _schinfo[_tail].enq_task_scheduled = _task.scheduled();
36018 +       _schinfo[_tail].enq_epoch = rt->driver_epoch();
36019 +       _schinfo[_tail].enq_task_epoch = rt->driver_task_epoch();
36020 +#endif
36021 +       
36022 +       _tail = next;
36023 +       _task.reschedule();
36024 +
36025 +#if CLICK_DEBUG_SCHEDULING
36026 +       _schinfo[_tail].enq_woke_process = enq_process_asleep && rt->sleeper()->state == TASK_RUNNING;
36027 +#endif
36028 +
36029 +    } else if (_capacity > 0) {
36030 +       /* queue full, drop */
36031 +       kfree_skb(skb);
36032 +       _drops++;
36033 +       
36034 +    } else // not yet initialized
36035 +       return 0;
36036 +
36037 +    return 1;
36038 +}
36039 +
36040 +#if CLICK_DEBUG_SCHEDULING
36041 +void
36042 +FromDevice::emission_report(int idx)
36043 +{
36044 +    struct timeval now;
36045 +    click_gettimeofday(&now);
36046 +    RouterThread *rt = _task.thread();
36047 +    StringAccum sa;
36048 +    sa << "dt " << (now - _schinfo[idx].enq_time);
36049 +    if (_schinfo[idx].enq_state != RouterThread::S_RUNNING) {
36050 +       struct timeval etime = rt->task_epoch_time(_schinfo[idx].enq_task_epoch + 1);
36051 +       if (timerisset(&etime))
36052 +           sa << " dt_thread " << (etime - _schinfo[idx].enq_time);
36053 +    }
36054 +    sa << " arrst " << RouterThread::thread_state_name(_schinfo[idx].enq_state)
36055 +       << " depoch " << (rt->driver_epoch() - _schinfo[idx].enq_epoch)
36056 +       << " dtepoch " << (rt->driver_task_epoch() - _schinfo[idx].enq_task_epoch);
36057 +    if (_schinfo[idx].enq_woke_process)
36058 +       sa << " woke";
36059 +    if (_schinfo[idx].enq_task_scheduled)
36060 +       sa << " tasksched";
36061 +    
36062 +    click_chatter("%s packet: %s", name().c_str(), sa.c_str()); 
36063 +}
36064 +#endif
36065 +
36066 +bool
36067 +FromDevice::run_task(Task *)
36068 +{
36069 +    _runs++;
36070 +    int npq = 0;
36071 +    while (npq < _burst && _head != _tail) {
36072 +       Packet *p = _queue[_head];
36073 +#if CLICK_DEBUG_SCHEDULING
36074 +       emission_report(_head);
36075 +#endif
36076 +       _head = next_i(_head);
36077 +       output(0).push(p);
36078 +       npq++;
36079 +       _pushes++;
36080 +    }
36081 +    if (npq == 0)
36082 +       _empty_runs++;
36083 +    // 9/18/06: Frederic Van Quickenborne reports (1/24/05) that ticket
36084 +    // adjustments in FromDevice+ToDevice cause odd behavior.  The ticket
36085 +    // adjustments actually don't feel necessary to me in From/ToDevice any
36086 +    // more, since FromDevice's interrupt handler will reschedule FromDevice
36087 +    // as necessary; now "ticket adjustment" is subsumed by "scheduled or not
36088 +    // scheduled".  So commenting this out.
36089 +    // adjust_tickets(npq);
36090 +    if (npq > 0)
36091 +       _task.fast_reschedule();
36092 +    return npq > 0;
36093 +}
36094 +
36095 +void
36096 +FromDevice::reset_counts()
36097 +{
36098 +    _runs = 0;
36099 +    _empty_runs = 0;
36100 +    _pushes = 0;
36101 +}
36102 +
36103 +static int
36104 +FromDevice_write_stats(const String &, Element *e, void *, ErrorHandler *)
36105 +{
36106 +    FromDevice *fd = (FromDevice *) e;
36107 +    fd->reset_counts();
36108 +    return 0;
36109 +}
36110 +
36111 +static String
36112 +FromDevice_read_stats(Element *e, void *thunk)
36113 +{
36114 +    FromDevice *fd = (FromDevice *) e;
36115 +    switch (reinterpret_cast<intptr_t>(thunk)) {
36116 +    case 0: return String(fd->drops()); break;
36117 +    case 1: {
36118 +       StringAccum sa;
36119 +       sa << "calls to run_task(): " << fd->runs() << "\n"
36120 +          << "calls to push():     " << fd->pushes() << "\n"
36121 +          << "empty runs:          " << fd->empty_runs() << "\n"
36122 +          << "drops:               " << fd->drops() << "\n";
36123 +       return sa.take_string();
36124 +       break;
36125 +    }
36126 +    default: 
36127 +       return String();
36128 +    }  
36129 +}
36130 +
36131 +void
36132 +FromDevice::add_handlers()
36133 +{
36134 +    add_task_handlers(&_task);
36135 +    add_read_handler("drops", FromDevice_read_stats, (void *) 0);
36136 +    add_read_handler("calls", FromDevice_read_stats, (void *) 1);
36137 +    add_write_handler("reset_counts", FromDevice_write_stats, 0);
36138 +}
36139 +
36140 +ELEMENT_REQUIRES(AnyDevice linuxmodule)
36141 +EXPORT_ELEMENT(FromDevice)
36142 diff -Nurb click-1.6.0/elements/linuxmodule/fromhost.cc click-1.6.0-27/elements/linuxmodule/fromhost.cc
36143 --- click-1.6.0/elements/linuxmodule/fromhost.cc        2007-07-16 19:47:50.000000000 -0400
36144 +++ click-1.6.0-27/elements/linuxmodule/fromhost.cc     2009-01-26 15:16:05.000000000 -0500
36145 @@ -121,7 +121,7 @@
36146      used = this;
36147      
36148      // check for existing device
36149 -    _dev = dev_get_by_name(_devname.c_str());
36150 +    _dev = dev_get_by_name(&init_net, _devname.c_str());
36151      if (_dev) {
36152         if (_dev->open != fl_open) {
36153             dev_put(_dev);
36154 @@ -175,16 +175,16 @@
36155  
36156      ifr.ifr_hwaddr.sa_family = _dev->type;
36157      memcpy(ifr.ifr_hwaddr.sa_data, _macaddr.data(), 6);
36158 -    if ((res = dev_ioctl(SIOCSIFHWADDR, &ifr)) < 0)
36159 +    if ((res = dev_ioctl(&init_net, SIOCSIFHWADDR, &ifr)) < 0)
36160         errh->error("error %d setting hardware address for device '%s'", res, _devname.c_str());
36161  
36162      sin->sin_family = AF_INET;
36163      sin->sin_addr = _destaddr;
36164 -    if (res >= 0 && (res = devinet_ioctl(SIOCSIFADDR, &ifr)) < 0)
36165 +    if (res >= 0 && (res = devinet_ioctl(&init_net,SIOCSIFADDR, &ifr)) < 0)
36166         errh->error("error %d setting address for device '%s'", res, _devname.c_str());
36167  
36168      sin->sin_addr = _destmask;
36169 -    if (res >= 0 && (res = devinet_ioctl(SIOCSIFNETMASK, &ifr)) < 0)
36170 +    if (res >= 0 && (res = devinet_ioctl(&init_net,SIOCSIFNETMASK, &ifr)) < 0)
36171         errh->error("error %d setting netmask for device '%s'", res, _devname.c_str());
36172  
36173      set_fs(oldfs);
36174 @@ -202,9 +202,9 @@
36175      mm_segment_t oldfs = get_fs();
36176      set_fs(get_ds());
36177  
36178 -    (void) dev_ioctl(SIOCGIFFLAGS, &ifr);
36179 +    (void) dev_ioctl(&init_net, SIOCGIFFLAGS, &ifr);
36180      ifr.ifr_flags = (up > 0 ? ifr.ifr_flags | flags : ifr.ifr_flags & ~flags);
36181 -    if ((res = dev_ioctl(SIOCSIFFLAGS, &ifr)) < 0 && errh)
36182 +    if ((res = dev_ioctl(&init_net, SIOCSIFFLAGS, &ifr)) < 0 && errh)
36183         errh->error("error %d bringing %s device '%s'", res, (up > 0 ? "up" : "down"), dev->name);
36184  
36185      set_fs(oldfs);
36186 diff -Nurb click-1.6.0/elements/linuxmodule/fromhost.cc.orig click-1.6.0-27/elements/linuxmodule/fromhost.cc.orig
36187 --- click-1.6.0/elements/linuxmodule/fromhost.cc.orig   1969-12-31 19:00:00.000000000 -0500
36188 +++ click-1.6.0-27/elements/linuxmodule/fromhost.cc.orig        2007-07-16 19:47:50.000000000 -0400
36189 @@ -0,0 +1,345 @@
36190 +// -*- mode: c++; c-basic-offset: 4 -*-
36191 +/*
36192 + * fromhost.{cc,hh} -- receives packets from Linux
36193 + * Max Poletto, Eddie Kohler
36194 + *
36195 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
36196 + * Copyright (c) 2000 Mazu Networks, Inc.
36197 + * Copyright (c) 2001-2003 International Computer Science Institute
36198 + *
36199 + * Permission is hereby granted, free of charge, to any person obtaining a
36200 + * copy of this software and associated documentation files (the "Software"),
36201 + * to deal in the Software without restriction, subject to the conditions
36202 + * listed in the Click LICENSE file. These conditions include: you must
36203 + * preserve this copyright notice, and you cannot mention the copyright
36204 + * holders in advertising related to the Software without their permission.
36205 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
36206 + * notice is a summary of the Click LICENSE file; the license in that file is
36207 + * legally binding.
36208 + */
36209 +
36210 +#include <click/config.h>
36211 +#include <click/router.hh>
36212 +#include "fromhost.hh"
36213 +#include <click/confparse.hh>
36214 +#include <click/error.hh>
36215 +#include <click/standard/scheduleinfo.hh>
36216 +
36217 +#include <click/cxxprotect.h>
36218 +CLICK_CXX_PROTECT
36219 +#include <asm/types.h>
36220 +#include <asm/uaccess.h>
36221 +#include <linux/ip.h>
36222 +#include <linux/inetdevice.h>
36223 +#include <net/route.h>
36224 +CLICK_CXX_UNPROTECT
36225 +#include <click/cxxunprotect.h>
36226 +
36227 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
36228 +# define netif_start_queue(dev)        do { dev->start=1; dev->tbusy=0; } while (0)
36229 +# define netif_stop_queue(dev) do { dev->tbusy=1; } while (0)
36230 +# define netif_wake_queue(dev) do { dev->tbusy=0; } while (0)
36231 +#endif
36232 +
36233 +static int fl_open(net_device *);
36234 +static int fl_close(net_device *);
36235 +static net_device_stats *fl_stats(net_device *);
36236 +static void fl_wakeup(Timer *, void *);
36237 +
36238 +static int from_linux_count;
36239 +static AnyDeviceMap fromlinux_map;
36240 +
36241 +void
36242 +FromHost::static_initialize()
36243 +{
36244 +    fromlinux_map.initialize();
36245 +}
36246 +
36247 +FromHost::FromHost()
36248 +    : _macaddr((const unsigned char *)"\000\001\002\003\004\005"),
36249 +      _task(this), _wakeup_timer(fl_wakeup, this), _queue(0)
36250 +{
36251 +    memset(&_stats, 0, sizeof(_stats));
36252 +}
36253 +
36254 +FromHost::~FromHost()
36255 +{
36256 +}
36257 +
36258 +net_device *
36259 +FromHost::new_device(const char *name)
36260 +{
36261 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
36262 +    read_lock(&dev_base_lock);
36263 +#endif
36264 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
36265 +    net_device *dev = alloc_netdev(0, name, ether_setup);
36266 +#else
36267 +    int errcode;
36268 +    net_device *dev = dev_alloc(name, &errcode);
36269 +#endif
36270 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
36271 +    read_unlock(&dev_base_lock);
36272 +#endif
36273 +    if (!dev)
36274 +       return 0;
36275 +    
36276 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
36277 +    // need to zero out the dev structure
36278 +    char *nameptr = dev->name;
36279 +    memset(dev, 0, sizeof(*dev));
36280 +    dev->name = nameptr;
36281 +#endif
36282 +
36283 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
36284 +    ether_setup(dev);
36285 +#endif
36286 +    dev->open = fl_open;
36287 +    dev->stop = fl_close;
36288 +    dev->hard_start_xmit = fl_tx;
36289 +    dev->get_stats = fl_stats;
36290 +    return dev;
36291 +}
36292 +
36293 +int
36294 +FromHost::configure(Vector<String> &conf, ErrorHandler *errh)
36295 +{
36296 +    if (cp_va_parse(conf, this, errh,
36297 +                   cpString, "device name", &_devname,
36298 +                   cpIPPrefix, "destination IP prefix", &_destaddr, &_destmask,
36299 +                   cpKeywords,
36300 +                   "ETHER", cpEthernetAddress, "fake device Ethernet address", &_macaddr,
36301 +                   cpEnd) < 0)
36302 +       return -1;
36303 +    if (_devname.length() > IFNAMSIZ - 1)
36304 +       return errh->error("device name '%s' too long", _devname.c_str());
36305 +
36306 +    // check for duplicate element
36307 +    void *&used = router()->force_attachment("FromHost_" + _devname);
36308 +    if (used)
36309 +       return errh->error("duplicate FromHost for device '%s'", _devname.c_str());
36310 +    used = this;
36311 +    
36312 +    // check for existing device
36313 +    _dev = dev_get_by_name(_devname.c_str());
36314 +    if (_dev) {
36315 +       if (_dev->open != fl_open) {
36316 +           dev_put(_dev);
36317 +           _dev = 0;
36318 +           return errh->error("device '%s' already exists", _devname.c_str());
36319 +       } else {
36320 +           fromlinux_map.insert(this, false);
36321 +           return 0;
36322 +       }
36323 +    }
36324 +
36325 +    // if not found, create new device
36326 +    int res;
36327 +    _dev = new_device(_devname.c_str());
36328 +    if (!_dev)
36329 +       return errh->error("out of memory!", res, _devname.c_str());
36330 +    else if ((res = register_netdev(_dev)) < 0) {
36331 +       kfree(_dev);
36332 +       _dev = 0;
36333 +       return errh->error("error %d registering device '%s'", res, _devname.c_str());
36334 +    }
36335 +
36336 +    dev_hold(_dev);
36337 +    fromlinux_map.insert(this, false);
36338 +    return 0;
36339 +}
36340 +
36341 +#if 0 /* Why was this code here? */
36342 +static void
36343 +dev_locks(int up)
36344 +{
36345 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
36346 +    if (up > 0)
36347 +       rtnl_lock();
36348 +    else
36349 +       rtnl_unlock();
36350 +# endif
36351 +}
36352 +#endif
36353 +
36354 +int
36355 +FromHost::set_device_addresses(ErrorHandler *errh)
36356 +{
36357 +    int res;
36358 +    struct ifreq ifr;
36359 +    strncpy(ifr.ifr_name, _dev->name, IFNAMSIZ);
36360 +    struct sockaddr_in *sin = (struct sockaddr_in *)&ifr.ifr_addr;
36361 +
36362 +    mm_segment_t oldfs = get_fs();
36363 +    set_fs(get_ds());
36364 +
36365 +    ifr.ifr_hwaddr.sa_family = _dev->type;
36366 +    memcpy(ifr.ifr_hwaddr.sa_data, _macaddr.data(), 6);
36367 +    if ((res = dev_ioctl(SIOCSIFHWADDR, &ifr)) < 0)
36368 +       errh->error("error %d setting hardware address for device '%s'", res, _devname.c_str());
36369 +
36370 +    sin->sin_family = AF_INET;
36371 +    sin->sin_addr = _destaddr;
36372 +    if (res >= 0 && (res = devinet_ioctl(SIOCSIFADDR, &ifr)) < 0)
36373 +       errh->error("error %d setting address for device '%s'", res, _devname.c_str());
36374 +
36375 +    sin->sin_addr = _destmask;
36376 +    if (res >= 0 && (res = devinet_ioctl(SIOCSIFNETMASK, &ifr)) < 0)
36377 +       errh->error("error %d setting netmask for device '%s'", res, _devname.c_str());
36378 +
36379 +    set_fs(oldfs);
36380 +    return res;
36381 +}
36382 +
36383 +static int
36384 +dev_updown(net_device *dev, int up, ErrorHandler *errh)
36385 +{
36386 +    struct ifreq ifr;
36387 +    strncpy(ifr.ifr_name, dev->name, IFNAMSIZ);
36388 +    uint32_t flags = IFF_UP | IFF_RUNNING;
36389 +    int res;
36390 +
36391 +    mm_segment_t oldfs = get_fs();
36392 +    set_fs(get_ds());
36393 +
36394 +    (void) dev_ioctl(SIOCGIFFLAGS, &ifr);
36395 +    ifr.ifr_flags = (up > 0 ? ifr.ifr_flags | flags : ifr.ifr_flags & ~flags);
36396 +    if ((res = dev_ioctl(SIOCSIFFLAGS, &ifr)) < 0 && errh)
36397 +       errh->error("error %d bringing %s device '%s'", res, (up > 0 ? "up" : "down"), dev->name);
36398 +
36399 +    set_fs(oldfs);
36400 +    return res;
36401 +}
36402 +
36403 +int
36404 +FromHost::initialize(ErrorHandler *errh)
36405 +{
36406 +    ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh);
36407 +    _nonfull_signal = Notifier::downstream_full_signal(this, 0, &_task);
36408 +    if (_dev->flags & IFF_UP) {
36409 +       _wakeup_timer.initialize(this);
36410 +       _wakeup_timer.schedule_now();
36411 +       return 0;
36412 +    } else if (set_device_addresses(errh) < 0)
36413 +       return -1;
36414 +    else
36415 +       return dev_updown(_dev, 1, errh);
36416 +}
36417 +
36418 +void
36419 +FromHost::cleanup(CleanupStage)
36420 +{
36421 +    fromlinux_map.remove(this, false);
36422 +
36423 +    if (_queue) {
36424 +       _queue->kill();
36425 +       _queue = 0;
36426 +    }
36427 +    
36428 +    if (_dev) {
36429 +       dev_put(_dev);
36430 +       fromlinux_map.lock(false);
36431 +       if (fromlinux_map.lookup(_dev, 0))
36432 +           // do not free device if it is in use
36433 +           _dev = 0;
36434 +       fromlinux_map.unlock(false);
36435 +       if (_dev) {
36436 +           if (_dev->flags & IFF_UP)
36437 +               dev_updown(_dev, -1, 0);
36438 +           unregister_netdev(_dev);
36439 +           kfree(_dev);
36440 +           _dev = 0;
36441 +       }
36442 +    }
36443 +}
36444 +
36445 +static void
36446 +fl_wakeup(Timer *, void *thunk)
36447 +{
36448 +    FromHost *fl = (FromHost *)thunk;
36449 +    PrefixErrorHandler errh(ErrorHandler::default_handler(), fl->declaration() + ": ");
36450 +    net_device *dev = fl->device();
36451 +
36452 +    if (dev->flags & IFF_UP)
36453 +       dev_updown(dev, -1, &errh);
36454 +    
36455 +    fl->set_device_addresses(&errh);
36456 +    
36457 +    dev_updown(dev, 1, &errh);
36458 +}
36459 +
36460 +/*
36461 + * Device callbacks
36462 + */
36463 +
36464 +static int
36465 +fl_open(net_device *dev)
36466 +{
36467 +    netif_start_queue(dev);
36468 +    return 0;
36469 +}
36470 +
36471 +static int
36472 +fl_close(net_device *dev)
36473 +{
36474 +    netif_stop_queue(dev);
36475 +    return 0;
36476 +}
36477 +
36478 +int
36479 +FromHost::fl_tx(struct sk_buff *skb, net_device *dev)
36480 +{
36481 +    /* 8.May.2003 - Doug and company had crashes with FromHost configurations.
36482 +         We eventually figured out this was because fl_tx was called at
36483 +         interrupt time -- at bottom-half time, to be exact -- and then pushed
36484 +         a packet through the configuration. Whoops: if Click was interrupted,
36485 +         and during the bottom-half FromHost emitted a packet into Click,
36486 +         DISASTER -- we assume that, when running single-threaded, at most one
36487 +         Click thread is active at a time; so there were race conditions,
36488 +         particularly with the task list. The solution is a single-packet-long
36489 +         queue in FromHost. fl_tx puts a packet onto the queue, a regular
36490 +         Click Task takes the packet off the queue. We could have implemented
36491 +         a larger queue, but why bother? Linux already maintains a queue for
36492 +         the device. */
36493 +    fromlinux_map.lock(false);
36494 +    if (FromHost *fl = (FromHost *)fromlinux_map.lookup(dev, 0))
36495 +       if (!fl->_queue) {
36496 +           fl->_queue = Packet::make(skb);
36497 +           fl->_stats.tx_packets++;
36498 +           fl->_stats.tx_bytes += fl->_queue->length();
36499 +           fl->_task.reschedule();
36500 +           fromlinux_map.unlock(false);
36501 +           netif_stop_queue(dev);
36502 +           return 0;
36503 +       }
36504 +    fromlinux_map.unlock(false);
36505 +    return -1;
36506 +}
36507 +
36508 +static net_device_stats *
36509 +fl_stats(net_device *dev)
36510 +{
36511 +    net_device_stats *stats = 0;
36512 +    fromlinux_map.lock(false);
36513 +    if (FromHost *fl = (FromHost *)fromlinux_map.lookup(dev, 0))
36514 +       stats = fl->stats();
36515 +    fromlinux_map.unlock(false);
36516 +    return stats;
36517 +}
36518 +
36519 +bool
36520 +FromHost::run_task(Task *)
36521 +{
36522 +    if (!_nonfull_signal)
36523 +       return false;
36524 +    else if (Packet *p = _queue) {
36525 +       _queue = 0;
36526 +       netif_wake_queue(_dev);
36527 +       output(0).push(p);
36528 +       return true;
36529 +    } else
36530 +       return false;
36531 +}
36532 +
36533 +ELEMENT_REQUIRES(AnyDevice linuxmodule)
36534 +EXPORT_ELEMENT(FromHost)
36535 diff -Nurb click-1.6.0/elements/linuxmodule/todevice.cc click-1.6.0-27/elements/linuxmodule/todevice.cc
36536 --- click-1.6.0/elements/linuxmodule/todevice.cc        2007-09-14 12:19:28.000000000 -0400
36537 +++ click-1.6.0-27/elements/linuxmodule/todevice.cc     2009-01-26 16:50:39.000000000 -0500
36538 @@ -21,6 +21,8 @@
36539   * legally binding.
36540   */
36541  
36542 +#include <linux/autoconf.h>
36543 +#include <linux/version.h>
36544  #include <click/config.h>
36545  #include <click/glue.hh>
36546  #include "polldevice.hh"
36547 @@ -243,12 +245,12 @@
36548      }
36549  # else
36550      local_bh_disable();
36551 -    if (!spin_trylock(&_dev->xmit_lock)) {
36552 +    if (!spin_trylock(&_dev->_tx[0]._xmit_lock)) {
36553         local_bh_enable();
36554         _task.fast_reschedule();
36555         return false;
36556      }
36557 -    _dev->xmit_lock_owner = smp_processor_id();
36558 +    _dev->_tx[0].xmit_lock_owner = smp_processor_id();
36559  # endif
36560  #endif
36561  
36562 @@ -316,7 +318,7 @@
36563      // (or until Linux sends another packet) unless we poke
36564      // net_bh(), which calls qdisc_restart(). We are not allowed
36565      // to call qdisc_restart() ourselves, outside of net_bh().
36566 -    if (is_polling && !busy && _dev->qdisc->q.qlen) {
36567 +    if (is_polling && !busy && _dev->_tx[0].qdisc->q.qlen) {
36568         _dev->tx_eob(_dev);
36569         netif_wake_queue(_dev);
36570      }
36571 @@ -349,8 +351,8 @@
36572  # if HAVE_NETIF_TX_LOCK
36573      netif_tx_unlock_bh(_dev);
36574  # else
36575 -    _dev->xmit_lock_owner = -1;
36576 -    spin_unlock(&_dev->xmit_lock);
36577 +    _dev->_tx[0].xmit_lock_owner = -1;
36578 +    spin_unlock(&_dev->_tx[0]._xmit_lock);
36579      local_bh_enable();
36580  # endif
36581  #endif
36582 diff -Nurb click-1.6.0/elements/linuxmodule/todevice.cc.orig click-1.6.0-27/elements/linuxmodule/todevice.cc.orig
36583 --- click-1.6.0/elements/linuxmodule/todevice.cc.orig   1969-12-31 19:00:00.000000000 -0500
36584 +++ click-1.6.0-27/elements/linuxmodule/todevice.cc.orig        2007-09-14 12:19:28.000000000 -0400
36585 @@ -0,0 +1,562 @@
36586 +// -*- mode: c++; c-basic-offset: 4 -*-
36587 +/*
36588 + * todevice.{cc,hh} -- element sends packets to Linux devices.
36589 + * Robert Morris
36590 + * Eddie Kohler: register once per configuration
36591 + * Benjie Chen: polling
36592 + *
36593 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
36594 + * Copyright (c) 2000 Mazu Networks, Inc.
36595 + * Copyright (c) 2001 International Computer Science Institute
36596 + * Copyright (c) 2005-2007 Regents of the University of California
36597 + *
36598 + * Permission is hereby granted, free of charge, to any person obtaining a
36599 + * copy of this software and associated documentation files (the "Software"),
36600 + * to deal in the Software without restriction, subject to the conditions
36601 + * listed in the Click LICENSE file. These conditions include: you must
36602 + * preserve this copyright notice, and you cannot mention the copyright
36603 + * holders in advertising related to the Software without their permission.
36604 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
36605 + * notice is a summary of the Click LICENSE file; the license in that file is
36606 + * legally binding.
36607 + */
36608 +
36609 +#include <click/config.h>
36610 +#include <click/glue.hh>
36611 +#include "polldevice.hh"
36612 +#include "todevice.hh"
36613 +#include <click/error.hh>
36614 +#include <click/etheraddress.hh>
36615 +#include <click/confparse.hh>
36616 +#include <click/router.hh>
36617 +#include <click/standard/scheduleinfo.hh>
36618 +
36619 +#include <click/cxxprotect.h>
36620 +CLICK_CXX_PROTECT
36621 +#include <net/pkt_sched.h>
36622 +#if __i386__
36623 +#include <asm/msr.h>
36624 +#endif
36625 +CLICK_CXX_UNPROTECT
36626 +#include <click/cxxunprotect.h>
36627 +
36628 +/* for watching when devices go offline */
36629 +static AnyDeviceMap to_device_map;
36630 +static struct notifier_block device_notifier;
36631 +extern "C" {
36632 +static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v);
36633 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36634 +static struct notifier_block tx_notifier;
36635 +static int registered_tx_notifiers;
36636 +static int tx_notifier_hook(struct notifier_block *nb, unsigned long val, void *v);
36637 +#endif
36638 +}
36639 +
36640 +void
36641 +ToDevice::static_initialize()
36642 +{
36643 +    to_device_map.initialize();
36644 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36645 +    tx_notifier.notifier_call = tx_notifier_hook;
36646 +    tx_notifier.priority = 1;
36647 +    tx_notifier.next = 0;
36648 +#endif
36649 +    device_notifier.notifier_call = device_notifier_hook;
36650 +    device_notifier.priority = 1;
36651 +    device_notifier.next = 0;
36652 +    register_netdevice_notifier(&device_notifier);
36653 +
36654 +}
36655 +
36656 +void
36657 +ToDevice::static_cleanup()
36658 +{
36659 +    unregister_netdevice_notifier(&device_notifier);
36660 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36661 +    if (registered_tx_notifiers)
36662 +       unregister_net_tx(&tx_notifier);
36663 +#endif
36664 +}
36665 +
36666 +inline void
36667 +ToDevice::tx_wake_queue(net_device *dev) 
36668 +{
36669 +    //click_chatter("%{element}::%s for dev %s\n", this, __func__, dev->name);
36670 +    _task.reschedule();
36671 +}
36672 +
36673 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36674 +extern "C" {
36675 +static int
36676 +tx_notifier_hook(struct notifier_block *nb, unsigned long val, void *v) 
36677 +{
36678 +    struct net_device *dev = (struct net_device *)v;
36679 +    if (!dev) {
36680 +       return 0;
36681 +    }
36682 +    Vector<AnyDevice *> es;
36683 +    bool down = true;
36684 +    to_device_map.lock(false);
36685 +    to_device_map.lookup_all(dev, down, es);
36686 +    for (int i = 0; i < es.size(); i++) 
36687 +       ((ToDevice *)(es[i]))->tx_wake_queue(dev);
36688 +    to_device_map.unlock(false);
36689 +    return 0;
36690 +}
36691 +}
36692 +#endif
36693 +
36694 +ToDevice::ToDevice()
36695 +    : _dev_idle(0), _rejected(0), _hard_start(0), _no_pad(false)
36696 +{
36697 +}
36698 +
36699 +ToDevice::~ToDevice()
36700 +{
36701 +}
36702 +
36703 +
36704 +int
36705 +ToDevice::configure(Vector<String> &conf, ErrorHandler *errh)
36706 +{
36707 +    _burst = 16;
36708 +    bool allow_nonexistent = false, quiet = false;
36709 +    if (cp_va_parse(conf, this, errh,
36710 +                   cpString, "device name", &_devname,
36711 +                   cpOptional,
36712 +                   cpUnsigned, "burst size", &_burst,
36713 +                   cpKeywords,
36714 +                   "BURST", cpUnsigned, "burst size", &_burst,
36715 +                   "QUIET", cpBool, "suppress up/down messages?", &quiet,
36716 +                   "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent,
36717 +                   "NO_PAD", cpBool, "don't pad packets to 60 bytes?", &_no_pad,
36718 +                   cpEnd) < 0)
36719 +       return -1;
36720 +    set_device_flags(false, true, allow_nonexistent, quiet);
36721 +    return find_device(&to_device_map, errh);
36722 +}
36723 +
36724 +int
36725 +ToDevice::initialize(ErrorHandler *errh)
36726 +{
36727 +#ifndef HAVE_CLICK_KERNEL
36728 +    errh->warning("not compiled for a Click kernel");
36729 +#endif
36730 +
36731 +    // check for duplicate writers
36732 +    if (ifindex() >= 0) {
36733 +       void *&used = router()->force_attachment("device_writer_" + String(ifindex()));
36734 +       if (used)
36735 +           return errh->error("duplicate writer for device '%s'", _devname.c_str());
36736 +       used = this;
36737 +    }
36738 +
36739 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36740 +    if (!registered_tx_notifiers) {
36741 +       tx_notifier.next = 0;
36742 +       register_net_tx(&tx_notifier);
36743 +    }
36744 +    registered_tx_notifiers++;
36745 +#endif
36746 +
36747 +    ScheduleInfo::initialize_task(this, &_task, _dev != 0, errh);
36748 +    _signal = Notifier::upstream_empty_signal(this, 0, &_task);
36749 +
36750 +#ifdef HAVE_STRIDE_SCHED
36751 +    // user specifies max number of tickets; we start with default
36752 +    _max_tickets = _task.tickets();
36753 +    _task.set_tickets(Task::DEFAULT_TICKETS);
36754 +#endif
36755 +
36756 +    reset_counts();
36757 +    return 0;
36758 +}
36759 +
36760 +void
36761 +ToDevice::reset_counts()
36762 +{
36763 +  _npackets = 0;
36764 +  
36765 +  _busy_returns = 0;
36766 +  _too_short = 0;
36767 +  _runs = 0;
36768 +  _pulls = 0;
36769 +#if CLICK_DEVICE_STATS
36770 +  _activations = 0;
36771 +  _time_clean = 0;
36772 +  _time_freeskb = 0;
36773 +  _time_queue = 0;
36774 +  _perfcnt1_pull = 0;
36775 +  _perfcnt1_clean = 0;
36776 +  _perfcnt1_freeskb = 0;
36777 +  _perfcnt1_queue = 0;
36778 +  _perfcnt2_pull = 0;
36779 +  _perfcnt2_clean = 0;
36780 +  _perfcnt2_freeskb = 0;
36781 +  _perfcnt2_queue = 0;
36782 +#endif
36783 +#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS
36784 +  _pull_cycles = 0;
36785 +#endif
36786 +}
36787 +
36788 +void
36789 +ToDevice::cleanup(CleanupStage stage)
36790 +{
36791 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36792 +    if (stage >= CLEANUP_INITIALIZED) {
36793 +       registered_tx_notifiers--;
36794 +       if (registered_tx_notifiers == 0)
36795 +           unregister_net_tx(&tx_notifier);
36796 +    }
36797 +#endif
36798 +    clear_device(&to_device_map);
36799 +}
36800 +
36801 +/*
36802 + * Problem: Linux drivers aren't required to
36803 + * accept a packet even if they've marked themselves
36804 + * as idle. What do we do with a rejected packet?
36805 + */
36806 +
36807 +#if LINUX_VERSION_CODE < 0x020400
36808 +# define netif_queue_stopped(dev)      ((dev)->tbusy)
36809 +# define netif_wake_queue(dev)         mark_bh(NET_BH)
36810 +#endif
36811 +
36812 +bool
36813 +ToDevice::run_task(Task *)
36814 +{
36815 +    int busy = 0;
36816 +    int sent = 0;
36817 +
36818 +    _runs++;
36819 +
36820 +#if LINUX_VERSION_CODE >= 0x020400
36821 +# if HAVE_NETIF_TX_LOCK
36822 +    int ok = spin_trylock_bh(&_dev->_xmit_lock);
36823 +    if (likely(ok))
36824 +       _dev->xmit_lock_owner = smp_processor_id();
36825 +    else {
36826 +       _task.fast_reschedule();
36827 +       return false;
36828 +    }
36829 +# else
36830 +    local_bh_disable();
36831 +    if (!spin_trylock(&_dev->xmit_lock)) {
36832 +       local_bh_enable();
36833 +       _task.fast_reschedule();
36834 +       return false;
36835 +    }
36836 +    _dev->xmit_lock_owner = smp_processor_id();
36837 +# endif
36838 +#endif
36839 +
36840 +#if CLICK_DEVICE_STATS
36841 +    unsigned low00, low10;
36842 +    uint64_t time_now;
36843 +    SET_STATS(low00, low10, time_now);
36844 +#endif
36845 +    
36846 +#if HAVE_LINUX_POLLING
36847 +    bool is_polling = (_dev->polling > 0);
36848 +    if (is_polling) {
36849 +       struct sk_buff *skbs = _dev->tx_clean(_dev);
36850 +# if CLICK_DEVICE_STATS
36851 +       if (_activations > 0 && skbs)
36852 +           GET_STATS_RESET(low00, low10, time_now, 
36853 +                           _perfcnt1_clean, _perfcnt2_clean, _time_clean);
36854 +# endif
36855 +       if (skbs)
36856 +           skbmgr_recycle_skbs(skbs);
36857 +# if CLICK_DEVICE_STATS
36858 +       if (_activations > 0 && skbs)
36859 +           GET_STATS_RESET(low00, low10, time_now, 
36860 +                           _perfcnt1_freeskb, _perfcnt2_freeskb, _time_freeskb);
36861 +# endif
36862 +    }
36863 +#endif
36864 +  
36865 +    /* try to send from click */
36866 +    while (sent < _burst && (busy = netif_queue_stopped(_dev)) == 0) {
36867 +#if CLICK_DEVICE_THESIS_STATS && !CLICK_DEVICE_STATS
36868 +       click_cycles_t before_pull_cycles = click_get_cycles();
36869 +#endif
36870 +
36871 +       _pulls++;
36872 +
36873 +       Packet *p = input(0).pull();
36874 +       if (!p)
36875 +           break;
36876 +
36877 +       _npackets++;
36878 +#if CLICK_DEVICE_THESIS_STATS && !CLICK_DEVICE_STATS
36879 +       _pull_cycles += click_get_cycles() - before_pull_cycles - CLICK_CYCLE_COMPENSATION;
36880 +#endif
36881 +
36882 +       GET_STATS_RESET(low00, low10, time_now, 
36883 +                       _perfcnt1_pull, _perfcnt2_pull, _pull_cycles);
36884 +
36885 +       busy = queue_packet(p);
36886 +
36887 +       GET_STATS_RESET(low00, low10, time_now, 
36888 +                       _perfcnt1_queue, _perfcnt2_queue, _time_queue);
36889 +
36890 +       if (busy)
36891 +           break;
36892 +       sent++;
36893 +    }
36894 +
36895 +#if HAVE_LINUX_POLLING
36896 +    if (is_polling && sent > 0)
36897 +       _dev->tx_eob(_dev);
36898 +
36899 +    // If Linux tried to send a packet, but saw tbusy, it will
36900 +    // have left it on the queue. It'll just sit there forever
36901 +    // (or until Linux sends another packet) unless we poke
36902 +    // net_bh(), which calls qdisc_restart(). We are not allowed
36903 +    // to call qdisc_restart() ourselves, outside of net_bh().
36904 +    if (is_polling && !busy && _dev->qdisc->q.qlen) {
36905 +       _dev->tx_eob(_dev);
36906 +       netif_wake_queue(_dev);
36907 +    }
36908 +#endif
36909 +
36910 +#if CLICK_DEVICE_STATS
36911 +    if (sent > 0)
36912 +       _activations++;
36913 +#endif
36914 +
36915 +    if (busy && sent == 0)
36916 +       _busy_returns++;
36917 +
36918 +#if HAVE_LINUX_POLLING
36919 +    if (is_polling) {
36920 +       if (busy && sent == 0) {
36921 +           _dev_idle++;
36922 +           if (_dev_idle == 1024) {
36923 +               /* device didn't send anything, ping it */
36924 +               _dev->tx_start(_dev);
36925 +               _dev_idle = 0;
36926 +               _hard_start++;
36927 +           }
36928 +       } else
36929 +           _dev_idle = 0;
36930 +    }
36931 +#endif
36932 +
36933 +#if LINUX_VERSION_CODE >= 0x020400
36934 +# if HAVE_NETIF_TX_LOCK
36935 +    netif_tx_unlock_bh(_dev);
36936 +# else
36937 +    _dev->xmit_lock_owner = -1;
36938 +    spin_unlock(&_dev->xmit_lock);
36939 +    local_bh_enable();
36940 +# endif
36941 +#endif
36942 +
36943 +    // If we're polling, never go to sleep! We're relying on ToDevice to clean
36944 +    // the transmit ring.
36945 +    // Otherwise, don't go to sleep if the signal isn't active and
36946 +    // we didn't just send any packets
36947 +#if HAVE_CLICK_KERNEL_TX_NOTIFY
36948 +    bool reschedule = (!busy && (sent > 0 || _signal.active()));
36949 +#else 
36950 +    bool reschedule = (busy || sent > 0 || _signal.active());
36951 +#endif
36952 +    
36953 +#if HAVE_LINUX_POLLING
36954 +    if (is_polling) {
36955 +       reschedule = true;
36956 +       // 9/18/06: Frederic Van Quickenborne reports (1/24/05) that ticket
36957 +       // adjustments in FromDevice+ToDevice cause odd behavior.  The ticket
36958 +       // adjustments actually don't feel necessary to me in From/ToDevice
36959 +       // any more, as described in FromDevice.  So adjusting tickets now
36960 +       // only if polling.
36961 +       adjust_tickets(sent);
36962 +    }
36963 +#endif /* HAVE_LINUX_POLLING */
36964 +
36965 +    // 5.Feb.2007: Incorporate a version of a patch from Jason Park.  If the
36966 +    // device is "busy", perhaps there is no carrier!  Don't spin on no
36967 +    // carrier; instead, rely on Linux's notifer_hook to wake us up again.
36968 +    if (busy && sent == 0 && !netif_carrier_ok(_dev))
36969 +       reschedule = false;
36970 +    
36971 +    if (reschedule)
36972 +       _task.fast_reschedule();
36973 +    return sent > 0;
36974 +}
36975 +
36976 +int
36977 +ToDevice::queue_packet(Packet *p)
36978 +{
36979 +    struct sk_buff *skb1 = p->skb();
36980 +  
36981 +    /*
36982 +     * Ensure minimum ethernet packet size (14 hdr + 46 data).
36983 +     * I can't figure out where Linux does this, so I don't
36984 +     * know the correct procedure.
36985 +     */
36986 +    if (!_no_pad && skb1->len < 60) {
36987 +       if (skb_tailroom(skb1) < 60 - skb1->len) {
36988 +           if (++_too_short == 1)
36989 +               printk("<1>ToDevice %s packet too small (len %d, tailroom %d), had to copy\n", skb1->len, skb_tailroom(skb1));
36990 +           struct sk_buff *nskb = skb_copy_expand(skb1, skb_headroom(skb1), skb_tailroom(skb1) + 60 - skb1->len, GFP_ATOMIC);
36991 +           kfree_skb(skb1);
36992 +           if (!nskb)
36993 +               return -1;
36994 +           skb1 = nskb;
36995 +       }
36996 +       skb_put(skb1, 60 - skb1->len);
36997 +    }
36998 +
36999 +    // set the device annotation;
37000 +    // apparently some devices in Linux 2.6 require it
37001 +    skb1->dev = _dev;
37002 +    
37003 +    int ret;
37004 +#if HAVE_LINUX_POLLING
37005 +    if (_dev->polling > 0)
37006 +       ret = _dev->tx_queue(_dev, skb1);
37007 +    else
37008 +#endif
37009 +       {
37010 +           ret = _dev->hard_start_xmit(skb1, _dev);
37011 +           _hard_start++;
37012 +       }
37013 +    if (ret != 0) {
37014 +       if (++_rejected == 1)
37015 +           printk("<1>ToDevice %s rejected a packet!\n", _dev->name);
37016 +       kfree_skb(skb1);
37017 +    }
37018 +    return ret;
37019 +}
37020 +
37021 +void
37022 +ToDevice::change_device(net_device *dev)
37023 +{
37024 +    _task.strong_unschedule();
37025 +    
37026 +    set_device(dev, &to_device_map, true);
37027 +
37028 +    if (_dev)
37029 +       _task.strong_reschedule();
37030 +}
37031 +
37032 +extern "C" {
37033 +static int
37034 +device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v)
37035 +{
37036 +#ifdef NETDEV_GOING_DOWN
37037 +    if (flags == NETDEV_GOING_DOWN)
37038 +       flags = NETDEV_DOWN;
37039 +#endif
37040 +    if (flags == NETDEV_DOWN || flags == NETDEV_UP) {
37041 +       bool down = (flags == NETDEV_DOWN);
37042 +       net_device *dev = (net_device *)v;
37043 +       Vector<AnyDevice *> es;
37044 +       to_device_map.lock(true);
37045 +       to_device_map.lookup_all(dev, down, es);
37046 +       for (int i = 0; i < es.size(); i++)
37047 +           ((ToDevice *)(es[i]))->change_device(down ? 0 : dev);
37048 +       to_device_map.unlock(true);
37049 +    } else if (flags == NETDEV_CHANGE) {
37050 +       net_device *dev = (net_device *)v;
37051 +       Vector<AnyDevice *> es;
37052 +       to_device_map.lock(false);
37053 +       to_device_map.lookup_all(dev, true, es);
37054 +       for (int i = 0; i < es.size(); i++)
37055 +           ((ToDevice *)(es[i]))->tx_wake_queue(dev);
37056 +       to_device_map.unlock(false);
37057 +    }
37058 +    return 0;
37059 +}
37060 +}
37061 +
37062 +static String
37063 +ToDevice_read_calls(Element *f, void *)
37064 +{
37065 +    ToDevice *td = (ToDevice *)f;
37066 +    return
37067 +       String(td->_rejected) + " packets rejected\n" +
37068 +       String(td->_hard_start) + " hard start xmit\n" +
37069 +       String(td->_busy_returns) + " device busy returns\n" +
37070 +       String(td->_npackets) + " packets sent\n" +
37071 +       String(td->_runs) + " calls to run_task()\n" +
37072 +       String(td->_pulls) + " pulls\n" +
37073 +#if CLICK_DEVICE_STATS
37074 +       String(td->_pull_cycles) + " cycles pull\n" +
37075 +       String(td->_time_clean) + " cycles clean\n" +
37076 +       String(td->_time_freeskb) + " cycles freeskb\n" +
37077 +       String(td->_time_queue) + " cycles queue\n" +
37078 +       String(td->_perfcnt1_pull) + " perfctr1 pull\n" +
37079 +       String(td->_perfcnt1_clean) + " perfctr1 clean\n" +
37080 +       String(td->_perfcnt1_freeskb) + " perfctr1 freeskb\n" +
37081 +       String(td->_perfcnt1_queue) + " perfctr1 queue\n" +
37082 +       String(td->_perfcnt2_pull) + " perfctr2 pull\n" +
37083 +       String(td->_perfcnt2_clean) + " perfctr2 clean\n" +
37084 +       String(td->_perfcnt2_freeskb) + " perfctr2 freeskb\n" +
37085 +       String(td->_perfcnt2_queue) + " perfctr2 queue\n" +
37086 +       String(td->_activations) + " transmit activations\n"
37087 +#else
37088 +       String()
37089 +#endif
37090 +       ;
37091 +}
37092 +
37093 +enum { H_COUNT, H_DROPS, H_PULL_CYCLES, H_TIME_QUEUE, H_TIME_CLEAN };
37094 +
37095 +static String
37096 +ToDevice_read_stats(Element *e, void *thunk)
37097 +{
37098 +    ToDevice *td = (ToDevice *)e;
37099 +    switch ((uintptr_t) thunk) {
37100 +      case H_COUNT:
37101 +       return String(td->_npackets);
37102 +      case H_DROPS:
37103 +       return String(td->_rejected);
37104 +#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS
37105 +      case H_PULL_CYCLES:
37106 +       return String(td->_pull_cycles);
37107 +#endif
37108 +#if CLICK_DEVICE_STATS
37109 +      case H_TIME_QUEUE:
37110 +       return String(td->_time_queue);
37111 +      case H_TIME_CLEAN:
37112 +       return String(td->_time_clean);
37113 +#endif
37114 +      default:
37115 +       return String();
37116 +    }
37117 +}
37118 +
37119 +static int
37120 +ToDevice_write_stats(const String &, Element *e, void *, ErrorHandler *)
37121 +{
37122 +  ToDevice *td = (ToDevice *)e;
37123 +  td->reset_counts();
37124 +  return 0;
37125 +}
37126 +
37127 +void
37128 +ToDevice::add_handlers()
37129 +{
37130 +    add_read_handler("calls", ToDevice_read_calls, 0);
37131 +    add_read_handler("count", ToDevice_read_stats, (void *)H_COUNT);
37132 +    add_read_handler("drops", ToDevice_read_stats, (void *)H_DROPS);
37133 +    // XXX deprecated
37134 +    add_read_handler("packets", ToDevice_read_stats, (void *)H_COUNT);
37135 +#if CLICK_DEVICE_THESIS_STATS || CLICK_DEVICE_STATS
37136 +    add_read_handler("pull_cycles", ToDevice_read_stats, (void *)H_PULL_CYCLES);
37137 +#endif
37138 +#if CLICK_DEVICE_STATS
37139 +    add_read_handler("enqueue_cycles", ToDevice_read_stats, (void *)H_TIME_QUEUE);
37140 +    add_read_handler("clean_dma_cycles", ToDevice_read_stats, (void *)H_TIME_CLEAN);
37141 +#endif
37142 +    add_write_handler("reset_counts", ToDevice_write_stats, 0);
37143 +    add_task_handlers(&_task);
37144 +}
37145 +
37146 +ELEMENT_REQUIRES(AnyDevice linuxmodule)
37147 +EXPORT_ELEMENT(ToDevice)
37148 diff -Nurb click-1.6.0/elements/linuxmodule/tohost.cc click-1.6.0-27/elements/linuxmodule/tohost.cc
37149 --- click-1.6.0/elements/linuxmodule/tohost.cc  2007-08-31 11:21:55.000000000 -0400
37150 +++ click-1.6.0-27/elements/linuxmodule/tohost.cc       2009-01-26 16:52:00.000000000 -0500
37151 @@ -143,7 +143,7 @@
37152  
37153      // do not call eth_type_trans; it changes pkt_type! Instead, do its work
37154      // directly.
37155 -    skb->mac.raw = skb->data;
37156 +    skb->mac_header = skb->data;
37157      skb_pull(skb, 14);
37158  
37159  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
37160 diff -Nurb click-1.6.0/elements/linuxmodule/tohost.cc.orig click-1.6.0-27/elements/linuxmodule/tohost.cc.orig
37161 --- click-1.6.0/elements/linuxmodule/tohost.cc.orig     1969-12-31 19:00:00.000000000 -0500
37162 +++ click-1.6.0-27/elements/linuxmodule/tohost.cc.orig  2007-08-31 11:21:55.000000000 -0400
37163 @@ -0,0 +1,230 @@
37164 +// -*- mode: c++; c-basic-offset: 4 -*-
37165 +/*
37166 + * tohost.{cc,hh} -- element sends packets to Linux for default processing
37167 + * Eddie Kohler, Robert Morris
37168 + *
37169 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
37170 + * Copyright (C) 2003 International Computer Science Institute
37171 + *
37172 + * Permission is hereby granted, free of charge, to any person obtaining a
37173 + * copy of this software and associated documentation files (the "Software"),
37174 + * to deal in the Software without restriction, subject to the conditions
37175 + * listed in the Click LICENSE file. These conditions include: you must
37176 + * preserve this copyright notice, and you cannot mention the copyright
37177 + * holders in advertising related to the Software without their permission.
37178 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
37179 + * notice is a summary of the Click LICENSE file; the license in that file is
37180 + * legally binding.
37181 + */
37182 +
37183 +#include <click/config.h>
37184 +#include "tohost.hh"
37185 +#include <click/confparse.hh>
37186 +#include <click/error.hh>
37187 +
37188 +#include <click/cxxprotect.h>
37189 +CLICK_CXX_PROTECT
37190 +#include <net/dst.h>
37191 +#include <linux/smp_lock.h>
37192 +#include <linux/if_ether.h>
37193 +#include <linux/etherdevice.h>
37194 +#include <linux/netdevice.h>
37195 +#if LINUX_VERSION_CODE >= 0x020400 && LINUX_VERSION_CODE < 0x020600
37196 +# include <linux/brlock.h>
37197 +#endif
37198 +CLICK_CXX_UNPROTECT
37199 +#include <click/cxxunprotect.h>
37200 +
37201 +// for watching when devices go offline
37202 +static AnyDeviceMap to_host_map;
37203 +static struct notifier_block device_notifier;
37204 +extern "C" {
37205 +static int device_notifier_hook(struct notifier_block *nb, unsigned long val, void *v);
37206 +}
37207 +
37208 +void
37209 +ToHost::static_initialize()
37210 +{
37211 +    to_host_map.initialize();
37212 +    device_notifier.notifier_call = device_notifier_hook;
37213 +    device_notifier.priority = 1;
37214 +    device_notifier.next = 0;
37215 +    register_netdevice_notifier(&device_notifier);
37216 +}
37217 +
37218 +void
37219 +ToHost::static_cleanup()
37220 +{
37221 +    unregister_netdevice_notifier(&device_notifier);
37222 +}
37223 +
37224 +ToHost::ToHost()
37225 +    : _sniffers(false), _drops(0)
37226 +{
37227 +}
37228 +
37229 +ToHost::~ToHost()
37230 +{
37231 +}
37232 +
37233 +int
37234 +ToHost::configure(Vector<String> &conf, ErrorHandler *errh)
37235 +{
37236 +    bool allow_nonexistent = false, quiet = false;
37237 +    if (cp_va_parse(conf, this, errh,
37238 +                   cpOptional,
37239 +                   cpString, "device name", &_devname,
37240 +                   cpKeywords,
37241 +                   "SNIFFERS", cpBool, "send packets to sniffers only?", &_sniffers,
37242 +                   "QUIET", cpBool, "suppress up/down messages?", &quiet,
37243 +                   "ALLOW_NONEXISTENT", cpBool, "allow nonexistent device?", &allow_nonexistent,
37244 +                   cpEnd) < 0)
37245 +       return -1;
37246 +    set_device_flags(false, true, allow_nonexistent, quiet);
37247 +    return 0;
37248 +}
37249 +
37250 +int
37251 +ToHost::initialize(ErrorHandler *errh)
37252 +{
37253 +    // We find the device here, rather than in 'initialize', to avoid warnings
37254 +    // about "device down" with FromHost devices -- FromHost brings up its
37255 +    // device during initialize().
37256 +    return (_devname ? find_device(&to_host_map, errh) : 0);
37257 +}
37258 +
37259 +void
37260 +ToHost::cleanup(CleanupStage)
37261 +{
37262 +    clear_device(&to_host_map);
37263 +}
37264 +
37265 +extern "C" {
37266 +static int
37267 +device_notifier_hook(struct notifier_block *nb, unsigned long flags, void *v)
37268 +{
37269 +#ifdef NETDEV_GOING_DOWN
37270 +    if (flags == NETDEV_GOING_DOWN)
37271 +       flags = NETDEV_DOWN;
37272 +#endif
37273 +    if (flags == NETDEV_DOWN || flags == NETDEV_UP) {
37274 +       bool down = (flags == NETDEV_DOWN);
37275 +       net_device *dev = (net_device *)v;
37276 +       Vector<AnyDevice *> es;
37277 +       to_host_map.lock(true);
37278 +       to_host_map.lookup_all(dev, down, es);
37279 +       for (int i = 0; i < es.size(); i++)
37280 +           ((ToHost *)(es[i]))->set_device((down ? 0 : dev), &to_host_map, true);
37281 +       to_host_map.unlock(true);
37282 +    }
37283 +    return 0;
37284 +}
37285 +}
37286 +
37287 +void
37288 +ToHost::push(int port, Packet *p)
37289 +{
37290 +    struct sk_buff *skb = p->skb();
37291 +  
37292 +    // set device if specified
37293 +    if (_dev)
37294 +       skb->dev = _dev;
37295 +
37296 +    // check that device exists
37297 +    if (!skb->dev) {
37298 +       if (++_drops == 1)
37299 +           click_chatter("%{element}: dropped a packet with null skb->dev", this);
37300 +       p->kill();
37301 +       return;
37302 +    }
37303 +
37304 +    // remove PACKET_CLEAN bit -- packet is becoming dirty
37305 +    skb->pkt_type &= PACKET_TYPE_MASK;
37306 +
37307 +    // do not call eth_type_trans; it changes pkt_type! Instead, do its work
37308 +    // directly.
37309 +    skb->mac.raw = skb->data;
37310 +    skb_pull(skb, 14);
37311 +
37312 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
37313 +    const ethhdr *eth = eth_hdr(skb);
37314 +#else
37315 +    const ethhdr *eth = skb->mac.ethernet;
37316 +#endif
37317 +    if (ntohs(eth->h_proto) >= 1536)
37318 +       skb->protocol = eth->h_proto;
37319 +    else {
37320 +       const unsigned short *crap = (const unsigned short *)skb->data;
37321 +       // "magic hack to spot IPX packets"
37322 +       skb->protocol = (*crap == 0xFFFF ? htons(ETH_P_802_3) : htons(ETH_P_802_2));
37323 +    }
37324 +
37325 +    // skb->dst may be set if the packet came from Linux originally. In this
37326 +    // case, we must clear skb->dst so Linux finds the correct dst.
37327 +    if (skb->dst) {
37328 +       dst_release(skb->dst);
37329 +       skb->dst = 0;
37330 +    }
37331 +
37332 +    // get protocol to pass to Linux
37333 +    int protocol = (_sniffers ? 0xFFFF : skb->protocol);
37334 +
37335 +    // pass packet to Linux
37336 +#ifdef HAVE_NETIF_RECEIVE_SKB  // from Linux headers
37337 +    struct net_device *dev = skb->dev;
37338 +    local_bh_disable();
37339 +    dev_hold(dev);
37340 +# if HAVE___NETIF_RECEIVE_SKB
37341 +    __netif_receive_skb(skb, protocol, -1);
37342 +# else
37343 +    netif_receive_skb(skb, protocol, -1);
37344 +# endif
37345 +    dev_put(dev);
37346 +    local_bh_enable();
37347 +#else
37348 +    // be nice to libpcap
37349 +    if (skb->stamp.tv_sec == 0) {
37350 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 18)
37351 +       do_gettimeofday(&skb->stamp);
37352 +# elif !defined(CONFIG_CPU_IS_SLOW)
37353 +       get_fast_time(&skb->stamp);
37354 +# else
37355 +       skb->stamp = xtime;
37356 +# endif
37357 +    }
37358 +
37359 +# ifdef HAVE_CLICK_KERNEL
37360 +    skb->h.raw = skb->nh.raw = skb->data;
37361 +#  if LINUX_VERSION_CODE >= 0x020400
37362 +    local_bh_disable();
37363 +    br_read_lock(BR_NETPROTO_LOCK);
37364 +    struct net_device *dev = skb->dev;
37365 +    dev_hold(dev);
37366 +    ptype_dispatch(skb, protocol);
37367 +    dev_put(dev);
37368 +    br_read_unlock(BR_NETPROTO_LOCK);
37369 +    local_bh_enable();
37370 +#  else
37371 +    lock_kernel();
37372 +    ptype_dispatch(skb, protocol);
37373 +    unlock_kernel();
37374 +#  endif
37375 +# endif
37376 +#endif
37377 +}
37378 +
37379 +String
37380 +ToHost::read_handler(Element *e, void *)
37381 +{
37382 +    ToHost *th = static_cast<ToHost *>(e);
37383 +    return String(th->_drops);
37384 +}
37385 +
37386 +void
37387 +ToHost::add_handlers()
37388 +{
37389 +    add_read_handler("drops", read_handler, 0);
37390 +}
37391 +
37392 +ELEMENT_REQUIRES(linuxmodule AnyDevice)
37393 +EXPORT_ELEMENT(ToHost)
37394 diff -Nurb click-1.6.0/elements/standard/addressinfo.cc click-1.6.0-27/elements/standard/addressinfo.cc
37395 --- click-1.6.0/elements/standard/addressinfo.cc        2007-09-12 02:14:04.000000000 -0400
37396 +++ click-1.6.0-27/elements/standard/addressinfo.cc     2009-01-21 13:08:40.000000000 -0500
37397 @@ -272,7 +272,7 @@
37398      // if it's a device name, return a primary IP address
37399  #if CLICK_LINUXMODULE
37400  # if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
37401 -    net_device *dev = dev_get_by_name(s.c_str());
37402 +    net_device *dev = dev_get_by_name(&init_net,s.c_str());
37403      if (dev) {
37404         bool found = false;
37405         in_device *in_dev = in_dev_get(dev);
37406 @@ -383,7 +383,7 @@
37407  # if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
37408  #  define dev_put(dev) /* nada */
37409  # endif
37410 -    net_device *dev = dev_get_by_name(s.c_str());
37411 +    net_device *dev = dev_get_by_name(&init_net,s.c_str());
37412      if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) {
37413         memcpy(store, dev->dev_addr, 6);
37414         dev_put(dev);
37415 diff -Nurb click-1.6.0/elements/standard/addressinfo.cc.orig click-1.6.0-27/elements/standard/addressinfo.cc.orig
37416 --- click-1.6.0/elements/standard/addressinfo.cc.orig   1969-12-31 19:00:00.000000000 -0500
37417 +++ click-1.6.0-27/elements/standard/addressinfo.cc.orig        2007-09-12 02:14:04.000000000 -0400
37418 @@ -0,0 +1,413 @@
37419 +// -*- c-basic-offset: 4; related-file-name: "../../include/click/standard/addressinfo.hh" -*-
37420 +/*
37421 + * addressinfo.{cc,hh} -- element stores address information
37422 + * Eddie Kohler
37423 + *
37424 + * Copyright (c) 2000 Mazu Networks, Inc.
37425 + * Copyright (c) 2004 The Regents of the University of California
37426 + *
37427 + * Permission is hereby granted, free of charge, to any person obtaining a
37428 + * copy of this software and associated documentation files (the "Software"),
37429 + * to deal in the Software without restriction, subject to the conditions
37430 + * listed in the Click LICENSE file. These conditions include: you must
37431 + * preserve this copyright notice, and you cannot mention the copyright
37432 + * holders in advertising related to the Software without their permission.
37433 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
37434 + * notice is a summary of the Click LICENSE file; the license in that file is
37435 + * legally binding.
37436 + */
37437 +
37438 +#include <click/config.h>
37439 +#include <click/standard/addressinfo.hh>
37440 +#include <click/nameinfo.hh>
37441 +#include <click/glue.hh>
37442 +#include <click/confparse.hh>
37443 +#include <click/router.hh>
37444 +#include <click/error.hh>
37445 +#include <clicknet/ether.h>
37446 +#if CLICK_NS
37447 +# include <click/master.hh>
37448 +#endif
37449 +#if CLICK_USERLEVEL
37450 +# include <unistd.h>
37451 +#endif
37452 +#if CLICK_USERLEVEL && defined(__linux__)
37453 +# include <net/if.h>
37454 +# include <sys/ioctl.h>
37455 +# include <net/if_arp.h>
37456 +# include <click/userutils.hh>
37457 +# include <time.h>
37458 +#elif CLICK_USERLEVEL && (defined(__APPLE__) || defined(__FreeBSD__))
37459 +# include <sys/sysctl.h>
37460 +# include <net/if.h>
37461 +# include <net/if_dl.h>
37462 +# include <net/if_types.h>
37463 +# include <net/route.h>
37464 +#endif
37465 +#if CLICK_LINUXMODULE
37466 +# include <click/cxxprotect.h>
37467 +CLICK_CXX_PROTECT
37468 +# include <linux/netdevice.h>
37469 +# include <linux/rtnetlink.h>
37470 +# include <linux/if_arp.h>
37471 +# include <linux/inetdevice.h>
37472 +CLICK_CXX_UNPROTECT
37473 +# include <click/cxxunprotect.h>
37474 +#endif
37475 +CLICK_DECLS
37476 +
37477 +AddressInfo::AddressInfo()
37478 +{
37479 +}
37480 +
37481 +AddressInfo::~AddressInfo()
37482 +{
37483 +}
37484 +
37485 +int
37486 +AddressInfo::configure(Vector<String> &conf, ErrorHandler *errh)
37487 +{
37488 +    int before = errh->nerrors();
37489 +  
37490 +    for (int i = 0; i < conf.size(); i++) {
37491 +       Vector<String> parts;
37492 +       cp_spacevec(conf[i], parts);
37493 +       if (parts.size() == 0)
37494 +           // allow empty arguments
37495 +           continue;
37496 +       if (parts.size() < 2)
37497 +           errh->error("expected 'NAME [ADDRS]', got '%s'", conf[i].c_str());
37498 +       
37499 +       for (int j = 1; j < parts.size(); j++) {
37500 +           uint8_t d[24];
37501 +           if (cp_ip_address(parts[j], &d[0]))
37502 +               NameInfo::define(NameInfo::T_IP_ADDR, this, parts[0], &d[0], 4);
37503 +           else if (cp_ip_prefix(parts[j], &d[0], &d[4], false)) {
37504 +               NameInfo::define(NameInfo::T_IP_PREFIX, this, parts[0], &d[0], 8);
37505 +               if (*(uint32_t*)(&d[0]) & ~*((uint32_t*)(&d[4])))
37506 +                   NameInfo::define(NameInfo::T_IP_ADDR, this, parts[0], &d[0], 4);
37507 +           } else if (cp_ethernet_address(parts[j], &d[0]))
37508 +               NameInfo::define(NameInfo::T_ETHERNET_ADDR, this, parts[0], &d[0], 6);
37509 +#ifdef HAVE_IP6
37510 +           else if (cp_ip6_address(parts[j], &d[0]))
37511 +               NameInfo::define(NameInfo::T_IP6_ADDR, this, parts[0], &d[0], 16);
37512 +           else if (cp_ip6_prefix(parts[j], &d[0], (int *) &d[16], false)) {
37513 +               NameInfo::define(NameInfo::T_IP6_PREFIX, this, parts[0], &d[0], 16 + sizeof(int));
37514 +               if (*((IP6Address*) &d[0]) & ~IP6Address::make_prefix(*(int*) &d[16]))
37515 +                   NameInfo::define(NameInfo::T_IP6_ADDR, this, parts[0], &d[0], 16);
37516 +           }
37517 +#endif
37518 +           else
37519 +               errh->error("\"%s\" '%s' is not a recognizable address", parts[0].c_str(), parts[j].c_str());
37520 +       }
37521 +    }
37522 +    
37523 +    return (errh->nerrors() == before ? 0 : -1);
37524 +}
37525 +
37526 +
37527 +#if CLICK_USERLEVEL && !CLICK_NS && (defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__))
37528 +# define CLICK_QUERY_NETDEVICE 1
37529 +#endif
37530 +
37531 +#if CLICK_QUERY_NETDEVICE
37532 +
37533 +static bool
37534 +query_netdevice(const String &s, unsigned char *store, int type, int len)
37535 +    // type: should be 'e' (Ethernet) or 'i' (ipv4)
37536 +{
37537 +    // 5 Mar 2004 - Don't call ioctl for every attempt to look up an Ethernet
37538 +    // device name, because this causes the kernel to try to load weird kernel
37539 +    // modules.
37540 +    static time_t read_time = 0;
37541 +    static Vector<String> device_names;
37542 +    static Vector<String> device_addrs;
37543 +
37544 +    // XXX magic time constant
37545 +    if (!read_time || read_time + 30 < time(0)) {
37546 +       device_names.clear();
37547 +       device_addrs.clear();
37548 +       
37549 +# ifdef __linux__
37550 +       int query_fd = socket(AF_INET, SOCK_DGRAM, 0);
37551 +       if (query_fd < 0)
37552 +           return false;
37553 +       struct ifreq ifr;
37554 +       
37555 +       String f = file_string("/proc/net/dev");
37556 +       const char *begin = f.begin(), *end = f.end();
37557 +       while (begin < end) {
37558 +           const char *colon = find(begin, end, ':');
37559 +           const char *nl = find(begin, end, '\n');
37560 +           if (colon > begin && colon < nl) {
37561 +               const char *word = colon;
37562 +               while (word > begin && !isspace(word[-1]))
37563 +                   word--;
37564 +               if ((size_t) (colon - word) < sizeof(ifr.ifr_name)) {
37565 +                   // based on patch from Jose Vasconcellos
37566 +                   // <jvasco@bellatlantic.net>
37567 +                   String dev_name = f.substring(word, colon);
37568 +                   strcpy(ifr.ifr_name, dev_name.c_str());
37569 +                   if (ioctl(query_fd, SIOCGIFHWADDR, &ifr) >= 0
37570 +                       && ifr.ifr_hwaddr.sa_family == ARPHRD_ETHER) {
37571 +                       device_names.push_back(dev_name);
37572 +                       device_addrs.push_back(String('e') + String(ifr.ifr_hwaddr.sa_data, 6));
37573 +                   }
37574 +                   if (ioctl(query_fd, SIOCGIFADDR, &ifr) >= 0) {
37575 +                       device_names.push_back(dev_name);
37576 +                       device_addrs.push_back(String('i') + String((const char *)&((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr, 4));
37577 +                   }
37578 +               }
37579 +           }
37580 +           begin = nl + 1;
37581 +       }
37582 +
37583 +       close(query_fd);
37584 +# elif defined(__APPLE__) || defined(__FreeBSD__)
37585 +       // get list of interfaces (this code borrowed, with changes, from
37586 +       // FreeBSD ifconfig(8))
37587 +       int mib[8];
37588 +       mib[0] = CTL_NET;
37589 +       mib[1] = PF_ROUTE;
37590 +       mib[2] = 0;
37591 +       mib[3] = 0;             // address family
37592 +       mib[4] = NET_RT_IFLIST;
37593 +       mib[5] = 0;             // ifindex
37594 +
37595 +       size_t if_needed;
37596 +       char* buf = 0;
37597 +       while (!buf) {
37598 +           if (sysctl(mib, 6, 0, &if_needed, 0, 0) < 0)
37599 +               return false;
37600 +           if ((buf = new char[if_needed]) == 0)
37601 +               return false;
37602 +           if (sysctl(mib, 6, buf, &if_needed, 0, 0) < 0) {
37603 +               if (errno == ENOMEM) {
37604 +                   delete[] buf;
37605 +                   buf = 0;
37606 +               } else
37607 +                   return false;
37608 +           }
37609 +       }
37610 +       
37611 +       for (char* pos = buf; pos < buf + if_needed; ) {
37612 +           // grab next if_msghdr
37613 +           struct if_msghdr* ifm = reinterpret_cast<struct if_msghdr*>(pos);
37614 +           if (ifm->ifm_type != RTM_IFINFO)
37615 +               break;
37616 +           int datalen = sizeof(struct if_data);
37617 +#  if HAVE_IF_DATA_IFI_DATALEN
37618 +           if (ifm->ifm_data.ifi_datalen)
37619 +               datalen = ifm->ifm_data.ifi_datalen;
37620 +#  endif
37621 +           
37622 +           // extract interface name from 'ifm'
37623 +           struct sockaddr_dl* sdl = reinterpret_cast<struct sockaddr_dl*>(pos + sizeof(struct if_msghdr) - sizeof(struct if_data) + datalen);
37624 +           String name(sdl->sdl_data, sdl->sdl_nlen);
37625 +
37626 +           // Ethernet address is stored in 'sdl'
37627 +           if (sdl->sdl_type == IFT_ETHER && sdl->sdl_alen == 6) {
37628 +               device_names.push_back(name);
37629 +               device_addrs.push_back(String('e') + String((const char*)(LLADDR(sdl)), 6));
37630 +           }
37631 +           
37632 +           // parse all addresses, looking for IP
37633 +           pos += ifm->ifm_msglen;
37634 +           while (pos < buf + if_needed) {
37635 +               struct if_msghdr* nextifm = reinterpret_cast<struct if_msghdr*>(pos);
37636 +               if (nextifm->ifm_type != RTM_NEWADDR)
37637 +                   break;
37638 +               
37639 +               struct ifa_msghdr* ifam = reinterpret_cast<struct ifa_msghdr*>(nextifm);
37640 +               char* sa_buf = reinterpret_cast<char*>(ifam + 1);
37641 +               pos += nextifm->ifm_msglen;
37642 +               for (int i = 0; i < RTAX_MAX && sa_buf < pos; i++) {
37643 +                   if (!(ifam->ifam_addrs & (1 << i)))
37644 +                       continue;
37645 +                   struct sockaddr* sa = reinterpret_cast<struct sockaddr*>(sa_buf);
37646 +                   if (sa->sa_len)
37647 +                       sa_buf += 1 + ((sa->sa_len - 1) | (sizeof(long) - 1));
37648 +                   else
37649 +                       sa_buf += sizeof(long);
37650 +                   if (i != RTAX_IFA)
37651 +                       continue;
37652 +                   if (sa->sa_family == AF_INET) {
37653 +                       device_names.push_back(name);
37654 +                       device_addrs.push_back(String('i') + String((const char *)&((struct sockaddr_in*)sa)->sin_addr, 4));
37655 +                   }
37656 +               }
37657 +           }
37658 +       }
37659 +
37660 +       delete[] buf;
37661 +# endif /* defined(__APPLE__) || defined(__FreeBSD__) */
37662 +       read_time = time(0);
37663 +    }
37664 +
37665 +    for (int i = 0; i < device_names.size(); i++)
37666 +       if (device_names[i] == s && device_addrs[i][0] == type) {
37667 +           memcpy(store, device_addrs[i].data() + 1, len);
37668 +           return true;
37669 +       }
37670 +
37671 +    return false;
37672 +}
37673 +
37674 +#endif /* CLICK_QUERY_NETDEVICE */
37675 +
37676 +
37677 +bool
37678 +AddressInfo::query_ip(String s, unsigned char *store, Element *e)
37679 +{
37680 +    int colon = s.find_right(':');
37681 +    if (colon >= 0 && s.substring(colon).lower() != ":ip"
37682 +       && s.substring(colon).lower() != ":ip4")
37683 +       return false;
37684 +    else if (colon >= 0)
37685 +       s = s.substring(0, colon);
37686 +  
37687 +    if (NameInfo::query(NameInfo::T_IP_ADDR, e, s, store, 4))
37688 +       return true;
37689 +
37690 +    // if it's a device name, return a primary IP address
37691 +#if CLICK_LINUXMODULE
37692 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
37693 +    net_device *dev = dev_get_by_name(s.c_str());
37694 +    if (dev) {
37695 +       bool found = false;
37696 +       in_device *in_dev = in_dev_get(dev);
37697 +       if (in_dev) {
37698 +           for_primary_ifa(in_dev) {
37699 +               memcpy(store, &ifa->ifa_local, 4);
37700 +               found = true;
37701 +               break;
37702 +           }
37703 +           endfor_ifa(in_dev);
37704 +           in_dev_put(in_dev);
37705 +       }
37706 +       dev_put(dev);
37707 +       if (found)
37708 +           return true;
37709 +    }
37710 +# endif
37711 +#elif CLICK_NS
37712 +    if (e) {
37713 +       char tmp[255];
37714 +       int r = simclick_sim_command(e->router()->master()->simnode(), SIMCLICK_IPADDR_FROM_NAME, s.c_str(), tmp, 255);
37715 +       if (r >= 0 && tmp[0] && cp_ip_address(tmp, store))
37716 +           return true;
37717 +    }
37718 +#elif CLICK_QUERY_NETDEVICE
37719 +    if (query_netdevice(s, store, 'i', 4))
37720 +       return true;
37721 +#endif
37722 +
37723 +    return false;
37724 +}
37725 +
37726 +bool
37727 +AddressInfo::query_ip_prefix(String s, unsigned char *store,
37728 +                            unsigned char *mask_store, Element *e)
37729 +{
37730 +    int colon = s.find_right(':');
37731 +    if (colon >= 0 && s.substring(colon).lower() != ":ipnet"
37732 +       && s.substring(colon).lower() != ":ip4net")
37733 +       return false;
37734 +    else if (colon >= 0)
37735 +       s = s.substring(0, colon);
37736 +
37737 +    uint8_t data[8];
37738 +    if (NameInfo::query(NameInfo::T_IP_PREFIX, e, s, &data[0], 8)) {
37739 +       memcpy(store, &data[0], 4);
37740 +       memcpy(mask_store, &data[4], 4);
37741 +       return true;
37742 +    }
37743 +
37744 +    return false;
37745 +}
37746 +
37747 +
37748 +#ifdef HAVE_IP6
37749 +
37750 +bool
37751 +AddressInfo::query_ip6(String s, unsigned char *store, Element *e)
37752 +{
37753 +    int colon = s.find_right(':');
37754 +    if (colon >= 0 && s.substring(colon).lower() != ":ip6")
37755 +       return false;
37756 +    else if (colon >= 0)
37757 +       s = s.substring(0, colon);
37758 +
37759 +    return NameInfo::query(NameInfo::T_IP6_ADDR, e, s, store, 16);
37760 +}
37761 +
37762 +bool
37763 +AddressInfo::query_ip6_prefix(String s, unsigned char *store,
37764 +                             int *bits_store, Element *e)
37765 +{
37766 +    int colon = s.find_right(':');
37767 +    if (colon >= 0 && s.substring(colon).lower() != ":ip6net")
37768 +       return false;
37769 +    else if (colon >= 0)
37770 +       s = s.substring(0, colon);
37771 +
37772 +    uint8_t data[16 + sizeof(int)];
37773 +    if (NameInfo::query(NameInfo::T_IP6_PREFIX, e, s, data, 16 + sizeof(int))) {
37774 +       memcpy(store, &data[0], 16);
37775 +       *bits_store = *(int *) &data[16];
37776 +       return true;
37777 +    }
37778 +
37779 +    return false;
37780 +}
37781 +
37782 +#endif /* HAVE_IP6 */
37783 +
37784 +
37785 +bool
37786 +AddressInfo::query_ethernet(String s, unsigned char *store, Element *e)
37787 +{
37788 +    int colon = s.find_right(':');
37789 +    if (colon >= 0 && s.substring(colon).lower() != ":eth"
37790 +       && s.substring(colon).lower() != ":ethernet")
37791 +       return false;
37792 +    else if (colon >= 0)
37793 +       s = s.substring(0, colon);
37794 +
37795 +    if (NameInfo::query(NameInfo::T_ETHERNET_ADDR, e, s, store, 6))
37796 +       return true;
37797 +
37798 +    // if it's a device name, return its Ethernet address
37799 +#if CLICK_LINUXMODULE
37800 +    // in the Linux kernel, just look at the device list
37801 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
37802 +#  define dev_put(dev) /* nada */
37803 +# endif
37804 +    net_device *dev = dev_get_by_name(s.c_str());
37805 +    if (dev && (dev->type == ARPHRD_ETHER || dev->type == ARPHRD_80211)) {
37806 +       memcpy(store, dev->dev_addr, 6);
37807 +       dev_put(dev);
37808 +       return true;
37809 +    } else if (dev)
37810 +       dev_put(dev);
37811 +#elif CLICK_NS
37812 +    if (e) {
37813 +       char tmp[255];
37814 +       int r = simclick_sim_command(e->router()->master()->simnode(), SIMCLICK_MACADDR_FROM_NAME, s.c_str(), tmp, 255);
37815 +       if (r >= 0 && tmp[0] && cp_ethernet_address(tmp, store))
37816 +           return true;
37817 +    }
37818 +#elif CLICK_QUERY_NETDEVICE
37819 +    if (query_netdevice(s, store, 'e', 6))
37820 +       return true;
37821 +#endif
37822 +    
37823 +    return false;
37824 +}
37825 +
37826 +EXPORT_ELEMENT(AddressInfo)
37827 +ELEMENT_HEADER(<click/standard/addressinfo.hh>)
37828 +
37829 +// template instance
37830 +#include <click/vector.cc>
37831 +CLICK_ENDDECLS
37832 diff -Nurb click-1.6.0/etc/libclick/Makefile click-1.6.0-27/etc/libclick/Makefile
37833 --- click-1.6.0/etc/libclick/Makefile   1969-12-31 19:00:00.000000000 -0500
37834 +++ click-1.6.0-27/etc/libclick/Makefile        2009-01-28 16:15:43.000000000 -0500
37835 @@ -0,0 +1,81 @@
37836 +# Warning: this file must be usable by regular make
37837 +# (unlike the Makefiles in subdirectories).
37838 +
37839 +SHELL = /bin/sh
37840 +
37841 +
37842 +PACKAGE = click
37843 +VERSION = 1.6.0
37844 +
37845 +top_srcdir = ../..
37846 +srcdir = .
37847 +top_builddir = ../..
37848 +subdir = etc/libclick
37849 +conf_auxdir = $(top_srcdir)
37850 +
37851 +AUTOCONF = autoconf
37852 +ACLOCAL = aclocal -I m4
37853 +PERL = perl
37854 +INSTALL = /usr/bin/install -c
37855 +INSTALL_IF_CHANGED = $(top_builddir)/installch
37856 +INSTALL_DATA = /usr/bin/install -c -m 644
37857 +INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644
37858 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
37859 +
37860 +prefix = /d/click/click-1.6.0-27/inst
37861 +exec_prefix = /d/click/click-1.6.0-27/inst
37862 +bindir = /d/click/click-1.6.0-27/inst/bin
37863 +
37864 +all:
37865 +       @echo This Makefile does not build anything.
37866 +       @echo Its only important target is '`make dist'"'".
37867 +
37868 +Makefile: $(top_builddir)/config.status $(srcdir)/Makefile.in
37869 +       cd $(top_builddir) && \
37870 +         CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
37871 +
37872 +distdir = libclick-$(VERSION)
37873 +top_distdir = $(distdir)
37874 +
37875 +clean:
37876 +       -rm -rf $(distdir) $(distdir).tar.gz
37877 +distclean: clean
37878 +       -rm -f Makefile
37879 +
37880 +dist: $(distdir).tar.gz
37881 +       -rm -rf $(distdir)
37882 +$(distdir).tar.gz: distdir
37883 +       tar czf $(distdir).tar.gz $(distdir)
37884 +distdir: always
37885 +       @if test `grep 'CLICK_VERSION=' $(top_srcdir)/configure.in` != `grep 'CLICK_VERSION=' $(srcdir)/lc-configure.in`; then \
37886 +         echo 'ERROR: Bad libclick CLICK_VERSION!'; exit 1; \
37887 +       fi
37888 +       -rm -rf $(distdir)
37889 +       mkdir $(distdir)
37890 +       @-chmod 777 $(distdir)
37891 +       @echo Copying library, documentation, configuration, and driver files...
37892 +       @echo DISTFILES >>$(distdir)/DISTFILES
37893 +       @for file in `cat $(srcdir)/DISTFILES`; do \
37894 +         d=$(top_srcdir); \
37895 +         sf=`echo "$$file:$$file:" | sed 's/^\([^:]*\):.*/\1/'`; \
37896 +         df=`echo "$$file:$$file:" | sed 's/^[^:]*:\([^:]*\):.*/\1/'`; \
37897 +         if test -d "$$d/$$sf"; then \
37898 +           mkdir $(distdir)/$$df; \
37899 +           chmod 777 $(distdir)/$$df; \
37900 +         else \
37901 +           test -f "$(distdir)/$$df" \
37902 +           || ln $$d/$$sf $(distdir)/$$df 2>/dev/null \
37903 +           || cp -p $$d/$$sf $(distdir)/$$df \
37904 +           || echo "Could not copy $$d/$$sf!" 1>&2; \
37905 +         fi; \
37906 +         echo $$df >>$(distdir)/DISTFILES; \
37907 +       done
37908 +       cd $(distdir) && $(PERL) -pi -e 's/enable_linuxmodule=yes/enable_linuxmodule=no/;' configure.in
37909 +       cd $(distdir) && $(ACLOCAL) && $(AUTOCONF)
37910 +       cd $(distdir) && rm -rf autom4te*
37911 +       echo configure >>$(distdir)/DISTFILES
37912 +
37913 +always:
37914 +       @:
37915 +
37916 +.PHONY: all dist distdir always
37917 diff -Nurb click-1.6.0/etc/pkg-config.mk click-1.6.0-27/etc/pkg-config.mk
37918 --- click-1.6.0/etc/pkg-config.mk       1969-12-31 19:00:00.000000000 -0500
37919 +++ click-1.6.0-27/etc/pkg-config.mk    2009-01-28 16:15:43.000000000 -0500
37920 @@ -0,0 +1,43 @@
37921 +# pkg-config.mk -- build tools for Click
37922 +# Eddie Kohler
37923 +#
37924 +# Copyright (c) 2006 Regents of the University of California
37925 +#
37926 +# Permission is hereby granted, free of charge, to any person obtaining a
37927 +# copy of this software and associated documentation files (the "Software"),
37928 +# to deal in the Software without restriction, subject to the conditions
37929 +# listed in the Click LICENSE file. These conditions include: you must
37930 +# preserve this copyright notice, and you cannot mention the copyright
37931 +# holders in advertising related to the Software without their permission.
37932 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
37933 +# notice is a summary of the Click LICENSE file; the license in that file is
37934 +# legally binding.
37935 +
37936 +CLICKCC = gcc -W -Wall
37937 +CLICKCPP = gcc -W -Wall -E
37938 +CLICKCXX = g++ -W -Wall 
37939 +CLICKCXXCPP = g++ -W -Wall  -E
37940 +
37941 +CLICKAR_CREATE = ar cru
37942 +CLICKRANLIB = ranlib
37943 +CLICKSTRIP = strip
37944 +
37945 +CLICKKERNEL_CC = gcc -w -W -Wall
37946 +CLICKKERNEL_CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
37947 +
37948 +CLICKCPPFLAGS = 
37949 +CLICKCFLAGS = -g -O2
37950 +CLICKCFLAGS_NDEBUG =  -O2
37951 +CLICKCXXFLAGS = -g -O2
37952 +CLICKCXXFLAGS_NDEBUG =  -O2
37953 +CLICKDEPCFLAGS = -MD
37954 +
37955 +CLICKDEFS = -DHAVE_CONFIG_H
37956 +CLICKINCLUDES = -I$(clickincludedir) -I$(clicksrcdir) 
37957 +CLICKLDFLAGS = 
37958 +CLICKLDMODULEFLAGS = -shared
37959 +
37960 +CLICKAUTOCONF = autoconf
37961 +CLICKGMAKE = make
37962 +CLICKINSTALL = /usr/bin/install -c
37963 +
37964 diff -Nurb click-1.6.0/include/click/config-bsdmodule.h click-1.6.0-27/include/click/config-bsdmodule.h
37965 --- click-1.6.0/include/click/config-bsdmodule.h        1969-12-31 19:00:00.000000000 -0500
37966 +++ click-1.6.0-27/include/click/config-bsdmodule.h     2009-01-19 15:07:24.000000000 -0500
37967 @@ -0,0 +1,52 @@
37968 +/* include/click/config-bsdmodule.h.  Generated from config-bsdmodule.h.in by configure.  */
37969 +/* Process this file with configure to produce config-bsdmodule.h. -*- mode: c -*- */
37970 +#ifndef CLICK_CONFIG_BSDMODULE_H
37971 +#define CLICK_CONFIG_BSDMODULE_H
37972 +
37973 +/* Define stuff under a FreeBSD module. */
37974 +#ifndef __FreeBSD__
37975 +# error "I must be compiled on a FreeBSD machine"
37976 +#endif
37977 +#define KERNEL 1
37978 +#define _KERNEL 1
37979 +#define KLD_MODULE 1
37980 +
37981 +/* Define if your BSD kernel has Click extensions. */
37982 +/* #undef HAVE_CLICK_BSD_KERNEL */
37983 +
37984 +/* Define if your BSD kernel has polling extensions. */
37985 +/* #undef HAVE_BSD_POLLING */
37986 +
37987 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
37988 +   fairly with the kernel. */
37989 +/* #undef HAVE_ADAPTIVE_SCHEDULER */
37990 +
37991 +/* Include integer and other type definitions. */
37992 +#include <sys/types.h>
37993 +
37994 +/* Define assert macro. */
37995 +#define assert(x) /* nada */
37996 +
37997 +/* Define likely and unlikely macros. */
37998 +#define likely(x)      (x)
37999 +#define unlikely(x)    (x)
38000 +
38001 +#ifdef __cplusplus
38002 +
38003 +/* Declare operator new. */
38004 +void *operator new(size_t) throw ();
38005 +void *operator new[](size_t) throw ();
38006 +
38007 +/* Provide placement new. */
38008 +inline void *operator new(size_t, void *v) throw () { return v; }
38009 +#define HAVE_PLACEMENT_NEW 1
38010 +
38011 +/* Define macros that surround Click declarations. */
38012 +#define CLICK_DECLS            namespace Click {
38013 +#define CLICK_ENDDECLS         }
38014 +#define CLICK_USING_DECLS      using namespace Click;
38015 +#define CLICK_NAME(name)       ::Click::name
38016 +
38017 +#endif /* __cplusplus */
38018 +
38019 +#endif /* CLICK_CONFIG_BSDMODULE_H */
38020 diff -Nurb click-1.6.0/include/click/config-linuxmodule.h click-1.6.0-27/include/click/config-linuxmodule.h
38021 --- click-1.6.0/include/click/config-linuxmodule.h      1969-12-31 19:00:00.000000000 -0500
38022 +++ click-1.6.0-27/include/click/config-linuxmodule.h   2009-02-11 16:38:55.000000000 -0500
38023 @@ -0,0 +1,165 @@
38024 +/* include/click/config-linuxmodule.h.  Generated from config-linuxmodule.h.in by configure.  */
38025 +/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */
38026 +#ifndef CLICK_CONFIG_LINUXMODULE_H
38027 +#define CLICK_CONFIG_LINUXMODULE_H
38028 +
38029 +/* Define stuff under a Linux module. */
38030 +#ifndef __linux__
38031 +# error "I must be compiled on a Linux machine"
38032 +#endif
38033 +#define __KERNEL__ 1
38034 +#define MODULE 1
38035 +
38036 +/* Define if your Linux kernel is running in SMP mode. */
38037 +#define __SMP__ 1
38038 +
38039 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
38040 +   fairly with the kernel. */
38041 +/* #undef HAVE_ADAPTIVE_SCHEDULER */
38042 +
38043 +/* Define if your Linux kernel has Click extensions. */
38044 +#define HAVE_CLICK_KERNEL 1
38045 +
38046 +/* Define if your Linux kernel has Click transmit notification extensions. */
38047 +/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */
38048 +
38049 +/* Define if fast checksum functions available. */
38050 +#define HAVE_FAST_CHECKSUM 1
38051 +
38052 +/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */
38053 +/* #undef HAVE_INT64_IS_LONG_LINUXMODULE */
38054 +
38055 +/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */
38056 +#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
38057 +
38058 +/* Define to enable assertion checking. Failed assertions will print a message
38059 +   and optionally stop the router. */
38060 +/* #undef HAVE_KERNEL_ASSERT */
38061 +
38062 +/* Define if you have the <asm/alternative.h> header file. */
38063 +#define HAVE_LINUX_ASM_ALTERNATIVE_H 1
38064 +
38065 +/* Define if your Linux kernel architecture defines atomic_set_mask. */
38066 +/* #undef HAVE_LINUX_ATOMIC_SET_MASK */
38067 +
38068 +/* Define if your Linux kernel has polling extensions. */
38069 +#define HAVE_LINUX_POLLING 1
38070 +
38071 +/* Define if your Linux kernel has read_net_skbcount. */
38072 +/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */
38073 +
38074 +/* Define if 'struct skb_shared_info' has a 'gso_size' member. */
38075 +/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */
38076 +
38077 +/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */
38078 +/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */
38079 +
38080 +/* Define if 'struct skb_shared_info' has a 'tso_size' member. */
38081 +/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */
38082 +
38083 +/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */
38084 +/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */
38085 +
38086 +/* Define if 'struct sk_buff' has an 'fclone' member. */
38087 +/* #undef HAVE_LINUX_SKBUFF_FCLONE */
38088 +
38089 +/* Define if 'struct sk_buff' has a 'security' member. */
38090 +/* #undef HAVE_LINUX_SKBUFF_SECURITY */
38091 +
38092 +/* Define if your Linux kernel exposes strlen. */
38093 +#define HAVE_LINUX_STRLEN_EXPOSED 1
38094 +
38095 +/* Define if your Linux kernel has tulip_interrupt_hook. */
38096 +/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */
38097 +
38098 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
38099 +#define HAVE_LINUXMODULE_2_6 1
38100 +
38101 +/* Define if you have the net_enable_timestamp function. */
38102 +/* #undef HAVE_NET_ENABLE_TIMESTAMP */
38103 +
38104 +/* Define if you have the netif_tx_lock function. */
38105 +/* #undef HAVE_NETIF_TX_LOCK */
38106 +
38107 +/* Define if fast checksum functions require correct alignment. */
38108 +#ifndef __i386__
38109 +# define FAST_CHECKSUM_ALIGNED 1
38110 +#endif
38111 +
38112 +/* Include integer type definitions. */
38113 +#include <click/cxxprotect.h>
38114 +CLICK_CXX_PROTECT
38115 +#include <linux/autoconf.h>
38116 +#include <linux/types.h>
38117 +CLICK_CXX_UNPROTECT
38118 +#include <click/cxxunprotect.h>
38119 +
38120 +typedef ptrdiff_t intptr_t;
38121 +//typedef unsigned long uintptr_t; /* XXX? */
38122 +
38123 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
38124 +#ifdef HAVE_INT64_IS_LONG_LINUXMODULE
38125 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE
38126 +#endif
38127 +
38128 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */
38129 +#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE)
38130 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE
38131 +#endif
38132 +
38133 +/* Define KBUILD symbols. */
38134 +#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6
38135 +# define KBUILD_STR(s)         #s
38136 +# define KBUILD_BASENAME       KBUILD_STR(click)
38137 +# define KBUILD_MODNAME                KBUILD_STR(click)
38138 +#endif
38139 +
38140 +#ifdef __cplusplus
38141 +
38142 +/* Declare operator new. */
38143 +void *operator new(size_t) throw ();
38144 +void *operator new[](size_t) throw ();
38145 +
38146 +/* Provide placement new. */
38147 +inline void *operator new(size_t, void *v) { return v; }
38148 +#define HAVE_PLACEMENT_NEW 1
38149 +
38150 +/* Define macros that surround Click declarations. */
38151 +#define CLICK_DECLS            /* */
38152 +#define CLICK_ENDDECLS         /* */
38153 +#define CLICK_USING_DECLS      /* */
38154 +#define CLICK_NAME(name)       ::name
38155 +
38156 +/* Fix incompatibilities between some Linux versions and Click/C++. */
38157 +
38158 +/* Include integer type definitions. */
38159 +#include <click/cxxprotect.h>
38160 +CLICK_CXX_PROTECT
38161 +#include <click/fixconfig.h>
38162 +CLICK_CXX_UNPROTECT
38163 +#include <click/cxxunprotect.h>
38164 +
38165 +
38166 +#endif /* __cplusplus */
38167 +
38168 +/* Define assert macro. */
38169 +# ifdef __cplusplus
38170 +extern "C" {
38171 +# endif
38172 +void click_assert_failed(const char *file, int line, const char *problem_text);
38173 +# ifdef __cplusplus
38174 +}
38175 +# endif
38176 +
38177 +#ifdef HAVE_KERNEL_ASSERT
38178 +# define assert(x)     ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x))
38179 +#else
38180 +# define assert(x)     /* nada */
38181 +#endif
38182 +
38183 +/* Some architectures do not have builtin integer functions in kernel. */
38184 +#if defined(__MIPSEL__) || defined(__MIPSEB__)
38185 +# define HAVE_NO_INTEGER_BUILTINS 1
38186 +#endif
38187 +
38188 +#endif /* CLICK_CONFIG_LINUXMODULE_H */
38189 diff -Nurb click-1.6.0/include/click/config-linuxmodule.h.orig click-1.6.0-27/include/click/config-linuxmodule.h.orig
38190 --- click-1.6.0/include/click/config-linuxmodule.h.orig 1969-12-31 19:00:00.000000000 -0500
38191 +++ click-1.6.0-27/include/click/config-linuxmodule.h.orig      2009-01-19 15:07:24.000000000 -0500
38192 @@ -0,0 +1,155 @@
38193 +/* include/click/config-linuxmodule.h.  Generated from config-linuxmodule.h.in by configure.  */
38194 +/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */
38195 +#ifndef CLICK_CONFIG_LINUXMODULE_H
38196 +#define CLICK_CONFIG_LINUXMODULE_H
38197 +
38198 +/* Define stuff under a Linux module. */
38199 +#ifndef __linux__
38200 +# error "I must be compiled on a Linux machine"
38201 +#endif
38202 +#define __KERNEL__ 1
38203 +#define MODULE 1
38204 +
38205 +/* Define if your Linux kernel is running in SMP mode. */
38206 +#define __SMP__ 1
38207 +
38208 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
38209 +   fairly with the kernel. */
38210 +/* #undef HAVE_ADAPTIVE_SCHEDULER */
38211 +
38212 +/* Define if your Linux kernel has Click extensions. */
38213 +#define HAVE_CLICK_KERNEL 1
38214 +
38215 +/* Define if your Linux kernel has Click transmit notification extensions. */
38216 +/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */
38217 +
38218 +/* Define if fast checksum functions available. */
38219 +#define HAVE_FAST_CHECKSUM 1
38220 +
38221 +/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */
38222 +#define HAVE_INT64_IS_LONG_LINUXMODULE 1
38223 +
38224 +/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */
38225 +#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
38226 +
38227 +/* Define to enable assertion checking. Failed assertions will print a message
38228 +   and optionally stop the router. */
38229 +/* #undef HAVE_KERNEL_ASSERT */
38230 +
38231 +/* Define if you have the <asm/alternative.h> header file. */
38232 +#define HAVE_LINUX_ASM_ALTERNATIVE_H 1
38233 +
38234 +/* Define if your Linux kernel architecture defines atomic_set_mask. */
38235 +/* #undef HAVE_LINUX_ATOMIC_SET_MASK */
38236 +
38237 +/* Define if your Linux kernel has polling extensions. */
38238 +#define HAVE_LINUX_POLLING 1
38239 +
38240 +/* Define if your Linux kernel has read_net_skbcount. */
38241 +/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */
38242 +
38243 +/* Define if 'struct skb_shared_info' has a 'gso_size' member. */
38244 +/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */
38245 +
38246 +/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */
38247 +/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */
38248 +
38249 +/* Define if 'struct skb_shared_info' has a 'tso_size' member. */
38250 +/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */
38251 +
38252 +/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */
38253 +/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */
38254 +
38255 +/* Define if 'struct sk_buff' has an 'fclone' member. */
38256 +/* #undef HAVE_LINUX_SKBUFF_FCLONE */
38257 +
38258 +/* Define if 'struct sk_buff' has a 'security' member. */
38259 +/* #undef HAVE_LINUX_SKBUFF_SECURITY */
38260 +
38261 +/* Define if your Linux kernel exposes strlen. */
38262 +#define HAVE_LINUX_STRLEN_EXPOSED 1
38263 +
38264 +/* Define if your Linux kernel has tulip_interrupt_hook. */
38265 +/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */
38266 +
38267 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
38268 +#define HAVE_LINUXMODULE_2_6 1
38269 +
38270 +/* Define if you have the net_enable_timestamp function. */
38271 +/* #undef HAVE_NET_ENABLE_TIMESTAMP */
38272 +
38273 +/* Define if you have the netif_tx_lock function. */
38274 +/* #undef HAVE_NETIF_TX_LOCK */
38275 +
38276 +/* Define if fast checksum functions require correct alignment. */
38277 +#ifndef __i386__
38278 +# define FAST_CHECKSUM_ALIGNED 1
38279 +#endif
38280 +
38281 +/* Include integer type definitions. */
38282 +#if !HAVE_LINUXMODULE_2_6
38283 +# include <linux/autoconf.h>
38284 +#endif
38285 +#include <linux/types.h>
38286 +typedef ptrdiff_t intptr_t;
38287 +typedef unsigned long uintptr_t; /* XXX? */
38288 +
38289 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
38290 +#ifdef HAVE_INT64_IS_LONG_LINUXMODULE
38291 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE
38292 +#endif
38293 +
38294 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */
38295 +#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE)
38296 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE
38297 +#endif
38298 +
38299 +/* Define KBUILD symbols. */
38300 +#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6
38301 +# define KBUILD_STR(s)         #s
38302 +# define KBUILD_BASENAME       KBUILD_STR(click)
38303 +# define KBUILD_MODNAME                KBUILD_STR(click)
38304 +#endif
38305 +
38306 +#ifdef __cplusplus
38307 +
38308 +/* Declare operator new. */
38309 +void *operator new(size_t) throw ();
38310 +void *operator new[](size_t) throw ();
38311 +
38312 +/* Provide placement new. */
38313 +inline void *operator new(size_t, void *v) { return v; }
38314 +#define HAVE_PLACEMENT_NEW 1
38315 +
38316 +/* Define macros that surround Click declarations. */
38317 +#define CLICK_DECLS            /* */
38318 +#define CLICK_ENDDECLS         /* */
38319 +#define CLICK_USING_DECLS      /* */
38320 +#define CLICK_NAME(name)       ::name
38321 +
38322 +/* Fix incompatibilities between some Linux versions and Click/C++. */
38323 +#include <click/fixconfig.h>
38324 +
38325 +#endif /* __cplusplus */
38326 +
38327 +/* Define assert macro. */
38328 +# ifdef __cplusplus
38329 +extern "C" {
38330 +# endif
38331 +void click_assert_failed(const char *file, int line, const char *problem_text);
38332 +# ifdef __cplusplus
38333 +}
38334 +# endif
38335 +
38336 +#ifdef HAVE_KERNEL_ASSERT
38337 +# define assert(x)     ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x))
38338 +#else
38339 +# define assert(x)     /* nada */
38340 +#endif
38341 +
38342 +/* Some architectures do not have builtin integer functions in kernel. */
38343 +#if defined(__MIPSEL__) || defined(__MIPSEB__)
38344 +# define HAVE_NO_INTEGER_BUILTINS 1
38345 +#endif
38346 +
38347 +#endif /* CLICK_CONFIG_LINUXMODULE_H */
38348 diff -Nurb click-1.6.0/include/click/config-ns.h click-1.6.0-27/include/click/config-ns.h
38349 --- click-1.6.0/include/click/config-ns.h       1969-12-31 19:00:00.000000000 -0500
38350 +++ click-1.6.0-27/include/click/config-ns.h    2009-01-19 15:07:24.000000000 -0500
38351 @@ -0,0 +1,20 @@
38352 +/* include/click/config-ns.h.  Generated from config-ns.h.in by configure.  */
38353 +/* Process this file with configure to produce config-ns.h. -*- mode: c -*- */
38354 +#ifndef CLICK_CONFIG_NS_H
38355 +#define CLICK_CONFIG_NS_H
38356 +
38357 +#ifdef __cplusplus
38358 +
38359 +/* Define macros that surround Click declarations. */
38360 +#define CLICK_DECLS            namespace Click {
38361 +#define CLICK_ENDDECLS         }
38362 +#define CLICK_USING_DECLS      using namespace Click;
38363 +#define CLICK_NAME(name)       ::Click::name
38364 +
38365 +#endif /* __cplusplus */
38366 +
38367 +/* Include userlevel configuration. */
38368 +#define CLICK_USERLEVEL 1
38369 +#include <click/config-userlevel.h>
38370 +
38371 +#endif /* CLICK_CONFIG_NS_H */
38372 diff -Nurb click-1.6.0/include/click/config-userlevel.h click-1.6.0-27/include/click/config-userlevel.h
38373 --- click-1.6.0/include/click/config-userlevel.h        1969-12-31 19:00:00.000000000 -0500
38374 +++ click-1.6.0-27/include/click/config-userlevel.h     2009-01-19 15:07:24.000000000 -0500
38375 @@ -0,0 +1,249 @@
38376 +/* include/click/config-userlevel.h.  Generated from config-userlevel.h.in by configure.  */
38377 +/* Process this file with configure to produce config-userlevel.h. -*- mode: c -*- */
38378 +#ifndef CLICK_CONFIG_USERLEVEL_H
38379 +#define CLICK_CONFIG_USERLEVEL_H
38380 +
38381 +/* Define if accept() uses socklen_t. */
38382 +#define HAVE_ACCEPT_SOCKLEN_T 1
38383 +
38384 +/* Define if <pcap.h> uses bpf_timeval. */
38385 +/* #undef HAVE_BPF_TIMEVAL */
38386 +
38387 +/* Define if you have the <byteswap.h> header file. */
38388 +#define HAVE_BYTESWAP_H 1
38389 +
38390 +/* Define to 1 if you have the declaration
38391 +   of 'madvise', and to 0 if you don't. */
38392 +#define HAVE_DECL_MADVISE 1
38393 +
38394 +/* Define to 1 if you have the declaration
38395 +   of 'pcap_setnonblock', and to 0 if you don't. */
38396 +#define HAVE_DECL_PCAP_SETNONBLOCK 1
38397 +
38398 +/* Define if you have the <dlfcn.h> header file. */
38399 +#define HAVE_DLFCN_H 1
38400 +
38401 +/* Define if dynamic linking is possible. */
38402 +#define HAVE_DYNAMIC_LINKING 1
38403 +
38404 +/* Define if you have the ffs function. */
38405 +#define HAVE_FFS 1
38406 +
38407 +/* Define if you have the ffsl function. */
38408 +#define HAVE_FFSL 1
38409 +
38410 +/* Define if you have the ffsll function. */
38411 +#define HAVE_FFSLL 1
38412 +
38413 +/* Floating point arithmetic is allowed. */
38414 +#define HAVE_FLOAT_TYPES 1
38415 +
38416 +/* Define if you have the <grp.h> header file. */
38417 +#define HAVE_GRP_H 1
38418 +
38419 +/* Define if the last argument to EV_SET has pointer type. */
38420 +/* #undef HAVE_EV_SET_UDATA_POINTER */
38421 +
38422 +/* Define if 'struct if_data' has an 'ifi_datalen' member. */
38423 +/* #undef HAVE_IF_DATA_IFI_DATALEN */
38424 +
38425 +/* Define if 'int64_t' is typedefed to 'long' at user level. */
38426 +/* #undef HAVE_INT64_IS_LONG_USERLEVEL */
38427 +
38428 +/* Define if 'int64_t' is typedefed to 'long long' at user level. */
38429 +#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
38430 +
38431 +/* Define if you have the <inttypes.h> header file. */
38432 +#define HAVE_INTTYPES_H 1
38433 +
38434 +/* Define if you have the kqueue function. */
38435 +/* #undef HAVE_KQUEUE */
38436 +
38437 +/* Define if your C library contains large file support. */
38438 +#define HAVE_LARGE_FILE_SUPPORT 1
38439 +
38440 +/* Define if you have the <linux/if_tun.h> header file. */
38441 +#define HAVE_LINUX_IF_TUN_H 1
38442 +
38443 +/* Define if you have the madvise function. */
38444 +#define HAVE_MADVISE 1
38445 +
38446 +/* Define if you have the mmap function. */
38447 +#define HAVE_MMAP 1
38448 +
38449 +/* Define if you have the <net/bpf.h> header file. */
38450 +/* #undef HAVE_NET_BPF_H */
38451 +
38452 +/* Define if you have the <net/if_tap.h> header file. */
38453 +/* #undef HAVE_NET_IF_TAP_H */
38454 +
38455 +/* Define if you have the <net/if_tun.h> header file. */
38456 +/* #undef HAVE_NET_IF_TUN_H */
38457 +
38458 +/* Define if you have the <netdb.h> header file. */
38459 +#define HAVE_NETDB_H 1
38460 +
38461 +/* Define if <new.h> exists and works. */
38462 +/* #undef HAVE_NEW_H */
38463 +
38464 +/* Define if <new> exists and works. */
38465 +#define HAVE_NEW_HDR 1
38466 +
38467 +/* Define if you have -lpcap and pcap.h. */
38468 +#define HAVE_PCAP 1
38469 +
38470 +/* Define if you have the pcap_setnonblock function. */
38471 +#define HAVE_PCAP_SETNONBLOCK 1
38472 +
38473 +/* Define if you have -lproper and prop.h, and proper operations should be
38474 +   preferred to their non-proper counterparts. */
38475 +/* #undef HAVE_PROPER */
38476 +
38477 +/* Define if you have a non-emulated <poll.h> header file. */
38478 +#define HAVE_POLL_H 1
38479 +
38480 +/* Placement new is always provided below. */
38481 +#define HAVE_PLACEMENT_NEW 1
38482 +
38483 +/* Define if you have the <pwd.h> header file. */
38484 +#define HAVE_PWD_H 1
38485 +
38486 +/* Define if you have the sigaction function. */
38487 +#define HAVE_SIGACTION 1
38488 +
38489 +/* Define if you have the snprintf function. */
38490 +#define HAVE_SNPRINTF 1
38491 +
38492 +/* Define if 'struct sockaddr_in' has a 'sin_len' member. */
38493 +/* #undef HAVE_SOCKADDR_IN_SIN_LEN */
38494 +
38495 +/* Define if you have the strerror function. */
38496 +#define HAVE_STRERROR 1
38497 +
38498 +/* Define if you have the <strings.h> header file. */
38499 +#define HAVE_STRINGS_H 1
38500 +
38501 +/* Define if you have the strtoul function. */
38502 +#define HAVE_STRTOUL 1
38503 +
38504 +/* Define if you have the <sys/event.h> header file. */
38505 +/* #undef HAVE_SYS_EVENT_H */
38506 +
38507 +/* Define if you have the <sys/mman.h> header file. */
38508 +#define HAVE_SYS_MMAN_H 1
38509 +
38510 +/* Define if you have the tcgetpgrp function. */
38511 +#define HAVE_TCGETPGRP 1
38512 +
38513 +/* Define if you have the <termio.h> header file. */
38514 +#define HAVE_TERMIO_H 1
38515 +
38516 +/* Define if you have u_intXX_t types but not uintXX_t types. */
38517 +/* #undef HAVE_U_INT_TYPES */
38518 +
38519 +/* Define if you have the <unistd.h> header file. */
38520 +#define HAVE_UNISTD_H 1
38521 +
38522 +/* Define if a Click user-level driver might run multiple threads. */
38523 +/* #undef HAVE_USER_MULTITHREAD */
38524 +
38525 +/* Define if you have the vsnprintf function. */
38526 +#define HAVE_VSNPRINTF 1
38527 +
38528 +/* The size of a `off_t', as computed by sizeof. */
38529 +#define SIZEOF_OFF_T 8
38530 +
38531 +
38532 +/* Set feature test macros before anything is included. */
38533 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
38534 +# define _LARGEFILE_SOURCE 1
38535 +# define _FILE_OFFSET_BITS 64
38536 +#endif
38537 +
38538 +/* Include integer type definitions. */
38539 +#ifdef HAVE_INTTYPES_H
38540 +# include <inttypes.h>
38541 +#endif
38542 +#include <sys/types.h>
38543 +
38544 +/* Define uint types in terms of u_int types, if necessary. */
38545 +#ifdef HAVE_U_INT_TYPES
38546 +typedef u_int8_t uint8_t;
38547 +typedef u_int16_t uint16_t;
38548 +typedef u_int32_t uint32_t;
38549 +# ifdef HAVE_INT64_TYPES
38550 +typedef u_int64_t uint64_t;
38551 +# endif
38552 +typedef long intptr_t;         /* XXX? */
38553 +typedef unsigned long uintptr_t;
38554 +#endif
38555 +
38556 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_USERLEVEL. */
38557 +#ifdef HAVE_INT64_IS_LONG_USERLEVEL
38558 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_USERLEVEL
38559 +#endif
38560 +
38561 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_USERLEVEL. */
38562 +#ifdef HAVE_INT64_IS_LONG_LONG_USERLEVEL
38563 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_USERLEVEL
38564 +#endif
38565 +
38566 +/* Define HAVE_MULTITHREAD based on HAVE_USER_MULTITHREAD. */
38567 +#ifdef HAVE_USER_MULTITHREAD
38568 +# define HAVE_MULTITHREAD HAVE_USER_MULTITHREAD
38569 +#endif
38570 +
38571 +/* Include assert macro. */
38572 +#include <assert.h>
38573 +
38574 +/* Define likely and unlikely macros. */
38575 +#if __GNUC__ >= 3
38576 +# define likely(x)     __builtin_expect(!!(x), 1)
38577 +# define unlikely(x)   __builtin_expect(!!(x), 0)
38578 +#else
38579 +# define likely(x)     (x)
38580 +# define unlikely(x)   (x)
38581 +#endif
38582 +
38583 +/* Define if mmap is allowed. */
38584 +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MMAP)
38585 +# define ALLOW_MMAP 1
38586 +#endif
38587 +
38588 +/* Prototype strerror if we don't have it. */
38589 +#ifndef HAVE_STRERROR
38590 +char *strerror(int errno);
38591 +#endif
38592 +
38593 +/* Use nanosecond-granularity timestamps if they are enabled. */
38594 +#ifdef HAVE_NANOTIMESTAMP_ENABLED
38595 +#define HAVE_NANOTIMESTAMP 1
38596 +#endif
38597 +
38598 +#ifdef __cplusplus
38599 +
38600 +/* Provide placement new. */
38601 +#if HAVE_NEW_HDR
38602 +# include <new>
38603 +#elif HAVE_NEW_H
38604 +# include <new.h>
38605 +#else
38606 +inline void *operator new(size_t, void *v) { return v; }
38607 +#endif
38608 +
38609 +/* Prototype madvise if we have it, but not the prototype. */
38610 +#if ALLOW_MMAP && HAVE_MADVISE && !HAVE_DECL_MADVISE
38611 +extern "C" int madvise(void *addr, size_t len, int behav);
38612 +#endif
38613 +
38614 +/* Define macros that surround Click declarations. */
38615 +#ifndef CLICK_DECLS
38616 +# define CLICK_DECLS           /* */
38617 +# define CLICK_ENDDECLS                /* */
38618 +# define CLICK_USING_DECLS     /* */
38619 +# define CLICK_NAME(name)      ::name
38620 +#endif
38621 +
38622 +#endif /* __cplusplus */
38623 +
38624 +#endif /* CLICK_CONFIG_USERLEVEL_H */
38625 diff -Nurb click-1.6.0/include/click/config.h click-1.6.0-27/include/click/config.h
38626 --- click-1.6.0/include/click/config.h  1969-12-31 19:00:00.000000000 -0500
38627 +++ click-1.6.0-27/include/click/config.h       2009-01-19 15:07:24.000000000 -0500
38628 @@ -0,0 +1,168 @@
38629 +/* include/click/config.h.  Generated from config.h.in by configure.  */
38630 +/* Process this file with configure to produce config.h. -*- mode: c -*- */
38631 +#ifndef CLICK_CONFIG_H
38632 +#define CLICK_CONFIG_H
38633 +
38634 +/* Define to byte order of target machine. */
38635 +#define CLICK_BYTE_ORDER 1234
38636 +#define CLICK_BIG_ENDIAN       4321
38637 +#define CLICK_LITTLE_ENDIAN    1234
38638 +#define CLICK_NO_ENDIAN                0
38639 +
38640 +/* Define for Click memory allocation debugging. */
38641 +/* #undef CLICK_DMALLOC */
38642 +
38643 +/* Version number of package */
38644 +#define CLICK_VERSION "1.6.0"
38645 +
38646 +/* Define if PollDevice should run fast to get good benchmark numbers */
38647 +/* #undef CLICK_WARP9 */
38648 +
38649 +/* Define if you have the __builtin_clz function. */
38650 +#define HAVE___BUILTIN_CLZ 1
38651 +
38652 +/* Define if you have the __builtin_clzl function. */
38653 +#define HAVE___BUILTIN_CLZL 1
38654 +
38655 +/* Define if you have the __builtin_clzll function. */
38656 +#define HAVE___BUILTIN_CLZLL 1
38657 +
38658 +/* Define if you have the __builtin_ffs function. */
38659 +#define HAVE___BUILTIN_FFS 1
38660 +
38661 +/* Define if you have the __builtin_ffsl function. */
38662 +#define HAVE___BUILTIN_FFSL 1
38663 +
38664 +/* Define if you have the __builtin_ffsll function. */
38665 +#define HAVE___BUILTIN_FFSLL 1
38666 +
38667 +/* Define if the va_list type is addressable. */
38668 +#define HAVE_ADDRESSABLE_VA_LIST 1
38669 +
38670 +/* Define if right shift of signed integers acts by sign extension. */
38671 +#define HAVE_ARITHMETIC_RIGHT_SHIFT 1
38672 +
38673 +/* Define if the machine is indifferent to alignment. */
38674 +#define HAVE_INDIFFERENT_ALIGNMENT 1
38675 +
38676 +/* Define if you want to use Intel-specific instructions. */
38677 +/* #undef HAVE_INTEL_CPU */
38678 +
38679 +/* Define if 64-bit integer types are enabled. */
38680 +#define HAVE_INT64_TYPES 1
38681 +
38682 +/* Define if IPv6 support is enabled. */
38683 +/* #undef HAVE_IP6 */
38684 +
38685 +/* Define if IPsec support is enabled. */
38686 +/* #undef HAVE_IPSEC */
38687 +
38688 +/* Define to 1 if the system has the type `long long'. */
38689 +#define HAVE_LONG_LONG 1
38690 +
38691 +/* Define if nanosecond-granularity timestamps are enabled. */
38692 +/* #undef HAVE_NANOTIMESTAMP_ENABLED */
38693 +
38694 +/* Define if you want to use the stride scheduler. */
38695 +#define HAVE_STRIDE_SCHED 1
38696 +
38697 +/* Define to 1 since we have Strings. */
38698 +#define HAVE_STRING 1
38699 +
38700 +/* Define to 1 if the system has the type `struct timespec'. */
38701 +#define HAVE_STRUCT_TIMESPEC 1
38702 +
38703 +#ifdef HAVE_STRIDE_SCHED
38704 +/* Define if you want task scheduling to use a heap, not a linked list. */
38705 +/* #undef HAVE_TASK_HEAP */
38706 +#endif
38707 +
38708 +/* The size of a `int', as computed by sizeof. */
38709 +#define SIZEOF_INT 4
38710 +
38711 +/* The size of a `long', as computed by sizeof. */
38712 +#define SIZEOF_LONG 4
38713 +
38714 +/* The size of a `long long', as computed by sizeof. */
38715 +#define SIZEOF_LONG_LONG 8
38716 +
38717 +/* The size of a `struct timespec', as computed by sizeof. */
38718 +#define SIZEOF_STRUCT_TIMESPEC 8
38719 +
38720 +/* The size of a `struct timeval', as computed by sizeof. */
38721 +#define SIZEOF_STRUCT_TIMEVAL 8
38722 +
38723 +/* Define if you want to run multithreaded Click. */
38724 +/* #undef __MTCLICK__ */
38725 +#define NUM_CLICK_CPUS 1
38726 +
38727 +#ifndef __cplusplus
38728 +/* Define inline, if necessary. C only. */
38729 +/* #undef inline */
38730 +#endif
38731 +
38732 +#ifdef __cplusplus
38733 +/* Explicit template instances? */
38734 +#if __GNUC__ == 2 && __GNUC_MINOR__ < 90
38735 +#define EXPLICIT_TEMPLATE_INSTANCES 1
38736 +#endif
38737 +#endif /* __cplusplus */
38738 +
38739 +/* Define macros for declaring packed structures. */
38740 +#ifdef __GNUC__
38741 +#define CLICK_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
38742 +#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
38743 +#else
38744 +#define CLICK_PACKED_STRUCTURE(open, close) _Cannot_pack_structure__Use_GCC
38745 +#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close
38746 +#endif
38747 +
38748 +/* Define macro for deprecated functions. */
38749 +#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0)
38750 +#define CLICK_DEPRECATED
38751 +#else
38752 +#define CLICK_DEPRECATED __attribute__((deprecated))
38753 +#endif
38754 +
38755 +/* Define ARCH_IS_BIG_ENDIAN based on CLICK_BYTE_ORDER. */
38756 +#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
38757 +#define ARCH_IS_BIG_ENDIAN     1
38758 +#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
38759 +#define ARCH_IS_BIG_ENDIAN     0
38760 +#endif
38761 +
38762 +/* EXPORT_ELEMENT, ELEMENT_REQUIRES, ELEMENT_PROVIDES, ELEMENT_HEADER,
38763 +   ELEMENT_LIBS, and ELEMENT_MT_SAFE are noops. */
38764 +#define EXPORT_ELEMENT(x)
38765 +#define ELEMENT_REQUIRES(x)
38766 +#define ELEMENT_PROVIDES(x)
38767 +#define ELEMENT_HEADER(x)
38768 +#define ELEMENT_LIBS(x)
38769 +#define ELEMENT_MT_SAFE(x)
38770 +
38771 +/* Assume CLICK_USERLEVEL unless otherwise defined. */
38772 +#if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) && !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE)
38773 +# define CLICK_USERLEVEL 1
38774 +#endif
38775 +
38776 +/* Define stuff under a Linux module. */
38777 +#ifdef CLICK_LINUXMODULE
38778 +# include <click/config-linuxmodule.h>
38779 +#endif
38780 +
38781 +/* Define stuff under a FreeBSD module. */
38782 +#ifdef CLICK_BSDMODULE
38783 +# include <click/config-bsdmodule.h>
38784 +#endif
38785 +
38786 +/* Define stuff under nsclick. */
38787 +#ifdef CLICK_NS
38788 +# include <click/config-ns.h>
38789 +#endif
38790 +
38791 +/* Define stuff under tools or a user-level driver. */
38792 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
38793 +# include <click/config-userlevel.h>
38794 +#endif
38795 +
38796 +#endif /* CLICK_CONFIG_H */
38797 diff -Nurb click-1.6.0/include/click/cxxprotect.h click-1.6.0-27/include/click/cxxprotect.h
38798 --- click-1.6.0/include/click/cxxprotect.h      2007-07-16 19:47:50.000000000 -0400
38799 +++ click-1.6.0-27/include/click/cxxprotect.h   2009-02-11 15:24:13.000000000 -0500
38800 @@ -11,6 +11,8 @@
38801  #define namespace      xxx_namespace
38802  #endif
38803  
38804 +#define CXX_PROTECTED
38805 +
38806  #ifndef CLICK_CXX_PROTECT
38807  # ifdef __cplusplus
38808  #  define CLICK_CXX_PROTECT    extern "C" {
38809 diff -Nurb click-1.6.0/include/click/cxxprotect.h.orig click-1.6.0-27/include/click/cxxprotect.h.orig
38810 --- click-1.6.0/include/click/cxxprotect.h.orig 1969-12-31 19:00:00.000000000 -0500
38811 +++ click-1.6.0-27/include/click/cxxprotect.h.orig      2007-07-16 19:47:50.000000000 -0400
38812 @@ -0,0 +1,22 @@
38813 +#ifdef __cplusplus
38814 +#define new            xxx_new
38815 +#define this           xxx_this
38816 +#define delete         xxx_delete
38817 +#define class          xxx_class
38818 +#define virtual                xxx_virtual
38819 +#define typename       xxx_typename
38820 +#define private                xxx_private
38821 +#define protected      xxx_protected
38822 +#define public         xxx_public
38823 +#define namespace      xxx_namespace
38824 +#endif
38825 +
38826 +#ifndef CLICK_CXX_PROTECT
38827 +# ifdef __cplusplus
38828 +#  define CLICK_CXX_PROTECT    extern "C" {
38829 +#  define CLICK_CXX_UNPROTECT  }
38830 +# else
38831 +#  define CLICK_CXX_PROTECT    /* nothing */
38832 +#  define CLICK_CXX_UNPROTECT  /* nothing */
38833 +# endif
38834 +#endif
38835 diff -Nurb click-1.6.0/include/click/cxxunprotect.h click-1.6.0-27/include/click/cxxunprotect.h
38836 --- click-1.6.0/include/click/cxxunprotect.h    2007-07-16 19:47:50.000000000 -0400
38837 +++ click-1.6.0-27/include/click/cxxunprotect.h 2009-02-11 15:24:33.000000000 -0500
38838 @@ -1,3 +1,4 @@
38839 +#undef CXX_PROTECTED
38840  #ifdef __cplusplus
38841  #undef new
38842  #undef this
38843 diff -Nurb click-1.6.0/include/click/cxxunprotect.h.orig click-1.6.0-27/include/click/cxxunprotect.h.orig
38844 --- click-1.6.0/include/click/cxxunprotect.h.orig       1969-12-31 19:00:00.000000000 -0500
38845 +++ click-1.6.0-27/include/click/cxxunprotect.h.orig    2007-07-16 19:47:50.000000000 -0400
38846 @@ -0,0 +1,12 @@
38847 +#ifdef __cplusplus
38848 +#undef new
38849 +#undef this
38850 +#undef delete
38851 +#undef class
38852 +#undef virtual
38853 +#undef typename
38854 +#undef private
38855 +#undef protected
38856 +#undef public
38857 +#undef namespace
38858 +#endif
38859 diff -Nurb click-1.6.0/include/click/glue.hh.orig click-1.6.0-27/include/click/glue.hh.orig
38860 --- click-1.6.0/include/click/glue.hh.orig      1969-12-31 19:00:00.000000000 -0500
38861 +++ click-1.6.0-27/include/click/glue.hh.orig   2007-09-12 18:24:50.000000000 -0400
38862 @@ -0,0 +1,420 @@
38863 +// -*- c-basic-offset: 4; related-file-name: "../../lib/glue.cc" -*-
38864 +#ifndef CLICK_GLUE_HH
38865 +#define CLICK_GLUE_HH
38866 +// Removes many common #include <header>s and abstracts differences between
38867 +// kernel and user space, and between operating systems.
38868 +
38869 +// HEADERS
38870 +
38871 +#if CLICK_LINUXMODULE
38872 +
38873 +# define _LOOSE_KERNEL_NAMES 1 /* define ino_t, off_t, etc. */
38874 +# undef __KERNEL_STRICT_NAMES
38875 +# ifndef __OPTIMIZE__
38876 +#  define __OPTIMIZE__ 1 /* get ntohl() macros. otherwise undefined. */
38877 +# endif
38878 +# include <click/cxxprotect.h>
38879 +CLICK_CXX_PROTECT
38880 +# ifdef WANT_MOD_USE_COUNT
38881 +#  define __NO_VERSION__
38882 +#  include <linux/module.h>
38883 +#  define HAVE_MOD_USE_COUNT 1
38884 +# endif
38885 +# include <linux/kernel.h>
38886 +# include <linux/version.h>
38887 +# include <linux/string.h>
38888 +# include <linux/skbuff.h>
38889 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
38890 +#  include <linux/malloc.h>
38891 +#  include <linux/vmalloc.h>
38892 +#  include <linux/interrupt.h>
38893 +# else
38894 +#  include <linux/hardirq.h>
38895 +# endif
38896 +# include <linux/ctype.h>
38897 +# include <linux/time.h>
38898 +# include <linux/errno.h>
38899 +CLICK_CXX_UNPROTECT
38900 +# include <click/cxxunprotect.h>
38901 +
38902 +#elif CLICK_BSDMODULE
38903 +
38904 +# include <click/cxxprotect.h>
38905 +CLICK_CXX_PROTECT
38906 +# include <sys/ctype.h>
38907 +# include <sys/systm.h>
38908 +# include <sys/time.h>
38909 +# include <sys/param.h>
38910 +# include <sys/kernel.h>
38911 +# include <sys/mbuf.h>
38912 +# include <sys/malloc.h>
38913 +# include <sys/libkern.h>
38914 +# include <sys/proc.h>
38915 +# include <sys/sysproto.h>
38916 +CLICK_CXX_UNPROTECT
38917 +# include <click/cxxunprotect.h>
38918 +
38919 +#else /* CLICK_USERLEVEL */
38920 +
38921 +# include <stdio.h>
38922 +# include <stdlib.h>
38923 +# include <string.h>
38924 +# include <ctype.h>
38925 +# include <errno.h>
38926 +# include <limits.h>
38927 +# include <sys/socket.h>
38928 +# include <netinet/in.h>
38929 +# include <sys/time.h>
38930 +# ifdef CLICK_NS
38931 +extern "C" int simclick_gettimeofday(struct timeval *);
38932 +# endif
38933 +
38934 +#endif
38935 +
38936 +
38937 +// DEBUGGING OUTPUT
38938 +extern "C" {
38939 +void click_chatter(const char *fmt, ...);
38940 +}
38941 +
38942 +
38943 +// DEBUG MALLOC
38944 +
38945 +#if CLICK_DMALLOC && (CLICK_LINUXMODULE || CLICK_BSDMODULE)
38946 +extern uint32_t click_dmalloc_where;
38947 +# 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)
38948 +#else
38949 +# define CLICK_DMALLOC_REG(s)
38950 +#endif
38951 +
38952 +
38953 +// LALLOC
38954 +
38955 +#if CLICK_LINUXMODULE
38956 +# define CLICK_LALLOC(size)    (click_lalloc((size)))
38957 +# define CLICK_LFREE(p, size)  (click_lfree((p), (size)))
38958 +extern "C" {
38959 +void *click_lalloc(size_t size);
38960 +void click_lfree(volatile void *p, size_t size);
38961 +}
38962 +#else
38963 +# define CLICK_LALLOC(size)    ((void *)(new uint8_t[(size)]))
38964 +# define CLICK_LFREE(p, size)  delete[] ((uint8_t *)(p))
38965 +#endif
38966 +
38967 +
38968 +// RANDOMNESS
38969 +
38970 +CLICK_DECLS
38971 +extern void click_random_srandom(); // srand(), but use true randomness
38972 +CLICK_ENDDECLS
38973 +
38974 +#if CLICK_LINUXMODULE
38975 +extern "C" {
38976 +extern uint32_t click_random_seed;
38977 +extern void srandom(uint32_t);
38978 +#define        RAND_MAX        2147483647
38979 +inline uint32_t
38980 +random()
38981 +{
38982 +    click_random_seed = click_random_seed*69069L + 1;
38983 +    return (click_random_seed ^ jiffies) & RAND_MAX;
38984 +}
38985 +}
38986 +#endif
38987 +
38988 +
38989 +// SORTING
38990 +
38991 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk);
38992 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *));
38993 +
38994 +
38995 +// OTHER
38996 +
38997 +#if CLICK_LINUXMODULE
38998 +
38999 +// current processor
39000 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
39001 +#  define click_current_processor()    (current_thread_info()->cpu)
39002 +# else
39003 +#  define click_current_processor()    (current->processor)
39004 +# endif
39005 +
39006 +// provide a definition for net_device for kernel compatibility
39007 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
39008 +typedef struct device net_device;
39009 +#  define dev_get_by_name dev_get
39010 +# endif
39011 +
39012 +extern "C" {
39013 +
39014 +long strtol(const char *, char **, int);
39015 +
39016 +inline unsigned long
39017 +strtoul(const char *nptr, char **endptr, int base)
39018 +{
39019 +    return simple_strtoul(nptr, endptr, base);
39020 +}
39021 +
39022 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && __GNUC__ == 2 && __GNUC_MINOR__ == 96
39023 +int click_strcmp(const char *, const char *);
39024 +
39025 +inline int
39026 +strcmp(const char *a, const char *b)
39027 +{
39028 +    return click_strcmp(a, b);
39029 +}
39030 +# endif
39031 +
39032 +}
39033 +
39034 +#elif CLICK_BSDMODULE
39035 +
39036 +/* Char-type glue */
39037 +
39038 +# define _U    0x01    /* upper */
39039 +# define _L    0x02    /* lower */
39040 +# define _D    0x04    /* digit */
39041 +# define _C    0x08    /* cntrl */
39042 +# define _P    0x10    /* punct */
39043 +# define _S    0x20    /* white space (space/lf/tab) */
39044 +# define _X    0x40    /* hex digit */
39045 +# define _SP   0x80    /* hard space (0x20) */
39046 +
39047 +extern unsigned char _ctype[];
39048 +
39049 +# define __ismask(x)   (_ctype[(int)(unsigned char)(x)])
39050 +# define isalnum(c)    ((__ismask(c)&(_U|_L|_D)) != 0)
39051 +
39052 +# define strchr(s, c)  index(s, c)
39053 +
39054 +# define memmove(dst, src, len)                bcopy((src), (dst), (len))
39055 +
39056 +typedef struct ifnet net_device;
39057 +
39058 +#else /* not CLICK_LINUXMODULE || CLICK_BSDMODULE */
39059 +
39060 +// provide a definition for net_device
39061 +typedef struct device net_device;
39062 +
39063 +#endif /* CLICK_LINUXMODULE */
39064 +
39065 +
39066 +// COMPILE-TIME ASSERTION CHECKING
39067 +
39068 +#define static_assert(c) switch (c) case 0: case (c):
39069 +
39070 +
39071 +// TIMEVALS AND JIFFIES
39072 +
39073 +#if CLICK_LINUXMODULE
39074 +# define click_gettimeofday(tvp)       (do_gettimeofday(tvp))
39075 +# define click_jiffies()               ((unsigned)jiffies)
39076 +# define CLICK_HZ                      HZ
39077 +#elif CLICK_BSDMODULE
39078 +# define click_gettimeofday(tvp)       (getmicrotime(tvp))
39079 +# define click_jiffies()               ((unsigned)ticks)
39080 +# define CLICK_HZ                      hz
39081 +#else
39082 +#ifndef CLICK_NS
39083 +# define click_gettimeofday(tvp)       (gettimeofday(tvp, (struct timezone *)0))
39084 +#else
39085 +# define click_gettimeofday(tvp)       (simclick_gettimeofday(tvp))
39086 +#endif
39087 +CLICK_DECLS
39088 +unsigned click_jiffies();
39089 +CLICK_ENDDECLS
39090 +# define CLICK_HZ                      100
39091 +#endif
39092 +
39093 +
39094 +// TIMEVAL OPERATIONS
39095 +
39096 +#ifndef timercmp
39097 +// Convenience macros for operations on timevals.
39098 +// NOTE: 'timercmp' does not work for >= or <=.
39099 +# define timerisset(tvp)       ((tvp)->tv_sec || (tvp)->tv_usec)
39100 +# define timerclear(tvp)       ((tvp)->tv_sec = (tvp)->tv_usec = 0)
39101 +# define timercmp(a, b, CMP)                   \
39102 +  (((a)->tv_sec == (b)->tv_sec) ?              \
39103 +   ((a)->tv_usec CMP (b)->tv_usec) :           \
39104 +   ((a)->tv_sec CMP (b)->tv_sec))
39105 +#endif
39106 +#ifndef timeradd
39107 +# define timeradd(a, b, result)                                                      \
39108 +  do {                                                                       \
39109 +    (result)->tv_sec = (a)->tv_sec + (b)->tv_sec;                            \
39110 +    (result)->tv_usec = (a)->tv_usec + (b)->tv_usec;                         \
39111 +    if ((result)->tv_usec >= 1000000)                                        \
39112 +      {                                                                              \
39113 +       ++(result)->tv_sec;                                                   \
39114 +       (result)->tv_usec -= 1000000;                                         \
39115 +      }                                                                              \
39116 +  } while (0)
39117 +#endif
39118 +#ifndef timersub
39119 +# define timersub(a, b, result)                                                      \
39120 +  do {                                                                       \
39121 +    (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;                            \
39122 +    (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;                         \
39123 +    if ((result)->tv_usec < 0) {                                             \
39124 +      --(result)->tv_sec;                                                    \
39125 +      (result)->tv_usec += 1000000;                                          \
39126 +    }                                                                        \
39127 +  } while (0)
39128 +#endif
39129 +
39130 +#ifndef CLICK_TIMEVAL_OPERATORS
39131 +
39132 +inline struct timeval
39133 +make_timeval(int sec, int usec)
39134 +{
39135 +    struct timeval tv;
39136 +    tv.tv_sec = sec;
39137 +    tv.tv_usec = usec;
39138 +    return tv;
39139 +}
39140 +
39141 +inline bool
39142 +operator==(const struct timeval &a, const struct timeval &b)
39143 +{
39144 +    return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec;
39145 +}
39146 +
39147 +inline bool
39148 +operator!=(const struct timeval &a, const struct timeval &b)
39149 +{
39150 +    return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec;
39151 +}
39152 +
39153 +inline bool
39154 +operator<(const struct timeval &a, const struct timeval &b)
39155 +{
39156 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec);
39157 +}
39158 +
39159 +inline bool
39160 +operator<=(const struct timeval &a, const struct timeval &b)
39161 +{
39162 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec);
39163 +}
39164 +
39165 +inline bool
39166 +operator>=(const struct timeval &a, const struct timeval &b)
39167 +{
39168 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec);
39169 +}
39170 +
39171 +inline bool
39172 +operator>(const struct timeval &a, const struct timeval &b)
39173 +{
39174 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec);
39175 +}
39176 +
39177 +inline struct timeval &
39178 +operator+=(struct timeval &a, const struct timeval &b)
39179 +{
39180 +    a.tv_sec += b.tv_sec;
39181 +    a.tv_usec += b.tv_usec;
39182 +    if (a.tv_usec >= 1000000) {
39183 +       a.tv_sec++;
39184 +       a.tv_usec -= 1000000;
39185 +    }
39186 +    return a;
39187 +}
39188 +
39189 +inline struct timeval &
39190 +operator-=(struct timeval &a, const struct timeval &b)
39191 +{
39192 +    a.tv_sec -= b.tv_sec;
39193 +    a.tv_usec -= b.tv_usec;
39194 +    if (a.tv_usec < 0) {
39195 +       a.tv_sec--;
39196 +       a.tv_usec += 1000000;
39197 +    }
39198 +    return a;
39199 +}
39200 +
39201 +inline struct timeval
39202 +operator+(struct timeval a, const struct timeval &b)
39203 +{
39204 +    a += b;
39205 +    return a;
39206 +}
39207 +
39208 +inline struct timeval
39209 +operator-(struct timeval a, const struct timeval &b)
39210 +{
39211 +    a -= b;
39212 +    return a;
39213 +}
39214 +
39215 +#endif
39216 +
39217 +CLICK_DECLS
39218 +class StringAccum;
39219 +StringAccum &operator<<(StringAccum &, const struct timeval &);
39220 +CLICK_ENDDECLS
39221 +
39222 +
39223 +// BYTE ORDER
39224 +
39225 +#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
39226 +# define le16_to_cpu(x) (x)
39227 +# define cpu_to_le16(x) (x)
39228 +# define le32_to_cpu(x) (x)
39229 +# define cpu_to_le32(x) (x)
39230 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && defined(__APPLE__)
39231 +# include <machine/byte_order.h>
39232 +# define le16_to_cpu(x) NXSwapShort((x))
39233 +# define cpu_to_le16(x) NXSwapShort((x))
39234 +# define le32_to_cpu(x) NXSwapInt((x))
39235 +# define cpu_to_le32(x) NXSwapInt((x))
39236 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && HAVE_BYTESWAP_H
39237 +# include <byteswap.h>
39238 +# define le16_to_cpu(x) bswap_16((x))
39239 +# define cpu_to_le16(x) bswap_16((x))
39240 +# define le32_to_cpu(x) bswap_32((x))
39241 +# define cpu_to_le32(x) bswap_32((x))
39242 +#else
39243 +/* leave them undefined */
39244 +#endif
39245 +
39246 +
39247 +// CYCLE COUNTS
39248 +
39249 +CLICK_DECLS
39250 +
39251 +#if HAVE_INT64_TYPES
39252 +typedef uint64_t click_cycles_t;
39253 +#else
39254 +typedef uint32_t click_cycles_t;
39255 +#endif
39256 +
39257 +inline click_cycles_t
39258 +click_get_cycles()
39259 +{
39260 +#if CLICK_LINUXMODULE && HAVE_INT64_TYPES && __i386__
39261 +    uint64_t x;
39262 +    __asm__ __volatile__ ("rdtsc" : "=A" (x));
39263 +    return x;
39264 +#elif CLICK_LINUXMODULE && HAVE_INT64_TYPES && __x86_64__
39265 +    uint32_t xlo, xhi;
39266 +    __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi));
39267 +    return xlo | (((uint64_t) xhi) << 32);
39268 +#elif CLICK_LINUXMODULE && __i386__
39269 +    uint32_t xlo, xhi;
39270 +    __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi));
39271 +    return xhi ? 0xFFFFFFFF : xlo;
39272 +#elif CLICK_BSDMODULE
39273 +    return rdtsc();
39274 +#else
39275 +    // add other architectures here
39276 +    return 0;
39277 +#endif
39278 +}
39279 +
39280 +CLICK_ENDDECLS
39281 +
39282 +#endif
39283 diff -Nurb click-1.6.0/include/click/packet.hh click-1.6.0-27/include/click/packet.hh
39284 --- click-1.6.0/include/click/packet.hh 2007-09-07 16:11:26.000000000 -0400
39285 +++ click-1.6.0-27/include/click/packet.hh      2009-01-27 10:13:43.000000000 -0500
39286 @@ -452,7 +452,7 @@
39287  Packet::mac_header() const
39288  {
39289  #if CLICK_LINUXMODULE
39290 -    return skb()->mac.raw;
39291 +    return skb_mac_header(skb());
39292  #else
39293      return _mac;
39294  #endif
39295 @@ -462,7 +462,7 @@
39296  Packet::network_header() const
39297  {
39298  #if CLICK_LINUXMODULE
39299 -    return skb()->nh.raw;
39300 +    return skb_network_header(skb());
39301  #else
39302      return _nh;
39303  #endif
39304 @@ -472,7 +472,7 @@
39305  Packet::transport_header() const
39306  {
39307  #if CLICK_LINUXMODULE
39308 -    return skb()->h.raw;
39309 +    return skb_transport_header(skb());
39310  #else
39311      return _h;
39312  #endif
39313 @@ -567,7 +567,7 @@
39314  # if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
39315      memcpy(&skb()->stamp, &timestamp, 8);
39316  # else
39317 -    skb_set_timestamp(skb(), &timestamp.timeval());
39318 +    memcpy(&skb()->tstamp, &timestamp, 8);
39319  # endif
39320  #else
39321      _timestamp = timestamp;
39322 @@ -904,7 +904,7 @@
39323  Packet::set_mac_header(const unsigned char *h)
39324  {
39325  #if CLICK_LINUXMODULE  /* Linux kernel module */
39326 -    skb()->mac.raw = const_cast<unsigned char *>(h);
39327 +    skb()->mac_header = const_cast<unsigned char *>(h);
39328  #else                          /* User-space and BSD kernel module */
39329      _mac = const_cast<unsigned char *>(h);
39330  #endif
39331 @@ -914,8 +914,8 @@
39332  Packet::set_mac_header(const unsigned char *h, uint32_t len)
39333  {
39334  #if CLICK_LINUXMODULE  /* Linux kernel module */
39335 -    skb()->mac.raw = const_cast<unsigned char *>(h);
39336 -    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
39337 +    skb()->mac_header = const_cast<unsigned char *>(h);
39338 +    skb()->network_header = const_cast<unsigned char *>(h) + len;
39339  #else                          /* User-space and BSD kernel module */
39340      _mac = const_cast<unsigned char *>(h);
39341      _nh = const_cast<unsigned char *>(h) + len;
39342 @@ -956,8 +956,8 @@
39343  Packet::set_network_header(const unsigned char *h, uint32_t len)
39344  {
39345  #if CLICK_LINUXMODULE  /* Linux kernel module */
39346 -    skb()->nh.raw = const_cast<unsigned char *>(h);
39347 -    skb()->h.raw = const_cast<unsigned char *>(h) + len;
39348 +    skb()->network_header = const_cast<unsigned char *>(h);
39349 +    skb()->transport_header = const_cast<unsigned char *>(h) + len;
39350  #else                          /* User-space and BSD kernel module */
39351      _nh = const_cast<unsigned char *>(h);
39352      _h = const_cast<unsigned char *>(h) + len;
39353 @@ -968,7 +968,7 @@
39354  Packet::set_network_header_length(uint32_t len)
39355  {
39356  #if CLICK_LINUXMODULE  /* Linux kernel module */
39357 -    skb()->h.raw = skb()->nh.raw + len;
39358 +    skb()->transport_header = skb()->network_header + len;
39359  #else                          /* User-space and BSD kernel module */
39360      _h = _nh + len;
39361  #endif
39362 @@ -1076,9 +1076,9 @@
39363    _h += (_h ? shift : 0);
39364  #else
39365    struct sk_buff *mskb = skb();
39366 -  mskb->mac.raw += (mskb->mac.raw ? shift : 0);
39367 -  mskb->nh.raw += (mskb->nh.raw ? shift : 0);
39368 -  mskb->h.raw += (mskb->h.raw ? shift : 0);
39369 +  mskb->mac_header += (mskb->mac_header ? shift : 0);
39370 +  mskb->network_header += (mskb->network_header ? shift : 0);
39371 +  mskb->transport_header += (mskb->transport_header ? shift : 0);
39372  #endif
39373  }
39374  
39375 diff -Nurb click-1.6.0/include/click/packet.hh.orig click-1.6.0-27/include/click/packet.hh.orig
39376 --- click-1.6.0/include/click/packet.hh.orig    1969-12-31 19:00:00.000000000 -0500
39377 +++ click-1.6.0-27/include/click/packet.hh.orig 2007-09-07 16:11:26.000000000 -0400
39378 @@ -0,0 +1,1171 @@
39379 +// -*- related-file-name: "../../lib/packet.cc" -*-
39380 +#ifndef CLICK_PACKET_HH
39381 +#define CLICK_PACKET_HH
39382 +#include <click/ipaddress.hh>
39383 +#include <click/ip6address.hh>
39384 +#include <click/glue.hh>
39385 +#include <click/timestamp.hh>
39386 +#if CLICK_LINUXMODULE
39387 +# include <click/skbmgr.hh>
39388 +#else
39389 +# include <click/atomic.hh>
39390 +#endif
39391 +struct click_ether;
39392 +struct click_ip;
39393 +struct click_icmp;
39394 +struct click_ip6;
39395 +struct click_tcp;
39396 +struct click_udp;
39397 +
39398 +#if CLICK_NS
39399 +# include <click/simclick.h>
39400 +#endif
39401 +
39402 +
39403 +CLICK_DECLS
39404 +
39405 +class IP6Address;
39406 +class WritablePacket;
39407 +
39408 +class Packet { public:
39409 +
39410 +  // PACKET CREATION
39411 +  enum { DEFAULT_HEADROOM = 28, MIN_BUFFER_LENGTH = 64 };
39412 +  
39413 +  static WritablePacket *make(uint32_t);
39414 +  static WritablePacket *make(const char *, uint32_t);
39415 +  static WritablePacket *make(const unsigned char *, uint32_t);
39416 +  static WritablePacket *make(uint32_t, const unsigned char *, uint32_t, uint32_t);
39417 +  
39418 +#if CLICK_LINUXMODULE
39419 +  // Packet::make(sk_buff *) wraps a Packet around an existing sk_buff.
39420 +  // Packet now owns the sk_buff (ie we don't increment skb->users).
39421 +  static Packet *make(struct sk_buff *);
39422 +  struct sk_buff *skb()                        { return (struct sk_buff *)this; }
39423 +  const struct sk_buff *skb() const    { return (const struct sk_buff*)this; }
39424 +#elif CLICK_BSDMODULE
39425 +  // Packet::make(mbuf *) wraps a Packet around an existing mbuf.
39426 +  // Packet now owns the mbuf.
39427 +  static Packet *make(struct mbuf *);
39428 +  struct mbuf *m()                     { return _m; }
39429 +  const struct mbuf *m() const         { return (const struct mbuf *)_m; }
39430 +  struct mbuf *steal_m();
39431 +#else                  /* User-space */
39432 +  static WritablePacket *make(unsigned char *, uint32_t, void (*destructor)(unsigned char *, size_t));
39433 +#endif
39434 +
39435 +    inline void kill();
39436 +
39437 +    inline bool shared() const;
39438 +    Packet *clone();
39439 +    WritablePacket *uniqueify();
39440 +  
39441 +    inline const unsigned char *data() const;
39442 +    inline const unsigned char *end_data() const;
39443 +    inline uint32_t length() const;
39444 +    inline uint32_t headroom() const;
39445 +    inline uint32_t tailroom() const;
39446 +    inline const unsigned char *buffer() const;
39447 +    inline const unsigned char *end_buffer() const;
39448 +    inline uint32_t buffer_length() const;
39449 +  
39450 +    WritablePacket *push(uint32_t nb); // Add more space before packet.
39451 +    WritablePacket *push_mac_header(uint32_t nb);
39452 +    Packet *nonunique_push(uint32_t nb);
39453 +    void pull(uint32_t nb);            // Get rid of initial bytes.
39454 +    WritablePacket *put(uint32_t nb);  // Add bytes to end of pkt.
39455 +    Packet *nonunique_put(uint32_t nb);
39456 +    void take(uint32_t nb);            // Delete bytes from end of pkt.
39457 +
39458 +    Packet *shift_data(int offset, bool free_on_failure = true);
39459 +#if CLICK_USERLEVEL
39460 +    inline void shrink_data(const unsigned char *, uint32_t length);
39461 +    inline void change_headroom_and_length(uint32_t headroom, uint32_t length);
39462 +#endif
39463 +
39464 +    // HEADER ANNOTATIONS
39465 +    inline const unsigned char *mac_header() const;
39466 +    inline void set_mac_header(const unsigned char *);
39467 +    inline void set_mac_header(const unsigned char *, uint32_t);
39468 +    inline int mac_header_offset() const;
39469 +    inline uint32_t mac_header_length() const;
39470 +    inline int mac_length() const;
39471 +
39472 +    inline const unsigned char *network_header() const;
39473 +    inline void set_network_header(const unsigned char *, uint32_t);
39474 +    inline void set_network_header_length(uint32_t);
39475 +    inline int network_header_offset() const;
39476 +    inline uint32_t network_header_length() const;
39477 +    inline int network_length() const;
39478 +
39479 +    inline const unsigned char *transport_header() const;
39480 +    inline int transport_header_offset() const;
39481 +    inline int transport_length() const;
39482 +
39483 +    // CONVENIENCE HEADER ANNOTATIONS
39484 +    inline const click_ether *ether_header() const;
39485 +    inline void set_ether_header(const click_ether *);
39486 +  
39487 +    inline const click_ip *ip_header() const;
39488 +    inline void set_ip_header(const click_ip *, uint32_t);
39489 +    inline int ip_header_offset() const;
39490 +    inline uint32_t ip_header_length() const;
39491 +
39492 +    inline const click_ip6 *ip6_header() const;
39493 +    inline void set_ip6_header(const click_ip6 *);
39494 +    inline void set_ip6_header(const click_ip6 *, uint32_t);
39495 +    inline int ip6_header_offset() const;
39496 +    inline uint32_t ip6_header_length() const;
39497 +
39498 +    inline const click_icmp *icmp_header() const;
39499 +    inline const click_tcp *tcp_header() const;
39500 +    inline const click_udp *udp_header() const;
39501 +
39502 +    // LINKS
39503 +    inline Packet *next() const;
39504 +    inline Packet *&next();
39505 +    inline void set_next(Packet *p);
39506 +  
39507 +    // ANNOTATIONS
39508 +
39509 + private:
39510 +  struct Anno;
39511 +#if CLICK_LINUXMODULE  /* Linux kernel module */
39512 +  const Anno *anno() const             { return (const Anno *)skb()->cb; }
39513 +  Anno *anno()                         { return (Anno *)skb()->cb; }
39514 +#else                          /* User-space and BSD kernel module */
39515 +  const Anno *anno() const             { return (const Anno *)_cb; }
39516 +  Anno *anno()                         { return (Anno *)_cb; }
39517 +#endif
39518 +  public:
39519 +
39520 +    enum PacketType {          // must agree with if_packet.h
39521 +       HOST = 0, BROADCAST = 1, MULTICAST = 2, OTHERHOST = 3, OUTGOING = 4,
39522 +       LOOPBACK = 5, FASTROUTE = 6
39523 +    };
39524 +
39525 +    enum { ADDR_ANNO_SIZE = 16 };
39526 +
39527 +    uint8_t *addr_anno()                       { return anno()->addr.c; }
39528 +    const uint8_t *addr_anno() const   { return anno()->addr.c; }
39529 +    IPAddress dst_ip_anno() const;
39530 +    void set_dst_ip_anno(IPAddress);
39531 +    const IP6Address &dst_ip6_anno() const;
39532 +    void set_dst_ip6_anno(const IP6Address &);
39533 +
39534 +    inline const Timestamp &timestamp_anno() const;
39535 +    inline Timestamp &timestamp_anno();
39536 +    inline void set_timestamp_anno(const Timestamp &);
39537 +
39538 +    inline net_device *device_anno() const;
39539 +    inline void set_device_anno(net_device *);
39540 +
39541 +    inline PacketType packet_type_anno() const;
39542 +    inline void set_packet_type_anno(PacketType);
39543 +    
39544 +#if CLICK_LINUXMODULE
39545 +# ifdef HAVE_INT64_TYPES
39546 +  uint64_t perfctr_anno() const                { return anno()->perfctr; }
39547 +  void set_perfctr_anno(uint64_t pc)   { anno()->perfctr = pc; }
39548 +# endif
39549 +
39550 +#else                  /* User-space and BSD kernel module */
39551 +
39552 +#if CLICK_NS
39553 +  class SimPacketinfoWrapper {
39554 +  public:
39555 +    simclick_simpacketinfo _pinfo;
39556 +    SimPacketinfoWrapper() {
39557 +      // The uninitialized value for the simulator packet data can't be 
39558 +      // all zeros (0 is a valid packet id) or random junk out of memory
39559 +      // since the simulator will look at this info to see if the packet
39560 +      // was originally generated by it. Accidental collisions with other
39561 +      // packet IDs or bogus packet IDs can cause weird things to happen. So we
39562 +      // set it to all -1 here to keep the simulator from getting confused.
39563 +      memset(&_pinfo,-1,sizeof(_pinfo));
39564 +    }
39565 +  };
39566 +  simclick_simpacketinfo*  get_sim_packetinfo() {
39567 +    return &(_sim_packetinfo._pinfo);
39568 +  }
39569 +  void set_sim_packetinfo(simclick_simpacketinfo* pinfo) { 
39570 +    _sim_packetinfo._pinfo = *pinfo;
39571 +  }
39572 +#endif
39573 +#endif
39574 +
39575 +  enum { USER_ANNO_SIZE = 24,
39576 +        USER_ANNO_US_SIZE = 12,
39577 +        USER_ANNO_S_SIZE = 12,
39578 +        USER_ANNO_U_SIZE = 6,
39579 +        USER_ANNO_I_SIZE = 6 };
39580 +  
39581 +  uint8_t user_anno_c(int i) const     { return anno()->user.c[i]; }
39582 +  void set_user_anno_c(int i, uint8_t v) { anno()->user.c[i] = v; }
39583 +  uint16_t user_anno_us(int i) const   { return anno()->user.us[i]; }
39584 +  void set_user_anno_us(int i, uint16_t v) { anno()->user.us[i] = v; }
39585 +  int16_t user_anno_s(int i) const     { return anno()->user.us[i]; }
39586 +  void set_user_anno_s(int i, int16_t v) { anno()->user.s[i] = v; }
39587 +  uint32_t user_anno_u(int i) const    { return anno()->user.u[i]; }
39588 +  void set_user_anno_u(int i, uint32_t v) { anno()->user.u[i] = v; }
39589 +  int32_t user_anno_i(int i) const     { return anno()->user.i[i]; }
39590 +  void set_user_anno_i(int i, int32_t v) { anno()->user.i[i] = v; }
39591 +
39592 +  const uint8_t *all_user_anno() const { return &anno()->user.c[0]; }
39593 +  uint8_t *all_user_anno()             { return &anno()->user.c[0]; }
39594 +  const uint32_t *all_user_anno_u() const { return &anno()->user.u[0]; }
39595 +  uint32_t *all_user_anno_u()          { return &anno()->user.u[0]; }
39596 +  
39597 +  void clear_annotations();
39598 +  void copy_annotations(const Packet *);
39599 +
39600 +    inline const unsigned char *buffer_data() const CLICK_DEPRECATED;
39601 +  
39602 +  private:
39603 +
39604 +    // Anno must fit in sk_buff's char cb[48].
39605 +    struct Anno {
39606 +       union {
39607 +           char ch[ADDR_ANNO_SIZE];
39608 +           uint8_t c[ADDR_ANNO_SIZE];
39609 +           uint32_t ip4;
39610 +       } addr;
39611 +    
39612 +       union {
39613 +           uint8_t c[USER_ANNO_SIZE];
39614 +           uint16_t us[USER_ANNO_US_SIZE];
39615 +           int16_t s[USER_ANNO_S_SIZE];
39616 +           uint32_t u[USER_ANNO_U_SIZE];
39617 +           int32_t i[USER_ANNO_I_SIZE];
39618 +       } user;
39619 +       // flag allocations: see packet_anno.hh
39620 +    
39621 +#if (CLICK_LINUXMODULE || CLICK_BSDMODULE) && defined(HAVE_INT64_TYPES)
39622 +       uint64_t perfctr;
39623 +#endif
39624 +    };
39625 +
39626 +#if !CLICK_LINUXMODULE
39627 +    // User-space and BSD kernel module implementations.
39628 +    atomic_uint32_t _use_count;
39629 +    Packet *_data_packet;
39630 +    /* mimic Linux sk_buff */
39631 +    unsigned char *_head; /* start of allocated buffer */
39632 +    unsigned char *_data; /* where the packet starts */
39633 +    unsigned char *_tail; /* one beyond end of packet */
39634 +    unsigned char *_end;  /* one beyond end of allocated buffer */
39635 +# if CLICK_USERLEVEL
39636 +    void (*_destructor)(unsigned char *, size_t);
39637 +# endif
39638 +    unsigned char _cb[48];
39639 +    unsigned char *_mac;
39640 +    unsigned char *_nh;
39641 +    unsigned char *_h;
39642 +    PacketType _pkt_type;
39643 +    Timestamp _timestamp;
39644 +# if CLICK_BSDMODULE
39645 +    struct mbuf *_m;
39646 +# endif
39647 +    Packet *_next;
39648 +# if CLICK_NS
39649 +    SimPacketinfoWrapper _sim_packetinfo;
39650 +# endif
39651 +#endif
39652 +  
39653 +  Packet();
39654 +  Packet(const Packet &);
39655 +  ~Packet();
39656 +  Packet &operator=(const Packet &);
39657 +
39658 +#if !CLICK_LINUXMODULE
39659 +  Packet(int, int, int)                        { }
39660 +  static WritablePacket *make(int, int, int);
39661 +  bool alloc_data(uint32_t, uint32_t, uint32_t);
39662 +#endif
39663 +#if CLICK_BSDMODULE
39664 +  static void assimilate_mbuf(Packet *p);
39665 +  void assimilate_mbuf();
39666 +#endif
39667 +
39668 +  inline void shift_header_annotations(int32_t shift);
39669 +  WritablePacket *expensive_uniqueify(int32_t extra_headroom, int32_t extra_tailroom, bool free_on_failure);
39670 +  WritablePacket *expensive_push(uint32_t nbytes);
39671 +  WritablePacket *expensive_put(uint32_t nbytes);
39672 +  
39673 +  friend class WritablePacket;
39674 +
39675 +};
39676 +
39677 +
39678 +class WritablePacket : public Packet { public:
39679 +  
39680 +    inline unsigned char *data() const;
39681 +    inline unsigned char *end_data() const;
39682 +    inline unsigned char *buffer() const;
39683 +    inline unsigned char *end_buffer() const;
39684 +    inline unsigned char *mac_header() const;
39685 +    inline click_ether *ether_header() const;
39686 +    inline unsigned char *network_header() const;
39687 +    inline click_ip *ip_header() const;
39688 +    inline click_ip6 *ip6_header() const;
39689 +    inline unsigned char *transport_header() const;
39690 +    inline click_icmp *icmp_header() const;
39691 +    inline click_tcp *tcp_header() const;
39692 +    inline click_udp *udp_header() const;
39693 +
39694 +    inline unsigned char *buffer_data() const CLICK_DEPRECATED;
39695 +    
39696 + private:
39697 +
39698 +    WritablePacket()                           { }
39699 +    WritablePacket(const Packet &)             { }
39700 +    ~WritablePacket()                          { }
39701 +
39702 +    friend class Packet;
39703 +  
39704 +};
39705 +
39706 +
39707 +
39708 +inline const unsigned char *
39709 +Packet::data() const
39710 +{
39711 +#if CLICK_LINUXMODULE
39712 +    return skb()->data;
39713 +#else
39714 +    return _data;
39715 +#endif
39716 +}
39717 +
39718 +inline const unsigned char *
39719 +Packet::end_data() const
39720 +{
39721 +#if CLICK_LINUXMODULE
39722 +    return skb()->tail;
39723 +#else
39724 +    return _tail;
39725 +#endif
39726 +}
39727 +
39728 +inline uint32_t
39729 +Packet::length() const
39730 +{
39731 +#if CLICK_LINUXMODULE
39732 +    return skb()->len;
39733 +#else
39734 +    return _tail - _data;
39735 +#endif
39736 +}
39737 +
39738 +inline uint32_t
39739 +Packet::headroom() const
39740 +{
39741 +#if CLICK_LINUXMODULE
39742 +    return skb()->data - skb()->head;
39743 +#else
39744 +    return _data - _head;
39745 +#endif
39746 +}
39747 +
39748 +inline uint32_t
39749 +Packet::tailroom() const
39750 +{
39751 +#if CLICK_LINUXMODULE
39752 +    return skb()->end - skb()->tail;
39753 +#else
39754 +    return _end - _tail;
39755 +#endif
39756 +}
39757 +
39758 +inline const unsigned char *
39759 +Packet::buffer() const
39760 +{
39761 +#if CLICK_LINUXMODULE
39762 +    return skb()->head;
39763 +#else
39764 +    return _head;
39765 +#endif
39766 +}
39767 +
39768 +inline const unsigned char *
39769 +Packet::end_buffer() const
39770 +{
39771 +#if CLICK_LINUXMODULE
39772 +    return skb()->end;
39773 +#else
39774 +    return _end;
39775 +#endif
39776 +}
39777 +
39778 +inline uint32_t
39779 +Packet::buffer_length() const
39780 +{
39781 +#if CLICK_LINUXMODULE
39782 +    return skb()->end - skb()->head;
39783 +#else
39784 +    return _end - _head;
39785 +#endif
39786 +}
39787 +
39788 +inline const unsigned char *
39789 +Packet::buffer_data() const
39790 +{
39791 +#if CLICK_LINUXMODULE
39792 +    return skb()->head;
39793 +#else
39794 +    return _head;
39795 +#endif
39796 +}
39797 +
39798 +
39799 +inline Packet *
39800 +Packet::next() const
39801 +{
39802 +#if CLICK_LINUXMODULE
39803 +    return (Packet *)(skb()->next);
39804 +#else
39805 +    return _next;
39806 +#endif
39807 +}
39808 +
39809 +inline Packet *&
39810 +Packet::next()
39811 +{
39812 +#if CLICK_LINUXMODULE
39813 +    return (Packet *&)(skb()->next);
39814 +#else
39815 +    return _next;
39816 +#endif
39817 +}
39818 +
39819 +inline void
39820 +Packet::set_next(Packet *p)
39821 +{
39822 +#if CLICK_LINUXMODULE
39823 +    skb()->next = p->skb();
39824 +#else
39825 +    _next = p;
39826 +#endif
39827 +}
39828 +
39829 +inline const unsigned char *
39830 +Packet::mac_header() const
39831 +{
39832 +#if CLICK_LINUXMODULE
39833 +    return skb()->mac.raw;
39834 +#else
39835 +    return _mac;
39836 +#endif
39837 +}
39838 +
39839 +inline const unsigned char *
39840 +Packet::network_header() const
39841 +{
39842 +#if CLICK_LINUXMODULE
39843 +    return skb()->nh.raw;
39844 +#else
39845 +    return _nh;
39846 +#endif
39847 +}
39848 +
39849 +inline const unsigned char *
39850 +Packet::transport_header() const
39851 +{
39852 +#if CLICK_LINUXMODULE
39853 +    return skb()->h.raw;
39854 +#else
39855 +    return _h;
39856 +#endif
39857 +}
39858 +
39859 +inline const click_ether *
39860 +Packet::ether_header() const
39861 +{
39862 +    return reinterpret_cast<const click_ether *>(mac_header());
39863 +}
39864 +
39865 +inline const click_ip *
39866 +Packet::ip_header() const
39867 +{
39868 +    return reinterpret_cast<const click_ip *>(network_header());
39869 +}
39870 +
39871 +inline const click_ip6 *
39872 +Packet::ip6_header() const
39873 +{
39874 +    return reinterpret_cast<const click_ip6 *>(network_header());
39875 +}
39876 +
39877 +inline const click_icmp *
39878 +Packet::icmp_header() const
39879 +{
39880 +    return reinterpret_cast<const click_icmp *>(transport_header());
39881 +}
39882 +
39883 +inline const click_tcp *
39884 +Packet::tcp_header() const
39885 +{
39886 +    return reinterpret_cast<const click_tcp *>(transport_header());
39887 +}
39888 +
39889 +inline const click_udp *
39890 +Packet::udp_header() const
39891 +{
39892 +    return reinterpret_cast<const click_udp *>(transport_header());
39893 +}
39894 +
39895 +inline int
39896 +Packet::mac_length() const
39897 +{
39898 +    return end_data() - mac_header();
39899 +}
39900 +
39901 +inline int
39902 +Packet::network_length() const
39903 +{
39904 +    return end_data() - network_header();
39905 +}
39906 +
39907 +inline int
39908 +Packet::transport_length() const
39909 +{
39910 +    return end_data() - transport_header();
39911 +}
39912 +
39913 +inline const Timestamp &
39914 +Packet::timestamp_anno() const
39915 +{
39916 +#if CLICK_LINUXMODULE
39917 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
39918 +    return *(const Timestamp *) &skb()->stamp;
39919 +# else
39920 +    return *(const Timestamp *) &skb()->tstamp;
39921 +# endif
39922 +#else
39923 +    return _timestamp;
39924 +#endif
39925 +}
39926 +
39927 +inline Timestamp &
39928 +Packet::timestamp_anno()
39929 +{
39930 +#if CLICK_LINUXMODULE
39931 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
39932 +    return *(Timestamp *) &skb()->stamp;
39933 +# else
39934 +    return *(Timestamp *) &skb()->tstamp;
39935 +# endif
39936 +#else
39937 +    return _timestamp;
39938 +#endif
39939 +}
39940 +
39941 +inline void
39942 +Packet::set_timestamp_anno(const Timestamp &timestamp)
39943 +{
39944 +#if CLICK_LINUXMODULE
39945 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
39946 +    memcpy(&skb()->stamp, &timestamp, 8);
39947 +# else
39948 +    skb_set_timestamp(skb(), &timestamp.timeval());
39949 +# endif
39950 +#else
39951 +    _timestamp = timestamp;
39952 +#endif
39953 +}
39954 +
39955 +inline net_device *
39956 +Packet::device_anno() const
39957 +{
39958 +#if CLICK_LINUXMODULE
39959 +    return skb()->dev;
39960 +#elif CLICK_BSDMODULE
39961 +    if (m())
39962 +       return m()->m_pkthdr.rcvif;
39963 +    else
39964 +       return 0;
39965 +#else
39966 +    return 0;
39967 +#endif
39968 +}
39969 +
39970 +inline void
39971 +Packet::set_device_anno(net_device *dev)
39972 +{
39973 +#if CLICK_LINUXMODULE
39974 +    skb()->dev = dev;
39975 +#elif CLICK_BSDMODULE
39976 +    if (m())
39977 +       m()->m_pkthdr.rcvif = dev;
39978 +#else
39979 +    (void) dev;
39980 +#endif
39981 +}
39982 +
39983 +inline Packet::PacketType
39984 +Packet::packet_type_anno() const
39985 +{
39986 +#if CLICK_LINUXMODULE
39987 +    return (PacketType)(skb()->pkt_type & PACKET_TYPE_MASK);
39988 +#else
39989 +    return _pkt_type;
39990 +#endif
39991 +}
39992 +
39993 +inline void
39994 +Packet::set_packet_type_anno(PacketType p)
39995 +{
39996 +#if CLICK_LINUXMODULE
39997 +    skb()->pkt_type = (skb()->pkt_type & PACKET_CLEAN) | p;
39998 +#else
39999 +    _pkt_type = p;
40000 +#endif
40001 +}
40002 +
40003 +inline WritablePacket *
40004 +Packet::make(uint32_t len)
40005 +{
40006 +  return make(DEFAULT_HEADROOM, (const unsigned char *)0, len, 0);
40007 +}
40008 +
40009 +inline WritablePacket *
40010 +Packet::make(const char *s, uint32_t len)
40011 +{
40012 +  return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0);
40013 +}
40014 +
40015 +inline WritablePacket *
40016 +Packet::make(const unsigned char *s, uint32_t len)
40017 +{
40018 +  return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0);
40019 +}
40020 +
40021 +#if CLICK_LINUXMODULE
40022 +inline Packet *
40023 +Packet::make(struct sk_buff *skb)
40024 +{
40025 +  if (atomic_read(&skb->users) == 1) {
40026 +    skb_orphan(skb);
40027 +    return reinterpret_cast<Packet *>(skb);
40028 +  } else {
40029 +    Packet *p = reinterpret_cast<Packet *>(skb_clone(skb, GFP_ATOMIC));
40030 +    atomic_dec(&skb->users);
40031 +    return p;
40032 +  }
40033 +}
40034 +#endif
40035 +
40036 +
40037 +inline void
40038 +Packet::kill()
40039 +{
40040 +#if CLICK_LINUXMODULE
40041 +    struct sk_buff *b = skb();
40042 +    b->next = b->prev = 0;
40043 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 15)
40044 +    b->list = 0;
40045 +# endif
40046 +    skbmgr_recycle_skbs(b);
40047 +#else
40048 +    if (_use_count.dec_and_test())
40049 +       delete this;
40050 +#endif
40051 +}
40052 +
40053 +
40054 +#if CLICK_BSDMODULE            /* BSD kernel module */
40055 +inline void
40056 +Packet::assimilate_mbuf(Packet *p)
40057 +{
40058 +  struct mbuf *m = p->m();
40059 +
40060 +  if (!m) return;
40061 +
40062 +  p->_head = (unsigned char *)
40063 +            (m->m_flags & M_EXT    ? m->m_ext.ext_buf :
40064 +             m->m_flags & M_PKTHDR ? m->m_pktdat :
40065 +                                     m->m_dat);
40066 +  p->_data = (unsigned char *)m->m_data;
40067 +  p->_tail = (unsigned char *)(m->m_data + m->m_len);
40068 +  p->_end = p->_head + (
40069 +               m->m_flags & M_EXT    ? MCLBYTES :
40070 +               m->m_flags & M_PKTHDR ? MHLEN :
40071 +                                       MLEN);
40072 +}
40073 +
40074 +inline void
40075 +Packet::assimilate_mbuf()
40076 +{
40077 +  assimilate_mbuf(this);
40078 +}
40079 +
40080 +inline Packet *
40081 +Packet::make(struct mbuf *m)
40082 +{
40083 +  if (!(m->m_flags & M_PKTHDR))
40084 +    panic("trying to construct Packet from a non-packet mbuf");
40085 +
40086 +  Packet *p = new Packet;
40087 +  if (m->m_pkthdr.len != m->m_len) {
40088 +    /* click needs contiguous data */
40089 +    // click_chatter("m_pulldown, Click needs contiguous data");
40090 +
40091 +    if (m_pulldown(m, 0, m->m_pkthdr.len, NULL) == NULL)
40092 +       panic("m_pulldown failed");
40093 +  }
40094 +  p->_m = m;
40095 +  assimilate_mbuf(p);
40096 +
40097 +  return p;
40098 +}
40099 +#endif
40100 +
40101 +inline bool
40102 +Packet::shared() const
40103 +{
40104 +#if CLICK_LINUXMODULE
40105 +    return skb_cloned(const_cast<struct sk_buff *>(skb()));
40106 +#else
40107 +    return (_data_packet || _use_count > 1);
40108 +#endif
40109 +}
40110 +
40111 +inline WritablePacket *
40112 +Packet::uniqueify()
40113 +{
40114 +  if (!shared())
40115 +    return static_cast<WritablePacket *>(this);
40116 +  else
40117 +    return expensive_uniqueify(0, 0, true);
40118 +}
40119 +
40120 +inline WritablePacket *
40121 +Packet::push(uint32_t nbytes)
40122 +{
40123 +  if (headroom() >= nbytes && !shared()) {
40124 +    WritablePacket *q = (WritablePacket *)this;
40125 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40126 +    __skb_push(q->skb(), nbytes);
40127 +#else                          /* User-space and BSD kernel module */
40128 +    q->_data -= nbytes;
40129 +# if CLICK_BSDMODULE
40130 +    q->m()->m_data -= nbytes;
40131 +    q->m()->m_len += nbytes;
40132 +    q->m()->m_pkthdr.len += nbytes;
40133 +# endif
40134 +#endif
40135 +    return q;
40136 +  } else
40137 +    return expensive_push(nbytes);
40138 +}
40139 +
40140 +inline Packet *
40141 +Packet::nonunique_push(uint32_t nbytes)
40142 +{
40143 +  if (headroom() >= nbytes) {
40144 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40145 +    __skb_push(skb(), nbytes);
40146 +#else                          /* User-space and BSD kernel module */
40147 +    _data -= nbytes;
40148 +# if CLICK_BSDMODULE
40149 +    m()->m_data -= nbytes;
40150 +    m()->m_len += nbytes;
40151 +    m()->m_pkthdr.len += nbytes;
40152 +# endif
40153 +#endif
40154 +    return this;
40155 +  } else
40156 +    return expensive_push(nbytes);
40157 +}
40158 +
40159 +/* Get rid of some bytes at the start of a packet */
40160 +inline void
40161 +Packet::pull(uint32_t nbytes)
40162 +{
40163 +  if (nbytes > length()) {
40164 +    click_chatter("Packet::pull %d > length %d\n", nbytes, length());
40165 +    nbytes = length();
40166 +  }
40167 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40168 +  __skb_pull(skb(), nbytes);
40169 +#else                          /* User-space and BSD kernel module */
40170 +  _data += nbytes;
40171 +# if CLICK_BSDMODULE
40172 +  m()->m_data += nbytes;
40173 +  m()->m_len -= nbytes;
40174 +  m()->m_pkthdr.len -= nbytes;
40175 +# endif
40176 +#endif
40177 +}
40178 +
40179 +inline WritablePacket *
40180 +Packet::put(uint32_t nbytes)
40181 +{
40182 +  if (tailroom() >= nbytes && !shared()) {
40183 +    WritablePacket *q = (WritablePacket *)this;
40184 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40185 +    __skb_put(q->skb(), nbytes);
40186 +#else                          /* User-space and BSD kernel module */
40187 +    q->_tail += nbytes;
40188 +# if CLICK_BSDMODULE
40189 +    q->m()->m_len += nbytes;
40190 +    q->m()->m_pkthdr.len += nbytes;
40191 +# endif
40192 +#endif
40193 +    return q;
40194 +  } else
40195 +    return expensive_put(nbytes);
40196 +}
40197 +
40198 +inline Packet *
40199 +Packet::nonunique_put(uint32_t nbytes)
40200 +{
40201 +  if (tailroom() >= nbytes) {
40202 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40203 +    __skb_put(skb(), nbytes);
40204 +#else                          /* User-space and BSD kernel module */
40205 +    _tail += nbytes;
40206 +# if CLICK_BSDMODULE
40207 +    m()->m_len += nbytes;
40208 +    m()->m_pkthdr.len += nbytes;
40209 +# endif
40210 +#endif
40211 +    return this;
40212 +  } else
40213 +    return expensive_put(nbytes);
40214 +}
40215 +
40216 +/* Get rid of some bytes at the end of a packet */
40217 +inline void
40218 +Packet::take(uint32_t nbytes)
40219 +{
40220 +  if (nbytes > length()) {
40221 +    click_chatter("Packet::take %d > length %d\n", nbytes, length());
40222 +    nbytes = length();
40223 +  }
40224 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40225 +  skb()->tail -= nbytes;
40226 +  skb()->len -= nbytes;
40227 +#else                          /* User-space and BSD kernel module */
40228 +  _tail -= nbytes;
40229 +# if CLICK_BSDMODULE
40230 +  m()->m_len -= nbytes;
40231 +  m()->m_pkthdr.len -= nbytes;
40232 +# endif
40233 +#endif
40234 +}
40235 +
40236 +#if CLICK_USERLEVEL
40237 +inline void
40238 +Packet::shrink_data(const unsigned char *d, uint32_t length)
40239 +{
40240 +  assert(_data_packet);
40241 +  if (d >= _head && d + length >= d && d + length <= _end) {
40242 +    _head = _data = const_cast<unsigned char *>(d);
40243 +    _tail = _end = const_cast<unsigned char *>(d + length);
40244 +  }
40245 +}
40246 +
40247 +inline void
40248 +Packet::change_headroom_and_length(uint32_t headroom, uint32_t length)
40249 +{
40250 +  if (headroom + length <= buffer_length()) {
40251 +    _data = _head + headroom;
40252 +    _tail = _data + length;
40253 +  }
40254 +}
40255 +#endif
40256 +
40257 +inline const IP6Address &
40258 +Packet::dst_ip6_anno() const
40259 +{
40260 +    return *reinterpret_cast<const IP6Address *>(anno()->addr.ch);
40261 +}
40262 +
40263 +inline void
40264 +Packet::set_dst_ip6_anno(const IP6Address &a)
40265 +{
40266 +    memcpy(anno()->addr.ch, &a, 16);
40267 +}
40268 +
40269 +inline IPAddress 
40270 +Packet::dst_ip_anno() const
40271 +{
40272 +    return IPAddress(anno()->addr.ip4);
40273 +}
40274 +
40275 +inline void 
40276 +Packet::set_dst_ip_anno(IPAddress a)
40277 +{ 
40278 +    anno()->addr.ip4 = a.addr(); 
40279 +}
40280 +
40281 +inline void
40282 +Packet::set_mac_header(const unsigned char *h)
40283 +{
40284 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40285 +    skb()->mac.raw = const_cast<unsigned char *>(h);
40286 +#else                          /* User-space and BSD kernel module */
40287 +    _mac = const_cast<unsigned char *>(h);
40288 +#endif
40289 +}
40290 +
40291 +inline void
40292 +Packet::set_mac_header(const unsigned char *h, uint32_t len)
40293 +{
40294 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40295 +    skb()->mac.raw = const_cast<unsigned char *>(h);
40296 +    skb()->nh.raw = const_cast<unsigned char *>(h) + len;
40297 +#else                          /* User-space and BSD kernel module */
40298 +    _mac = const_cast<unsigned char *>(h);
40299 +    _nh = const_cast<unsigned char *>(h) + len;
40300 +#endif
40301 +}
40302 +
40303 +inline void
40304 +Packet::set_ether_header(const click_ether *h)
40305 +{
40306 +    set_mac_header(reinterpret_cast<const unsigned char *>(h), 14);
40307 +}
40308 +
40309 +inline WritablePacket *
40310 +Packet::push_mac_header(uint32_t nbytes)
40311 +{
40312 +    WritablePacket *q;
40313 +    if (headroom() >= nbytes && !shared()) {
40314 +       q = (WritablePacket *)this;
40315 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40316 +       __skb_push(q->skb(), nbytes);
40317 +#else                          /* User-space and BSD kernel module */
40318 +       q->_data -= nbytes;
40319 +# if CLICK_BSDMODULE
40320 +       q->m()->m_data -= nbytes;
40321 +       q->m()->m_len += nbytes;
40322 +       q->m()->m_pkthdr.len += nbytes;
40323 +# endif
40324 +#endif
40325 +    } else if ((q = expensive_push(nbytes)))
40326 +       /* nada */;
40327 +    else
40328 +       return 0;
40329 +    q->set_mac_header(q->data(), nbytes);
40330 +    return q;
40331 +}
40332 +
40333 +inline void
40334 +Packet::set_network_header(const unsigned char *h, uint32_t len)
40335 +{
40336 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40337 +    skb()->nh.raw = const_cast<unsigned char *>(h);
40338 +    skb()->h.raw = const_cast<unsigned char *>(h) + len;
40339 +#else                          /* User-space and BSD kernel module */
40340 +    _nh = const_cast<unsigned char *>(h);
40341 +    _h = const_cast<unsigned char *>(h) + len;
40342 +#endif
40343 +}
40344 +
40345 +inline void
40346 +Packet::set_network_header_length(uint32_t len)
40347 +{
40348 +#if CLICK_LINUXMODULE  /* Linux kernel module */
40349 +    skb()->h.raw = skb()->nh.raw + len;
40350 +#else                          /* User-space and BSD kernel module */
40351 +    _h = _nh + len;
40352 +#endif
40353 +}
40354 +
40355 +inline void
40356 +Packet::set_ip_header(const click_ip *iph, uint32_t len)
40357 +{
40358 +    set_network_header(reinterpret_cast<const unsigned char *>(iph), len);
40359 +}
40360 +
40361 +inline void
40362 +Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len)
40363 +{
40364 +    set_network_header(reinterpret_cast<const unsigned char *>(ip6h), len);
40365 +}
40366 +
40367 +inline void
40368 +Packet::set_ip6_header(const click_ip6 *ip6h)
40369 +{
40370 +    set_ip6_header(ip6h, 40);
40371 +}
40372 +
40373 +inline int
40374 +Packet::mac_header_offset() const
40375 +{
40376 +    return mac_header() - data();
40377 +}
40378 +
40379 +inline uint32_t
40380 +Packet::mac_header_length() const
40381 +{
40382 +    return network_header() - mac_header();
40383 +}
40384 +
40385 +inline int
40386 +Packet::network_header_offset() const
40387 +{
40388 +    return network_header() - data();
40389 +}
40390 +
40391 +inline uint32_t
40392 +Packet::network_header_length() const
40393 +{
40394 +    return transport_header() - network_header();
40395 +}
40396 +
40397 +inline int
40398 +Packet::ip_header_offset() const
40399 +{
40400 +    return network_header_offset();
40401 +}
40402 +
40403 +inline uint32_t
40404 +Packet::ip_header_length() const
40405 +{
40406 +    return network_header_length();
40407 +}
40408 +
40409 +inline int
40410 +Packet::ip6_header_offset() const
40411 +{
40412 +    return network_header_offset();
40413 +}
40414 +
40415 +inline uint32_t
40416 +Packet::ip6_header_length() const
40417 +{
40418 +    return network_header_length();
40419 +}
40420 +
40421 +inline int
40422 +Packet::transport_header_offset() const
40423 +{
40424 +    return transport_header() - data();
40425 +}
40426 +
40427 +inline void
40428 +Packet::clear_annotations()
40429 +{
40430 +  memset(anno(), '\0', sizeof(Anno));
40431 +  set_packet_type_anno(HOST);
40432 +  set_device_anno(0);
40433 +  set_timestamp_anno(Timestamp());
40434 +  set_mac_header(0);
40435 +  set_network_header(0, 0);
40436 +  set_next(0);
40437 +}
40438 +
40439 +inline void
40440 +Packet::copy_annotations(const Packet *p)
40441 +{
40442 +  *anno() = *p->anno();
40443 +  set_packet_type_anno(p->packet_type_anno());
40444 +  set_device_anno(p->device_anno());
40445 +  set_timestamp_anno(p->timestamp_anno());
40446 +}
40447 +
40448 +inline void
40449 +Packet::shift_header_annotations(int32_t shift)
40450 +{
40451 +#if CLICK_USERLEVEL || CLICK_BSDMODULE
40452 +  _mac += (_mac ? shift : 0);
40453 +  _nh += (_nh ? shift : 0);
40454 +  _h += (_h ? shift : 0);
40455 +#else
40456 +  struct sk_buff *mskb = skb();
40457 +  mskb->mac.raw += (mskb->mac.raw ? shift : 0);
40458 +  mskb->nh.raw += (mskb->nh.raw ? shift : 0);
40459 +  mskb->h.raw += (mskb->h.raw ? shift : 0);
40460 +#endif
40461 +}
40462 +
40463 +
40464 +inline unsigned char *
40465 +WritablePacket::data() const
40466 +{
40467 +    return const_cast<unsigned char *>(Packet::data());
40468 +}
40469 +
40470 +inline unsigned char *
40471 +WritablePacket::end_data() const
40472 +{
40473 +    return const_cast<unsigned char *>(Packet::end_data());
40474 +}
40475 +
40476 +inline unsigned char *
40477 +WritablePacket::buffer() const
40478 +{
40479 +    return const_cast<unsigned char *>(Packet::buffer());
40480 +}
40481 +
40482 +inline unsigned char *
40483 +WritablePacket::end_buffer() const
40484 +{
40485 +    return const_cast<unsigned char *>(Packet::end_buffer());
40486 +}
40487 +
40488 +inline unsigned char *
40489 +WritablePacket::buffer_data() const
40490 +{
40491 +    return const_cast<unsigned char *>(Packet::buffer());
40492 +}
40493 +
40494 +inline unsigned char *
40495 +WritablePacket::mac_header() const
40496 +{
40497 +    return const_cast<unsigned char *>(Packet::mac_header());
40498 +}
40499 +
40500 +inline unsigned char *
40501 +WritablePacket::network_header() const
40502 +{
40503 +    return const_cast<unsigned char *>(Packet::network_header());
40504 +}
40505 +
40506 +inline unsigned char *
40507 +WritablePacket::transport_header() const
40508 +{
40509 +    return const_cast<unsigned char *>(Packet::transport_header());
40510 +}
40511 +
40512 +inline click_ether *
40513 +WritablePacket::ether_header() const
40514 +{
40515 +    return const_cast<click_ether *>(Packet::ether_header());
40516 +}
40517 +
40518 +inline click_ip *
40519 +WritablePacket::ip_header() const
40520 +{
40521 +    return const_cast<click_ip *>(Packet::ip_header());
40522 +}
40523 +
40524 +inline click_ip6 *
40525 +WritablePacket::ip6_header() const
40526 +{
40527 +    return const_cast<click_ip6 *>(Packet::ip6_header());
40528 +}
40529 +
40530 +inline click_icmp *
40531 +WritablePacket::icmp_header() const
40532 +{
40533 +    return const_cast<click_icmp *>(Packet::icmp_header());
40534 +}
40535 +
40536 +inline click_tcp *
40537 +WritablePacket::tcp_header() const
40538 +{
40539 +    return const_cast<click_tcp *>(Packet::tcp_header());
40540 +}
40541 +
40542 +inline click_udp *
40543 +WritablePacket::udp_header() const
40544 +{
40545 +    return const_cast<click_udp *>(Packet::udp_header());
40546 +}
40547 +
40548 +CLICK_ENDDECLS
40549 +#endif
40550 diff -Nurb click-1.6.0/include/click/pathvars.h click-1.6.0-27/include/click/pathvars.h
40551 --- click-1.6.0/include/click/pathvars.h        1969-12-31 19:00:00.000000000 -0500
40552 +++ click-1.6.0-27/include/click/pathvars.h     2009-01-28 16:15:43.000000000 -0500
40553 @@ -0,0 +1,39 @@
40554 +/* include/click/pathvars.h.  Generated from pathvars.h.in by configure.  */
40555 +/* Process this file with configure to produce pathvars.h. -*- mode: c -*- */
40556 +#ifndef CLICK_PATHVARS_H
40557 +#define CLICK_PATHVARS_H
40558 +
40559 +/* Directory for binaries. */
40560 +#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin"
40561 +
40562 +/* Directory for packages and kernel module. */
40563 +#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib"
40564 +
40565 +/* Directory for shared files. */
40566 +#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click"
40567 +
40568 +/* FreeBSD kernel include directory. */
40569 +#define FREEBSD_INCLUDEDIR "/usr/include"
40570 +
40571 +/* Define if the BSD kernel module driver was compiled. */
40572 +/* #undef HAVE_BSDMODULE_DRIVER */
40573 +
40574 +/* Define if the Click kernel module should provide clickfs. */
40575 +#define HAVE_CLICKFS 1
40576 +
40577 +/* Define if the expat library is available. */
40578 +#define HAVE_EXPAT 1
40579 +
40580 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
40581 +#define HAVE_LINUXMODULE_2_6 1
40582 +
40583 +/* Define if the Linux kernel module driver was compiled. */
40584 +#define HAVE_LINUXMODULE_DRIVER 1
40585 +
40586 +/* Define if the user-level driver was compiled. */
40587 +#define HAVE_USERLEVEL_DRIVER 1
40588 +
40589 +/* Directory containing Linux sources. */
40590 +#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
40591 +
40592 +#endif
40593 diff -Nurb click-1.6.0/include/clicknet/ip.h click-1.6.0-27/include/clicknet/ip.h
40594 --- click-1.6.0/include/clicknet/ip.h   2007-07-16 19:47:50.000000000 -0400
40595 +++ click-1.6.0-27/include/clicknet/ip.h        2009-01-19 16:01:43.000000000 -0500
40596 @@ -5,6 +5,7 @@
40597  #include <click/cxxprotect.h>
40598  CLICK_CXX_PROTECT
40599  #if CLICK_LINUXMODULE
40600 +#include <linux/autoconf.h>
40601  # include <net/checksum.h>
40602  # include <linux/in.h>
40603  #else
40604 diff -Nurb click-1.6.0/include/clicknet/ip.h.orig click-1.6.0-27/include/clicknet/ip.h.orig
40605 --- click-1.6.0/include/clicknet/ip.h.orig      1969-12-31 19:00:00.000000000 -0500
40606 +++ click-1.6.0-27/include/clicknet/ip.h.orig   2007-07-16 19:47:50.000000000 -0400
40607 @@ -0,0 +1,156 @@
40608 +/* -*- mode: c; c-basic-offset: 4 -*- */
40609 +#ifndef CLICKNET_IP_H
40610 +#define CLICKNET_IP_H
40611 +/* get struct in_addr */
40612 +#include <click/cxxprotect.h>
40613 +CLICK_CXX_PROTECT
40614 +#if CLICK_LINUXMODULE
40615 +# include <net/checksum.h>
40616 +# include <linux/in.h>
40617 +#else
40618 +# include <sys/types.h>
40619 +# include <netinet/in.h>
40620 +#endif
40621 +
40622 +/*
40623 + * <clicknet/ip.h> -- IP header definitions, based on one of the BSDs.
40624 + *
40625 + * Relevant RFCs include:
40626 + *   RFC791    Internet Protocol
40627 + *   RFC3168   The Addition of Explicit Congestion Notification (ECN) to IP
40628 + */
40629 +
40630 +struct click_ip {
40631 +#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
40632 +    unsigned   ip_v : 4;               /* 0     version == 4                */
40633 +    unsigned   ip_hl : 4;              /*       header length               */
40634 +#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
40635 +    unsigned   ip_hl : 4;              /* 0     header length               */
40636 +    unsigned   ip_v : 4;               /*       version == 4                */
40637 +#else
40638 +#   error "unknown byte order"
40639 +#endif
40640 +    uint8_t    ip_tos;                 /* 1     type of service             */
40641 +#define IP_DSCPMASK    0xFC            /*         diffserv code point       */
40642 +#define IP_ECNMASK     0x03            /*         ECN code point            */
40643 +#define   IP_ECN_NOT_ECT  0x00         /*         not ECN capable transport */
40644 +#define   IP_ECN_ECT1    0x01          /*         ECN capable transport     */
40645 +#define   IP_ECN_ECT2    0x02          /*         ECN capable transport     */
40646 +#define   IP_ECN_CE      0x03          /*         ECN congestion exp'd      */
40647 +    uint16_t   ip_len;                 /* 2-3   total length                */
40648 +    uint16_t   ip_id;                  /* 4-5   identification              */
40649 +    uint16_t   ip_off;                 /* 6-7   fragment offset field       */
40650 +#define        IP_RF           0x8000          /*         reserved fragment flag    */
40651 +#define        IP_DF           0x4000          /*         don't fragment flag       */
40652 +#define        IP_MF           0x2000          /*         more fragments flag       */
40653 +#define        IP_OFFMASK      0X1FFF          /*         mask for fragmenting bits */
40654 +    uint8_t    ip_ttl;                 /* 8     time to live                */
40655 +    uint8_t    ip_p;                   /* 9     protocol                    */
40656 +    uint16_t   ip_sum;                 /* 10-11 checksum                    */
40657 +    struct in_addr ip_src;             /* 12-15 source address              */
40658 +    struct in_addr ip_dst;             /* 16-19 destination address         */
40659 +};
40660 +
40661 +/* ip_protocol */
40662 +#define IP_PROTO_ICMP          1
40663 +#define IP_PROTO_IGMP          2
40664 +#define IP_PROTO_GGP           3
40665 +#define IP_PROTO_IPIP          4
40666 +#define IP_PROTO_ST            5
40667 +#define IP_PROTO_TCP           6
40668 +#define IP_PROTO_UCL           7
40669 +#define IP_PROTO_EGP           8
40670 +#define IP_PROTO_IGP           9
40671 +#define IP_PROTO_BBN           10
40672 +#define IP_PROTO_NVPII         11
40673 +#define IP_PROTO_PUP           12
40674 +#define IP_PROTO_ARGUS         13
40675 +#define IP_PROTO_EMCON         14
40676 +#define IP_PROTO_XNET          15
40677 +#define IP_PROTO_CHAOS         16
40678 +#define IP_PROTO_UDP           17
40679 +#define IP_PROTO_MUX           18
40680 +#define IP_PROTO_DCN           19
40681 +#define IP_PROTO_HMP           20
40682 +#define IP_PROTO_PRM           21
40683 +#define IP_PROTO_XNS           22
40684 +#define IP_PROTO_TRUNK1                23
40685 +#define IP_PROTO_TRUNK2                24
40686 +#define IP_PROTO_LEAF1         25
40687 +#define IP_PROTO_LEAF2         26
40688 +#define IP_PROTO_RDP           27
40689 +#define IP_PROTO_IRTP          28
40690 +#define IP_PROTO_ISOTP4                29
40691 +#define IP_PROTO_NETBLT                30
40692 +#define IP_PROTO_MFENSP                31
40693 +#define IP_PROTO_MERIT         32
40694 +#define IP_PROTO_DCCP          33
40695 +#define IP_PROTO_ICMP6          58
40696 +#define IP_PROTO_CFTP          62
40697 +#define IP_PROTO_SATNET                64
40698 +#define IP_PROTO_MITSUBNET     65
40699 +#define IP_PROTO_RVD           66
40700 +#define IP_PROTO_IPPC          67
40701 +#define IP_PROTO_SATMON                69
40702 +#define IP_PROTO_IPCV          71
40703 +#define IP_PROTO_BRSATMON      76
40704 +#define IP_PROTO_WBMON         78
40705 +#define IP_PROTO_WBEXPAK       79
40706 +#define IP_PROTO_SCTP          132
40707 +
40708 +#define IP_PROTO_NONE          257
40709 +#define IP_PROTO_TRANSP                258
40710 +#define IP_PROTO_TCP_OR_UDP    256
40711 +#define IP_PROTO_PAYLOAD       259
40712 +
40713 +#define        IPOPT_EOL               0       /* end of option list */
40714 +#define        IPOPT_NOP               1       /* no operation */
40715 +#define IPOPT_RR               7       /* record packet route */
40716 +#define IPOPT_TS               68      /* timestamp */
40717 +#define IPOPT_SECURITY         130     /* provide s,c,h,tcc */
40718 +#define IPOPT_LSRR             131     /* loose source route */
40719 +#define IPOPT_SATID            136     /* satnet id */
40720 +#define IPOPT_SSRR             137     /* strict source route */
40721 +#define IPOPT_RA               148     /* router alert */
40722 +
40723 +#define IP_ISFRAG(iph)   (((iph)->ip_off & htons(IP_MF | IP_OFFMASK)) != 0)
40724 +#define IP_FIRSTFRAG(iph) (((iph)->ip_off & htons(IP_OFFMASK)) == 0)
40725 +
40726 +
40727 +/* checksum functions */
40728 +
40729 +#if !CLICK_LINUXMODULE
40730 +uint16_t click_in_cksum(const unsigned char *addr, int len);
40731 +uint16_t click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len);
40732 +#else
40733 +# define click_in_cksum(addr, len) \
40734 +               ip_compute_csum((unsigned char *)(addr), (len))
40735 +# define click_in_cksum_pseudohdr_raw(csum, src, dst, proto, transport_len) \
40736 +               csum_tcpudp_magic((src), (dst), (transport_len), (proto), ~(csum) & 0xFFFF)
40737 +#endif
40738 +uint16_t click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len);
40739 +
40740 +/* use if you're not sure whether there are source routing options */
40741 +static inline uint16_t
40742 +click_in_cksum_pseudohdr(uint32_t csum, const struct click_ip *iph,
40743 +                        int transport_len)
40744 +{
40745 +    if (iph->ip_hl == 5)
40746 +       return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, transport_len);
40747 +    else
40748 +       return click_in_cksum_pseudohdr_hard(csum, iph, transport_len);
40749 +}
40750 +
40751 +static inline void
40752 +click_update_in_cksum(uint16_t *csum, uint16_t old_hw, uint16_t new_hw)
40753 +{
40754 +    /* incrementally update IP checksum according to RFC1624:
40755 +       new_sum = ~(~old_sum + ~old_halfword + new_halfword) */
40756 +    uint32_t sum = (~*csum & 0xFFFF) + (~old_hw & 0xFFFF) + new_hw;
40757 +    sum = (sum & 0xFFFF) + (sum >> 16);
40758 +    *csum = ~(sum + (sum >> 16));
40759 +}
40760 +
40761 +CLICK_CXX_UNPROTECT
40762 +#include <click/cxxunprotect.h>
40763 +#endif
40764 Files click-1.6.0/inst/bin/click and click-1.6.0-27/inst/bin/click differ
40765 Files click-1.6.0/inst/bin/click-align and click-1.6.0-27/inst/bin/click-align differ
40766 diff -Nurb click-1.6.0/inst/bin/click-buildtool click-1.6.0-27/inst/bin/click-buildtool
40767 --- click-1.6.0/inst/bin/click-buildtool        1969-12-31 19:00:00.000000000 -0500
40768 +++ click-1.6.0-27/inst/bin/click-buildtool     2009-02-05 10:20:40.000000000 -0500
40769 @@ -0,0 +1,1326 @@
40770 +#! /bin/sh
40771 +
40772 +# click-buildtool -- build tools for Click
40773 +# Eddie Kohler
40774 +#
40775 +# Copyright (c) 2000-2001 Massachusetts Institute of Technology
40776 +# Copyright (c) 2000-2006 Mazu Networks, Inc.
40777 +# Copyright (c) 2001-2003 International Computer Science Institute
40778 +# Copyright (c) 2004-2007 Regents of the University of California
40779 +#
40780 +# Permission is hereby granted, free of charge, to any person obtaining a
40781 +# copy of this software and associated documentation files (the "Software"),
40782 +# to deal in the Software without restriction, subject to the conditions
40783 +# listed in the Click LICENSE file. These conditions include: you must
40784 +# preserve this copyright notice, and you cannot mention the copyright
40785 +# holders in advertising related to the Software without their permission.
40786 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
40787 +# notice is a summary of the Click LICENSE file; the license in that file is
40788 +# legally binding.
40789 +
40790 +prefix=/d/click/click-1.6.0-27/inst
40791 +exec_prefix=/d/click/click-1.6.0-27/inst
40792 +bindir=/d/click/click-1.6.0-27/inst/bin
40793 +datarootdir=/d/click/click-1.6.0-27/inst/share
40794 +datadir=/d/click/click-1.6.0-27/inst/share
40795 +clickdatadir=/d/click/click-1.6.0-27/inst/share/click
40796 +LINUXMODULE_2_6=1
40797 +gmake=make
40798 +
40799 +verbose=""
40800 +elem2=""
40801 +default_provisions="i686 i386 i586 int64 linux linux_2_6 pcap"
40802 +driver_provisions=" userlevel linuxmodule"
40803 +
40804 +trap "exit 1" HUP
40805 +
40806 +# find a good version of awk
40807 +if test -x /usr/bin/gawk; then
40808 +    awk=gawk
40809 +elif test -x /usr/bin/nawk; then
40810 +    awk=nawk
40811 +else
40812 +    awk=awk
40813 +fi
40814 +
40815 +echo_n () {
40816 +       # suns can't echo -n, and Mac OS X can't echo "x\c"
40817 +       echo "$@" | tr -d '
40818 +'
40819 +}
40820 +
40821 +
40822 +############
40823 +# FINDELEM #
40824 +############
40825 +
40826 +findelem_usage () {
40827 +    echo "Usage: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES]
40828 +Try 'click-buildtool findelem --help' for more information." 1>&2
40829 +    exit 1
40830 +}
40831 +
40832 +elementmap_provisions () {
40833 +    elementmap="$1"
40834 +    grep "^<elementmap \|^<entry " <"$elementmap" | $awk '/ name="([^"]*)"/ {
40835 +  sub(/.* name="/, "", $0);
40836 +  sub(/".*/, "", $0);
40837 +  prov[$0] = 1;
40838 +}
40839 +/ provides="([^"]*)"/ {
40840 +  sub(/.* provides="/, "", $0);
40841 +  sub(/".*/, "", $0);
40842 +  split($0, d, / +/);
40843 +  for (j in d) prov[d[j]] = 1;
40844 +}
40845 +END {
40846 +  # delete references to drivers
40847 +  delete prov["userlevel"]; delete prov["linuxmodule"]; 
40848 +  delete prov["bsdmodule"]; delete prov["ns"];
40849 +  for (j in prov) print j;
40850 +}'
40851 +}
40852 +
40853 +findelem () {
40854 +    pfx=
40855 +    all=
40856 +    provisions=
40857 +    filenames=
40858 +    standards=
40859 +    unprovisions='false 0'
40860 +    while [ x"$1" != x ]; do
40861 +    case $1 in
40862 +    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
40863 +       standards=1; shift 1;;
40864 +    -p|--pre|--pref|--prefi|--prefix)
40865 +       if test $# -lt 2; then findelem_usage; fi
40866 +       shift 1; pfx="$1/"; shift 1;;
40867 +    -p*)
40868 +       pfx="`echo "$1" | sed 's/^-p//'`"/; shift 1;;
40869 +    --pre=*|--pref=*|--prefi=*|--prefix=*)
40870 +       pfx="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
40871 +    -f|--filenames)
40872 +       filenames=f; shift 1;;
40873 +    -F|--filename-|--filename-p|--filename-pa|--filename-pai|--filename-pair|--filename-pairs)
40874 +       filenames=F; shift 1;;
40875 +    -V|--verb|--verbo|--verbos|--verbose)
40876 +       verbose=1; shift 1;;
40877 +    -a|--a|--al|--all)
40878 +       all=1; shift 1;;
40879 +    -r|--pro|--prov|--provi|--provid|--provide)
40880 +       if test $# -lt 2; then findelem_usage; fi
40881 +       shift 1; provisions="$1
40882 +$provisions"; shift 1;;
40883 +    -r*)
40884 +       provisions="`echo "$1" | sed 's/^-r//'`
40885 +$provisions"; shift 1;;
40886 +    --pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
40887 +       provisions="`echo "$1" | sed 's/^[^=]*=//'`
40888 +$provisions"; shift 1;;
40889 +    -x|--u|--un|--unp|--unpr|--unpro|--unprov|--unprovi|--unprovid|--unprovide)
40890 +       if test $# -lt 2; then findelem_usage; fi
40891 +       shift 1; unprovisions="$1
40892 +$unprovisions"; shift 1;;
40893 +    -x*)
40894 +       unprovisions="`echo "$1" | sed 's/^-x//'`
40895 +$unprovisions"; shift 1;;
40896 +    --u=*|--un=*|--unp=*|--unpr=*|--unpro=*|--unprov=*|--unprovi=*|--unprovid=*|--unprovide=*)
40897 +       unprovisions="`echo "$1" | sed 's/^[^=]*=//'`
40898 +$unprovisions"; shift 1;;
40899 +    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
40900 +       if test $# -lt 2; then findelem_usage; fi
40901 +       shift 1; provisions="`elementmap_provisions "$1"`
40902 +$provisions"; shift 1;;
40903 +    -e*)
40904 +       emap="`echo "$1" | sed 's/^-e//'`"
40905 +       provisions="`elementmap_provisions "$emap"`
40906 +$provisions"; shift 1;;
40907 +    --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*)
40908 +       emap="`echo '$1' | sed 's/^[^=]*=//'`"
40909 +       provisions="`elementmap_provisions "$emap"`
40910 +$provisions"; shift 1;;
40911 +    -P|--pa|--pac|--pack|--packa|--packag|--package)
40912 +       provisions="`elementmap_provisions "${clickdatadir}/elementmap.xml"`
40913 +$provisions"; shift 1;;
40914 +    -h|--h|--he|--hel|--help)
40915 +       cat <<'EOF' 1>&2
40916 +'Click-buildtool findelem' locates valid Click element source code. It starts
40917 +with a collection of source code, then eliminates files whose requirements
40918 +are not available until reaching a stable set of sources. It expects a list of
40919 +files and directories on standard input. Directories are searched for .cc/.c
40920 +source files. Only files containing EXPORT_ELEMENT() or ELEMENT_PROVIDES() are
40921 +considered. The initial list of available requirements is the list of
40922 +requirements specified with '-r', plus the list of EXPORT_ELEMENT() and
40923 +ELEMENT_PROVIDES() keywords.
40924 +
40925 +Usage: click-buildtool findelem [OPTIONS] < [FILES AND DIRECTORIES]
40926 +
40927 +Options:
40928 +  -a, --all                  Include all subdirectories of 'elements' rather
40929 +                             than reading standard input, and pretend all
40930 +                             requirements are available (except for '-x').
40931 +  -V, --verbose              Print more information about dependency checking.
40932 +  -p, --prefix PREFIX        Prepend PREFIX to every file and/or directory.
40933 +  -r, --provide REQ          Provide requirement(s) in REQ.
40934 +  -e, --elementmap EMAP      Provide requirement(s) from EMAP.
40935 +  -P, --package              Provide requirement(s) from default elementmap.
40936 +  -S, --standards            Mark standard elements as available.
40937 +  -x, --unprovide REQ        Mark requirement(s) REQ as unavailable.
40938 +  -f, --filenames            Output filenames only.
40939 +  -F, --filename-pairs       Output "sourcefile:headerfile" pairs for elements.
40940 +  -h, --help                 Print this message and exit.
40941 +
40942 +Report bugs to <click@pdos.lcs.mit.edu>.
40943 +EOF
40944 +       exit 0;;
40945 +    *)
40946 +       findelem_usage;;
40947 +    esac
40948 +    done
40949 +
40950 +    if test -n "$verbose" -a -n "$pfx"; then
40951 +       echo "Prefix: $pfx" 1>&2
40952 +    fi
40953 +
40954 +    # add defaults to provisions
40955 +    provisions="$provisions $default_provisions"
40956 +
40957 +    # add standards to provisions if necessary
40958 +    if test "x$standards" != x; then
40959 +       provisions="$provisions AddressInfo AlignmentInfo ErrorElement PortInfo ScheduleInfo Storage"
40960 +    fi
40961 +
40962 +    # expand provisions and unprovisions: require one per line
40963 +    provisions=`echo "$provisions" | tr -s ' \011\015\014\013' '\012'`
40964 +    unprovisions=`echo "$unprovisions" | tr -s ' \011\015\014\013' '\012'`
40965 +    if test -n "$verbose" -a -n "$provisions"; then
40966 +       echo 1>&2
40967 +       echo "Provisions: $provisions" 1>&2
40968 +    fi
40969 +    if test -n "$verbose" -a -n "$unprovisions"; then
40970 +       echo 1>&2
40971 +       echo "Unprovisions: $unprovisions" 1>&2
40972 +    fi
40973 +
40974 +    # expand list of files
40975 +    if test -n "$all"; then
40976 +       fdir=${pfx}
40977 +       test -d ${pfx}elements && fdir=${pfx}elements
40978 +       first_files=`cd $fdir >/dev/null && ls`
40979 +       bad_first_files=`echo "$first_files
40980 +$unprovisions" | sort | uniq -d`
40981 +       first_files=`echo "$first_files
40982 +$bad_first_files" | sort | uniq -u`
40983 +    else
40984 +       first_files=`cat`
40985 +    fi
40986 +
40987 +    files=""
40988 +    for i in $first_files; do
40989 +       ppfx="$pfx"
40990 +       if test -d "${pfx}elements/$i" && echo "$i" | grep -v '^\.' >/dev/null; then
40991 +           ppfx="${pfx}elements/"
40992 +       fi
40993 +       if test -d "${ppfx}$i"; then
40994 +           files="$files
40995 +"`find ${ppfx}$i -follow \( -name \*.cc -o -name \*.c \) -print | grep -v '/[.,][^/]*$'`
40996 +       elif test -r "${ppfx}$i"; then
40997 +           files="$files
40998 +${ppfx}$i"
40999 +       fi
41000 +    done
41001 +    files=`echo "$files" | sort | uniq | grep .`
41002 +
41003 +    # die if no files
41004 +    if test -z "$files"; then
41005 +       echo "no files found" 1>&2
41006 +       exit 1
41007 +    fi
41008 +
41009 +    # if '$all', then accept all dependencies except the unprovisions
41010 +    dep_test='<='
41011 +    if test -n "$all"; then
41012 +       dep_test='<'
41013 +    fi
41014 +
41015 +    # check dependencies: generate a list of bad files, then remove those files
41016 +    # from the list of good files
41017 +
41018 +    # first remove files that provide an unprovision
41019 +    awk_exports=`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'`
41020 +    bad_files=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/EXPORT_ELEMENT[       ]*(\(.*\)).*/\1/
41021 +s/ELEMENT_PROVIDES[    ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'}
41022 +{
41023 +  split($2, deps, / +/);
41024 +  for (j in deps) {
41025 +    if (dep[deps[j]] < 0) {
41026 +      print $1;
41027 +      break;
41028 +    }
41029 +  }
41030 +}' | sort | uniq`
41031 +    if test -n "$verbose" -a -n "$bad_files"; then
41032 +       echo 1>&2
41033 +       echo "Files: $files" 1>&2
41034 +       echo 1>&2
41035 +       echo "Bad files: $bad_files" 1>&2
41036 +    fi
41037 +    if test -n "$bad_files"; then
41038 +       files=`echo "$files
41039 +$bad_files" | sort | uniq -u`
41040 +    fi
41041 +
41042 +    # then cycle, removing files that require something not provided
41043 +    while true; do
41044 +       provides=`egrep '^EXPORT_ELEMENT|^ELEMENT_PROVIDES' $files | sed 's/.*(\(.*\)).*/\1/' | tr ' \011' '\012'`
41045 +       awk_exports=`echo "$provides"'
41046 +'"$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`"
41047 +"`echo "$unprovisions" | sed 's/\(..*\)/dep["\1"]=-1;/'`
41048 +       new_bad_files=`grep '^ELEMENT_REQUIRES' $files | sed 's/ELEMENT_REQUIRES[       ]*(\(.*\)).*/\1/' | $awk -F: 'BEGIN {OFS="";'"$awk_exports"'dep["true"]=1; dep["1"]=1;}
41049 +{
41050 +  split($2, deps, / +/);
41051 +  for (j in deps) {
41052 +    i = deps[j]
41053 +    if (dep[i] <= 0) {
41054 +      bad = 1;
41055 +      split(i, or_deps, /\|+/);
41056 +      for (k in or_deps) {
41057 +       if (!(dep[or_deps[k]] '"$dep_test"' 0))
41058 +         bad = 0;
41059 +      }
41060 +      if (bad) {
41061 +       print $1;
41062 +       break;
41063 +      }
41064 +    }
41065 +  }
41066 +}' | sort | uniq`
41067 +       if test -n "$verbose"; then
41068 +           echo 1>&2
41069 +           echo "Files: $files" 1>&2
41070 +           echo 1>&2
41071 +           echo "Bad files: $new_bad_files" 1>&2
41072 +       fi
41073 +       if test -z "$new_bad_files"; then
41074 +           break
41075 +       else
41076 +           files=`echo "$files
41077 +$new_bad_files" | sort | uniq -u`
41078 +           bad_files="$new_bad_files
41079 +$bad_files"
41080 +       fi
41081 +    done
41082 +
41083 +    header_files=`echo "$files" | sed 's/\.cc/\.hh/'`
41084 +
41085 +    # generate output
41086 +    if test "$filenames" = f; then
41087 +       outscriptlet=i
41088 +    elif test "$filenames" = F; then
41089 +       outscriptlet='i, ":", header[i]'
41090 +    else
41091 +       echo "# Generated by 'click-buildtool findelem' on" `date`
41092 +       outscriptlet='i, "\t", header[i], "\t", ex'
41093 +    fi
41094 +
41095 +    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 {
41096 +  OFS = ""; cur_class = ""; line_warned = 0; nexports = 0
41097 +}
41098 +/:class[       ]/ {
41099 +  sub(/^class[         ]*/, "", $2);
41100 +  sub(/[       ]*$/, "", $2);
41101 +  cur_class = $2;
41102 +  next
41103 +}
41104 +/:}/ {
41105 +  cur_class = "";
41106 +  next
41107 +}
41108 +/:EXPORT_ELEMENT/ {
41109 +  sub(/.*EXPORT_ELEMENT[       ]*\([   ]*/, "", $2);
41110 +  sub(/[       ]*\).*/, "", $2);
41111 +  if (exports[$1] != "") {
41112 +    exports[$1] = exports[$1] " " $2
41113 +  } else {
41114 +    exports[$1] = $2; nexports++
41115 +  }
41116 +  next
41117 +}
41118 +/:ELEMENT_PROVIDES/ {
41119 +  if (!($1 in exports)) {
41120 +    exports[$1] = ""; nexports++
41121 +  }
41122 +  next
41123 +}
41124 +/:ELEMENT_HEADER/ {
41125 +  sub(/.*ELEMENT_HEADER[       ]*\(/, "", $2)
41126 +  sub(/\).*/, "", $2)
41127 +  header[$1] = $2
41128 +  next
41129 +}
41130 +/:ELEMENT_LIBS/ {
41131 +  sub(/.*ELEMENT_LIBS[         ]*\(\(?/, "", $2)
41132 +  sub(/\)?\).*/, "", $2)
41133 +  gsub(/[      ][      ]*/, ";", $2)
41134 +  gsub(/-L;/, "-L", $2)
41135 +  libs[$1] = $2
41136 +  next
41137 +}
41138 +/class_name.*return[   ]"/ {
41139 +  sub(/.*return[       ]*"/, "", $0);
41140 +  sub(/".*/, "", $0);
41141 +  class_name[cur_class] = $0
41142 +  next
41143 +}
41144 +/class_name/ {
41145 +  print $1, ": ", cur_class, "::class_name method malformed" | "cat 1>&2"
41146 +  if (++line_warned == 1)
41147 +    print "  (class_name methods must be written on a single line.)" | "cat 1>&2"
41148 +}
41149 +/static_initialize/ {
41150 +  static_initialize[cur_class] = 1
41151 +  next
41152 +}
41153 +/static_cleanup/ {
41154 +  static_cleanup[cur_class] = 1
41155 +  next
41156 +}
41157 +END {
41158 +  if (nexports == 0)
41159 +    print "click-buildtool: No elements found" | "cat 1>&2"
41160 +  if (line_warned || nexports == 0)
41161 +    system("kill -HUP '$$'")
41162 +  for (i in exports) {
41163 +    ex = exports[i]
41164 +    if (ex == "") {
41165 +      print i
41166 +    } else {
41167 +      if (header[i] == "") {
41168 +       header[i] = "\"" i "\""; sub(/\.cc/, ".hh", header[i])
41169 +      }
41170 +      split(ex, exes, / /); ex = ""
41171 +      for (j in exes) {
41172 +        dash = index(exes[j], "-")
41173 +       if (dash == 0) {
41174 +         dash = length(exes[j]);
41175 +          if (class_name[exes[j]] == "")
41176 +            exes[j] = exes[j] "-" exes[j];
41177 +          else
41178 +            exes[j] = exes[j] "-" class_name[exes[j]];
41179 +        }
41180 +       ex = ex exes[j] " ";
41181 +       klass = substr(exes[j], 1, dash)
41182 +        if (static_initialize[klass]) {
41183 +         ex = ex klass "-!si ";
41184 +         static_initialize[klass] = 0
41185 +       }
41186 +        if (static_cleanup[klass]) {
41187 +         ex = ex klass "-!sc ";
41188 +         static_cleanup[klass] = 0
41189 +       }
41190 +      }
41191 +      if (libs[i])
41192 +       ex = ex "-!lib" libs[i] " ";
41193 +      print '"$outscriptlet"'
41194 +    }
41195 +  }
41196 +}' | sort
41197 +
41198 +  exit $?
41199 +}
41200 +
41201 +
41202 +
41203 +##########################
41204 +# ELEM2MAKE/ELEM2PACKAGE #
41205 +##########################
41206 +
41207 +elem2xxx_usage () {
41208 +    echo_n "Usage: click-buildtool elem2$elem2 [-p PREFIX] [-V]" 1>&2
41209 +    if test "$elem2" = package; then echo_n " PKGNAME" 1>&2; fi
41210 +    echo " < elements.conf
41211 +Try 'click-buildtool elem2$elem2 --help' for more information." 1>&2
41212 +    exit 1
41213 +}
41214 +
41215 +elem2make () {
41216 +    driver=""
41217 +    makevar=""
41218 +    date=`date`
41219 +    linux26=x
41220 +    while [ x"$1" != x ]; do
41221 +    case $1 in
41222 +    -t|--d|--dr|--dri|--driv|--drive|--driver)
41223 +       if test $# -lt 2; then elem2xxx_usage; fi
41224 +       shift 1; driver="$1"; shift 1;;
41225 +    -t*)
41226 +       driver=`echo "$1" | sed 's/^-D//'`; shift 1;;
41227 +    --d=*|--dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
41228 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
41229 +    --t|--ta|--tar|--targ|--targe|--target)
41230 +       if test $# -lt 2; then elem2xxx_usage; fi
41231 +       shift 1; driver="$1"; shift 1;;
41232 +    --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
41233 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
41234 +    -v|--m|--ma|--mak|--make|--make-|--make-v|--make-va|--make-var|--make-vari|--make-varia|--make-variab|--make-variabl|--make-variable)
41235 +       if test $# -lt 2; then elem2xxx_usage; fi
41236 +       shift 1; makevar="$1"; shift 1;;
41237 +    -v*)
41238 +       makevar=`echo "$1" | sed 's/^-v//'`; shift 1;;
41239 +    --m=*|--ma=*|--mak=*|--make=*|--make-=*|--make-v=*|--make-va=*|--make-var=*|--make-vari=*|--make-varia=*|--make-variab=*|--make-variabl=*|--make-variable=*)
41240 +       makevar=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
41241 +    -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude)
41242 +        if test $# -lt 2; then elem2xxx_usage; fi
41243 +       shift 1
41244 +       for i in $1; do excludes=";/^$i"' \\$'"/d$excludes"; done
41245 +       shift 1;;
41246 +    -x*)
41247 +       this_exclude=`echo "$1" | sed 's/^-p//'`
41248 +       for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done
41249 +       shift 1;;
41250 +    --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*)
41251 +       this_exclude=`echo "$1" | sed 's/^[^=]*=//'`
41252 +       for i in $this_exclude; do excludes=";/^$i"' \\$'"/d$excludes"; done
41253 +       shift 1;;
41254 +    --l|--li|--lin|--linu|--linux|--linux2|--linux26)
41255 +       linux26=1; shift 1;;
41256 +    --no-l|--no-li|--no-lin|--no-linu|--no-linux|--no-linux2|--no-linux26)
41257 +       linux26=0; shift 1;;
41258 +    -V|--verb|--verbo|--verbos|--verbose)
41259 +       verbose=1; shift 1;;
41260 +    -h|--h|--he|--hel|--help)
41261 +       cat <<'EOF' 1>&2
41262 +'Click-buildtool elem2make' reads an 'elements.conf' file generated by
41263 +'click-buildtool findelem' on the standard input, and writes a Makefile
41264 +fragment defining the ELEMENT_OBJS variable to the standard output.
41265 +
41266 +Usage: click-buildtool elem2make [-t DRIVER] [-V] < elements.conf
41267 +
41268 +Options:
41269 +  -t, --driver DRIVER      Set target driver to DRIVER ('userlevel',
41270 +                           'linuxmodule', 'bsdmodule', 'ns', or 'tool').
41271 +  -v, --make-variable N    Use make variable N.
41272 +      --linux26            Generate Linux 2.6-style makefile fragment.
41273 +  -x, --exclude FILE       Do not include FILE.
41274 +  -V, --verbose            Print more information.
41275 +  -h, --help               Print this message and exit.
41276 +
41277 +Report bugs to <click@pdos.lcs.mit.edu>.
41278 +EOF
41279 +       exit 0;;
41280 +    *)
41281 +       elem2xxx_usage;;
41282 +    esac
41283 +    done
41284 +
41285 +    L=
41286 +    defmakevar="ELEMENT_OBJS"
41287 +    if test -n "$driver"; then
41288 +       if test "$driver" = 'user' -o "$driver" = 'userlevel'; then
41289 +           L=u
41290 +       elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then
41291 +           L=k
41292 +           test "$linux26" = x && linux26="$LINUXMODULE_2_6"
41293 +       elif test "$driver" = 'bsdmodule'; then
41294 +           L=b
41295 +       elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then
41296 +           L=n
41297 +       elif test "$driver" = 'tool'; then
41298 +           L=t
41299 +       else
41300 +           echo "Unknown driver $driver" 1>&2
41301 +           exit 1
41302 +       fi
41303 +    fi
41304 +    osuffix=".${L}o"
41305 +    if test -z "$makevar"; then
41306 +       makevar=$defmakevar
41307 +    fi
41308 +
41309 +    # expand list of files
41310 +    elemconf=`cat`
41311 +    files=`echo "$elemconf" | grep -v '^#' | sed 's/[  ].*//'`
41312 +
41313 +    # find libraries
41314 +    libs=`echo "$elemconf" | sed '/-!lib/!d;s/^.*-!lib//g;s/;/ /g' | grep .`
41315 +    if test -n "$libs"; then
41316 +       libs=`echo "$libs" | sed 's/^\([^ ][^ ]*\) *$/\1 \1/'`
41317 +       while echo "$libs" | grep ' [^ ].* [^ ]' >/dev/null; do
41318 +           libs=`echo "$libs" | sed '/ [^ ].* [^ ]/s/^\([^ ][^ ]*\)  *\([^ ][^ ]*\) /\1 \2\\
41319 +\2 /'`
41320 +       done
41321 +    fi
41322 +    test -n "$libs" && libs=`echo "$libs" | tsort`
41323 +
41324 +    # massage awk script based on Linux 2.6 or not
41325 +    if test "$linux26" = 1; then
41326 +       set_subdir_scriptlet='
41327 +           if (dir != "" && substr(dir, 1, 1) == "/")
41328 +               subdirs[dirid] = dir;
41329 +           else
41330 +               subdirs[dirid] = "$(obj)/" dir;
41331 +        '
41332 +       pattern_scriptlet='$(addprefix $(obj)/,$('"$makevar"'__", i, ")): $(obj)/%'"$osuffix"
41333 +       ccaction='      $(call if_changed_dep,cxxcompile)'
41334 +       caction='       $(call if_changed_dep,ccompile)'
41335 +    else
41336 +       set_subdir_scriptlet='subdirs[dirid] = dir;'
41337 +       pattern_scriptlet='$('"$makevar"'__", i, "): %'"$osuffix"
41338 +       ccaction='      $(call cxxcompile,-c $< -o $@,CXX)'
41339 +       caction='       $(call ccompile,-c $< -o $@,CC)'
41340 +       if test -n "$L"; then
41341 +           ccaction="$ccaction"'\n     $(FIXDEP)'
41342 +           caction="$caction"'\n       $(FIXDEP)'
41343 +       fi
41344 +    fi
41345 +
41346 +    # output
41347 +    echo "# Generated by 'click-buildtool elem2make' on" `date`
41348 +    echo "$files" | $awk '
41349 +BEGIN { OFS = ""
41350 +    action["c"] = "'"$caction"'";
41351 +    action["cc"] = "'"$ccaction"'";
41352 +}
41353 +{   filetype = ($0 ~ /\.c$/ ? "c" : "cc");
41354 +    sub(/\.cc*$/, "'"$osuffix"'");
41355 +    i = match($0, /\/[^\/]*$/);
41356 +    if (i == 0) {
41357 +       dir = "";
41358 +       file = $0;
41359 +    } else {
41360 +       dir = substr($0, 1, RSTART);
41361 +       file = substr($0, RSTART + 1);
41362 +    }
41363 +    decdir = filetype dir;
41364 +    if (decdir in subdirid)
41365 +       dirid = subdirid[decdir];
41366 +    else {
41367 +       dirid = nsubdirs++;
41368 +       subdirid[decdir] = dirid;
41369 +       subdirtype[dirid] = filetype;
41370 +       '"$set_subdir_scriptlet"'
41371 +    }
41372 +    elements[dirid] = elements[dirid] file " \\\n";
41373 +}
41374 +END {
41375 +    for (i = 0; i < nsubdirs; i++) {
41376 +       print "'"$makevar"'__", i, " = \\\n", elements[i];
41377 +       allsubdirs = allsubdirs "$('"$makevar"'__" i ") \\\n";
41378 +    }
41379 +    print "'"$makevar"' = \\\n", allsubdirs;
41380 +    for (i = 0; i < nsubdirs; i++) {
41381 +       print "'"$pattern_scriptlet"': ", subdirs[i], "%.", subdirtype[i];
41382 +       print action[subdirtype[i]];
41383 +    }
41384 +}' | sed "$excludes"
41385 +    echo
41386 +    
41387 +    if test -n "$libs"; then
41388 +       libvar=`echo $makevar | sed 's/OBJS$/LIBS/'`
41389 +       echo $libvar = $libs
41390 +    fi
41391 +}
41392 +
41393 +elem2xxx () {
41394 +    package=""
41395 +    date=`date`
41396 +    standards=''
41397 +    includes=''
41398 +    while [ x"$1" != x ]; do
41399 +    case $1 in
41400 +    -S|--s|--st|--sta|--stan|--stand|--standa|--standar|--standard|--standards)
41401 +       standards=1; shift 1;;
41402 +    -V|--verb|--verbo|--verbos|--verbose)
41403 +       verbose=1; shift 1;;
41404 +    -i|--i|--in|--inc|--incl|--inclu|--includ|--include)
41405 +       if test $# -lt 2; then elem2xxx_usage; fi
41406 +       includes="$includes print '#include $2';"; shift 2;;
41407 +    -i*)
41408 +       this_include=`echo "$1" | sed 's/^-i//'`
41409 +       includes="$includes print '#include $this_include';"; shift 1;;
41410 +    --i=*|--in=*|--inc=*|--incl=*|--inclu=*|--includ=*|--include=*)
41411 +       this_include=`echo "$1" | sed 's/^[^=]*=//'`
41412 +       includes="$includes print '#include $this_include';"; shift 1;;
41413 +    -h|--h|--he|--hel|--help)
41414 +       if test "$elem2" = export; then
41415 +           cat <<'EOF' 1>&2
41416 +'Click-buildtool elem2export' reads an 'elements.conf' file generated by
41417 +'click-buildtool findelem' on the standard input, examines those files for
41418 +exported elements, and writes a C++ source file defining the 
41419 +click_export_elements() function to the standard output.
41420 +
41421 +Usage: click-buildtool elem2export [-V] < elements.conf
41422 +EOF
41423 +       elif test "$elem2" = package; then
41424 +           cat <<'EOF' 1>&2
41425 +'Click-buildtool elem2package' reads an 'elements.conf' file generated by
41426 +'click-buildtool findelem' on the standard input, examines those files for
41427 +exported elements, and writes a C++ source file suitable for creating a
41428 +dynamically linked package with those elements to the standard output. PKGNAME
41429 +is the name of the package.
41430 +
41431 +Usage: click-buildtool elem2package [-p PREFIX] [-V] PKGNAME < elements.conf
41432 +EOF
41433 +       fi
41434 +       cat <<'EOF' 1>&2
41435 +
41436 +Options:
41437 +  -S, --standards          Export standard required elements as well.
41438 +  -i, --include HDR        Emit "#include HDR" at top of file.
41439 +  -V, --verbose            Print more information.
41440 +  -h, --help               Print this message and exit.
41441 +
41442 +Report bugs to <click@pdos.lcs.mit.edu>.
41443 +EOF
41444 +       exit 0;;
41445 +    -*)
41446 +       elem2xxx_usage;;
41447 +    *)
41448 +       if test -z "$package" -a "$elem2" = package; then package="$1"; shift 1; else elem2xxx_usage; fi;;
41449 +    esac
41450 +    done
41451 +
41452 +    # set up awk program
41453 +    if test -n "$package"; then
41454 +       includes="  $includes "'print "#define WANT_MOD_USE_COUNT 1\n#include <click/config.h>\n#include <click/package.hh>\n#include <click/glue.hh>";
41455 +  for (file in INCLUDES) {
41456 +    if (file != "-") print "#include ", file;
41457 +  }'
41458 +       awk_program='BEGIN {
41459 +  OFS = ""; nrebecca = 0; packname="'"$package"'";
41460 +}
41461 +/^#/ { next; }
41462 +{
41463 +  if (NF == 1)
41464 +    next;
41465 +  INCLUDES[$2] = 1;
41466 +  for (i = 3; i <= NF; i++) {
41467 +    split($i, ans, /-/);
41468 +    if (ans[2] == "!si")
41469 +      B = B "  " ans[1] "::static_initialize();\n";
41470 +    else if (ans[2] == "!sc")
41471 +      C = C "  " ans[1] "::static_cleanup();\n";
41472 +    else if (ans[2] !~ /^!/) {
41473 +      B = B "  hatred_of_rebecca[" nrebecca "] = click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n"
41474 +      C = C "  click_remove_element_type(hatred_of_rebecca[" nrebecca "]);\n";
41475 +      D = D "   case " nrebecca ": return new " ans[1] ";\n";
41476 +      nrebecca++;
41477 +    }
41478 +  }
41479 +}
41480 +END {
41481 +  print "/* Generated by \"click-buildtool elem2package\" on '"$date"' */";
41482 +  print "/* Package name: ", packname, " */\n";
41483 +'"$includes"'
41484 +  print "\nCLICK_USING_DECLS";
41485 +  print "static int hatred_of_rebecca[", nrebecca, "];";
41486 +  print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n  switch (heywood) {\n", D, "   default: return 0;\n  }\n}\n";
41487 +  print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), THIS_MODULE)\n#endif";
41488 +  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";
41489 +  print "  click_provide(\"", packname, "\");\n", B, "  CLICK_DMALLOC_REG(\"nXXX\");\n  return 0;";
41490 +  print "#ifdef CLICK_BSDMODULE\n  } else if (t == MOD_UNLOAD) {\n#else\n}\nextern \"C\" void\ncleanup_module()\n{\n#endif";
41491 +  print C, "  click_unprovide(\"", packname, "\");";
41492 +  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";
41493 +}
41494 +'
41495 +
41496 +    else
41497 +       includes="$includes"'  print "#include <click/config.h>\n#include <click/package.hh>";
41498 +  for (file in INCLUDES) {
41499 +    if (file != "-") print "#include ", file;
41500 +  }'
41501 +       awk_program='BEGIN {
41502 +  OFS = ""; nrebecca = 0;
41503 +}
41504 +/^#/ { next; }
41505 +{
41506 +  if (NF == 1)
41507 +    next;
41508 +  INCLUDES[$2] = 1;
41509 +  for (i = 3; i <= NF; i++) {
41510 +    split($i, ans, /-/);
41511 +    if (ans[2] == "!si")
41512 +      B = B "  " ans[1] "::static_initialize();\n";
41513 +    else if (ans[2] == "!sc")
41514 +      C = C "  " ans[1] "::static_cleanup();\n";
41515 +    else if (ans[2] !~ /^!/) {
41516 +      B = B "  (void) click_add_element_type(\"" ans[2] "\", beetlemonkey, " nrebecca ");\n";
41517 +      D = D "   case " nrebecca ": return new " ans[1] ";\n";
41518 +    }
41519 +    nrebecca++;
41520 +  }
41521 +}
41522 +END {
41523 +  print "/* Generated by \"click-buildtool elem2export\" on '"$date"' */\n";
41524 +'"$includes"'
41525 +  print "CLICK_USING_DECLS";
41526 +  print "static Element *\nbeetlemonkey(uintptr_t heywood)\n{\n  switch (heywood) {\n", D, "   default: return 0;\n  }\n}\n";
41527 +  print "#ifdef CLICK_LINUXMODULE\n#define click_add_element_type(n, f, t) click_add_element_type((n), (f), (t), 0)\n#endif";
41528 +  print "void\nclick_export_elements()\n{\n", B, "  CLICK_DMALLOC_REG(\"nXXX\");\n}\n";
41529 +  print "void\nclick_unexport_elements()\n{\n", C, "}";
41530 +}
41531 +'
41532 +    fi
41533 +
41534 +    # Actually generate the command!
41535 +    if test -z "$standards"; then
41536 +       $awk "$awk_program"
41537 +    else
41538 +       cat <<EOF >/tmp/click-buildtool-standards.$$
41539 +-      <click/standard/addressinfo.hh> AddressInfo-AddressInfo
41540 +-      <click/standard/alignmentinfo.hh>       AlignmentInfo-AlignmentInfo
41541 +-      <click/standard/errorelement.hh>        ErrorElement-ErrorElement
41542 +-      <click/standard/portinfo.hh>    PortInfo-PortInfo
41543 +-      <click/standard/scheduleinfo.hh>        ScheduleInfo-ScheduleInfo
41544 +EOF
41545 +       cat - /tmp/click-buildtool-standards.$$ | $awk "$awk_program"
41546 +       /bin/rm -f /tmp/click-buildtool-standards.$$
41547 +    fi
41548 +}
41549 +
41550 +
41551 +
41552 +############
41553 +# PROVIDES #
41554 +############
41555 +
41556 +provides_usage () {
41557 +    echo "Usage: click-buildtool provides [REQS]" 1>&2
41558 +    echo "Try 'click-buildtool provides --help' for more information." 1>&2
41559 +    exit 1
41560 +}
41561 +
41562 +provides () {
41563 +    provisions="$default_provisions
41564 +$driver_provisions
41565 +"`elementmap_provisions ${clickdatadir}/elementmap.xml`
41566 +    requirements=""
41567 +    stdin=n; query=n; print=n
41568 +    while [ x"$1" != x ]; do
41569 +    case $1 in
41570 +    -q|--q|--qu|--que|--quer|--query)
41571 +       query=y; shift 1;;
41572 +    -l|--pri|--prin|--print)
41573 +       print=y; shift 1;;
41574 +    -r|--pro|--prov|--provi|--provid|--provide)
41575 +       if test $# -lt 2; then provides_usage; fi
41576 +       shift 1; provisions="$1
41577 +$provisions"; shift 1;;
41578 +    -r*)
41579 +       provisions=`echo "$1" | sed 's/^-r//'`"
41580 +$provisions"; shift 1;;
41581 +    --p=*|--pr=*|--pro=*|--prov=*|--provi=*|--provid=*|--provide=*)
41582 +       provisions=`echo "$1" | sed 's/^[^=]*=//'`"
41583 +$provisions"; shift 1;;
41584 +    -e|--e|--el|--ele|--elem|--eleme|--elemen|--element|--elementm|--elementma|--elementmap)
41585 +       if test $# -lt 2; then provides_usage; fi
41586 +       shift 1; provisions=`elementmap_provisions $1`"
41587 +$provisions"; shift 1;;
41588 +    -e*)
41589 +       emap=`echo "$1" | sed 's/^-e//'`
41590 +       provisions=`elementmap_provisions $emap`"
41591 +$provisions"; shift 1;;
41592 +    --e=*|--el=*|--ele=*|--elem=*|--eleme=*|--elemen=*|--element=*|--elementm=*|--elementma=*|--elementmap=*)
41593 +       emap=`echo "$1" | sed 's/^[^=]*=//'`
41594 +       provisions=`elementmap_provisions $emap`"
41595 +$provisions"; shift 1;;
41596 +    -h|--h|--he|--hel|--help)
41597 +       cat <<'EOF' 1>&2
41598 +'Click-buildtool provides' exits with status 0 if the Click installation
41599 +provides all requirement(s) in REQ arguments, and status 1 otherwise.
41600 +
41601 +Usage: click-buildtool provides [OPTIONS] [REQ...]
41602 +
41603 +Options:
41604 +  -q, --query              Print provisions to standard output.
41605 +  -r, --provide REQ        Provide requirement(s) in REQ.
41606 +  -e, --elementmap EMAP    Provide requirement(s) from EMAP.
41607 +  -l, --print              Print 0 (REQs not provided) or 1 (REQs provided).
41608 +  -h, --help               Print this message and exit.
41609 +
41610 +Report bugs to <click@pdos.lcs.mit.edu>.
41611 +EOF
41612 +       exit 0;;
41613 +    -)
41614 +       stdin=y; shift 1;;
41615 +    -*)
41616 +       provides_usage;;
41617 +    *)
41618 +       requirements="$1
41619 +$requirements"; shift 1;;
41620 +    esac
41621 +    done
41622 +
41623 +    [ $stdin = y ] && requirements="`cat` $requirements"
41624 +    provisions="`echo "$provisions" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`"
41625 +    [ $query = y ] && echo "$provisions"
41626 +    requirements="`echo "$requirements" | tr -s ' \011\015\014\013' '\012' | grep . | sort | uniq`"
41627 +    awk_provisions="`echo "$provisions" | sed 's/\(..*\)/dep["\1"]=1;/'`"
41628 +    echo "$requirements" | $awk -F: 'BEGIN {
41629 +'"$awk_provisions"'
41630 +}
41631 +/./ { if (!dep[$1]) exit 1; }' >/dev/null 2>&1
41632 +    status=$?
41633 +    [ $print = y ] && expr 1 - $status
41634 +    exit $status
41635 +}
41636 +
41637 +
41638 +#############
41639 +# QUIETLINK #
41640 +#############
41641 +
41642 +quietlink_usage () {
41643 +    echo "Usage: click-buildtool quietlink" 1>&2
41644 +    echo "Try 'click-buildtool quietlink --help' for more information." 1>&2
41645 +    exit 1
41646 +}
41647 +
41648 +quietlink () {
41649 +    while [ x"$1" != x ]; do
41650 +    case $1 in
41651 +    -h|--h|--he|--hel|--help)
41652 +       cat <<'EOF' 1>&2
41653 +'Click-buildtool quietlink' quiets the GNU linker when linking an element
41654 +package. Specifically, it removes undefined reference complaints.
41655 +
41656 +Usage: ld ... 2>&1 | click-buildtool quietlink
41657 +
41658 +Options:
41659 +  -h, --help                 Print this message and exit.
41660 +
41661 +Report bugs to <click@pdos.lcs.mit.edu>.
41662 +EOF
41663 +       exit 0;;
41664 +    *)
41665 +       quietlink_usage;;
41666 +    esac
41667 +    done
41668 +
41669 +    $awk -F: 'BEGIN {
41670 +  context = ""
41671 +}
41672 +/: In function/ {
41673 +  context = $0
41674 +  next
41675 +}
41676 +/: undefined reference to/ {
41677 +  next
41678 +}
41679 +/: more undefined references to/ {
41680 +  next
41681 +}
41682 +{
41683 +  if (context != "") {
41684 +    print context
41685 +    context = ""
41686 +  }
41687 +  print $0
41688 +}' 1>&2
41689 +}
41690 +
41691 +
41692 +
41693 +##########
41694 +# PREFIX #
41695 +##########
41696 +
41697 +prefix_usage () {
41698 +    echo "Usage: click-buildtool prefix" 1>&2
41699 +    echo "Try 'click-buildtool prefix --help' for more information." 1>&2
41700 +    exit 1
41701 +}
41702 +
41703 +prefix () {
41704 +    while [ x"$1" != x ]; do
41705 +    case $1 in
41706 +    -h|--h|--he|--hel|--help)
41707 +       cat <<'EOF' 1>&2
41708 +'Click-buildtool prefix' prints the Click prefix directory.
41709 +
41710 +Usage: click-buildtool prefix
41711 +
41712 +Options:
41713 +  -h, --help                 Print this message and exit.
41714 +
41715 +Report bugs to <click@pdos.lcs.mit.edu>.
41716 +EOF
41717 +       exit 0;;
41718 +    *)
41719 +       prefix_usage;;
41720 +    esac
41721 +    done
41722 +    echo $prefix
41723 +}
41724 +
41725 +
41726 +
41727 +############
41728 +# KVERSION #
41729 +############
41730 +
41731 +kversion_usage () {
41732 +    echo_n "Usage: click-buildtool kversion [--gpl] > kversion.c" 1>&2
41733 +    echo "Try 'click-buildtool kversion --help' for more information." 1>&2
41734 +    exit 1
41735 +}
41736 +
41737 +kversion () {
41738 +    gpl=0
41739 +    linux26=$LINUXMODULE_2_6
41740 +    while [ x"$1" != x ]; do
41741 +    case $1 in
41742 +    --g|--gp|--gpl)
41743 +       gpl=1; shift 1;;
41744 +    -h|--h|--he|--hel|--help)
41745 +       cat <<'EOF' 1>&2
41746 +'Click-buildtool kversion' writes a kversion.c file, to be used for building
41747 +a Click kernel package, on the standard output.
41748 +
41749 +Usage: click-buildtool kversion [--gpl] > kversion.c
41750 +
41751 +Options:
41752 +      --gpl                The package is dual-licensed BSD/GPL (otherwise
41753 +                           no license).
41754 +  -h, --help               Print this message and exit.
41755 +
41756 +Report bugs to <click@pdos.lcs.mit.edu>.
41757 +EOF
41758 +       exit 0;;
41759 +    *)
41760 +       kversion_usage;;
41761 +    esac
41762 +    done
41763 +
41764 +    cat <<EOF
41765 +#include <click/config.h>
41766 +#include <linux/version.h>
41767 +#include <linux/module.h>
41768 +
41769 +/* a new version of EXPORT_NO_SYMBOLS that works */
41770 +const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
41771 +EOF
41772 +    test $gpl = 1 && cat <<EOF
41773 +
41774 +#ifdef MODULE_LICENSE
41775 +MODULE_LICENSE("Dual BSD/GPL");
41776 +#endif
41777 +EOF
41778 +}
41779 +
41780 +
41781 +
41782 +##########
41783 +# KBUILD #
41784 +##########
41785 +
41786 +kbuild_usage () {
41787 +    echo_n "Usage: click-buildtool kbuild > Kbuild" 1>&2
41788 +    echo "Try 'click-buildtool kbuild --help' for more information." 1>&2
41789 +    exit 1
41790 +}
41791 +
41792 +kbuild () {
41793 +    while [ x"$1" != x ]; do
41794 +    case $1 in
41795 +    -h|--h|--he|--hel|--help)
41796 +       cat <<'EOF' 1>&2
41797 +'Click-buildtool kbuild' writes a Kbuild file, to be used for building
41798 +a Click kernel package for Linux 2.6 kernels, on the standard output.
41799 +
41800 +Usage: click-buildtool kbuild > Kbuild
41801 +
41802 +Options:
41803 +  -h, --help               Print this message and exit.
41804 +
41805 +Report bugs to <click@pdos.lcs.mit.edu>.
41806 +EOF
41807 +       exit 0;;
41808 +    *)
41809 +       kversion_usage;;
41810 +    esac
41811 +    done
41812 +
41813 +    echo "include ${clickdatadir}/pkg-linuxmodule-26.mk"
41814 +}
41815 +
41816 +
41817 +
41818 +###############
41819 +# MAKEPACKAGE #
41820 +###############
41821 +
41822 +makepackage_usage () {
41823 +    echo "Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES..." 1>&2
41824 +    echo "Try 'click-buildtool makepackage for more information." 1>&2
41825 +    exit 1
41826 +}
41827 +
41828 +makepackage () {
41829 +    driver=""
41830 +    date=`date`
41831 +    dir=
41832 +    pkg=
41833 +    srcs=
41834 +    quiet=
41835 +    cflags=
41836 +    while [ x"$1" != x ]; do
41837 +    case $1 in
41838 +    -t|--d|--dr|--dri|--driv|--drive|--driver)
41839 +       test $# -lt 2 && makepackage_usage
41840 +       shift 1; driver="$1"; shift 1;;
41841 +    -t*)
41842 +       driver=`echo "$1" | sed 's/^-D//'`; shift 1;;
41843 +    --dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
41844 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
41845 +    --t|--ta|--tar|--targ|--targe|--target)
41846 +        test $# -lt 2 && makepackage_usage
41847 +       shift 1; driver="$1"; shift 1;;
41848 +    --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
41849 +       driver=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
41850 +    -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
41851 +        test $# -lt 2 && makepackage_usage
41852 +       shift 1; dir="$1"; shift 1;;
41853 +    -C*)
41854 +       dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;;
41855 +    --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
41856 +       dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
41857 +    -q|--q|--qu|--qui|--quie|--quiet)
41858 +       quiet="-s"; shift 1;;
41859 +    -h|--h|--he|--hel|--help)
41860 +       cat <<'EOF' 1>&2
41861 +'Click-buildtool makepackage' builds a Click package for the specified
41862 +driver from sources listed on the command line.
41863 +
41864 +Usage: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES...
41865 +
41866 +Options:
41867 +  -t, --driver DRIVER      Set target driver to DRIVER ('userlevel',
41868 +                           'linuxmodule', 'bsdmodule', 'ns', or 'tool').
41869 +  -q, --quiet              Build quietly (may be ignored).
41870 +  -C, --directory DIR      Switch to DIR directory before building.
41871 +  -h, --help               Print this message and exit.
41872 +  -[other options]         Passed to the C/C++ compiler.
41873 +
41874 +Report bugs to <click@pdos.lcs.mit.edu>.
41875 +EOF
41876 +       exit 0;;
41877 +    -*)
41878 +       cflags="$cflags $1"; shift 1;;
41879 +    *)
41880 +       if test -z "$pkg"; then
41881 +           pkg="$1"; shift 1
41882 +       else
41883 +           srcs="$srcs
41884 +$1"; shift 1
41885 +       fi;;
41886 +    esac
41887 +    done
41888 +
41889 +    test -z "$srcs" && makepackage_usage
41890 +
41891 +    objs=
41892 +    objsvar=OBJS
41893 +    if test -z "$driver" -o "$driver" = 'user' -o "$driver" = 'userlevel'; then
41894 +       L=u
41895 +    elif test "$driver" = 'kernel' -o "$driver" = 'linuxmodule'; then
41896 +       L=k
41897 +    elif test "$driver" = 'bsdmodule'; then
41898 +       L=b
41899 +    elif test "$driver" = 'ns' -o "$driver" = 'nsmodule'; then
41900 +       L=n
41901 +    elif test "$driver" = 'tool'; then
41902 +       L=t
41903 +    else
41904 +       echo "Unknown driver $driver" 1>&2
41905 +       exit 1
41906 +    fi
41907 +    osuffix=".${L}o"
41908 +
41909 +    if test -n "$dir"; then cd "$dir"; fi
41910 +    echo > ${L}elements.conf
41911 +    echo "$srcs" | grep . | elem2make -t $driver > ${L}elements.mk
41912 +    echo "PACKAGE_OBJS :=" >> ${L}elements.mk
41913 +
41914 +    echo "package = $pkg
41915 +
41916 +srcdir = .
41917 +top_srcdir = .
41918 +builddir = .
41919 +top_builddir = .
41920 +PACKAGE_CFLAGS = $cflags
41921 +PACKAGE_CXXFLAGS = $cflags
41922 +
41923 +include ${clickdatadir}/config.mk
41924 +include ${clickdatadir}/pkg-Makefile" > Makefile
41925 +    
41926 +    test -z "$quiet" && echo "+" $gmake $pkg$osuffix
41927 +    $gmake $quiet $pkg$osuffix
41928 +}
41929 +
41930 +
41931 +
41932 +#########
41933 +# KSYMS #
41934 +#########
41935 +
41936 +ksyms_usage () {
41937 +    echo "Usage: click-buildtool ksyms OBJ... > KSYMS" 1>&2
41938 +    echo "Try 'click-buildtool ksyms --help' for more information." 1>&2
41939 +    exit 1
41940 +}
41941 +
41942 +ksyms () {
41943 +    driver=""
41944 +    date=`date`
41945 +    dir=
41946 +    objs=
41947 +    exclude=
41948 +    while [ x"$1" != x ]; do
41949 +    case $1 in
41950 +    -C|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
41951 +        test $# -lt 2 && ksyms_usage
41952 +       shift 1; dir="$1"; shift 1;;
41953 +    -C*)
41954 +       dir="`echo "$1" | sed 's/^-C//'`"/; shift 1;;
41955 +    --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
41956 +       dir="`echo "$1" | sed 's/^[^=]*=//'`"/; shift 1;;
41957 +    -x|--e|--ex|--exc|--excl|--exclu|--exclud|--exclude)
41958 +       test $# -lt 2 && ksyms_usage
41959 +       shift 1; exclude="$exclude
41960 +$1"; shift 1;;
41961 +    -x*)
41962 +       exclude="$exclude
41963 +`echo "$1" | sed 's/^-x//'`"; shift 1;;
41964 +    --e=*|--ex=*|--exc=*|--excl=*|--exclu=*|--exclud=*|--exclude=*)
41965 +       exclude="$exclude
41966 +`echo "$1" | sed 's/^[^=]*=//'`"; shift 1;;
41967 +    -h|--h|--he|--hel|--help)
41968 +       cat <<'EOF' 1>&2
41969 +'Click-buildtool ksyms' creates a C file that exports all symbols for the
41970 +Click objects listed on the command line.
41971 +
41972 +Usage: click-buildtool ksyms OBJ... > KSYMS
41973 +
41974 +Options:
41975 +  -x, --exclude=FILE       Ignore OBJ even if it is supplied as an argument.
41976 +  -C, --directory DIR      Switch to DIR directory before running.
41977 +  -h, --help               Print this message and exit.
41978 +
41979 +Report bugs to <click@pdos.lcs.mit.edu>.
41980 +EOF
41981 +       exit 0;;
41982 +    *)
41983 +       objs="$objs
41984 +$1"; shift 1;;
41985 +    esac
41986 +    done
41987 +
41988 +    test -z "$objs" && ksyms_usage
41989 +    objs=`echo "$objs" | sort | uniq`
41990 +    test -n "$exclude" && objs=`echo "$objs
41991 +$exclude" | sort | uniq -u`
41992 +
41993 +    if test -n "$dir"; then cd "$dir"; fi
41994 +    echo "// Created by 'click-buildtool ksyms' on $date"
41995 +    echo "#include <click/config.h>"
41996 +    echo "#include <linux/version.h>"
41997 +    echo "#include <linux/module.h>"
41998 +    nm -g $objs | $awk '
41999 +BEGIN {
42000 +    printed["init_module"] = printed["cleanup_module"] = 1;
42001 +}
42002 +/^[    ]/ { 
42003 +    next 
42004 +}
42005 +/........[     ][ABCDGRSTVW]/ {
42006 +    x = $3;
42007 +    if (x ~ /^[_A-Za-z][_A-Za-z0-9]*$/ && !printed[x]) {
42008 +       printed[x] = 1;
42009 +       if (x != "click_assert_failed")
42010 +           print "extern char " x "[];";
42011 +       print "EXPORT_SYMBOL(" x ");";
42012 +    }
42013 +}'
42014 +}
42015 +
42016 +
42017 +
42018 +################
42019 +# MAIN PROGRAM #
42020 +################
42021 +
42022 +if test $# = 0; then
42023 +    # force usage message
42024 +    set crapfunc
42025 +fi
42026 +
42027 +while [ x"$1" != x ]; do
42028 +case $1 in
42029 +  --vers|--versi|--versio|--version)
42030 +     cat <<'EOF'
42031 +click-buildtool (Click) 1.6.0
42032 +Copyright (c) 2000-2001 Massachusetts Institute of Technology
42033 +Copyright (c) 2000-2004 Mazu Networks, Inc.
42034 +Copyright (c) 2001-2003 International Computer Science Institute
42035 +Copyright (c) 2004-2007 Regents of the University of California
42036 +This is free software; see the source for copying conditions.
42037 +There is NO warranty, not even for merchantability or fitness for a
42038 +particular purpose.
42039 +EOF
42040 +     exit 0;;
42041 +  -V|--verb|--verbo|--verbos|--verbose)
42042 +     verbose=1; shift 1;;
42043 +  -h|--h|--he|--hel|--help)
42044 +     cat <<'EOF' 1>&2
42045 +'Click-buildtool' is a set of tools used when building Click. For information
42046 +on a particular tool, run 'click-buildtool TOOLNAME --help'.
42047 +
42048 +Usage: click-buildtool elem2make [-V] [-p PREFIX] < [ELEMENTS]
42049 +   or: click-buildtool elem2export [-V] [-p PREFIX] < [ELEMENTS]
42050 +   or: click-buildtool elem2package [-V] [-p PREFIX] PACKAGENAME < [ELEMENTS]
42051 +   or: click-buildtool findelem [-a] [-V] [-p PREFIX] < [FILES AND DIRECTORIES]
42052 +   or: click-buildtool makepackage [-t DRIVER] PACKAGENAME SRCFILES...
42053 +   or: click-buildtool prefix
42054 +   or: click-buildtool provides [REQS]
42055 +   or: click-buildtool quietlink
42056 +   or: click-buildtool kbuild
42057 +   or: click-buildtool kversion [--gpl]
42058 +   or: click-buildtool ksyms OBJS > KSYMSFILE
42059 +
42060 +Options:
42061 +  -V, --verbose            Print more information.
42062 +  -h, --help               Print this message and exit.
42063 +      --version            Print version number and exit.
42064 +
42065 +Report bugs to <click@pdos.lcs.mit.edu>.
42066 +EOF
42067 +     exit 0;;
42068 +  findelem)
42069 +     shift 1; findelem "$@"; exit 0;;
42070 +  elem2make)
42071 +     elem2="make"; shift 1; elem2make "$@"; exit 0;;
42072 +  elem2export)
42073 +     elem2="export"; shift 1; elem2xxx "$@"; exit 0;;
42074 +  elem2package)
42075 +     elem2="package"; shift 1; elem2xxx "$@"; exit 0;;
42076 +  makepackage)
42077 +     shift 1; makepackage "$@"; exit 0;;
42078 +  prefix)
42079 +     shift 1; prefix "$@"; exit 0;;
42080 +  provides)
42081 +     shift 1; provides "$@"; exit 0;;
42082 +  quietlink)
42083 +     shift 1; quietlink "$@"; exit 0;;
42084 +  kversion)
42085 +     shift 1; kversion "$@"; exit 0;;
42086 +  kbuild)
42087 +     shift 1; kbuild "$@"; exit 0;;
42088 +  ksyms)
42089 +     shift 1; ksyms "$@"; exit 0;;
42090 +  *)
42091 +     echo "Usage: click-buildtool TOOLNAME [ARGUMENTS]
42092 +Try 'click-buildtool --help' for more information." 1>&2
42093 +     exit 1;;
42094 +esac
42095 +done
42096 Files click-1.6.0/inst/bin/click-check and click-1.6.0-27/inst/bin/click-check differ
42097 Files click-1.6.0/inst/bin/click-combine and click-1.6.0-27/inst/bin/click-combine differ
42098 diff -Nurb click-1.6.0/inst/bin/click-compile click-1.6.0-27/inst/bin/click-compile
42099 --- click-1.6.0/inst/bin/click-compile  1969-12-31 19:00:00.000000000 -0500
42100 +++ click-1.6.0-27/inst/bin/click-compile       2009-02-05 10:20:41.000000000 -0500
42101 @@ -0,0 +1,302 @@
42102 +#! /bin/sh
42103 +
42104 +# click-compile.in -- script compiles Click elements
42105 +# Eddie Kohler
42106 +#
42107 +# Copyright (c) 1999 Massachusetts Institute of Technology
42108 +# Copyright (c) 2001 International Computer Science Institute
42109 +# Copyright (c) 2005 Regents of the University of California
42110 +#
42111 +# Permission is hereby granted, free of charge, to any person obtaining a
42112 +# copy of this software and associated documentation files (the "Software"),
42113 +# to deal in the Software without restriction, subject to the conditions
42114 +# listed in the Click LICENSE file. These conditions include: you must
42115 +# preserve this copyright notice, and you cannot mention the copyright
42116 +# holders in advertising related to the Software without their permission.
42117 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
42118 +# notice is a summary of the Click LICENSE file; the license in that file is
42119 +# legally binding.
42120 +
42121 +prefix=/d/click/click-1.6.0-27/inst
42122 +exec_prefix=/d/click/click-1.6.0-27/inst
42123 +includedir=/d/click/click-1.6.0-27/inst/include
42124 +libdir=/d/click/click-1.6.0-27/inst/lib
42125 +datarootdir=/d/click/click-1.6.0-27/inst/share
42126 +datadir=/d/click/click-1.6.0-27/inst/share
42127 +srcdir=${datadir}/click/src
42128 +linuxdir=/d/kernels/linux-2.6.27.10-clickport
42129 +freebsd_includedir=/usr/include
42130 +CLICK_VERSION=1.6.0
42131 +
42132 +# determine mode
42133 +directory=.
42134 +driver=
42135 +package=NONE
42136 +cflags=
42137 +compileflag=-c
42138 +quiet=
42139 +gpl=y
42140 +while true; do
42141 +    bad=x
42142 +    case $1 in
42143 +      -t|--dr|--dri|--driv|--drive|--driver)
42144 +       driver=$2; shift 2;;
42145 +      -t*)
42146 +        driver=`echo "$1" | sed 's/^-t//'`; shift 1;;
42147 +      --dr=*|--dri=*|--driv=*|--drive=*|--driver=*)
42148 +       driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
42149 +      --c|--cf|--cfl|--cfla|--cflag|--cflags|--de|--def|--defs)
42150 +       echo   -I$includedir
42151 +       exit 0;;
42152 +      --l|--li|--lib|--libs)
42153 +       echo -L$libdir -lclick  -lpcap -ldl 
42154 +       exit 0;;
42155 +      --toolc|--toolcf|--toolcfl|--toolcfla|--toolcflag|--toolcflags)
42156 +       echo -DCLICK_TOOL -I$includedir
42157 +       exit 0;;
42158 +      --tooll|--toolli|--toollib|--toollibs)
42159 +       echo -L$libdir -lclicktool -ldl 
42160 +       exit 0;;
42161 +      --o|--ot|--oth|--othe|--other|--otherl|--otherli|--otherlib|--otherlibs)
42162 +       echo  -lpcap -ldl 
42163 +       exit 0;;
42164 +      -d|--di|--dir|--dire|--direc|--direct|--directo|--director|--directory)
42165 +       directory=$2; shift 2;;
42166 +      -d*)
42167 +       directory=`echo "$1" | sed 's/^-d//'`; shift 1;;
42168 +      --di=*|--dir=*|--dire=*|--direc=*|--direct=*|--directo=*|--director=*|--directory=*)
42169 +       directory=`echo "$1" | sed 's/^[^=]*=//'`; shift 1;;
42170 +      --t|--ta|--tar|--targ|--targe|--target)
42171 +        echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2
42172 +       driver=$2; shift 2;;
42173 +      --t=*|--ta=*|--tar=*|--targ=*|--targe=*|--target=*)
42174 +        echo "click-compile: '--target' is obsolete; change your script to use '--driver'" 1>&2
42175 +       driver=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
42176 +      -p|--p|--pa|--pac|--pack|--packa|--packag|--package)
42177 +       package=$2; shift 2;;
42178 +      -p*)
42179 +       package=`echo "$1" | sed 's/^-p//'`; shift 1;;
42180 +      --p=*|--pa=*|--pac=*|--pack=*|--packa=*|--packag=*|--package=*)
42181 +       package=`echo "$1" | sed 's/[-a-z]*=//'`; shift 1;;
42182 +      -q|--q|--qu|--qui|--quie|--quiet)
42183 +       quiet=y; shift 1;;
42184 +      --no-g|--no-gp|--no-gpl)
42185 +       gpl=n; shift 1;;
42186 +      -h|--h|--he|--hel|--help)
42187 +       cat <<'EOF'
42188 +'Click-compile' compiles a Click source file, or outputs any compiler options
42189 +relevant for userlevel Click drivers.
42190 +
42191 +Usage: click-compile -t DRIVER [OPTIONS] SOURCEFILE...
42192 +
42193 +Options:
42194 +      --defs              Outputs preprocessor options for userlevel drivers.
42195 +      --libs              Outputs link options for userlevel drivers.
42196 +      --otherlibs         Like '--libs' minus the Click library.
42197 +      --toolcflags        Outputs C/C++ flags options for tools.
42198 +      --toollibs          Outputs link options for tools.
42199 +  -t, --driver DRIVER     Sets target driver to 'bsdmodule', 'linuxmodule',
42200 +                          'userlevel', 'ns', or 'tool'.
42201 +  -p, --package PACKAGE   Build a dynamically loadable package named PACKAGE.
42202 +  -d, --directory DIR     Change to directory DIR.
42203 +  -q, --quiet             Be quiet (don't echo commands or print warnings).
42204 +      --no-gpl            Omit "BSD/GPL" declaration from kernel package.
42205 +  -h, --help              Print this message and exit.
42206 +  -v, --version           Print version number and exit.
42207 +  Other options are passed to the compiler unchanged.
42208 +
42209 +Report bugs to <click@pdos.lcs.mit.edu>.
42210 +EOF
42211 +       exit 0;;
42212 +      -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
42213 +       echo click-compile '(Click)' $CLICK_VERSION
42214 +       cat <<"EOF"
42215 +Copyright (C) 1999-2001 Massachusetts Institute of Technology
42216 +Copyright (C) 2002 International Computer Science Institute
42217 +Copyright (C) 2004 Regents of the University of California
42218 +This is free software; see the source for copying conditions.
42219 +There is NO warranty, not even for merchantability or fitness for any
42220 +particular purpose.
42221 +EOF
42222 +       exit 0;;
42223 +      -*)
42224 +       if test "$1" = -E -o "$1" = -c -o "$1" = -S; then
42225 +           compileflag=$1
42226 +       else
42227 +           cflags="$cflags '$1'"
42228 +       fi
42229 +       shift 1;;
42230 +      *)
42231 +       bad=;;
42232 +    esac
42233 +    if test -z "$bad"; then break; fi
42234 +done
42235 +
42236 +cd $directory
42237 +
42238 +# test directory function
42239 +test_dir () {
42240 +    test -d "$1" -a -d "$1/elements" -a -d "$1/lib"
42241 +}
42242 +
42243 +# analyze CLICKPATH to find sources
42244 +path=${CLICKPATH-:}
42245 +tried_defaults=
42246 +include_source=
42247 +while true; do
42248 +    case $path in
42249 +      :*)
42250 +       if test -z "$tried_defaults" && test_dir "$srcdir"; then
42251 +           include_source="-I$srcdir"
42252 +       else
42253 +           tried_defaults=y
42254 +       fi
42255 +       path=`echo "$path" | sed 's/://'`
42256 +       ;;
42257 +      *:*)
42258 +       dir=`echo "$path" | sed 's/:.*//'`
42259 +       if test_dir "$dir"; then include_source="-I$dir"; fi
42260 +       path=`echo "$path" | sed 's/[^:]*://'`
42261 +       ;;
42262 +      *:)
42263 +       dir=`echo "$path" | sed 's/:.*//'`
42264 +       if test_dir "$dir"; then include_source="-I$dir"; fi
42265 +       path=":"
42266 +       ;;
42267 +      *)
42268 +       if test_dir "$path"; then include_source="-I$path"; fi
42269 +       path=""
42270 +       ;;
42271 +    esac
42272 +    if test -z "$path" -o -n "$include_source"; then break; fi
42273 +done
42274 +
42275 +if test ! -d "$includedir"; then
42276 +    echo "click-compile: Cannot find Click include directory!" 1>&2
42277 +    echo "  (Have you installed Click yet?)" 1>&2
42278 +    exit 1
42279 +elif test -z "$include_source"; then
42280 +    if test -z "$quiet"; then
42281 +       echo "click-compile: warning: cannot find full Click source" 1>&2
42282 +    fi
42283 +fi
42284 +
42285 +
42286 +case $driver in
42287 +  u|us|use|user|userl|userle|userlev|userleve|userlevel)
42288 +    idefs="-DHAVE_CONFIG_H -DCLICK_USERLEVEL"
42289 +    iincludes="${include_source} -I${includedir}"
42290 +    icppflags=""
42291 +    icxxflags="-fPIC -g -O2 -MD"
42292 +    icflags="-fPIC -g -O2 -MD"
42293 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
42294 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
42295 +    driver=userlevel;;
42296 +  k|ke|ker|kern|kerne|kernel|l|li|lin|linu|linux|linuxm|linuxmo|linuxmod|linuxmodu|linuxmodul|linuxmodule)
42297 +    idefs="-DHAVE_CONFIG_H -DCLICK_LINUXMODULE"
42298 +    iincludes="${include_source} -I${includedir} -I${linuxdir}/include"
42299 +    icppflags=""
42300 +    icxxflags=" -O2 -MD"
42301 +    icflags=" -O2 -MD"
42302 +    command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
42303 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
42304 +    driver=linuxmodule;;
42305 +  b|bs|bsd|bsdm|bsdmo|bsdmod|bsdmodu|bsdmodul|bsdmodule)
42306 +    idefs="-DHAVE_CONFIG_H -DCLICK_BSDMODULE"
42307 +    iincludes="-nostdinc ${include_source} -I${includedir}"
42308 +    icppflags=""
42309 +    icxxflags=" -O2 -MD"
42310 +    icflags=" -O2 -MD"
42311 +    command="${CXX-g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
42312 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
42313 +    driver=bsdmodule;;
42314 +  ns|nsm|nsmo|nsmod|nsmodu|nsmodul|nsmodule)
42315 +    idefs="-DHAVE_CONFIG_H -DCLICK_NS"
42316 +    iincludes="${include_source} -I${includedir}"
42317 +    icppflags=""
42318 +    icxxflags="-fPIC -g -O2 -MD"
42319 +    icflags="-fPIC -g -O2 -MD"
42320 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
42321 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
42322 +    driver=ns;;
42323 +  t|to|too|tool)
42324 +    idefs="-DHAVE_CONFIG_H -DCLICK_TOOL"
42325 +    iincludes="${include_source} -I${includedir}"
42326 +    icppflags=""
42327 +    icxxflags="-fPIC -g -O2 -MD"
42328 +    icflags="-fPIC -g -O2 -MD"
42329 +    command="${CXX-g++ -W -Wall } ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CXXFLAGS-$icxxflags} $cflags $compileflag"
42330 +    c_command="${CC-gcc -W -Wall} ${DEFS-$idefs} ${INCLUDES-$iincludes} ${CPPFLAGS-$icppflags} ${CFLAGS-$icflags} $cflags $compileflag"
42331 +    driver=tool;;
42332 +  "")
42333 +    echo "click-compile: you must specify a driver" 1>&2; exit 1;;
42334 +  *)
42335 +    echo "click-compile: acceptable drivers are 'userlevel', 'linuxmodule'," 1>&2
42336 +    echo "click-compile:   'bsdmodule', and 'tool'" 1>&2; exit 1;;
42337 +esac
42338 +
42339 +exec_command () {
42340 +    if test -z "$quiet"; then
42341 +       echo "$@" 1>&2
42342 +    fi
42343 +    eval "$@" || exit 1
42344 +}
42345 +
42346 +compile_file () {
42347 +    option=
42348 +    source="$1"; shift
42349 +    if test -r "$source"; then
42350 +       option=`head -n 5 $source | grep '^/\*\* click-compile:' | sed -e 's/\/\*\* click-compile://g' -e 's/\*\///g'`
42351 +    fi
42352 +    exec_command $command $option $source "$@"
42353 +}
42354 +
42355 +# do stuff
42356 +if test "x$package" != "xNONE"; then
42357 +    command="$command -DCLICK_PACKAGE"
42358 +    files=; rmfiles=
42359 +    trap 'rm -f $rmfiles' 0
42360 +    trap 'rm -f $rmfiles; exit 1' 1 2 15
42361 +    for file; do
42362 +       if echo "$file" | grep '\.cc*$' >/dev/null 2>&1; then
42363 +           objfile=`echo "$file" | sed 's/\.c*$/'"$$"'\.o/;s/^.*\///'`
42364 +           compile_file $file -o $objfile
42365 +           rmfiles="$rmfiles $objfile "`echo $objfile | sed 's/\.o/\.d/'`
42366 +       else
42367 +           objfile="$file"
42368 +       fi
42369 +       files="$files $objfile"
42370 +    done
42371 +    if test $driver = linuxmodule; then
42372 +       vfile=kernelversion$$
42373 +       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
42374 +       files="$files $vfile.o"
42375 +       rmfiles="$rmfiles $vfile.o $vfile.c $vfile.d"
42376 +       cat > $vfile.c <<EOF
42377 +#include <click/config.h>
42378 +#include <linux/module.h>
42379 +/* a new version of EXPORT_NO_SYMBOLS that works */
42380 +const int __ksymtab_nothing[0] __attribute__((section("__ksymtab"))) = { };
42381 +EOF
42382 +       if test $gpl = y; then
42383 +           cat >> $vfile.c <<EOF
42384 +#ifdef MODULE_LICENSE
42385 +MODULE_LICENSE("Dual BSD/GPL");
42386 +#endif
42387 +EOF
42388 +       fi
42389 +       c_command_nowarn=`echo $c_command | sed 's/-W[-a-z]*//g'`
42390 +       exec_command $c_command_nowarn $vfile.c
42391 +       exec_command "ld -r -o $package $cflags $files"
42392 +       exit 0
42393 +    elif test $driver = userlevel -o $driver = tool -o $driver = ns; then
42394 +       exec_command "${CXX-g++ -W -Wall } ${CXXFLAGS-$icxxflags} -shared -o $package $cflags $files"
42395 +       exit 0
42396 +    elif test $driver = bsdmodule; then
42397 +       exec_command "ld -Bshareable -o $package $cflags $files"
42398 +       exit 0
42399 +    fi
42400 +else
42401 +    exec_command "$command $@"
42402 +    exit 0
42403 +fi
42404 Files click-1.6.0/inst/bin/click-devirtualize and click-1.6.0-27/inst/bin/click-devirtualize differ
42405 diff -Nurb click-1.6.0/inst/bin/click-elem2man click-1.6.0-27/inst/bin/click-elem2man
42406 --- click-1.6.0/inst/bin/click-elem2man 1969-12-31 19:00:00.000000000 -0500
42407 +++ click-1.6.0-27/inst/bin/click-elem2man      2009-02-11 14:08:52.000000000 -0500
42408 @@ -0,0 +1,1484 @@
42409 +#! /usr/bin/perl -w
42410 +
42411 +# click-elem2man -- creates man pages from structured comments in element
42412 +# source code
42413 +# Eddie Kohler
42414 +# Robert Morris - original make-faction-html script
42415 +#
42416 +# Copyright (c) 1999-2001 Massachusetts Institute of Technology
42417 +# Copyright (c) 2001-2003 International Computer Science Institute
42418 +# Copyright (c) 2006 Regents of the University of California
42419 +#
42420 +# Permission is hereby granted, free of charge, to any person obtaining a
42421 +# copy of this software and associated documentation files (the "Software"),
42422 +# to deal in the Software without restriction, subject to the conditions
42423 +# listed in the Click LICENSE file. These conditions include: you must
42424 +# preserve this copyright notice, and you cannot mention the copyright
42425 +# holders in advertising related to the Software without their permission.
42426 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
42427 +# notice is a summary of the Click LICENSE file; the license in that file is
42428 +# legally binding.
42429 +
42430 +my($verbose) = 0;
42431 +
42432 +# information stored about each Click element, indexed by C++ class name
42433 +my(%processing, %deprecated, %portcount, %docrequires, %requires, $PREFIX);
42434 +
42435 +my(%section_break) =
42436 +    ( 'head1' => 1, 'c' => 1, 's' => 1,
42437 +      'io' => 1, 'processing' => 1, 'drivers' => 1,
42438 +      'd' => 1, 'n' => 1, 'e' => 1, 'h' => 1, 'a' => 1, 'title' => 1,
42439 +      'deprecated' => 1, 'package' => 1 );
42440 +my(%section_takes_args) =
42441 +    ( 'head1' => 1, 'c' => 0, 's' => 2,
42442 +      'io' => 2, 'processing' => 2, 'drivers' => 2,
42443 +      'd' => 0, 'n' => 0, 'e' => 0, 'h' => 1, 'a' => 2, 'title' => 1,
42444 +      'deprecated' => 1, 'package' => 2 );
42445 +my(%section_takes_text) =
42446 +    ( 'head1' => 2, 'c' => 1, 's' => 1,
42447 +      'io' => 2, 'processing' => 2, 'drivers' => 2,
42448 +      'd' => 1, 'n' => 1, 'e' => 1, 'h' => 1, 'a' => 2, 'title' => 0,
42449 +      'deprecated' => 0, 'package' => 1 );
42450 +my(%xsection_takes_args) =
42451 +    ( 'head1' => 1, 'head2' => 1, 'item' => 1, 'over' => 1, 'back' => 0,
42452 +      'for' => 1, 'begin' => 1, 'end' => 1, 'start!' => 1, 'name!' => 1,
42453 +      'end!' => 0, 'text' => 0 );
42454 +my(%infosection_name) =
42455 +    ( 'package' => 'Package', 'io' => 'Ports', 'processing' => 'Processing',
42456 +      'drivers' => 'Drivers' );
42457 +
42458 +my $section = 'n';
42459 +my $package;
42460 +my $uninstall = 0;
42461 +my(@all_outnames, %all_outsections, %summaries_by_section, %all_roff_summaries);
42462 +
42463 +my(%processing_constants) =
42464 +    ( 'AGNOSTIC' => 'a/a', 'PUSH' => 'h/h', 'PULL' => 'l/l',
42465 +      'PUSH_TO_PULL' => 'h/l', 'PULL_TO_PUSH' => 'l/h' );
42466 +my(%processing_text) =
42467 +    ( 'a/a' => 'agnostic', 'h/h' => 'push', 'l/l' => 'pull',
42468 +      'h/l' => 'push inputs, pull outputs',
42469 +      'l/h' => 'pull inputs, push outputs',
42470 +      'a/ah' => 'agnostic, but output 1 is push' );
42471 +
42472 +my(@section_headers) =
42473 +    ( 'basicsources'           => 'Basic Sources and Sinks',
42474 +      'classification'         => 'Basic Classification and Selection',
42475 +      'basictransfer'          => 'Basic Packet Transfer',
42476 +      'counters'               => 'Counters',
42477 +      'timestamps'             => 'Timestamps',
42478 +      'basicmod'               => 'Basic Packet Modification',
42479 +      'storage'                        => 'Packet Storage',
42480 +      'aqm'                    => 'Active Queue Management',
42481 +      'scheduling'             => 'Packet Scheduling',
42482 +      'shaping'                        => 'Traffic Shaping',
42483 +      'information'            => 'Information Elements',
42484 +      'netdevices'             => 'Network Devices',
42485 +      'comm'                   => 'Host and Socket Communication',
42486 +      'ethernet'               => 'Ethernet',
42487 +      'arp'                    => 'ARP',
42488 +      'ip'                     => 'IPv4',
42489 +      'iproute'                        => 'IPv4 Routing',
42490 +      'icmp'                   => 'ICMP',
42491 +      'nat'                    => 'Network Address Translation',
42492 +      'tcp'                    => 'TCP',
42493 +      'udp'                    => 'UDP',
42494 +      'app'                    => 'Applications',
42495 +      'traces'                 => 'Trace Manipulation',
42496 +      'ipmeasure'              => 'TCP/IP Measurement',
42497 +      'aggregates'             => 'Aggregates',
42498 +      'ip6'                    => 'IPv6',
42499 +      'ipsec'                  => 'IPsec',
42500 +      'crc'                    => 'CRCs',
42501 +      'paint'                  => 'Paint Annotations',
42502 +      'annotations'            => 'Annotations',
42503 +      'debugging'              => 'Debugging',
42504 +      'control'                        => 'Control',
42505 +      'smpclick'               => 'Multithreaded Click',
42506 +      'test'                   => 'Regression Tests'
42507 +      );
42508 +my(%section_headers);
42509 +for (my $i = 0; $i < @section_headers; $i += 2) {
42510 +    $section_headers{$section_headers[$i]} = $section_headers[$i+1];
42511 +}
42512 +
42513 +my(%default_packages) =
42514 +    ( 'analysis'               => 'analysis (core)',
42515 +      'app'                    => 'app (core)',
42516 +      'aqm'                    => 'aqm (core)',
42517 +      'bsdmodule'              => 'bsdmodule (core)',
42518 +      'ethernet'               => 'ethernet (core)',
42519 +      'etherswitch'            => 'etherswitch (core)',
42520 +      'grid'                   => 'grid (core)',
42521 +      'icmp'                   => 'icmp (core)',
42522 +      'ip'                     => 'ip (core)',
42523 +      'ip6'                    => 'ip6 (core)',
42524 +      'ipsec'                  => 'ipsec (core)',
42525 +      'linuxmodule'            => 'linuxmodule (core)',
42526 +      'local'                  => 'local (core)',
42527 +      'ns'                     => 'ns (core)',
42528 +      'radio'                  => 'radio (core)',
42529 +      'simple'                 => 'simple (core)',
42530 +      'standard'               => 'standard (core)',
42531 +      'tcpudp'                 => 'tcpudp (core)',
42532 +      'test'                   => 'test (core)',
42533 +      'userlevel'              => 'userlevel (core)',
42534 +      'wifi'                   => 'wifi (core)'
42535 +      );
42536 +
42537 +# find date
42538 +my($today) = '';
42539 +if (localtime =~ /\w*\s+(\w*)\s+(\d*)\s+\S*\s+(\d*)/) {
42540 +  $today = "$2/$1/$3";
42541 +}
42542 +
42543 +# Unrolling [^A-Z>]|[A-Z](?!<) gives:    // MRE pp 165.
42544 +my $nonest = '(?:[^A-Z>]*(?:[A-Z](?!<)[^A-Z>]*)*)';
42545 +
42546 +
42547 +# XXX one paragraph at a time
42548 +
42549 +my($Filename, $PrimaryElement, @Related, %RelatedSource, @Over, $Begun);
42550 +
42551 +
42552 +############
42553 +## shared ##
42554 +
42555 +sub textize_add_links ($$) {
42556 +    my($t, $selfref) = @_;
42557 +    my($pos);
42558 +
42559 +    # embolden & manpageize
42560 +    foreach my $r (@Related) {
42561 +       my $l = length($r);
42562 +       my $result = ($r eq $PrimaryElement ? "$selfref<$r>" : "L<$r>");
42563 +       for ($pos = index($t, $r); $pos >= 0; $pos = index($t, $r, $pos + 1)) {
42564 +           if (($pos == 0 || substr($t, $pos - 1, 1) =~ /^[^\w@\/<]$/s)
42565 +               && (substr($t, $pos + $l, 1) =~ /^[^\w@\/]$/s)) {
42566 +               substr($t, $pos, $l) = $result;
42567 +               $pos += 2 + $l;
42568 +           }
42569 +       }
42570 +    }
42571 +    $t;
42572 +}
42573 +
42574 +sub quote_unquoted_gt ($) {
42575 +    my($t) = @_;
42576 +    my($tt, $nest, $pos) = ('', 0);
42577 +    for ($pos = index($t, ">"); $pos >= 0; $pos = index($t, ">")) {
42578 +       my($w) = substr($t, 0, $pos);
42579 +       $nest++ while $w =~ m|[A-Z]<|g;
42580 +       if ($nest) {
42581 +           $tt .= $w . ">";
42582 +           $nest--;
42583 +       } else {
42584 +           $tt .= $w . "E<gt>";
42585 +       }
42586 +       $t = substr($t, $pos + 1);
42587 +    }
42588 +    $tt . $t;
42589 +}
42590 +
42591 +
42592 +###########
42593 +## nroff ##
42594 +
42595 +my $nroff_prologue = <<'EOD;';
42596 +.de M
42597 +.IR "\\$1" "(\\$2)\\$3"
42598 +..
42599 +.de RM
42600 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
42601 +..
42602 +EOD;
42603 +chomp $nroff_prologue;
42604 +
42605 +my(%nroff_podentities) =
42606 +    ( 'lt' => '<', 'gt' => '>', 'amp' => '&', 'solid' => '/',
42607 +      'verbar' => '|', 'eq' => '=', 'star' => '*', 'lparen' => '(',
42608 +      'rparen' => ')', 'lbrack' => '[', 'rbrack' => ']', 'lbrace' => '{',
42609 +      'rbrace' => '}' );
42610 +
42611 +sub nroff_quote ($) {
42612 +    my($x) = @_;
42613 +    $x =~ tr/\000-\177/\200-\377/;
42614 +    $x;
42615 +}
42616 +
42617 +sub nroff_unentity ($) {
42618 +    my($x) = @_;
42619 +    $x =~ tr/\200-\377/\000-\177/;
42620 +    if ($x =~ /^\d+$/) {
42621 +       chr($x);
42622 +    } elsif ($nroff_podentities{$x}) {
42623 +       $nroff_podentities{$x};
42624 +    } else {
42625 +       print STDERR "click-elem2man: $Filename: unknown entity E<$x>\n";
42626 +       "";
42627 +    }
42628 +}
42629 +
42630 +sub nroff_fixfP ($$) {
42631 +    my($x, $f) = @_;
42632 +    $x =~ s/\\fP/\\f$f/g;
42633 +    $x;
42634 +}
42635 +
42636 +sub nroffize_text ($) {
42637 +    my($t) = @_;
42638 +    my($s);
42639 +
42640 +    # embolden & manpageize
42641 +    $t = textize_add_links($t, 'L');
42642 +  
42643 +    $t =~ s/\\/\\\\/g;
42644 +    $t =~ s/^\./\\&./gm;
42645 +    $t =~ s/^'/\\&'/gm;
42646 +    $t =~ s/^\s*$/.PP\n/gm;
42647 +    $t =~ s/^\.PP\n(?:\.PP\n)+/.PP\n/gm;
42648 +    $t =~ s{\A\s*(?:\.PP\n)?}{}s;
42649 +    if (@Over > 0) {
42650 +       $t =~ s/^\.PP$/.IP \"\" $Over[-1]/gm;
42651 +    }
42652 +
42653 +    # get rid of entities
42654 +    $t =~ s{[\200-\377]}{"E<" . ord($1) . ">"}ge;
42655 +    $t =~ s{(E<[^>]*>)}{nroff_quote($1)}ge;
42656 +  
42657 +    my $maxnest = 10;
42658 +    while ($maxnest-- && $t =~ /[A-Z]</) {
42659 +    
42660 +       # can't do C font here
42661 +       $t =~ s/([BI])<($nonest)>/"\\f$1" . nroff_fixfP($2, $1) . "\\fP"/eg;
42662 +       $t =~ s/[PU]<($nonest)>/$1/g;
42663 +    
42664 +       # files and filelike refs in italics
42665 +       $t =~ s/F<($nonest)>/I<$1>/g;
42666 +    
42667 +       # LREF: man page references
42668 +       $t =~ s{L<($nonest)\(([\dln])\)>(\S*)(\s*)}{\n.M $1 $2 $3\n}g;
42669 +    
42670 +       $t =~ s/V<($nonest)>//g;
42671 +    
42672 +       # LREF: a la HREF L<show this text|man/section>
42673 +       $t =~ s{L<($nonest)>(\S*)(\s*)}{
42674 +           if (($s = $RelatedSource{$1})) {
42675 +               "\n.M $1 \"$s\" $2\n";
42676 +           } else {
42677 +               my $i = index($1, "|");
42678 +               ($i >= 0 ? substr($1, 0, $i) . $2 . $3 : "\\fB$1\\fP$2$3");
42679 +           }
42680 +       }eg;
42681 +    
42682 +       $t =~ s/Z<>/\\&/g;
42683 +       $t =~ s/N<>(\n?)/\n.br\n/g;
42684 +
42685 +       # comes last because not subject to reprocessing
42686 +       $t =~ s/C<($nonest)>/"\\f(CW" . nroff_fixfP($1, 'R') . "\\fP"/eg;
42687 +    }
42688 +
42689 +    # replace entities
42690 +    $t =~ s/\305\274([^\276]*)\276/nroff_unentity($1)/ge;
42691 +  
42692 +    # fix fonts
42693 +    $t =~ s/\\fP/\\fR/g;
42694 +
42695 +    # fix manual
42696 +    $t =~ s/\n\.M (\S+) \"(\S+)\" (\(\2\))/\n.M $1 \"$2\" /sg;
42697 +    
42698 +    $t =~ s/\n+/\n/sg;
42699 +    $t =~ s/^\n+//;
42700 +    $t =~ s/\n+$//;
42701 +
42702 +    $t;
42703 +}
42704 +
42705 +sub nroffize ($) {
42706 +    my($t) = @_;
42707 +    # $t cannot contain \t, as all \ts have been expanded to spaces below
42708 +
42709 +    #$t =~ s{\n[ \r]+$}{\n}gm;
42710 +
42711 +    if ($t =~ /^ /m) {
42712 +       # worry about verbatims
42713 +       $t =~ s/^( .*)\n(\n+)(?= )/$1 . "\n" . (" \n" x length($2))/mge;
42714 +       my(@x) = split(/(^ .*$)/m, $t);
42715 +       my($o, $i) = '';
42716 +       for ($i = 0; $i < @x; $i += 2) {
42717 +           if ($x[$i]) {
42718 +               $o .= nroffize_text($x[$i]) . "\n";
42719 +           }
42720 +           if ($x[$i+1]) {
42721 +               $x[$i+1] =~ s/\\/\\e/g;
42722 +               $o .= ".nf\n\\&" . $x[$i+1] . "\n.fi\n.PP\n";
42723 +           }
42724 +       }
42725 +       $o =~ s/\n\.fi\n\.PP\n\n\.nf\n/\n/g;
42726 +       if (@Over > 0) {
42727 +           $o =~ s/^\.PP$/.IP \"\" $Over[-1]/gm;
42728 +       }
42729 +       $o;
42730 +    } else {
42731 +       nroffize_text($t);
42732 +    }
42733 +}
42734 +
42735 +sub nroff_do_section ($$$) {
42736 +    my($name, $args, $text) = @_;
42737 +    if (!exists($xsection_takes_args{$name})) {
42738 +       print STDERR "click-elem2man: $Filename: unknown section '=$name' ignored\n";
42739 +       return;
42740 +    }
42741 +    print STDERR "click-elem2man: $Filename: section '=$name' requires arguments\n"
42742 +       if ($xsection_takes_args{$name} && !$args);
42743 +
42744 +    # handle '=begin' .. '=end'
42745 +    if ($name eq 'end') {
42746 +       undef $Begun;
42747 +    } elsif ($Begun && ($Begun eq 'man' || $Begun eq 'roff')) {
42748 +       print OUT '=', $name, ($args ? ' ' . $args : ''), "\n", $text;
42749 +       return;
42750 +    } elsif ($Begun) {
42751 +       return;
42752 +    }
42753 +  
42754 +    if ($name eq 'head1') {
42755 +       print OUT ".SH \"", nroffize($args), "\"\n";
42756 +    } elsif ($name eq 'head2') {
42757 +       print OUT ".SS \"", nroffize($args), "\"\n";
42758 +    } elsif ($name eq 'over') {
42759 +       if ($args =~ /^\s*(\d+)\s*$/s) {
42760 +           print OUT ".RS $Over[-1]\n" if @Over;
42761 +           push @Over, $1;
42762 +       } else {
42763 +           print STDERR "click-elem2man: $Filename: bad arguments to '=over'\n";
42764 +       }
42765 +    } elsif ($name eq 'item') {
42766 +       if (@Over == 0) {
42767 +           print STDERR "click-elem2man: $Filename: '=item' outside any '=over' section\n";
42768 +       } else {
42769 +           print OUT ".IP \"", nroffize($args), "\" $Over[-1]\n";
42770 +       }
42771 +    } elsif ($name eq 'back') {
42772 +       my($overarg);
42773 +       if ($args =~ /^\s*(\d+)\s*$/s) {
42774 +           $overarg = $1;
42775 +       } elsif ($args !~ /^\s*$/s) {
42776 +           print STDERR "click-elem2man: $Filename: bad arguments to '=back'\n";
42777 +       }
42778 +       if (@Over == 0) {
42779 +           print STDERR "click-elem2man: $Filename: too many '=back's\n";
42780 +       } else {
42781 +           my($over) = pop @Over;
42782 +           print OUT ".RE\n" if @Over;
42783 +           print OUT (@Over ? ".IP \"\" $Over[-1]\n" : ".PP\n");
42784 +           print STDERR "click-elem2man: $Filename: '=back $overarg' paired with '=over $over'\n"
42785 +               if defined($overarg) && $over != $overarg;
42786 +       }
42787 +    } elsif ($name eq 'for') {
42788 +       my($fortext);
42789 +       if ($text =~ /^(.*)\n\s*\n(.*)$/s) {
42790 +           ($fortext, $text) = ($1, $2);
42791 +       } else {
42792 +           ($fortext, $text) = ($text, '');
42793 +       }
42794 +       if ($args =~ /^\s*(man|roff)\s*(.*)/) {
42795 +           print OUT $2, $fortext;
42796 +       }
42797 +    } elsif ($name eq 'begin') {
42798 +       $Begun = $args;
42799 +       $Begun =~ s/^\s*(\S+).*/$1/;
42800 +       if ($Begun eq 'man' || $Begun eq 'roff') {
42801 +           print OUT $text;
42802 +       }
42803 +       return;
42804 +    } elsif ($name eq 'start!') {
42805 +       print OUT <<"EOD;";
42806 +.\\" -*- mode: nroff -*-
42807 +.\\" Generated by 'click-elem2man' from '$Filename'
42808 +$nroff_prologue
42809 +.TH "\U$text\E" $args "$today" "Click"
42810 +EOD;
42811 +       return;
42812 +    } elsif ($name eq 'name!') {
42813 +       print OUT <<"EOD;";
42814 +.SH "NAME"
42815 +$args \\- $text
42816 +EOD;
42817 +       return;
42818 +    } elsif ($name eq 'end!') {
42819 +       return;
42820 +    }
42821 +
42822 +    print OUT nroffize($text), "\n";
42823 +    print OUT "\n" if $name eq 'head1';
42824 +}
42825 +
42826 +
42827 +##############
42828 +## dokuwiki ##
42829 +
42830 +my($dokuwiki_dl);
42831 +
42832 +my(%dokuwiki_podentities) =
42833 +    ( 'lt' => '<', 'gt' => "\xFF\xFF", 'amp' => '&', 'solid' => '/',
42834 +      'verbar' => '|', 'eq' => '=', 'star' => '*', 'lparen' => '(',
42835 +      'rparen' => ')', 'lbrack' => '[', 'rbrack' => ']', 'lbrace' => '{',
42836 +      'rbrace' => '}' );
42837 +my($dokuwiki_sensitive_char) = "[!%'\\(\\)\\*\\+/?\\[\\\\\\]_\\{\\}]";
42838 +
42839 +sub dokuwiki_unentity ($) {
42840 +    my($x) = @_;
42841 +    if ($x =~ /^\d+$/) {
42842 +       $x = pack 'U', $x;
42843 +       if ($x =~ /\A$dokuwiki_sensitive_char\Z/) {
42844 +           "%%$x%%";
42845 +       } else {
42846 +           $x;
42847 +       }
42848 +    } elsif ($dokuwiki_podentities{$x}) {
42849 +       $dokuwiki_podentities{$x};
42850 +    } else {
42851 +       print STDERR "click-elem2man: $Filename: unknown entity E<$x>\n";
42852 +       "";
42853 +    }
42854 +}
42855 +
42856 +sub dokuwiki_quotedbl ($) {
42857 +    my($x) = @_;
42858 +    $x =~ s/^(.)/\%\%$1\%\%/;
42859 +    $x;
42860 +}
42861 +
42862 +sub dokuwiki_surround ($$) {
42863 +    my($text, $chr) = @_;
42864 +    my($re) = "\\$chr\\$chr";
42865 +    $text =~ s{$re}{}g;
42866 +    "$chr$chr$text$chr$chr";
42867 +}
42868 +
42869 +sub dokuwikiize_text ($) {
42870 +    my($t) = @_;
42871 +
42872 +    # embolden & manpageize
42873 +    $t = textize_add_links($t, 'P');
42874 +    
42875 +    # get rid of entities
42876 +    $t =~ s{E<([^>]*)>}{dokuwiki_unentity($1)}ge;
42877 +    $t =~ s{($dokuwiki_sensitive_char)}{^$1^}g;
42878 +
42879 +    my $maxnest = 10;
42880 +    while ($maxnest-- && $t =~ /[A-Z]</) {
42881 +    
42882 +       # can't do C font here
42883 +       $t =~ s/B<($nonest)>/dokuwiki_surround($1, "*")/eg;
42884 +       $t =~ s.I<($nonest)>.dokuwiki_surround($1, "/").eg;
42885 +       $t =~ s.U<($nonest)>.dokuwiki_surround($1, "_").eg;
42886 +       $t =~ s/P<($nonest)>/$1/g;
42887 +       $t =~ s/C<($nonest)>/dokuwiki_surround($1, "'")/eg;
42888 +    
42889 +       # files and filelike refs in italics
42890 +       $t =~ s/F<($nonest)>/I<$1>/g;
42891 +    
42892 +       # LREF: man page references
42893 +       $t =~ s{L<($nonest)\^\(\^[\dln]\^\)\^>}{[[$1]]}g;
42894 +       $t =~ s{L<($nonest)>\^\(\^[\dln]\^\)\^}{[[$1]]}g;
42895 +    
42896 +       # LREF: a la HREF L<show this text|man/section>
42897 +       $t =~ s{L<($nonest)\|($nonest)>}{[[$2|$1]]}g;
42898 +       $t =~ s{L<($nonest)>}{[[$1]]}g;
42899 +
42900 +       $t =~ s/V<($nonest)>//g;
42901 +       $t =~ s/Z<>//g;
42902 +       $t =~ s/N<>(\n?)/\\\\ /g;
42903 +    }
42904 +    
42905 +    $t =~ s/\n+/\n/sg;
42906 +    $t =~ s/^\n+//;
42907 +    $t =~ s/\n+$//;
42908 +    $t =~ s/\xFF\xFF/>/g;
42909 +
42910 +    $t =~ s{^(\s*)\^([?!])\^}{$1 . dokuwiki_quotedbl($2)}egm;
42911 +    $t =~ s{($dokuwiki_sensitive_char)\^\1\^}{$1 . dokuwiki_quotedbl($1)}eg;
42912 +    $t =~ s{\^($dokuwiki_sensitive_char)\^\1}{dokuwiki_quotedbl($1) . $1}eg;
42913 +    $t =~ s{\^($dokuwiki_sensitive_char)\^}{$1}g;
42914 +
42915 +    # remove self references
42916 +    $t =~ s{\[\[$PrimaryElement\]\]}{$PrimaryElement}g;
42917 +
42918 +    $t;
42919 +}
42920 +
42921 +sub dokuwikiize ($) {
42922 +    my($t) = @_;
42923 +    # $t cannot contain \t, as all \ts have been expanded to spaces below
42924 +
42925 +    if ($t =~ /^ /m) {
42926 +       # worry about verbatims
42927 +       $t =~ s/^( .*)\n(\n+)(?= )/$1 . "\n" . (" \n" x length($2))/mge;
42928 +       my(@x) = split(/(^ .*$)/m, $t);
42929 +       my($o, $i) = '';
42930 +       for ($i = 0; $i < @x; $i += 2) {
42931 +           if ($x[$i]) {
42932 +               $o .= dokuwikiize_text($x[$i]);
42933 +               $o .= "\n" if $o !~ /\n\Z/;
42934 +           }
42935 +           if ($x[$i+1]) {
42936 +               $o .= "  " . $x[$i+1] . "\n";
42937 +           }
42938 +       }
42939 +       $o;
42940 +    } else {
42941 +       dokuwikiize_text($t);
42942 +    }
42943 +}
42944 +
42945 +sub dokuwiki_do_section ($$$) {
42946 +    my($name, $args, $text) = @_;
42947 +    if (!exists($xsection_takes_args{$name})) {
42948 +       print STDERR "click-elem2man: $Filename: unknown section '=$name' ignored\n";
42949 +       return;
42950 +    }
42951 +    print STDERR "click-elem2man: $Filename: section '=$name' requires arguments\n"
42952 +       if ($xsection_takes_args{$name} && !$args);
42953 +
42954 +    # handle '=begin' .. '=end'
42955 +    if ($name eq 'end') {
42956 +       undef $Begun;
42957 +    } elsif ($Begun && $Begun eq 'dokuwiki') {
42958 +       print OUT '=', $name, ($args ? ' ' . $args : ''), "\n", $text;
42959 +       return;
42960 +    } elsif ($Begun) {
42961 +       return;
42962 +    }
42963 +    
42964 +    if ($name eq 'head1') {
42965 +       print OUT "\n===== ", dokuwikiize($args), " =====\n\n";
42966 +    } elsif ($name eq 'head2') {
42967 +       print OUT "\n==== ", dokuwikiize($args), " ====\n\n";
42968 +    } elsif ($name eq 'over') {
42969 +       if ($args =~ /^\s*(\d+)\s*$/s) {
42970 +           push @Over, $1;
42971 +       } else {
42972 +           print STDERR "click-elem2man: $Filename: bad arguments to '=over'\n";
42973 +       }
42974 +    } elsif ($name eq 'item') {
42975 +       if (@Over == 0) {
42976 +           print STDERR "click-elem2man: $Filename: '=item' outside any '=over' section\n";
42977 +       } else {
42978 +           print OUT "\n", ' ' x @Over, "? " if $dokuwiki_dl;
42979 +           print OUT dokuwikiize("B<" . quote_unquoted_gt($args) . ">");
42980 +           print OUT ($dokuwiki_dl ? "\n" : "\n\n");
42981 +       }
42982 +    } elsif ($name eq 'back') {
42983 +       my($overarg);
42984 +       if ($args =~ /^\s*(\d+)\s*$/s) {
42985 +           $overarg = $1;
42986 +       } elsif ($args !~ /^\s*$/s) {
42987 +           print STDERR "click-elem2man: $Filename: bad arguments to '=back'\n";
42988 +       }
42989 +       if (@Over == 0) {
42990 +           print STDERR "click-elem2man: $Filename: too many '=back's\n";
42991 +       } else {
42992 +           my($over) = pop @Over;
42993 +           print STDERR "click-elem2man: $Filename: '=back $overarg' paired with '=over $over'\n"
42994 +               if defined($overarg) && $over != $overarg;
42995 +       }
42996 +    } elsif ($name eq 'for') {
42997 +       my($fortext);
42998 +       if ($text =~ /^(.*)\n\s*\n(.*)$/s) {
42999 +           ($fortext, $text) = ($1, $2);
43000 +       } else {
43001 +           ($fortext, $text) = ($text, '');
43002 +       }
43003 +       if ($args =~ /^\s*dokuwiki\s*(.*)/) {
43004 +           print OUT $2, $fortext;
43005 +       }
43006 +    } elsif ($name eq 'begin') {
43007 +       $Begun = $args;
43008 +       $Begun =~ s/^\s*(\S+).*/$1/;
43009 +       if ($Begun eq 'dokuwiki') {
43010 +           print OUT $text;
43011 +       }
43012 +       return;
43013 +    } elsif ($name eq 'start!') {
43014 +       return;
43015 +    } elsif ($name eq 'name!') {
43016 +       print OUT <<"EOD;";
43017 +====== $args Element Documentation ======
43018 +
43019 +===== NAME =====
43020 +
43021 +**$args** -- $text
43022 +EOD;
43023 +       return;
43024 +    } elsif ($name eq 'end!') {
43025 +       print OUT "\n\nGenerated by 'click-elem2man' from '$Filename' on $today.\n";
43026 +       return;
43027 +    }
43028 +
43029 +    print OUT ' ' x @Over, "! " if $text =~ /\S/ && @Over && $dokuwiki_dl;
43030 +    print OUT dokuwikiize($text), "\n";
43031 +    print OUT "\n" if $name eq 'head1';
43032 +}
43033 +
43034 +
43035 +###########
43036 +## main  ##
43037 +
43038 +my $do_section_func = \&nroff_do_section;
43039 +my $do_text_func = \&nroffize;
43040 +my $filename_func;
43041 +
43042 +sub do_section ($$$) {
43043 +    my($name, $args, $text) = @_;
43044 +    my(@text) = split(/^(=\w.*)$/m, $text);
43045 +    push @text, '' if !@text;
43046 +    my($i);
43047 +    @Over = ();
43048 +    undef $Begun;
43049 +    for ($i = 0; $i < @text; ) {
43050 +       &$do_section_func($name, $args, $text[$i]);
43051 +       ($name, $args) = ($text[$i+1] =~ /=(\w+)\s*(.*)/)
43052 +           if ($i < @text - 1);
43053 +       $i += 2;
43054 +    }
43055 +    &$do_section_func('back', '', '') while @Over;
43056 +    print STDERR "click-elem2man: $Filename: '=begin' not closed by end of section\n"
43057 +       if $Begun;
43058 +}
43059 +
43060 +sub process_processing ($) {
43061 +    my($t) = @_;
43062 +    return undef if !defined($t);
43063 +    if (exists($processing_constants{$t})) {
43064 +       $t = $processing_constants{$t};
43065 +    }
43066 +    $t =~ tr/\" \t//d;
43067 +    $t =~ s{\A([^/]*)\Z}{$1/$1};
43068 +    $processing_text{$t};
43069 +}
43070 +
43071 +sub process_one_portcount ($$) {
43072 +    my($t, $type) = @_;
43073 +    if ($t eq '0') {
43074 +       "no ${type}s";
43075 +    } elsif ($t eq '-') {
43076 +       "any number of ${type}s";
43077 +    } elsif ($t eq '1') {
43078 +       "1 $type";
43079 +    } elsif ($t eq '=') {
43080 +       "the same number of ${type}s";
43081 +    } elsif ($t =~ /^=(\++)$/) {
43082 +       length($1) . " more $type";
43083 +    } elsif ($t =~ /^0?-1$/) {
43084 +       "at most 1 $type";
43085 +    } elsif ($t =~ /^0?-(.*)/) {
43086 +       "at most $1 ${type}s";
43087 +    } elsif ($t =~ /^(\d+)-$/) {
43088 +       "$1 or more ${type}s";
43089 +    } else {
43090 +       "$t ${type}s";
43091 +    }
43092 +}
43093 +
43094 +sub process_portcount ($) {
43095 +    my($t) = @_;
43096 +    $t = "$t/$t" if $t !~ /\//;
43097 +    return 'none' if $t eq '0/0';
43098 +    my($i, $o) = split(/\//, $t);
43099 +    process_one_portcount($i, "input") . ", " . process_one_portcount($o, "output");
43100 +}
43101 +
43102 +sub process_summary_section ($$) {
43103 +    my($summary, $file) = @_;
43104 +    my($i);
43105 +    foreach $i (split(/,/, $summary)) {
43106 +       $i =~ s/^\s*//;
43107 +       $i =~ s/\s*$//;
43108 +       $i = $section_headers{$i} if exists $section_headers{$i};
43109 +       next if !$i;
43110 +       push @{$summaries_by_section{$i}}, $file;
43111 +    }
43112 +}
43113 +
43114 +sub process_drivers ($) {
43115 +    my($driv) = @_;
43116 +    my(@d, $d);
43117 +    foreach $d ('userlevel', 'linuxmodule', 'bsdmodule', 'ns') {
43118 +       push @d, $d if $driv =~ /\b$d\b/;
43119 +    }
43120 +    join(', ', @d);
43121 +}
43122 +
43123 +sub insert_section (\@\@\@$$$$) {
43124 +    my($sn, $sa, $st, $i, $n, $a, $t) = @_;
43125 +    splice @$sn, $i, 0, $n;
43126 +    splice @$sa, $i, 0, $a;
43127 +    splice @$st, $i, 0, $t;
43128 +}
43129 +
43130 +sub insert_section2 (\@\@\@$$$\%@) {
43131 +    my($sn, $sa, $st, $n, $a, $t, $fis, @x) = @_;
43132 +    my($pos);
43133 +    foreach $pos (@x) {
43134 +       if (exists $fis->{$pos}) {
43135 +           insert_section(@$sn, @$sa, @$st, $fis->{$pos} + 1, $n, $a, $t);
43136 +           $fis->{$n} = $fis->{$pos} + 1;
43137 +           return;
43138 +       }
43139 +    }
43140 +}
43141 +
43142 +sub process_comment ($$) {
43143 +    my($t, $filename) = @_;
43144 +    my($i);
43145 +    $Filename = $filename;
43146 +
43147 +    # split document into sections
43148 +    my(@section_text, @section_args, @section_name, $bad_section, $ref);
43149 +    $ref = \$bad_section;
43150 +    while ($t =~ m{^=(\w+)( *)(.*)([\0-\377]*?)(?=^=\w|\Z)}mg) {
43151 +       if ($section_break{$1}) {
43152 +           insert_section(@section_name, @section_args, @section_text,
43153 +                          @section_name, $1, $3, $4);
43154 +           $ref = \$section_text[-1];
43155 +       } else {
43156 +           $$ref .= '=' . $1 . $2 . $3 . $4;
43157 +       }
43158 +    }
43159 +
43160 +    # check document for sectioning errors
43161 +    print STDERR "click-elem2man: $Filename: warning: comment does not start with section\n"
43162 +       if $bad_section;
43163 +    my(%num_sections, %first_in_section);
43164 +    foreach $i (0..$#section_name) {
43165 +       my($n) = $section_name[$i];
43166 +       print STDERR "click-elem2man: $Filename: warning: section '=$n' requires arguments\n"
43167 +           if $section_takes_args{$n} == 1 && !$section_args[$i];
43168 +       print STDERR "click-elem2man: $Filename: warning: section '=$n' arguments ignored\n"
43169 +           if $section_takes_args{$n} == 0 && $section_args[$i];
43170 +       print STDERR "click-elem2man: $Filename: warning: empty section '=$n'\n"
43171 +           if $section_takes_text{$n} == 1 && !$section_text[$i];
43172 +       print STDERR "click-elem2man: $Filename: warning: section '=$n' text ignored\n"
43173 +           if $section_takes_text{$n} == 0 && $section_text[$i] =~ /\S/;
43174 +       $num_sections{$n}++;
43175 +       $first_in_section{$n} = $i if $num_sections{$n} == 1;
43176 +    }
43177 +    foreach $i ('a', 'c', 'd', 'n', 'e', 'title', 'io', 'processing', 'drivers') {
43178 +       print STDERR "click-elem2man: $Filename: warning: multiple '=$i' sections; some may be ignored\n"
43179 +           if $num_sections{$i} && $num_sections{$i} > 1;
43180 +    }
43181 +
43182 +    # read class names from configuration arguments section
43183 +    $i = $first_in_section{'c'};
43184 +    if (!defined($i)) {
43185 +       print STDERR "click-elem2man: $Filename: section '=c' missing; cannot continue\n";
43186 +       return;
43187 +    }
43188 +    my(@classes, %classes);
43189 +    while ($section_text[$i] =~ /^\s*(\w+)\(/mg) {
43190 +       push @classes, $1 if !exists $classes{$1};
43191 +       $classes{$1} = 1;
43192 +    }
43193 +    if (!@classes && $section_text[$i] =~ /^\s*([\w@]+)\s*$/) {
43194 +       push @classes, $1;
43195 +       $classes{$1} = 1;
43196 +    }
43197 +    if (!@classes) {
43198 +       print STDERR "click-elem2man: $Filename: no class definitions\n    (did you forget '()' in the =c section?)\n";
43199 +       return;
43200 +    }
43201 +    my($Title) = $classes[0];
43202 +
43203 +    # output filenames might be specified in 'title' section
43204 +    my(@outfiles, @outsections, $title);
43205 +    if (defined($first_in_section{'title'})) {
43206 +       $title = $section_args[ $first_in_section{'title'} ];
43207 +       if (!$title) {
43208 +           print STDERR "click-elem2man: $Filename: '=title' section present, but empty\n";
43209 +           return;
43210 +       }
43211 +       if ($title =~ /[^-.\w@+,]/) {
43212 +           print STDERR "click-elem2man: $Filename: strange characters in '=title', aborting\n";
43213 +           return;
43214 +       }
43215 +       foreach $i (split(/\s+/, $title)) {
43216 +           if ($i =~ /^(.*)\((.*)\)$/) {
43217 +               push @outfiles, $1;
43218 +               push @outsections, $2;
43219 +               $Title = $1;
43220 +           } else {
43221 +               push @outfiles, $i;
43222 +               push @outsections, $section;
43223 +               $Title = $i;
43224 +           }
43225 +       }
43226 +    } else {
43227 +       $title = join(', ', @classes);
43228 +       @outfiles = @classes;
43229 +       @outsections = ($section) x @classes;
43230 +    }
43231 +
43232 +    # open new output file if necessary
43233 +    my($main_outname);
43234 +    if ($filename_func) {
43235 +       $main_outname = &$filename_func($outfiles[0], $outsections[0]);
43236 +       if ($uninstall) {
43237 +           print STDERR "Uninstalled $main_outname\n" if $verbose;
43238 +           unlink($main_outname);
43239 +           open(OUT, ">/dev/null");
43240 +       } elsif (open(OUT, ">$main_outname")) {
43241 +           print STDERR "Writing to $main_outname\n" if $verbose;
43242 +       } else {
43243 +           print STDERR "$main_outname: $!\n";
43244 +           return;
43245 +       }
43246 +    }
43247 +    push @all_outfiles, $outfiles[0];
43248 +    $all_outsections{$outfiles[0]} = $outsections[0];
43249 +    $PrimaryElement = $outfiles[0];
43250 +
43251 +    # prepare related
43252 +    %RelatedSource = ();
43253 +    $i = $first_in_section{'a'};
43254 +    if (defined($i)) {
43255 +       $section_text[$i] = $section_args[$i] . $section_text[$i]
43256 +           if $section_args[$i];
43257 +       if ($section_text[$i] =~ /\A\s*(.*?)(\n\s*\n.*\Z|\Z)/s) {
43258 +           my($bit, $last) = ($1, $2);
43259 +           while ($bit =~ m{(\b[A-Z][-\w@.+=]+)([,\s]|\Z)}g) {
43260 +               $RelatedSource{$1} = 'n';
43261 +           }
43262 +           $bit =~ s{([-\w@.+=]+)([,\s]|\Z)}{$1(n)$2}g;
43263 +           while ($bit =~ m{([-\w@.+=]+\(([0-9ln])\))}g) {
43264 +               $RelatedSource{$1} = $2;
43265 +           }
43266 +           $section_text[$i] = $bit . $last;
43267 +       }
43268 +    }
43269 +    map(delete $RelatedSource{$_}, @outfiles);
43270 +    @Related = sort { length($b) <=> length($a) } (keys %RelatedSource, @classes);
43271 +
43272 +    # front matter
43273 +    my($oneliner) = (@classes == 1 ? "Click element" : "Click elements");
43274 +    $i = $first_in_section{'s'};
43275 +    my($summary_section) = '';
43276 +    if (defined($i)) {
43277 +       $summary_section = $section_args[$i];
43278 +       process_summary_section($summary_section, $outfiles[0]);
43279 +       $section_text[$i] =~ s/\n\s*\n/\n/g;
43280 +       my($t) = &$do_text_func($section_text[$i]);
43281 +       $oneliner .= ";\n" . $t;
43282 +       $oneliner =~ s/\n(^\.)/ /g;
43283 +       $all_roff_summaries{$outfiles[0]} = $t . "\n";
43284 +    } else {
43285 +       # avoid uninitialized value warns
43286 +       $all_roff_summaries{$outfiles[0]} = '';
43287 +    }
43288 +
43289 +    # deprecation
43290 +    if (defined($first_in_section{'deprecated'})) {
43291 +       $deprecated{$outfiles[0]} = $section_text[$first_in_section{'deprecated'}];
43292 +    }
43293 +
43294 +    # package
43295 +    if (!defined($first_in_section{'package'}) && defined($package)) { PACKAGE: {
43296 +       my($pkg) = $package;
43297 +       if ($pkg eq 'DEFAULT') {
43298 +           $pkg = $1 if $Filename =~ m|\belements/(\w+)/|;
43299 +           $pkg = 'standard' if $Filename =~ m|\binclude/click/standard/|;
43300 +           last PACKAGE if $pkg eq 'DEFAULT';
43301 +           $pkg = exists($default_packages{$pkg}) ? $default_packages{$pkg} : $pkg;
43302 +       }
43303 +       insert_section2(@section_name, @section_args, @section_text,
43304 +                       'package', '', $pkg,
43305 +                       %first_in_section, 'drivers', 'processing', 'io', 'c');
43306 +    }}
43307 +
43308 +    # drivers
43309 +    my($drivers);
43310 +    if ($docrequires{$Title}
43311 +       && ($drivers = process_drivers($docrequires{$Title}))
43312 +       && !defined($first_in_section{'drivers'})) {
43313 +       insert_section2(@section_name, @section_args, @section_text,
43314 +                       'drivers', '', $drivers,
43315 +                       %first_in_section, 'processing', 'io', 'c');
43316 +    }
43317 +       
43318 +    # processing
43319 +    if (!defined($first_in_section{'processing'})) { PROCESSING: {
43320 +       # can we figure out the processing type?
43321 +       last PROCESSING
43322 +           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'));
43323 +       my($ptype) = process_processing($processing{$Title});
43324 +       insert_section2(@section_name, @section_args, @section_text,
43325 +                       'processing', '', $ptype,
43326 +                       %first_in_section, 'io', 'c') if $ptype;
43327 +    }}
43328 +
43329 +    # input/output
43330 +    if (!defined($first_in_section{'io'})) { PORTCOUNT: {
43331 +       last PORTCOUNT if !defined($portcount{$Title});
43332 +       insert_section2(@section_name, @section_args, @section_text,
43333 +                       'io', '', process_portcount($portcount{$Title}),
43334 +                       %first_in_section, 'c');
43335 +    }}
43336 +
43337 +    # initial sections
43338 +    insert_section(@section_name, @section_args, @section_text,
43339 +                  0, 'start!', $outsections[0], $title);
43340 +    insert_section(@section_name, @section_args, @section_text,
43341 +                  1, 'name!', $title, $oneliner);
43342 +    insert_section(@section_name, @section_args, @section_text,
43343 +                  @section_name, 'end!', $outsections[0], $title);    
43344 +
43345 +    # output
43346 +    my($special_section) = 0;
43347 +    for ($i = 0; $i < @section_text; $i++) {
43348 +       my($s) = $section_name[$i];
43349 +       my($x) = $section_text[$i];
43350 +       my($was_special_section) = $special_section;
43351 +       $special_section = 0;
43352 +       
43353 +       if ($s eq 'c') {
43354 +           $x =~ s{(\S\s*)\n}{$1N<>\n}g;
43355 +           $x =~ s{N<>\n*\z}{};
43356 +           do_section('head1', 'SYNOPSIS', $x);
43357 +       } elsif ($s eq 'package' || $s eq 'io' || $s eq 'processing'
43358 +                || $s eq 'drivers') {
43359 +           $x =~ s/\A\s+//;
43360 +           $x =~ s/\s+\Z//;
43361 +           do_section('text', '', 'B<' . $infosection_name{$s} . '>: ' . $x . 'N<>');
43362 +       } elsif ($s eq 'io') {
43363 +           do_section('head1', 'INPUTS AND OUTPUTS', $x);
43364 +       } elsif ($s eq 'processing') {
43365 +           do_section('head1', 'PROCESSING TYPE', $x);
43366 +       } elsif ($s eq 'd') {
43367 +           do_section('head1', 'DESCRIPTION', $x);
43368 +       } elsif ($s eq 'n') {
43369 +           do_section('head1', 'NOTES', $x);
43370 +       } elsif ($s eq 'e') {
43371 +           do_section('head1', 'EXAMPLES', $x);
43372 +       } elsif ($s eq 'h') {
43373 +           my($t) = "=over 5\n";
43374 +           while ($i < @section_text && $section_name[$i] eq 'h') {
43375 +               if ($section_args[$i] =~ /\A\s*(.*?)\s*"(.*?)"\s*\Z/
43376 +                   || $section_args[$i] =~ /\A\s*(.*?)\s*(\S+)\s*\Z/) {
43377 +                   $t .= "=item B<$1> ($2)\n";
43378 +               } else {
43379 +                   print STDERR "click-elem2man: $Filename: bad handler section arguments ('=h $section_args[$i]')\n";
43380 +                   $t .= "=item B<$section_args[$i]>\n";
43381 +               }
43382 +               $t .= $section_text[$i] . "\n";
43383 +               $i++;
43384 +           }
43385 +           $i--;
43386 +           do_section('head1', 'ELEMENT HANDLERS', $t);
43387 +       } elsif ($s eq 'a') {
43388 +           do_section('head1', 'SEE ALSO', $x);
43389 +       } elsif ($s eq 'title' || $s eq 's' || $s eq 'deprecated') {
43390 +           # nada
43391 +       } else {
43392 +           do_section($s, $section_args[$i], $x);
43393 +       }
43394 +    }
43395 +
43396 +    # close output file & make links if appropriate
43397 +    if ($filename_func) {
43398 +       close OUT;
43399 +       for ($i = 1; $i < @outfiles; $i++) {
43400 +           my($outname) = &$filename_func($outfiles[$i], $outsections[$i]);
43401 +           print STDERR "Unlinking $outname\n" if $verbose;
43402 +           unlink($outname);
43403 +           if ($uninstall) {
43404 +               # do nothing
43405 +           } elsif (link $main_outname, $outname) {
43406 +               print STDERR "Linked $outname\n" if $verbose;
43407 +               push @all_outfiles, $outfiles[$i];
43408 +               $all_outsections{$outfiles[$i]} = $outsections[$i];
43409 +               process_summary_section($summary_section, $outfiles[$i]);
43410 +               $all_roff_summaries{$outfiles[$i]} = $all_roff_summaries{$outfiles[0]};
43411 +           } else {
43412 +               print STDERR "click-elem2man: $outname: $!\n";
43413 +           }
43414 +       }
43415 +    }
43416 +}
43417 +
43418 +sub process_file ($;$) {
43419 +    my($filename, $text) = @_;
43420 +
43421 +    print STDERR "Attempting $filename...\n" if $verbose;
43422 +    $filename = "include/$1" if !-e $filename && $filename =~ /^<(.*)>$/s;
43423 +    $filename = "$PREFIX/$filename" if !-e $filename && defined($PREFIX);
43424 +    return if !-e $filename;
43425 +    print STDERR "Found $filename\n" if $verbose;
43426 +    if (!defined($text)) {
43427 +       if (!open(IN, $filename)) {
43428 +           print STDERR "click-elem2man: $filename: $!\n";
43429 +           return;
43430 +       }
43431 +       $text = <IN>;
43432 +       close IN;
43433 +    }
43434 +
43435 +    print "$filename??\n" if !defined $text;
43436 +    foreach $_ (split(m{(/\*.*?\*/)}s, $text)) {
43437 +       if (/^\/\*/m && /^[\/*\s]+=/m) {
43438 +           s/^(.*?)\t/$1 . (' ' x (8 - (length($1) % 8)))/egm while /\t/;
43439 +           s/^\/\*\s*//g;
43440 +           s/\s*\*\/$//g;
43441 +           s/^ ?\* ?//gm;
43442 +           process_comment($_, $filename);
43443 +       }
43444 +    }
43445 +}
43446 +
43447 +sub xmlunquote ($) {
43448 +    my($x) = @_;
43449 +    if ($x =~ /&/) {
43450 +       $x =~ s/&lt;/</g;
43451 +       $x =~ s/&gt;/>/g;
43452 +       $x =~ s/&amp;/&/g;
43453 +       $x =~ s/&#([0-9]+);/chr($1)/eg;
43454 +       $x =~ s/&#x([0-9a-zA-Z]+);/chr(oct("0x$1"))/eg;
43455 +    }
43456 +    $x;
43457 +}
43458 +
43459 +sub read_elementmap_text ($;$) {
43460 +    my($text, $headerhash) = @_;
43461 +    $headerhash = {} if !defined($headerhash);
43462 +    local($_);
43463 +    foreach $_ (split(/\n+/, $text)) {
43464 +       next if !/^<entry\b/;
43465 +       my($n) = (/\bname="(.*?)"/);
43466 +       my($dn) = (/\bdocname="(.*?)"/);
43467 +       my($p) = (/\bprocessing="(.*?)"/);
43468 +       my($hf) = (/\bheaderfile="(.*?)"/);
43469 +       my($pc) = (/\bportcount="(.*?)"/);
43470 +       my($req) = (/\brequires="(.*?)"/);
43471 +       if (defined($n) || defined($dn)) {
43472 +           $dn = xmlunquote(defined($dn) ? $dn : $n);
43473 +           $processing{$dn} = xmlunquote($p) if defined($p);
43474 +           $portcount{$dn} = xmlunquote($pc) if defined($pc);
43475 +           $req = defined($req) ? xmlunquote($req) : undef;
43476 +           $docrequires{$dn} = $req if defined($req);
43477 +
43478 +           $n = $1 if defined($req) && !defined($n) && /\bprovides="(.*?)"/;
43479 +           if (defined($n) && defined($req)) {
43480 +               $n = xmlunquote($n);
43481 +               $requires{$n} = [] if !defined $requires{$n};
43482 +               push @{$requires{$n}}, $req;
43483 +           }
43484 +           
43485 +           $headerhash->{xmlunquote($hf)} = 1 if defined($hf);
43486 +       }
43487 +    }
43488 +}
43489 +
43490 +sub read_elementmap ($;$) {
43491 +    my($fn, $headerhash) = @_;
43492 +    open(E, $fn) || die "$fn: $!\n";
43493 +    local($/) = undef;
43494 +    read_elementmap_text(<E>, $headerhash);
43495 +    close E;
43496 +}
43497 +
43498 +sub process_file_set ($$) {
43499 +    my($fn, $fnhash) = @_;
43500 +    if (open(IN, ($fn eq '-' ? "<&STDIN" : $fn))) {
43501 +       my(@a, @b, $t, $x);
43502 +       $t = <IN>;
43503 +       close IN;
43504 +       
43505 +       # Parse file; click-buildtool gets special treatment
43506 +       if ($t =~ /\A#.*click-buildtool findelem/) {
43507 +           $t =~ s/^#.*//mg;
43508 +           foreach $_ (split(/\n+/, $t)) {
43509 +               if (/^\S+\s+<(\S+?)>/) {
43510 +                   $fnhash->{"include/$1"} = 1;
43511 +               } elsif (/^\S+\s+"(\S+?)"/) {
43512 +                   $fnhash->{$1} = 1;
43513 +               } else {
43514 +                   s/.cc$/.hh/;
43515 +                   $fnhash->{$_} = 1;
43516 +               }
43517 +           }
43518 +       } elsif ($t =~ /\A<\?xml/) {
43519 +           read_elementmap_text($t, $fnhash);
43520 +       } elsif ($t =~ /[\(\)]/) {
43521 +           die if $fn eq '-';
43522 +           $fnhash->{$fn} = 1;
43523 +       } else {
43524 +           $t =~ s/^#.*//mg;
43525 +           foreach $_ (split(/\s+/, $t)) {
43526 +               if ($t =~ /[*?\[]/) {
43527 +                   foreach my $x (glob($t)) {
43528 +                       $fnhash->{$x} = 1;
43529 +                   }
43530 +               } else {
43531 +                   $fnhash->{$_} = 1;
43532 +               }
43533 +           }
43534 +       }
43535 +    } else {
43536 +       print STDERR "click-elem2man: $fn: $!\n";
43537 +    }
43538 +}
43539 +
43540 +sub uniq (@) {
43541 +    my(@a, $x);
43542 +    foreach $x (@_) {
43543 +       push @a, $x if !@a || $a[-1] ne $x;
43544 +    }
43545 +    @a;
43546 +}
43547 +
43548 +
43549 +sub driver_requirement ($) {
43550 +    my($req) = @_;
43551 +    my($d) = 0;
43552 +    $d |= 1 if $req =~ /\buserlevel\b/;
43553 +    $d |= 2 if $req =~ /\blinuxmodule\b/;
43554 +    $d |= 4 if $req =~ /\bbsdmodule\b/;
43555 +    $d |= 8 if $req =~ /\bns\b/;
43556 +    $d ? $d : 15;
43557 +}
43558 +
43559 +my(%requires_fixed);
43560 +sub fix_one_requires ($) {
43561 +    my($req) = @_;
43562 +    my($driver) = driver_requirement($req);
43563 +    
43564 +    my($t, $i);
43565 +    my($changes) = '';
43566 +    foreach $t (split(/\s+/, $req)) {
43567 +       if (defined($requires{$t})) {
43568 +           my($treq) = $requires{$t};
43569 +           if (!$requires_fixed{$t}) {
43570 +               $requires_fixed{$t} = 1;
43571 +               for ($i = 0; $i < @$treq; $i++) {
43572 +                   $treq->[$i] = &fix_one_requires($treq->[$i]);
43573 +               }
43574 +           }
43575 +           for ($i = 0; $i < @$treq; $i++) {
43576 +               if ($driver & driver_requirement($treq->[$i])) {
43577 +                   $changes .= " " . $treq->[$i];
43578 +               }
43579 +           }
43580 +       }
43581 +    }
43582 +    
43583 +    if ($changes) {
43584 +       join(' ', uniq(sort {$a cmp $b} split(/\s+/, $req . $changes)));
43585 +    } else {
43586 +       $req;
43587 +    }
43588 +}
43589 +
43590 +sub fix_requires () {
43591 +    my($k);
43592 +    foreach $k (keys %docrequires) {
43593 +       $docrequires{$k} = fix_one_requires($docrequires{$k});
43594 +    }
43595 +}
43596 +
43597 +
43598 +# main program: parse options
43599 +
43600 +sub usage () {
43601 +    print STDERR "Usage: click-elem2man [OPTIONS] FILES...
43602 +Try 'click-elem2man --help' for more information.\n";
43603 +    exit 1;
43604 +}
43605 +
43606 +sub help () {
43607 +    print STDERR <<"EOD;";
43608 +'Click-elem2man' translates Click element documentation into manual pages.
43609 +
43610 +Usage: click-elem2man [-l | -L] [-d DIRECTORY] FILE...
43611 +
43612 +Each FILE is a Click header file, a list of Click header files, or the
43613 +output of click-mkelemmap.  '-' means standard input.
43614 +
43615 +Options:
43616 +  -f, --files FILE        Read header filenames from FILE.
43617 +  -e, --elementmap EMAP   Read information about other elements from EMAP.
43618 +  -d, --directory DIR     Place generated manual pages in directory DIR.
43619 +  -P, --package PKG       Elements are in PKG package, or say 'DEFAULT'.
43620 +  -l, --list              Generate the elements(n) manual page as well.
43621 +  -L, --extend-list       Extend an existing elements(n) manual page.
43622 +  -p, --prefix PFX        Look for header files in PFX after looking in '.'.
43623 +      --dokuwiki          Generate dokuwiki source instead of manual pages.
43624 +      --dokuwiki-dl       Generate dokuwiki source using dl plugin.
43625 +  -u, --uninstall         Remove existing manual pages.
43626 +  -h, --help              Print this message and exit.
43627 +
43628 +Report bugs to <click\@pdos.lcs.mit.edu>.
43629 +EOD;
43630 +    exit 0;
43631 +}
43632 +
43633 +undef $/;
43634 +my(@files, $fn, $elementlist, $any_files, $directory, $output_type);
43635 +$output_type = 'nroff';
43636 +
43637 +while (@ARGV) {
43638 +    $_ = shift @ARGV;
43639 +    if (/^-d$/ || /^--directory$/) {
43640 +       usage() if !@ARGV;
43641 +       $directory = shift @ARGV;
43642 +    } elsif (/^--directory=(.*)$/) {
43643 +       $directory = $1;
43644 +    } elsif (/^-P$/ || /^--package$/) {
43645 +       usage() if !@ARGV;
43646 +       $package = shift @ARGV;
43647 +    } elsif (/^-V$/ || /^--verbose$/) {
43648 +       $verbose = 1;
43649 +    } elsif (/^--package=(.*)$/) {
43650 +       $package = $1;
43651 +    } elsif (/^-f$/ || /^--files$/) {
43652 +       usage() if !@ARGV;
43653 +       push @files, shift @ARGV;
43654 +       $any_files = 1;
43655 +    } elsif (/^--files=(.*)$/) {
43656 +       push @files, $1;
43657 +       $any_files = 1;
43658 +    } elsif (/^-l$/ || /^--list$/) {
43659 +       $elementlist = 1;
43660 +    } elsif (/^-L$/ || /^--extend-list$/) {
43661 +       $elementlist = 2;
43662 +    } elsif (/^-e$/ || /^--elementmap$/) {
43663 +       usage() if !@ARGV;
43664 +       read_elementmap(shift @ARGV);
43665 +    } elsif (/^--elementmap=(.*)$/) {
43666 +       read_elementmap($1);
43667 +    } elsif (/^-p$/ || /^--prefix$/) {
43668 +       usage() if !@ARGV;
43669 +       $PREFIX = shift @ARGV;
43670 +    } elsif (/^--prefix=(.*)$/) {
43671 +       $PREFIX = $1;
43672 +    } elsif (/^-u$/ || /^--uninstall$/) {
43673 +       $uninstall = 1;
43674 +    } elsif (/^-h$/ || /^--help$/) {
43675 +       help();
43676 +    } elsif (/^--dokuwiki$/ || /^--doku$/) {
43677 +       $do_section_func = \&dokuwiki_do_section;
43678 +       $do_text_func = \&dokuwikiize;
43679 +       $output_type = 'dokuwiki';
43680 +    } elsif (/^--dokuwiki-dl$/) {
43681 +       $do_section_func = \&dokuwiki_do_section;
43682 +       $do_text_func = \&dokuwikiize;
43683 +       $output_type = 'dokuwiki';
43684 +       $dokuwiki_dl = 1;
43685 +    } elsif (/^-./) {
43686 +       usage();
43687 +    } elsif (/^-$/) {
43688 +       push @files, "-";
43689 +       $any_files = 1;
43690 +    } else {
43691 +       push @files, glob($_);
43692 +       $any_files = 1;
43693 +    }
43694 +}
43695 +push @files, "-" if !$any_files;
43696 +
43697 +sub nroff_filename_func ($$) {
43698 +    my($name, $sec) = @_;
43699 +    "$directory/$name.$sec";
43700 +}
43701 +
43702 +sub dokuwiki_filename_func ($$) {
43703 +    my($name, $sec) = @_;
43704 +    if ($sec eq 'n') {
43705 +       "$directory/" . lc($name) . ".txt";
43706 +    } else {
43707 +       "$directory/" . lc($name) . "-$sec.txt";
43708 +    }
43709 +}
43710 +
43711 +if ($directory) {
43712 +    $filename_func = ($output_type eq 'dokuwiki' ? \&dokuwiki_filename_func : \&nroff_filename_func);
43713 +}
43714 +
43715 +umask(022);
43716 +if ($uninstall) {
43717 +    open(OUT, ">/dev/null");
43718 +} elsif (!$directory) {
43719 +    open(OUT, ">&STDOUT");
43720 +}
43721 +
43722 +# read file sets
43723 +my(%fnhash);
43724 +foreach $fn (@files) {
43725 +    process_file_set($fn, \%fnhash);
43726 +}
43727 +fix_requires();
43728 +
43729 +# process files
43730 +foreach $fn (keys(%fnhash)) {
43731 +    process_file($fn);
43732 +}
43733 +
43734 +if ($uninstall || !$directory) {
43735 +    close OUT;
43736 +}
43737 +
43738 +
43739 +# printing element list
43740 +#
43741 +
43742 +sub read_elementlist ($) {
43743 +    my($fn) = @_;
43744 +  
43745 +    local($/) = "\n";
43746 +    if (!open(IN, $fn)) {
43747 +       print STDERR "click-elem2man: $fn: $!\n";
43748 +       return;
43749 +    }
43750 +
43751 +    my($section, $active, $cur_name, $cur_section, %new_summary);
43752 +    $active = 0;
43753 +    while (<IN>) {
43754 +       if (/^\.SS \"(.*)\"/) {
43755 +           $section = $1;
43756 +       } elsif (/^\.TP 20/) {
43757 +           $active = 1;
43758 +       } elsif ($active == 1 && /^\.M (\S+) (\S+)/) {
43759 +           if (!exists $all_outsections{$1}) {
43760 +               $active = 2;
43761 +               $cur_name = $1;
43762 +               $new_summary{$1} = 1;
43763 +               $all_outsections{$1} = $2;
43764 +               $all_roff_summaries{$1} = '';
43765 +               push @{$summaries_by_section{$section}}, $1;
43766 +               push @all_outfiles, $1;
43767 +           } elsif ($new_summary{$1}) {
43768 +               push @{$summaries_by_section{$section}}, $1;
43769 +               $active = 3;
43770 +           } else {
43771 +               $active = 3;
43772 +           }
43773 +       } elsif (/^\.PD/) {
43774 +           $active = 0;
43775 +       } elsif (/^\.SH \"ALPHABETICAL/) {
43776 +           last;
43777 +       } elsif ($active == 2) {
43778 +           $all_roff_summaries{$cur_name} .= $_;
43779 +       }
43780 +    }
43781 +}
43782 +
43783 +my(%el_generated);
43784 +sub one_elementlist (@) {
43785 +    my($t);
43786 +    $t .= ".PP\n.PD 0\n";
43787 +    foreach $_ (sort { lc($a) cmp lc($b) } @_) {
43788 +       $t .= ".TP 20\n.M " . $_ . " " . $all_outsections{$_};
43789 +       $t .= " \" (deprecated)\"" if $deprecated{$_};
43790 +       $t .= "\n";
43791 +       $t .= $all_roff_summaries{$_} if $all_roff_summaries{$_};
43792 +       $el_generated{$_} = 1;
43793 +    }
43794 +    $t . ".PD\n";
43795 +}
43796 +
43797 +my(@Links, $Text);
43798 +
43799 +sub one_summary ($@) {
43800 +    my($name, @elts) = @_;
43801 +    print STDERR "click-elem2man: warning: category '", $name, "' begins with a lowercase letter (used in @elts)\n" if $name =~ /^[a-z]/;
43802 +    my($a) = $name;
43803 +    $a =~ s{([+\&\#\"\000-\037\177-\377])}{sprintf("%%%02X", $1)}eg;
43804 +    $a =~ tr/ /+/;
43805 +    my($x) = $name;
43806 +    $x =~ s{ }{&nbsp;}g;
43807 +    if (@elts) {
43808 +       push @Links, "<a href=\"#$a\">$x</a>";
43809 +       $Text .= ".SS \"$name\"\n";
43810 +       $Text .= one_elementlist(@elts);
43811 +    }
43812 +}
43813 +
43814 +sub write_elementlist ($$) {
43815 +    my($enamebase, $l_uninstall) = @_;
43816 +    if ($filename_func) {
43817 +       my($fn) = &$filename_func($enamebase, $section);
43818 +       if ($l_uninstall) {
43819 +           print STDERR "Removing $fn\n" if $verbose;
43820 +           unlink($fn);
43821 +           return;
43822 +       }
43823 +       if (!open(OUT, ">$fn")) {
43824 +           print STDERR "click-elem2man: $fn: $!\n";
43825 +           return;
43826 +       }
43827 +    } elsif ($uninstall) {
43828 +       return;
43829 +    }
43830 +
43831 +    print OUT <<"EOD;";
43832 +.\\" -*- mode: nroff -*-
43833 +.\\" Generated by 'click-elem2man'
43834 +$nroff_prologue
43835 +.TH "\U$enamebase\E" $section "$today" "Click"
43836 +.SH "NAME"
43837 +$enamebase \- documented Click element classes
43838 +.SH "DESCRIPTION"
43839 +This page lists all Click element classes that have manual page documentation.
43840 +EOD;
43841 +
43842 +    $Text = "";
43843 +    my(%did_section, $sec);
43844 +    # erase 'Miscellaneous' section, if any
43845 +    delete $summaries_by_section{'Miscellaneous'};
43846 +    my($i) = 0;
43847 +    foreach $sec ((map { $i++ % 2 ? ($_) : () } @section_headers),
43848 +                 (sort { lc($a) cmp lc($b) } keys(%summaries_by_section))) {
43849 +       next if $did_section{$sec};
43850 +       one_summary($sec, @{$summaries_by_section{$sec}});
43851 +       $did_section{$sec} = 1;
43852 +    }
43853 +    one_summary('Miscellaneous', grep { !$el_generated{$_} } @all_outfiles);
43854 +
43855 +    my($links) = join("&nbsp;- ", @Links);
43856 +    print OUT <<"EOD;";
43857 +.\\"html <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
43858 +.\\"html $links<br>
43859 +.\\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
43860 +EOD;
43861 +
43862 +    print OUT ".SH \"BY FUNCTION\"\n";
43863 +    print OUT $Text;
43864 +    print OUT ".SH \"ALPHABETICAL LIST\"\n";
43865 +    print OUT one_elementlist(@all_outfiles);
43866 +
43867 +    close OUT if $filename_func;
43868 +}
43869 +
43870 +sub read_main_elementlist () {
43871 +    if ($filename_func) {
43872 +       my($fn) = &$filename_func('elements', $section);
43873 +       $fn = &$filename_func('elements-click', $section) if !-r $fn;
43874 +       read_elementlist($fn) if -r $fn && $elementlist > 1;
43875 +    }
43876 +}
43877 +
43878 +if ($elementlist && @all_outfiles) {
43879 +    # erase record of elements added on uninstall
43880 +    if ($elementlist > 1 && $uninstall) {
43881 +       %summaries_by_section = ();
43882 +       @all_outfiles = ();
43883 +    }
43884 +
43885 +    # package-specific elementlist
43886 +    if (defined($package)) {
43887 +       my($fename) = ($package eq "DEFAULT" ? "elements-click" : "elements-$package");
43888 +       write_elementlist($fename, $uninstall);
43889 +    }
43890 +    read_main_elementlist();
43891 +    write_elementlist("elements", 0);
43892 +}
43893 Files click-1.6.0/inst/bin/click-fastclassifier and click-1.6.0-27/inst/bin/click-fastclassifier differ
43894 Files click-1.6.0/inst/bin/click-flatten and click-1.6.0-27/inst/bin/click-flatten differ
43895 diff -Nurb click-1.6.0/inst/bin/click-mkelemmap click-1.6.0-27/inst/bin/click-mkelemmap
43896 --- click-1.6.0/inst/bin/click-mkelemmap        1969-12-31 19:00:00.000000000 -0500
43897 +++ click-1.6.0-27/inst/bin/click-mkelemmap     2009-02-05 10:20:41.000000000 -0500
43898 @@ -0,0 +1,535 @@
43899 +#! /usr/bin/perl -w
43900 +
43901 +# click-mkelemmap -- make map of element name to C++ class and file
43902 +# Eddie Kohler
43903 +#
43904 +# Copyright (c) 1999-2001 Massachusetts Institute of Technology
43905 +# Copyright (c) 2004-2006 Regents of the University of California
43906 +#
43907 +# Permission is hereby granted, free of charge, to any person obtaining a
43908 +# copy of this software and associated documentation files (the "Software"),
43909 +# to deal in the Software without restriction, subject to the conditions
43910 +# listed in the Click LICENSE file. These conditions include: you must
43911 +# preserve this copyright notice, and you cannot mention the copyright
43912 +# holders in advertising related to the Software without their permission.
43913 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
43914 +# notice is a summary of the Click LICENSE file; the license in that file is
43915 +# legally binding.
43916 +
43917 +my(%port_count_constants) =
43918 +    ('PORTS_0_0' => '0/0', 'PORTS_0_1' => '0/1', 'PORTS_1_0' => '1/0',
43919 +     'PORTS_1_1' => '1/1');
43920 +my(%processing_constants) =
43921 +    ('AGNOSTIC' => 'a/a', 'PUSH' => 'h/h', 'PULL' => 'l/l',
43922 +     'PUSH_TO_PULL' => 'h/l', 'PULL_TO_PUSH' => 'l/h');
43923 +my(%flow_code_constants) =
43924 +    ('COMPLETE_FLOW' => 'x/x');
43925 +my(@source_file, @header_file, @click_name, @cxx_name, @doc_name,
43926 +   @parents, @port_count, @processing, @flow_code, @flags, @requirements,
43927 +   @element_methods, @element_libs, @provisions,
43928 +   %click_name_to_id, %cxx_name_to_id);
43929 +my(@includes) = ( );
43930 +
43931 +sub driver_mask ($) {
43932 +    my($m) = 0;
43933 +    # XXX "|" syntax?
43934 +    $m |= 1 if $_[0] =~ /\buserlevel\b/;
43935 +    $m |= 2 if $_[0] =~ /\blinuxmodule\b/;
43936 +    $m |= 4 if $_[0] =~ /\bbsdmodule\b/;
43937 +    $m |= 8 if $_[0] =~ /\bns\b/;
43938 +    ($m ? $m : 15);
43939 +}
43940 +
43941 +sub filecontents ($) {
43942 +    my $text = "";
43943 +    if (open(IN, $_[0])) {
43944 +       $text = <IN>;
43945 +       close IN;
43946 +    }
43947 +    $text;
43948 +}
43949 +
43950 +sub process_file ($) {
43951 +    my($filename) = @_;
43952 +    my($headername, $headerfile, $i, $comment);
43953 +
43954 +    if ($filename =~ /^(.*):"(.*)"$/) {
43955 +       ($filename, $headername) = ($1, $2);
43956 +       $headerfile = $headername;
43957 +    } elsif ($filename =~ /^(.*):<(.*)>$/) {
43958 +       ($filename, $headername) = ($1, "<$2>");
43959 +       $headerfile = $2;
43960 +    } else {
43961 +       $headername = $filename;
43962 +       $headername =~ s/\.cc$/.hh/;
43963 +       $headerfile = $headername;
43964 +    }
43965 +
43966 +    my($text) = "";
43967 +    if ($headerfile =~ m|^/|) {
43968 +       $text = filecontents($headerfile);
43969 +    } else {
43970 +       for ($i = 0; $i < @includes && $text eq ""; $i++) {
43971 +           $text = filecontents($includes[$i] . "/" . $headerfile);
43972 +       }
43973 +    }
43974 +    $headername = "" if $text eq "";
43975 +
43976 +    my $first;
43977 +    $first = @cxx_name;
43978 +    foreach $_ (split(m{^class(?=.*[\n\s]*\{)}m, $text)) {
43979 +       my($cxx_class) = (/^\s*(\w+)(\s|:\s).*[\n\s]*\{/);
43980 +       my($click_name) = (/class_name.*return\s*\"([^\"]+)\"/);
43981 +       next if !$click_name;
43982 +       push @cxx_name, $cxx_class;
43983 +       push @source_file, $filename;
43984 +       push @header_file, $headername;
43985 +       $cxx_name_to_id{$cxx_class} = @cxx_name - 1 if $cxx_class;
43986 +       if (/\A\s*\w*\s*:\s*([\w\s,]+)/) {
43987 +           my $p = $1;
43988 +           $p =~ s/\bpublic\b//g;
43989 +           push @parents, [ split(/[\s,]+/, $p) ];
43990 +       } else {
43991 +           push @parents, [];
43992 +       }
43993 +       if (/class_name.*return\s*\"([^\"]+)\"/) {
43994 +           push @click_name, $1;
43995 +       } else {
43996 +           push @click_name, "";
43997 +       }
43998 +       if (/port_count.*return\s*(.*?);/) {
43999 +           my $p = $1;
44000 +           $p = $port_count_constants{$p} if exists($port_count_constants{$p});
44001 +           $p =~ tr/\" \t\r\n//d;
44002 +           push @port_count, $p;
44003 +       } else {
44004 +           push @port_count, "";
44005 +       }
44006 +       if (/processing.*return\s*(.*?);/) {
44007 +           my $p = $1;
44008 +           $p = $processing_constants{$p} if exists($processing_constants{$p});
44009 +           $p =~ tr/\" \t\r\n//d;
44010 +           push @processing, $p;
44011 +       } else {
44012 +           push @processing, "";
44013 +       }
44014 +       if (/flow_code.*return\s*(.*?);/) {
44015 +           my $p = $1;
44016 +           $p = $flow_code_constants{$p} if exists($flow_code_constants{$p});
44017 +           $p =~ tr/\" \t\r\n//d;
44018 +           push @flow_code, $p;
44019 +       } else {
44020 +           push @flow_code, "";
44021 +       }
44022 +       if (/\bflags\(\).*return\s*"(.*?)";/) {
44023 +           push @flags, $1;
44024 +       } else {
44025 +           push @flags, undef;
44026 +       }
44027 +       my($methods) = '';
44028 +       $methods .= "static_initialize " if /\n\s*static\s+void\s+static_initialize/;
44029 +       $methods .= "static_cleanup " if /\n\s*static\s+void\s+static_cleanup/;
44030 +       $methods =~ s/\s+\Z//;
44031 +       push @element_methods, $methods;
44032 +    }
44033 +
44034 +    # process element documentation
44035 +    my(%doc_titles);
44036 +    foreach $comment (split(m{(/\*.*?\*/)}s, $text)) {
44037 +       if ($comment =~ /^\/\*/ && $comment =~ /^[\/*\s]+=/) {
44038 +           $comment =~ s/^\/\*\s*//g;
44039 +           $comment =~ s/\s*\*\/$//g;
44040 +           $comment =~ s/^ ?\* ?//gm;
44041 +           my($title, $count);
44042 +           while ($comment =~ m{^=(\w+)( *)(.*)([\0-\377]*?)(?=^=\w|\Z)}mg) {
44043 +               if ($1 eq 'title') {
44044 +                   $title = $3;
44045 +               } elsif ($1 eq 'c') {
44046 +                   $_ = $4;
44047 +                   while (/^\s*(\w+)\(/mg) {
44048 +                       $doc_titles{$1} = ($title ? $title : $1);
44049 +                   }
44050 +                   if (!%doc_titles && /^\s*([\w@]+)\s*$/) {
44051 +                       $doc_titles{$1} = ($title ? $title : $1);
44052 +                   }
44053 +                   last;
44054 +               }
44055 +           }
44056 +       }
44057 +    }
44058 +
44059 +    # apply element documentation to element names
44060 +    for ($i = $first; $i < @processing; $i++) {
44061 +       push @doc_name, $doc_titles{$click_name[$i]};
44062 +    }
44063 +
44064 +    # check titles
44065 +    if (@processing == 0 && keys(%doc_titles) > 1) {
44066 +       print STDERR "$filename: more than 1 documentation class for requirement\n";
44067 +    }
44068 +
44069 +    # process ELEMENT_REQUIRES, ELEMENT_PROVIDES, and EXPORT_ELEMENT
44070 +    if (!open(IN, $filename)) {
44071 +       print STDERR "$filename: $!\n";
44072 +       return;
44073 +    }
44074 +    $text = <IN>;
44075 +    close IN;
44076 +
44077 +    my($req, $prov, $exp, $libs) = ('', '', '', '');
44078 +    $req .= " " . $1 while $text =~ /^ELEMENT_REQUIRES\s*\((.*)\)/mg;
44079 +    $prov .= " " . $1 while $text =~ /^ELEMENT_PROVIDES\s*\((.*)\)/mg;
44080 +    $exp .= " " . $1 while $text =~ /^EXPORT_ELEMENT\s*\((.*)\)/mg;
44081 +    $libs .= " " . $1 while $text =~ /^ELEMENT_LIBS\s*\((.*)\)/mg;
44082 +    $req =~ s/^\s+//;
44083 +    $prov =~ s/^\s+//;
44084 +    $libs =~ s/^\s+//;
44085 +
44086 +    # make copies of classes as required
44087 +    while ($exp =~ /(\S+)-(\S+)/g) {
44088 +       my($cxx, $click) = ($1, $2);
44089 +       for ($i = $first; $i < @processing; $i++) {
44090 +           if ($cxx_name[$i] eq $cxx) {
44091 +               push @click_name, $click;
44092 +               push @cxx_name, $cxx;
44093 +               push @doc_name, $doc_name[$i];
44094 +               push @source_file, $source_file[$i];
44095 +               push @header_file, $header_file[$i];
44096 +               push @parents, $parents[$i];
44097 +               push @port_count, $port_count[$i];
44098 +               push @processing, $processing[$i];
44099 +               push @flow_code, $flow_code[$i];
44100 +               push @flags, $flags[$i];
44101 +               push @element_methods, $element_methods[$i];
44102 +               last;
44103 +           }
44104 +       }
44105 +    }
44106 +    
44107 +    # add a fake class if there were no classes
44108 +    if (@cxx_name == $first && $prov) {
44109 +       push @click_name, "";
44110 +       push @cxx_name, "";
44111 +       push @doc_name, (%doc_titles ? keys(%doc_titles) : (""));
44112 +       push @source_file, $filename;
44113 +       push @header_file, $headername;
44114 +       push @parents, [];
44115 +       push @port_count, "";
44116 +       push @processing, "";
44117 +       push @flow_code, "";
44118 +       push @flags, undef;
44119 +       push @element_methods, "";
44120 +    }
44121 +
44122 +    # apply requirements and provisions
44123 +    for ($i = $first; $i < @processing; $i++) {
44124 +       push @requirements, $req;
44125 +       push @provisions, $prov;
44126 +       push @element_libs, $libs;
44127 +    
44128 +       # check to see if overloading is valid
44129 +       if ($click_name[$i] && exists($click_name_to_id{$click_name[$i]})) {
44130 +           my($j) = $click_name_to_id{$click_name[$i]};
44131 +           my($dm_a) = driver_mask($requirements[$i]);
44132 +           my($dm_b) = driver_mask($requirements[$j]);
44133 +           if (($dm_a & $dm_b) == 0) {
44134 +               # ok
44135 +           } else {
44136 +               print STDERR "invalid multiple definition of element class '$click_name[$i]'\n";
44137 +               print STDERR $header_file[$j], ": first definition here\n";
44138 +               print STDERR $header_file[$i], ": second definition here\n";
44139 +               print STDERR "(Two classes may share a name only if they work in disjoint drivers.\nAdd explicit ELEMENT_REQUIRES() statements.)\n";
44140 +           }
44141 +       }
44142 +       $click_name_to_id{$click_name[$i]} = $i;
44143 +    }
44144 +}
44145 +
44146 +sub parents_port_count ($) {
44147 +    my($classid) = @_;
44148 +    return undef if !defined $classid;
44149 +    if (!$port_count[$classid]) {
44150 +       my($parent);
44151 +       foreach $parent (@{$parents[$classid]}) {
44152 +           if ($parent eq 'Element') {
44153 +               $port_count[$classid] = '0/0';
44154 +               last;
44155 +           } elsif ($parent ne '') {
44156 +               $port_count[$classid] = &parents_port_count($cxx_name_to_id{$parent});
44157 +               last if $port_count[$classid];
44158 +           }
44159 +       }
44160 +    }
44161 +    return $port_count[$classid];
44162 +}
44163 +
44164 +sub parents_processing ($) {
44165 +    my($classid) = @_;
44166 +    return undef if !defined $classid;
44167 +    if (!$processing[$classid]) {
44168 +       my($parent);
44169 +       foreach $parent (@{$parents[$classid]}) {
44170 +           if ($parent eq 'Element') {
44171 +               $processing[$classid] = 'a/a';
44172 +               last;
44173 +           } elsif ($parent ne '') {
44174 +               $processing[$classid] = &parents_processing($cxx_name_to_id{$parent});
44175 +               last if $processing[$classid];
44176 +           }
44177 +       }
44178 +    }
44179 +    return $processing[$classid];
44180 +}
44181 +
44182 +sub parents_flow_code ($) {
44183 +    my($classid) = @_;
44184 +    return undef if !defined $classid;
44185 +    if (!$flow_code[$classid]) {
44186 +       my($parent);
44187 +       foreach $parent (@{$parents[$classid]}) {
44188 +           if ($parent eq 'Element') {
44189 +               $flow_code[$classid] = 'x/x';
44190 +               last;
44191 +           } elsif ($parent ne '') {
44192 +               $flow_code[$classid] = &parents_flow_code($cxx_name_to_id{$parent});
44193 +               last if $flow_code[$classid];
44194 +           }
44195 +       }
44196 +    }
44197 +    return $flow_code[$classid];
44198 +}
44199 +
44200 +sub parents_flags ($) {
44201 +    my($classid) = @_;
44202 +    return undef if !defined $classid;
44203 +    if (!defined $flags[$classid]) {
44204 +       my($parent);
44205 +       foreach $parent (@{$parents[$classid]}) {
44206 +           if ($parent eq 'Element') {
44207 +               last;
44208 +           } elsif ($parent ne '') {
44209 +               $flags[$classid] = &parents_flags($cxx_name_to_id{$parent});
44210 +               last if defined $flags[$classid];
44211 +           }
44212 +       }
44213 +    }
44214 +    return $flags[$classid];
44215 +}
44216 +
44217 +sub xml_quote ($) {
44218 +    my($x) = @_;
44219 +    $x =~ s/&/&amp;/g;
44220 +    $x =~ s/</&lt;/g;
44221 +    $x;
44222 +}
44223 +
44224 +# main program: parse options
44225 +sub read_files_from ($) {
44226 +    my($fn) = @_;
44227 +    if (open(IN, ($fn eq '-' ? "<&STDIN" : $fn))) {
44228 +       my(@a, @b, $t);
44229 +       $t = <IN>;
44230 +       close IN;
44231 +
44232 +       # Parse file; click-buildtool gets special treatment
44233 +       if ($t =~ /\A#.*click-(buildtool findelem|mkmindriver)/) {
44234 +           $t =~ s/^#.*//mg;
44235 +           @a = map {
44236 +               if (/^(\S+)\s+(\S+)/) {
44237 +                   "$1:$2";
44238 +               } else {
44239 +                   $_;
44240 +               }
44241 +           } split(/\n+/, $t);
44242 +       } else {
44243 +           $t =~ s/^#.*//mg;
44244 +           @a = split(/\s+/, $t);
44245 +       }
44246 +       
44247 +       foreach $t (@a) {
44248 +           next if $t eq '';
44249 +           if ($t =~ /[*?\[]/) {
44250 +               push @b, glob($t);
44251 +           } else {
44252 +               push @b, $t;
44253 +           }
44254 +       }
44255 +       
44256 +       @b;
44257 +    } else {
44258 +       print STDERR "$fn: $!\n";
44259 +       ();
44260 +    }
44261 +}
44262 +
44263 +sub long_option_match ($$$) {
44264 +    my($have, $want, $len) = @_;
44265 +    $have = $1 if $have =~ /^(--[^=]*)=/;
44266 +    my($hl) = length($have);
44267 +    ($hl <= length($want) && $hl >= $len && $have eq substr($want, 0, $hl));
44268 +}
44269 +
44270 +sub help () {
44271 +    print STDERR <<"EOD;";
44272 +'Click-mkelemmap' creates an elementmap file from a collection of Click
44273 +elements.
44274 +
44275 +Usage: click-mkelemmap [OPTIONS] [-f FILE | SRCFILE]...
44276 +
44277 +Each SRCFILE is a Click header file. '-' means standard input. Default is
44278 +'-f -' if no '-f' or 'SRCFILE' options are supplied.
44279 +
44280 +Options:
44281 +  -f, --files FILE        Read header filenames, or an 'elements.conf' file,
44282 +                          from FILE.
44283 +  -r, --provide PROV      Record provisions PROV in output.
44284 +  -t, --drivers DRIVERS   Record drivers DRIVERS in output.
44285 +      --dochref DOCSTR    Record documentation URL pattern DOCSTR in output.
44286 +  -p, --prefix PFX        Remove PFX from filenames in output.
44287 +  -I, --include DIR       Look for header files in DIR.
44288 +  -s, --sourcedir DIR     Record DIR as source directory in output.
44289 +  -h, --help              Print this message and exit.
44290 +
44291 +Report bugs to <click\@pdos.lcs.mit.edu>.
44292 +EOD;
44293 +    exit 0;
44294 +}
44295 +
44296 +undef $/;
44297 +my(@files, @provides, @drivers, $fn, $prefix, $any_files, $dochref, $sourcedir);
44298 +$prefix = "";
44299 +
44300 +while (@ARGV) {
44301 +    $_ = shift @ARGV;
44302 +    if (long_option_match($_, '--files', 3) && /^[^=]*=(.*)$/) {
44303 +       push @files, read_files_from($1);
44304 +       $any_files = 1;
44305 +    } elsif (/^-f$/ || long_option_match($_, '--files', 3)) {
44306 +       die "not enough arguments" if !@ARGV;
44307 +       push @files, read_files_from(shift @ARGV);
44308 +       $any_files = 1;
44309 +    } elsif (long_option_match($_, '--prefix', 5) && /^[^=]*=(.*)$/) {
44310 +       $prefix = $1;
44311 +       $prefix .= "/" if $prefix !~ m|/\Z|;
44312 +    } elsif (/^-p$/ || long_option_match($_, '--prefix', 5)) {
44313 +       die "not enough arguments" if !@ARGV;
44314 +       $prefix = shift @ARGV;
44315 +       $prefix .= "/" if $prefix !~ m|/\Z|;
44316 +    } elsif (long_option_match($_, '--provide', 5) && /^[^=]*=(.*)$/) {
44317 +       push @provides, split(/\s+/, $1);
44318 +    } elsif (/^-r$/ || long_option_match($_, '--provide', 5)) {
44319 +       die "not enough arguments" if !@ARGV;
44320 +       push @provides, split(/\s+/, shift @ARGV);
44321 +    } elsif (long_option_match($_, '--drivers', 4) && /^[^=]*=(.*)$/) {
44322 +       push @drivers, split(/\s+/, $1);
44323 +    } elsif (/^-t$/ || long_option_match($_, '--drivers', 4)) {
44324 +       die "not enough arguments" if !@ARGV;
44325 +       push @drivers, split(/\s+/, shift @ARGV);
44326 +    } elsif (long_option_match($_, '--include', 3) && /^[^=]*=(.*)$/) {
44327 +       push @includes, $prefix . $1;
44328 +    } elsif (/^-I$/ || long_option_match($_, '--include', 3)) {
44329 +       die "not enough arguments" if !@ARGV;
44330 +       push @includes, $prefix . shift @ARGV;
44331 +    } elsif (/^-I(.+)$/) {
44332 +       push @includes, $prefix . $1;
44333 +    } elsif (long_option_match($_, '--sourcedir', 3) && /^[^=]*=(.*)$/) {
44334 +       $sourcedir = xml_quote($1);
44335 +    } elsif (/^-s$/ || long_option_match($_, '--sourcedir', 3)) {
44336 +       die "not enough arguments" if !@ARGV;
44337 +       $sourcedir = xml_quote(shift @ARGV);
44338 +    } elsif (/^-s(.+)$/) {
44339 +       $sourcedir = xml_quote($1);
44340 +    } elsif ((long_option_match($_, '--dochref', 4) || long_option_match($_, '--webdoc', 3))
44341 +            && /^[^=]*=(.*)$/) {
44342 +       die "repeated --dochref" if defined($dochref);
44343 +       $dochref = $1;
44344 +    } elsif (long_option_match($_, '--dochref', 4) || long_option_match($_, '--webdoc', 3)) {
44345 +       die "not enough arguments" if !@ARGV;
44346 +       die "repeated --dochref" if defined($dochref);
44347 +       $dochref = shift @ARGV;
44348 +    } elsif (/^-h$/ || long_option_match($_, '--help', 3)) {
44349 +       help();
44350 +    } elsif (/^-./) {
44351 +       die "unknown option '$_'\n";
44352 +    } elsif (/^-$/) {
44353 +       push @files, "-";
44354 +       $any_files = 1;
44355 +    } else {
44356 +       push @files, glob($_);
44357 +       $any_files = 1;
44358 +    }
44359 +}
44360 +push @files, read_files_from("-") if !$any_files;
44361 +push @includes, ($prefix eq '' ? "." : $prefix);
44362 +
44363 +foreach $fn (@files) {
44364 +    process_file($fn);
44365 +}
44366 +
44367 +umask(022);
44368 +open(OUT, ">&STDOUT");
44369 +
44370 +print OUT "<?xml version=\"1.0\" standalone=\"yes\"?>
44371 +<?xml-stylesheet type=\"application/xml\" href=\"http://www.lcdf.org/click/xml/elementmap.xsl\"?>\n";
44372 +print OUT "<?xml-stylesheet type=\"application/xml\" href=\"file://$sourcedir/etc/elementmap.xsl\"?>\n" if defined($sourcedir) && $sourcedir =~ m|^/|;
44373 +print OUT "<elementmap xmlns=\"http://www.lcdf.org/click/xml/\"";
44374 +print OUT " sourcedir=\"$sourcedir\"" if defined($sourcedir);
44375 +print OUT " src=\"file://$sourcedir\"" if defined($sourcedir) && $sourcedir =~ m|^/|;
44376 +print OUT " provides=\"", join(' ', @provides), "\"";
44377 +print OUT " drivers=\"", join(' ', @drivers), "\"" if @drivers;
44378 +print OUT " dochref=\"$dochref\"" if defined($dochref);
44379 +print OUT ">\n";
44380 +
44381 +sub sorter {
44382 +    my($xa, $xb) = ($click_name[$a], $click_name[$b]);
44383 +    if ($xa && $xb) {
44384 +       $xa cmp $xb;
44385 +    } elsif ($xa || $xb) {
44386 +       ($xa ? -1 : 1);
44387 +    } else {
44388 +       $provisions[$a] cmp $provisions[$b];
44389 +    }
44390 +}
44391 +
44392 +foreach $id (sort sorter 0..$#click_name) {
44393 +    print OUT "<entry";
44394 +
44395 +    print OUT " name=\"", $click_name[$id], "\"" if $click_name[$id];
44396 +    print OUT " cxxclass=\"", $cxx_name[$id], "\"" if $cxx_name[$id];
44397 +    print OUT " docname=\"", $doc_name[$id], "\"" if $doc_name[$id];
44398 +  
44399 +    my($hf) = $header_file[$id];
44400 +    $hf =~ s/^$prefix\/*// if $prefix;
44401 +    print OUT " headerfile=\"", xml_quote($hf), "\"" if $hf;
44402 +
44403 +    my($sf) = $source_file[$id];
44404 +    $sf =~ s/^$prefix\/*// if $prefix;
44405 +    print OUT " sourcefile=\"", xml_quote($sf), "\"" if $sf;
44406 +
44407 +    my($pc) = $port_count[$id];
44408 +    $pc = parents_port_count($id) if !$pc;
44409 +    print OUT " portcount=\"", $pc, "\"" if $pc;
44410 +
44411 +    my($p) = $processing[$id];
44412 +    $p = parents_processing($id) if !$p;
44413 +    print OUT " processing=\"", $p, "\"" if $p;
44414 +
44415 +    my($flow) = $flow_code[$id];
44416 +    $flow = parents_flow_code($id) if !$flow;
44417 +    print OUT " flowcode=\"", $flow, "\"" if $flow;
44418 +
44419 +    my($flags) = $flags[$id];
44420 +    $flags = parents_flags($id) if !defined($flags);
44421 +    print OUT " flags=\"", $flags, "\"" if defined($flags);
44422 +
44423 +    print OUT " methods=\"", $element_methods[$id], "\"" if $element_methods[$id];
44424 +  
44425 +    print OUT " requires=\"", $requirements[$id], "\"" if $requirements[$id];
44426 +    print OUT " provides=\"", $provisions[$id], "\"" if $provisions[$id];
44427 +    print OUT " libs=\"", xml_quote($element_libs[$id]), "\"" if $element_libs[$id];
44428 +
44429 +    print OUT " />\n";
44430 +}
44431 +
44432 +print OUT "</elementmap>\n";
44433 +close OUT;
44434 Files click-1.6.0/inst/bin/click-mkmindriver and click-1.6.0-27/inst/bin/click-mkmindriver differ
44435 Files click-1.6.0/inst/bin/click-pretty and click-1.6.0-27/inst/bin/click-pretty differ
44436 Files click-1.6.0/inst/bin/click-uncombine and click-1.6.0-27/inst/bin/click-uncombine differ
44437 Files click-1.6.0/inst/bin/click-undead and click-1.6.0-27/inst/bin/click-undead differ
44438 Files click-1.6.0/inst/bin/click-xform and click-1.6.0-27/inst/bin/click-xform differ
44439 Files click-1.6.0/inst/bin/click2xml and click-1.6.0-27/inst/bin/click2xml differ
44440 diff -Nurb click-1.6.0/inst/bin/testie click-1.6.0-27/inst/bin/testie
44441 --- click-1.6.0/inst/bin/testie 1969-12-31 19:00:00.000000000 -0500
44442 +++ click-1.6.0-27/inst/bin/testie      2009-02-05 10:20:41.000000000 -0500
44443 @@ -0,0 +1,1206 @@
44444 +#! /usr/bin/perl -w
44445 +use Symbol 'qualify_to_ref';
44446 +no locale;
44447 +use bytes;
44448 +require 5.006;
44449 +
44450 +($attempts, $internal_errors, $errors, $require_errors) = (0, 0, 0, 0);
44451 +($preserve_temporaries, $expand_mode) = (0, 0);
44452 +
44453 +## utilities
44454 +
44455 +sub index2 ($$;$) {
44456 +    my($result) = (defined($_[2]) ? index($_[0], $_[1], $_[2]) : index($_[0], $_[1]));
44457 +    $result = length $_[0] if $result < 0;
44458 +    $result;
44459 +}
44460 +
44461 +sub shquote ($) {
44462 +    my($t) = @_;
44463 +    $t =~ s/\'/\'\"\'\"\'/g;
44464 +    "'$t'";
44465 +}
44466 +
44467 +sub min (@) {
44468 +    my($m) = pop @_;
44469 +    foreach my $mm (@_) {
44470 +       $m = $mm if $mm < $m;
44471 +    }
44472 +    $m;
44473 +}
44474 +
44475 +
44476 +## read file
44477 +
44478 +package Testie;
44479 +
44480 +my %_special_filerefs = ('stdin' => 1, 'stdout' => 2, 'stderr' => 2);
44481 +%_variables = ();
44482 +
44483 +# return filename
44484 +sub filename ($) {
44485 +    $_[0]->{'filename'};
44486 +}
44487 +
44488 +# return line number text
44489 +sub lineno ($$) {
44490 +    my($tt, $lineno) = @_;
44491 +    my($fn) = $tt->{'filename'};
44492 +    $fn = 'line ' if !defined($fn);
44493 +    $fn .= ':' if $fn !~ /[ :]$/;
44494 +    "$fn$lineno";
44495 +}
44496 +
44497 +# return a command at a given line number
44498 +sub command_at ($$;$) {
44499 +    my($tt, $lineno, $script_type) = @_;
44500 +    return undef if !defined($lineno);
44501 +    $lineno =~ s/^\s*|\s*$//g;
44502 +    if ($lineno =~ /^(.*):(.*)$/) {
44503 +       return undef if $1 ne $tt->{'filename'};
44504 +       $lineno = $2;
44505 +    } elsif ($lineno =~ /^line (.*)$/) {
44506 +       $lineno = $2;
44507 +    }
44508 +
44509 +    $script_type = 'script' if !defined($script_type);
44510 +    my($lineno_arr) = $tt->{$script_type . '_lineno'};
44511 +    for ($i = 0; $i < @$lineno_arr; $i++) {
44512 +       return $tt->{$script_type}->[$i] if $lineno_arr->[$i] == $lineno;
44513 +    }
44514 +    undef;
44515 +}
44516 +
44517 +# report an error
44518 +sub file_err ($$) {
44519 +    my($tt, $text) = @_;
44520 +    $text .= "\n" if $text !~ /\n$/s;
44521 +    print STDERR $tt->lineno($.), ': ', $text;
44522 +    $tt->{'err'}++;
44523 +}
44524 +
44525 +sub _shell_split (\@\@$$;$) {
44526 +    my($arr, $lineno_arr, $text, $lineno, $rewrite_sub) = @_;
44527 +    $rewrite_sub = sub { $_[0] } if !defined($rewrite_sub);
44528 +    my($qf, $qb, $func, $out) = (0, 0, 0, '');
44529 +    my($sq, $dq, $bq, $nl, $hh, $lb, $rb) = (-2, -2, -2, -2, -2, -2, -2);
44530 +    my($first, $pos) = (0, 0);
44531 +    $lineno -= ($text =~ tr/\n//);
44532 +    
44533 +    while ($pos < length $text) {
44534 +       $sq = ::index2($text, "\'", $pos) if $sq < $pos;
44535 +       $dq = ::index2($text, "\"", $pos) if $dq < $pos;
44536 +       $bq = ::index2($text, "\`", $pos) if $bq < $pos;
44537 +       $nl = ::index2($text, "\n", $pos) if $nl < $pos;
44538 +       $hh = ::index2($text, "#", $pos) if $hh < $pos;
44539 +       $lb = ::index2($text, "{", $pos) if $lb < $pos;
44540 +       $rb = ::index2($text, "}", $pos) if $rb < $pos;
44541 +       
44542 +       if ($qf == 1) {
44543 +           $qf = 0 if $sq < length $text;
44544 +           $out .= substr($text, $pos, $sq + 1 - $pos);
44545 +           $pos = $sq + 1;
44546 +           next;
44547 +       } elsif ($qf == 2) {
44548 +           $qf = 0 if $dq < length $text;
44549 +           $out .= $rewrite_sub->(substr($text, $pos, $dq - $pos), 2) . '"';
44550 +           $pos = $dq + 1;
44551 +           next;
44552 +       }
44553 +
44554 +       # find minimum
44555 +       my($min) = ::min($sq, $dq, $bq, $nl, $hh, $lb, $rb);
44556 +       $out .= $rewrite_sub->(substr($text, $pos, $min - $pos), 0) . substr($text, $min, 1);
44557 +       
44558 +       if ($sq == $min) {
44559 +           $qf = 1;
44560 +           $pos = $sq + 1;
44561 +       } elsif ($dq == $min) {
44562 +           $qf = 2;
44563 +           $pos = $dq + 1;
44564 +       } elsif ($bq == $min) {
44565 +           $qb = !$qb;
44566 +           $pos = $bq + 1;
44567 +       } elsif ($lb == $min) {
44568 +           $func++;
44569 +           $pos = $lb + 1;
44570 +       } elsif ($rb == $min) {
44571 +           $func--;
44572 +           $pos = $rb + 1;
44573 +       } elsif ($hh == $min) {
44574 +           $out .= substr($text, $min + 1, $nl - $min);
44575 +           $lineno++;
44576 +           $pos = $nl + 1;
44577 +       } elsif (!$qb && !$func && ($nl == $pos || substr($text, $nl - 1, 1) ne "\\")) {
44578 +           push @$arr, $out;
44579 +           push @$lineno_arr, $lineno;
44580 +           $out = '';
44581 +           $lineno += (substr($text, $first, $nl - $first + 1) =~ tr/\n//);
44582 +           $first = $pos = $nl + 1;
44583 +       } else {
44584 +           $pos = $nl + 1;
44585 +       }
44586 +    }
44587 +
44588 +    if ($first < length $text) {
44589 +       push @$arr, $out;
44590 +       push @$lineno_arr, $lineno;
44591 +    }
44592 +    
44593 +    if ($qf == 1) {
44594 +       "unmatched single quote";
44595 +    } elsif ($qf == 2) {
44596 +       "unmatched double quote";
44597 +    } elsif ($qb) {
44598 +       "unmatched backquote";
44599 +    } else {
44600 +       "";
44601 +    }
44602 +}
44603 +
44604 +sub _read_text ($) {
44605 +    my($fh) = @_;
44606 +    my($r, $t) = ('');
44607 +    while (defined($t = <$fh>)) {
44608 +       last if $t =~ /^\%/;
44609 +       $t =~ s/^\\\%/\%/;
44610 +       $r .= $t;
44611 +    }
44612 +    ($r, $t);
44613 +}
44614 +
44615 +sub _read_text_into ($$$) {
44616 +    my($fh, $tt, $section) = @_;
44617 +    my($r, $t) = _read_text($fh);
44618 +    $tt->{$section} = '' if !defined($tt->{$section});
44619 +    $tt->{$section} .= $r;
44620 +    $t;
44621 +}
44622 +
44623 +sub _read_script_section ($$$$) {
44624 +    my($fh, $tt, $args, $script_type) = @_;
44625 +    
44626 +    my($lineno_type, $quiet_type) = ($script_type . '_lineno', $script_type . '_quietline');
44627 +    $tt->{$lineno_type} = [] if !exists $tt->{$lineno_type};
44628 +    $tt->{$quiet_type} = {} if !exists $tt->{$quiet_type};
44629 +    
44630 +    my($quiet);
44631 +    if ($script_type eq 'require' & $args eq '-q') {
44632 +       $quiet = 1;
44633 +    } elsif ($args ne '') {
44634 +       $tt->file_err("arguments to '\%$script_type' ignored");
44635 +    }
44636 +    #$tt->file_err("multiple '\%$script_type' sections defined") if $tt->{$script_type};
44637 +    my($r, $t) = _read_text($fh);
44638 +    my $count = @{$tt->{$lineno_type}};
44639 +    my($what) = _shell_split(@{$tt->{$script_type}}, @{$tt->{$lineno_type}}, $r, $.);
44640 +    $tt->file_err("$what in '\%$script_type'") if $what ne '';
44641 +    while ($quiet && $count < @{$tt->{$lineno_type}}) {
44642 +       my($line) = $tt->{$lineno_type}->[$count++];
44643 +       $tt->{$quiet_type}->{$line} = 1;
44644 +    }
44645 +    $t;
44646 +}
44647 +
44648 +sub braces_to_regex ($) {
44649 +    my($x) = @_;
44650 +    my(@a) = split(/(\{\{.*?\}\})/, $x);
44651 +    my($d, $i) = '';
44652 +    for ($i = 0; $i < @a; $i++) {
44653 +       $d .= ($i % 2 ? substr($a[$i], 2, -2) : quotemeta($a[$i]));
44654 +    }
44655 +    $d;
44656 +}
44657 +
44658 +sub _read_file_section ($$$$$) {
44659 +    my($fh, $tt, $args, $secname, $prefix) = @_;
44660 +    $args =~ s/\s+$//;
44661 +
44662 +    # split arguments to get fileref
44663 +    my(@args) = split(/\s+/, $args);
44664 +
44665 +    # assert that we understand $secname
44666 +    die if $secname ne 'file' && $secname ne 'expect' && $secname ne 'expectv' && $secname ne 'expectx' && $secname ne 'ignore' && $secname ne 'ignorex' && $secname ne 'ignorev';
44667 +
44668 +    # check for alternates and length
44669 +    my($alternate, $delfirst, $regex_opts, $length) = (0, 0, '', undef);
44670 +    while (@args) {
44671 +       if ($args[0] eq '-a') {
44672 +           $alternate = 1;
44673 +       } elsif ($args[0] eq '-d') {
44674 +           $delfirst = 1;
44675 +       } elsif ($args[0] eq '-i') {
44676 +           $regex_opts .= "(?i)";
44677 +       } elsif ($args[0] =~ /^\+(\d+)$/) {
44678 +           $length = $1;
44679 +       } else {
44680 +           last;
44681 +       }
44682 +       shift @args;
44683 +    }
44684 +
44685 +    # make sure there are filerefs
44686 +    if (!@args) {
44687 +       push @args, "stdin" if $secname eq 'file';
44688 +       push @args, "stdout" if $secname eq 'expect' || $secname eq 'expectv' || $secname eq 'expectx';
44689 +       push @args, "all" if $secname eq 'ignore' || $secname eq 'ignorev' || $secname eq 'ignorex';
44690 +    }
44691 +
44692 +    # complain about '%file -a'
44693 +    if (($secname eq 'file' || $secname eq 'ignore' || $secname eq 'ignorev' || $secname eq 'ignorex') && $alternate) {
44694 +       $tt->file_err("'\%file -a' is illegal");
44695 +    } elsif (($secname eq 'file' || $secname eq 'expectv') && $regex_opts) {
44696 +       $tt->file_err("'\%file -i' is illegal");
44697 +    }
44698 +    
44699 +    # read contents
44700 +    my($t, $file_data);
44701 +    if (defined($length)) {
44702 +       read $fh, $file_data, $length;
44703 +       $tt->file_err("file too short") if length($file_data) != $length;
44704 +       $t = <$fh>;
44705 +    } else {
44706 +       ($file_data, $t) = _read_text($fh);
44707 +    }
44708 +
44709 +    # modify contents based on flags
44710 +    $alternate = 1 if $secname eq 'ignore' || $secname eq 'ignorex' || $secname eq 'ignorev'; # 'ignore' always behaves like -a
44711 +    if ($delfirst) {
44712 +       $file_data =~ s{^.}{}mg;
44713 +    }
44714 +    if ($secname eq 'ignorev') {
44715 +       $file_data =~ s{^(.+)}{quotemeta($1)}meg;
44716 +    } elsif ($secname eq 'ignore') {
44717 +       $file_data =~ s{^(.+)}{braces_to_regex($1)}meg;
44718 +    }
44719 +    if ($regex_opts && $secname eq 'expect') {
44720 +       $file_data =~ s{\{\{}{\{\{$regex_opts}g;
44721 +    } elsif ($regex_opts) {
44722 +       $file_data =~ s{^(?=.)}{$regex_opts}mg;
44723 +    }
44724 +    
44725 +    # stick contents where appropriate
44726 +    my($fn);
44727 +    foreach $fn (@args) {
44728 +       if (($fn eq 'stdin' && $secname ne 'file')
44729 +           || (($fn eq 'stdout' || $fn eq 'stderr') && $secname eq 'file')
44730 +           || ($fn eq 'all' && ($secname ne 'ignore' && $secname ne 'ignorev' && $secname ne 'ignorex'))) {
44731 +           $tt->file_err("'$fn' not meaningful for '\%$secname'");
44732 +       }
44733 +
44734 +       my($hashkey) = $prefix . ":" . $fn;
44735 +       if ($fn !~ m/^[A-Za-z_.0-9]+$/) {
44736 +           $tt->file_err("fileref error: '$fn' contains illegal characters");
44737 +       } elsif (!exists($tt->{$hashkey})) {
44738 +           push @{$tt->{$secname}}, $fn;
44739 +           $tt->{$hashkey} = [];
44740 +       } elsif (!$alternate) {
44741 +           $tt->file_err("'\%$secname $fn' already defined");
44742 +       }
44743 +
44744 +       push @{$tt->{$hashkey}}, $file_data;
44745 +       $tt->{"F:$fn"} = 1;
44746 +    }
44747 +
44748 +    # return next line
44749 +    $t;
44750 +}
44751 +
44752 +sub _skip_section ($$) {
44753 +    my($fh, $tt) = @_;
44754 +    my($t);
44755 +    while (defined($t = <$fh>)) {
44756 +       last if $t =~ /^%/;
44757 +    }
44758 +    $t;
44759 +}
44760 +
44761 +sub read (*;$) {
44762 +    my($fh, $fn) = @_;
44763 +    $fh = ::qualify_to_ref($fh, caller);
44764 +    
44765 +    my($tt) = bless { 'filename' => $fn, 'err' => 0, 'errprefix' => $fn . ": " }, Testie;
44766 +    
44767 +    my($t, $read_command) = (undef, 0);
44768 +    $t = <$fh>;
44769 +    while (defined($t)) {
44770 +       if ($t =~ /^%\s*(\w+)\s*(.*?)\s*$/) {
44771 +           my($command) = lc($1);
44772 +           my($args) = $2;
44773 +           if ($command eq 'script' || $command eq 'test') {
44774 +               $t = _read_script_section($fh, $tt, $args, 'script');
44775 +           } elsif ($command eq 'require') {
44776 +               $t = _read_script_section($fh, $tt, $args, 'require');
44777 +           } elsif ($command eq 'info') {
44778 +               $tt->file_err("arguments to '\%info' ignored") if $args ne '';
44779 +               $t = _read_text_into($fh, $tt, 'info');
44780 +           } elsif ($command eq 'desc') {
44781 +               $tt->file_err("arguments to '\%desc' ignored") if $args ne '';
44782 +               $t = _read_text_into($fh, $tt, 'desc');
44783 +           } elsif ($command eq 'cut') {
44784 +               $t = _read_text_into($fh, $tt, 'cut');
44785 +           } elsif ($command eq 'stdin' || $command eq 'input') {
44786 +               $t = _read_file_section($fh, $tt, $args, 'file', 'f');
44787 +           } elsif ($command eq 'file') {
44788 +               $t = _read_file_section($fh, $tt, $args, 'file', 'f');
44789 +           } elsif ($command eq 'stdout' || $command eq 'output') {
44790 +               $t = _read_file_section($fh, $tt, $args, 'expect', 'e');
44791 +           } elsif ($command eq 'stderr') {
44792 +               $t = _read_file_section($fh, $tt, $args, 'expect', 'e');
44793 +           } elsif ($command eq 'expect') {
44794 +               $t = _read_file_section($fh, $tt, $args, 'expect', 'e');
44795 +           } elsif ($command eq 'expectx') {
44796 +               $t = _read_file_section($fh, $tt, $args, 'expectx', 'x');
44797 +           } elsif ($command eq 'expectv' || $command eq 'expect_verbatim'
44798 +                    || $command eq 'verbatim') {
44799 +               $t = _read_file_section($fh, $tt, $args, 'expectv', 'v');
44800 +           } elsif ($command eq 'ignore') {
44801 +               $t = _read_file_section($fh, $tt, $args, 'ignore', 'i');
44802 +           } elsif ($command eq 'ignorex') {
44803 +               $t = _read_file_section($fh, $tt, $args, 'ignorex', 'i');
44804 +           } elsif ($command eq 'ignorev') {
44805 +               $t = _read_file_section($fh, $tt, $args, 'ignorev', 'i');
44806 +           } elsif ($command eq 'eot') {
44807 +               $tt->{'continue'} = 1;
44808 +               last;
44809 +           } elsif ($command eq 'eof') {
44810 +               last;
44811 +           } else {
44812 +               $tt->file_err("unrecognized command '$command'");
44813 +               $t = _skip_section($fh, $tt);
44814 +           }
44815 +           $read_command = 1;
44816 +       } else {
44817 +           if ($t =~ /^%/) {
44818 +               $tt->file_err("bad '\%' command");
44819 +           } elsif ($t !~ /^[\#!]/ && $t =~ /\S/) {
44820 +               $tt->file_err("warning: garbage ignored") if $read_command;
44821 +               $read_command = 0;
44822 +           }
44823 +           $t = <$fh>;
44824 +       }
44825 +    }
44826 +
44827 +    $tt;
44828 +}
44829 +
44830 +sub have_file ($$) {
44831 +    my($tt, $fileref) = @_;
44832 +    exists($tt->{"F:$fileref"});
44833 +}
44834 +
44835 +sub empty ($) {
44836 +    my($tt) = @_;
44837 +    !exists($tt->{'script'});
44838 +}
44839 +
44840 +sub save_files ($&) {
44841 +    my($tt, $fileref_subr) = @_;
44842 +    foreach my $fn (@{$tt->{'file'}}) {
44843 +       my($actual) = $fileref_subr->($fn);
44844 +       next if !defined($actual);
44845 +       open OUT, ">$actual" || die "$actual: $!\n";
44846 +       print OUT $tt->{"f:$fn"}->[0];
44847 +       close OUT;
44848 +    }
44849 +}
44850 +
44851 +sub script_text ($&$) {
44852 +    my($tt, $fileref_subr, $script_type) = @_;
44853 +    my($subbody, $var, $val) = '';
44854 +
44855 +    # add variables
44856 +    while (($var, $val) = each %_variables) {
44857 +       $var = quotemeta($var);
44858 +       $val = quotemeta($val);
44859 +       $subbody .= "\$t =~ s/(^|[^\\\\])\\\$$var\\b/\${1}$val/g;\n";
44860 +       $subbody .= "\$t =~ s/(^|[^\\\\])\\\${$var}\\b/\${1}$val/g;\n";
44861 +    }
44862 +    
44863 +    my($code) = eval("sub { my(\$t) = \@_; $subbody\$t; }");
44864 +
44865 +    my($t) = '';
44866 +    if (!$::expand_mode) {
44867 +       $t .= <<'EOD;';
44868 +testie_failed () {
44869 +    exitval=$?
44870 +    test $exitval = 0 || (echo; echo testie_failure:$exitval) >&2
44871 +    exit $exitval
44872 +}
44873 +trap testie_failed EXIT
44874 +EOD;
44875 +    }
44876 +
44877 +    my($scriptarr, $linenoarr) = ($tt->{$script_type}, $tt->{$script_type . "_lineno"});
44878 +    foreach my $i (0..$#{$tt->{$script_type}}) {
44879 +       my($ln, $text) = ($linenoarr->[$i], $scriptarr->[$i]);
44880 +       $t .= "echo >&2; echo testie_lineno:$ln >&2\n" if !$::expand_mode;
44881 +       my(@c, @d);
44882 +       _shell_split(@c, @d, $text, 0, $code);
44883 +       die if @c != 1;
44884 +       chomp $c[0];
44885 +       next if $c[0] =~ /^\s*$/s;
44886 +       $c[0] =~ s,^(\s*)\./,$1../, if !$::expand_mode;
44887 +       $t .= $c[0] . "\n";
44888 +    }
44889 +
44890 +    $t;
44891 +}
44892 +
44893 +sub output_error ($$$$) {
44894 +    my($tt, $fileref_subr, $script_type, $verbose) = @_;
44895 +    my($fp) = $tt->{'errprefix'};
44896 +    
44897 +    if (!open(ERR, $fileref_subr->('stderr'))) {
44898 +       print STDERR $fp, $!, "\n";
44899 +       $::internal_errors++;
44900 +       return;
44901 +    }
44902 +    
44903 +    my($errortext, $t, $lineno, $failure) = ('');
44904 +    while ($t = <ERR>) {
44905 +       if ($t =~ /^testie_lineno:(.*)$/) {
44906 +           $lineno = $1;
44907 +           $errortext = '';
44908 +       } elsif ($t =~ /^testie_failure:(.*)$/) {
44909 +           $failure = $1;
44910 +       } else {
44911 +           $errortext .= $t;
44912 +       }
44913 +    }
44914 +    close ERR;
44915 +
44916 +    my($failure_text);
44917 +    if (!defined($failure)) {
44918 +       $failure_text = "undefined error";
44919 +    } elsif ($failure == 1) {
44920 +       $failure_text = "failure";
44921 +    } else {
44922 +       $failure_text = "error $failure";
44923 +    }
44924 +    if (defined($script_type) && $script_type eq 'require') {
44925 +       $failure_text = "requirement $failure_text";
44926 +       $::require_errors++;
44927 +    } else {
44928 +       $::errors++;
44929 +    }
44930 +
44931 +    $errortext =~ s/\s*\Z//;
44932 +    
44933 +    my($cmd) = $tt->command_at($lineno, $script_type);
44934 +    if ($fp =~ /: $/) {
44935 +       chop $fp;
44936 +    } else {
44937 +       $lineno = "line $lineno";
44938 +    }
44939 +    $lineno = $tt->filename if !defined($cmd);
44940 +
44941 +    # exit early if quiet
44942 +    return 1 if $tt->{$script_type . '_quietline'}->{$lineno} && !$verbose;
44943 +    
44944 +    if ($errortext =~ /^testie_error:/) {
44945 +       while ($errortext =~ /^testie_error:([^\n]*)/g) {
44946 +           print STDERR $fp, $lineno, ": ", $1, "\n";
44947 +       }
44948 +       $errortext =~ s/^testie_error:([^\n]*)//g;
44949 +       $errortext =~ s/\s*//;
44950 +       print STDERR $fp, $lineno, ": (There were other errors as well.)\n"
44951 +           if $errortext ne '';
44952 +    } elsif (!defined($cmd)) {
44953 +       print STDERR $fp, $lineno, ": $failure_text at undefined point in script\n";
44954 +    } else {
44955 +       $cmd =~ s/^\s*|\s*$//g;
44956 +       $cmd =~ s/([\000-\037])/'^' . chr(ord($1) + ord('@'))/eg;
44957 +       $cmd =~ s/([\177-\377])/"\\" . sprintf("%03o", ord($1))/eg;
44958 +       if (length($cmd) > 40) {
44959 +           $cmd = substr($cmd, 0, 40) . "...";
44960 +       }
44961 +       print STDERR $fp, $lineno, ": $failure_text at '$cmd'\n";
44962 +       while ($errortext =~ /([^\n]*)/g) {
44963 +           print STDERR $fp, $lineno, ":   $1\n" if $1 ne '';
44964 +       }
44965 +    }
44966 +
44967 +    1;
44968 +}
44969 +
44970 +sub _output_expectation_error ($$$$$) {
44971 +    my($fp, $efn, $lineno, $wanted, $got) = @_;
44972 +    
44973 +    # output message
44974 +    if ($efn eq 'stdout') {
44975 +       print STDERR $fp, "standard output has unexpected value starting at line $lineno\n";
44976 +    } elsif ($efn eq 'stderr') {
44977 +       print STDERR $fp, "standard error has unexpected value starting at line $lineno\n";
44978 +    } else {
44979 +       print STDERR $fp, "file $efn has unexpected value starting at line $lineno\n";
44980 +    }
44981 +
44982 +    # output '$wanted' and '$got' if possible
44983 +    $wanted = "<end of file>" if $wanted eq "\376";
44984 +    $wanted =~ s/\r?\n?\Z//;
44985 +    $got = "<end of file>" if $got eq "\376";
44986 +    $got =~ s/\r?\n?\Z//;
44987 +    if ($wanted =~ /\A[\t\040-\176]*\Z/ && $got =~ /\A[\t\040-\176]*\Z/) {
44988 +       print STDERR $fp, "$efn:$lineno: expected '$wanted'\n", $fp, "$efn:$lineno: but got  '$got'\n";
44989 +    }
44990 +
44991 +    # maintain error count
44992 +    $::errors++;
44993 +}
44994 +
44995 +sub _check_one_expect ($$$) {
44996 +    my($tt, $fileref_subr, $efn) = @_;
44997 +    my($fp) = $tt->{'errprefix'};
44998 +    my($xtp, $xtl, $xel);
44999 +
45000 +    # read file text
45001 +    if (!open(IN, $fileref_subr->($efn))) {
45002 +       print STDERR $fp, $efn, ": ", $!, "\n";
45003 +       $::errors++;
45004 +       return 0;
45005 +    }
45006 +    my($raw_text) = <IN>;
45007 +    $raw_text = '' if !defined($raw_text);
45008 +    close IN;
45009 +
45010 +    # prepare $ignores
45011 +    my($ignores) = '';
45012 +    $ignores .= join("\n", @{$tt->{"i:$efn"}}) . "\n" if exists($tt->{"i:$efn"});
45013 +    $ignores .= join("\n", @{$tt->{"i:all"}}) . "\n" if exists($tt->{"i:all"});
45014 +    # ignore testie messages
45015 +    $ignores .= "testie_lineno:.*\ntestie_error:.*\n" if $efn eq 'stderr';
45016 +    if ($ignores ne '') {
45017 +       $ignores =~ s/([!\#<>])/\\$1/g;
45018 +       $ignores =~ s{^([ \t]*\S[^\n]*)}{\$text =~ s<^$1\[ \\t\]*\$><\\377>mg;\n}mg;
45019 +    }
45020 +    
45021 +    # now compare alternates
45022 +    my($mode, $expect_marker) = (0, {});
45023 +    foreach my $exp (@{$tt->{"v:$efn"}}, $expect_marker, @{$tt->{"e:$efn"}}, $expect_marker, @{$tt->{"x:$efn"}}) {
45024 +       # check for change of mode
45025 +       if (ref($exp)) {
45026 +           $mode++;
45027 +           next;
45028 +       }
45029 +       my($text) = $raw_text;
45030 +
45031 +       # escape in common case
45032 +       return 0 if $text eq $exp;
45033 +
45034 +       # check that files really disagree (in later modes)
45035 +       if ($mode > 0) {
45036 +           # ignore differences in amounts of whitespace
45037 +           $text =~ s/\s+\n/\n/g;
45038 +           $text =~ s/\n\n+\Z/\n/;
45039 +           $text =~ s/\A\n//;
45040 +           $exp =~ s/\s+\n/\n/g;
45041 +           $exp =~ s/\n\n\n+/\n\n/g;
45042 +           $exp =~ s/\n\n+\Z/\n/;
45043 +           return 0 if $text eq $exp;
45044 +
45045 +           # ignore explicitly ignored text
45046 +           eval($ignores) if $ignores ne '';
45047 +       }
45048 +
45049 +       # line-by-line comparison
45050 +       my(@tl) = (split(/\n/, $text), "\376");
45051 +       my(@el) = (split(/\n/, $exp), "\376");
45052 +       my($tp, $ep) = (0, 0);
45053 +       while ($tp < @tl && $ep < @el) {
45054 +           
45055 +           # a single blank line in $exp matches multiple blank lines
45056 +           # in $text
45057 +           if ($el[$ep] eq '' && $tl[$tp] eq '' && $mode > 0) {
45058 +               $tp++ while $tl[$tp] eq '' || $tl[$tp] eq "\377";
45059 +               $tp--;
45060 +           }
45061 +
45062 +           # skip ignored lines
45063 +           $tp++ while $tl[$tp] eq "\377";
45064 +
45065 +           # compare lines
45066 +           if ($mode == 2) {
45067 +               last if $tl[$tp] !~ m/\A$el[$ep]\Z/;
45068 +           } elsif ($mode == 1 && $el[$ep] =~ /\{\{/) {
45069 +               my($t, $re) = ($el[$ep], '');
45070 +               while ($t =~ /\A(.*?)\{\{(.*?)\}\}(.*)\Z/) {
45071 +                   $re .= quotemeta($1) . $2;
45072 +                   $t = $3;
45073 +               }
45074 +               $re .= quotemeta($t);
45075 +               last if $tl[$tp] !~ m/\A$re\Z/;
45076 +           } elsif ($tl[$tp] ne $el[$ep]) {
45077 +               last;
45078 +           }
45079 +           
45080 +           $tp++, $ep++;
45081 +       }
45082 +       return 0 if $tp >= @tl || $ep >= @el;
45083 +
45084 +       ($xtp, $xel, $xtl) = ($tp + 1, $el[$ep], $tl[$tp])
45085 +           if !defined($xtp) || $tp + 1 > $xtp;
45086 +    }
45087 +
45088 +    # if we get here, none of the attempts matched
45089 +    _output_expectation_error($fp, $efn, $xtp, $xel, $xtl);
45090 +}
45091 +    
45092 +
45093 +sub check_expects ($$) {
45094 +    my($tt, $fileref_subr) = @_;
45095 +    my($fp) = $tt->{'errprefix'};
45096 +    local($/) = undef;
45097 +    my($expectx) = 0;
45098 +    my($tp, @tl, $ep, @el);
45099 +
45100 +    # check expected files
45101 +    my(%done);
45102 +    foreach my $efn (@{$tt->{'expect'}}, @{$tt->{'expectx'}}, @{$tt->{'expectv'}}) {
45103 +       next if $done{$efn};
45104 +       _check_one_expect($tt, $fileref_subr, $efn);
45105 +       $done{$efn} = 1;
45106 +    }
45107 +
45108 +    0;
45109 +}
45110 +
45111 +
45112 +package main;
45113 +
45114 +my($dir, @show, $show_stdout, $show_stderr, $any_tests_done, $can_setpgrp);
45115 +my($SHELL) = "/bin/sh";
45116 +
45117 +sub script_fn_to_fn ($) {
45118 +    my($fn) = @_;
45119 +    $fn;
45120 +}
45121 +
45122 +sub out_script_fn_to_fn ($) {
45123 +    my($fn) = @_;
45124 +    "$dir/$fn";
45125 +}
45126 +
45127 +sub _shell ($$$$$) {
45128 +    my($dir, $scriptfn, $stdin, $stdout, $stderr) = @_;
45129 +    $scriptfn = "./$scriptfn" if $scriptfn !~ m|^/|;
45130 +
45131 +    # Create a new process group so we can (likely) kill any children
45132 +    # processes the script carelessly left behind.  Thanks, Chuck Blake!
45133 +    my($child_pid) = fork();
45134 +    if (!defined($child_pid)) {
45135 +       die "cannot fork: $!\n";
45136 +    } elsif ($child_pid == 0) {
45137 +       eval { setpgrp() };
45138 +       chdir($dir);
45139 +       open(STDIN, "<", $stdin) || die "$stdin: $!\n";
45140 +       open(STDOUT, ">", $stdout) || die "$stdout: $!\n";
45141 +       open(STDERR, ">", $stderr) || die "$stderr: $!\n";
45142 +       exec $SHELL, "-e", $scriptfn;
45143 +    } else {
45144 +       waitpid($child_pid, 0); # assume it succeeds
45145 +       my($result) = $?;
45146 +       kill('HUP', -$child_pid); # kill any processes left behind
45147 +       $result;
45148 +    }
45149 +}
45150 +
45151 +sub execute_test ($$$) {
45152 +    my($tt, $fn, $verbose) = @_;
45153 +    my($f);
45154 +
45155 +    # count attempt
45156 +    $::attempts++;
45157 +
45158 +    # print description in superverbose mode
45159 +    if ($verbose > 1) {
45160 +       return 0 if $tt->empty;
45161 +       print STDERR "\n" if $any_tests_done;
45162 +       if ($tt->{'desc'}) {
45163 +           my($desc) = $tt->{'desc'};
45164 +           $desc =~ s/^(.*?)\t/$1 . (' ' x (8 - (length($1) % 8)))/egm
45165 +               while $desc =~ /\t/;
45166 +           $desc =~ s/^/  /;
45167 +           print STDERR $fn, " Description:\n", $desc;
45168 +       }
45169 +       print STDERR $fn, " Results:\n";
45170 +       $tt->{'errprefix'} = "  ";
45171 +    }
45172 +
45173 +    # note that we're running the test in verbose mode
45174 +    if ($verbose == 1) {
45175 +       print STDERR $tt->{'errprefix'}, "Running...\n";
45176 +    }
45177 +
45178 +    # check requirements
45179 +    if (exists $tt->{'require'}) {
45180 +       open(SCR, ">$dir/+require+") || die "$dir/+require+: $!\n";
45181 +       print SCR $tt->script_text(\&script_fn_to_fn, 'require');
45182 +       close SCR;
45183 +
45184 +       if (!$expand_mode) {
45185 +           my($exitval) = _shell($dir, '+require+', '/dev/null', '/dev/null', script_fn_to_fn('stderr'));
45186 +
45187 +           # if it exited with a bad value, quit
45188 +           if ($exitval) {
45189 +               return $tt->output_error(\&out_script_fn_to_fn, 'require', $verbose);
45190 +           } elsif ($verbose) {
45191 +               print STDERR $tt->{'errprefix'}, "Requirements OK\n";
45192 +           }
45193 +       }
45194 +    }
45195 +
45196 +    # save the files it names
45197 +    $tt->save_files(\&out_script_fn_to_fn);
45198 +
45199 +    # save the script
45200 +    open(SCR, ">$dir/+script+") || die "$dir/+script+: $!\n";
45201 +    print SCR $tt->script_text(\&script_fn_to_fn, 'script');
45202 +    close SCR;
45203 +
45204 +    # exit if expand mode
45205 +    return 0 if ($expand_mode);
45206 +    
45207 +    # run the script
45208 +    my($actual_stdin) = ($tt->have_file('stdin') ? script_fn_to_fn('stdin') : "/dev/null");
45209 +    my($actual_stdout) = ($show_stdout || $tt->have_file('stdout') ? script_fn_to_fn('stdout') : "/dev/null");
45210 +    my($actual_stderr) = script_fn_to_fn('stderr');
45211 +    my($exitval) = _shell($dir, '+script+', $actual_stdin, $actual_stdout, $actual_stderr);
45212 +    $any_tests_done = 1;
45213 +
45214 +    # echo files
45215 +    foreach $f (@show) {
45216 +       if (-r out_script_fn_to_fn($f)) {
45217 +           print "$fn: $f\n", "=" x 79, "\n";
45218 +           local($/) = undef;
45219 +           open(X, out_script_fn_to_fn($f));
45220 +           $_ = <X>;
45221 +           close(X);
45222 +           print $_, "=" x 79, "\n";
45223 +       } else {
45224 +           print "$fn: $f does not exist\n";
45225 +       }
45226 +    }
45227 +
45228 +    # if it exited with a bad value, quit
45229 +    if ($exitval) {
45230 +       return $tt->output_error(\&out_script_fn_to_fn, 'script', $verbose);
45231 +    }
45232 +
45233 +    # check files
45234 +    my $old_errors = $::errors;
45235 +    if ($exitval = $tt->check_expects(\&out_script_fn_to_fn)) {
45236 +       return $exitval;
45237 +    }
45238 +
45239 +    if ($verbose && !$tt->empty && $old_errors == $::errors) {
45240 +       print STDERR $tt->{'errprefix'}, "Success!\n";
45241 +    }
45242 +
45243 +    0;
45244 +}
45245 +
45246 +sub run_test (;$$) {
45247 +    my($fn, $verbose) = @_;
45248 +
45249 +    # read the testie
45250 +    my($tt, $display_fn, $close_in);
45251 +    if (!defined($fn) || $fn eq '-') {
45252 +       if (!open(IN, "<&=STDIN")) {
45253 +           print STDERR "<stdin>: $!\n";
45254 +           return -1;
45255 +       }
45256 +       $display_fn = "<stdin>";
45257 +    } elsif (-d $fn) {
45258 +       print STDERR "$fn: is a directory\n";
45259 +       return -1;
45260 +    } else {
45261 +       if (!open(IN, "<", $fn)) {
45262 +           print STDERR "$fn: $!\n";
45263 +           return -1;
45264 +       }
45265 +       $display_fn = $fn;
45266 +       $close_in = 1;
45267 +    }
45268 +
45269 +    my($result, $suffix) = (0, '');
45270 +    
45271 +    while (1) {
45272 +       $tt = Testie::read(IN, $display_fn . $suffix);
45273 +       my($this_result) = execute_test($tt, $display_fn . $suffix, $verbose);
45274 +       $result = $this_result if $this_result;
45275 +       last if !$tt->{'continue'};
45276 +       if (!($suffix =~ s/^<(\d+)>$/"<" . ($1+1) . ">"/e)) {
45277 +           $suffix = "<2>";
45278 +       }
45279 +    }
45280 +
45281 +    close IN if $close_in;
45282 +    $result;
45283 +}
45284 +
45285 +$SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = $SIG{'__DIE__'} = sub {
45286 +    system("/bin/rm -rf $dir 2>/dev/null") if !$preserve_temporaries;
45287 +    exit(1);
45288 +};
45289 +
45290 +
45291 +
45292 +sub help () {
45293 +    print <<'EOD;';
45294 +'Testie' is a simple test harness.
45295 +
45296 +Usage: testie [OPTIONS] [FILE]...
45297 +
45298 +Options:
45299 +  VARIABLE=VALUE             Variable settings for test script.
45300 +  -V, --verbose              Print information for successful tests.
45301 +  -VV, --superverbose        Print %desc information for all tests.
45302 +  -s, --show TESTIEFILE      Show contents of TESTIEFILE on completion.
45303 +  --preserve-temporaries     Preserve temporary files.
45304 +  -e, --expand               Expand test files into current directory.  
45305 +  -v, --version              Print version information and exit.
45306 +  --help                     Print this message and exit.
45307 +
45308 +Report bugs and suggestions to <kohler@icir.org>.
45309 +EOD;
45310 +    exit(0);
45311 +}
45312 +
45313 +sub usage () {
45314 +    print STDERR <<'EOD;';
45315 +Usage: testie [-V] [--preserve-temporaries] [FILE]...
45316 +Try 'testie --help' for more information.
45317 +EOD;
45318 +    exit(1);
45319 +}
45320 +
45321 +sub print_version () {
45322 +    print <<'EOD;';
45323 +Testie 1.1
45324 +Copyright (c) 2002-2003 International Computer Science Institute
45325 +This is free software; see the source for copying conditions.
45326 +There is NO warranty, not even for merchantability or fitness for a
45327 +particular purpose.
45328 +EOD;
45329 +    exit(0);
45330 +}
45331 +
45332 +sub argcmp ($$$;\$) {
45333 +    my($arg, $opt, $min_match, $store) = @_;
45334 +    $$store = undef if defined($store);
45335 +    return 0 if substr($arg, 0, 2 + $min_match) ne substr($opt, 0, 2 + $min_match);
45336 +    my($eq) = index($arg, '=');
45337 +    my($last) = ($eq >= 0 ? $eq : length($arg));
45338 +    return 0 if $last > length($opt) || substr($arg, 0, $last) ne substr($opt, 0, $last);
45339 +    return 0 if !defined($store) && $eq >= 0;
45340 +    $$store = substr($arg, $eq + 1) if defined($store) && $eq >= 0;
45341 +    1;
45342 +}
45343 +
45344 +
45345 +# directory searching
45346 +
45347 +sub search_dir ($$) {
45348 +    my($dir, $aref) = @_;
45349 +    $dir =~ s/\/+$//;
45350 +    if (!opendir(DIR, $dir)) {
45351 +       print STDERR "$dir: $!\n";
45352 +       return;
45353 +    }
45354 +    my(@f) = grep { !/^\.\.?$/ } readdir(DIR);
45355 +    closedir(DIR);
45356 +    foreach my $f (@f) {
45357 +       if (-d "$dir/$f") {
45358 +           &search_dir("$dir/$f", $aref);
45359 +       } elsif ($f =~ /\.testie$/) {
45360 +           push @$aref, "$dir/$f";
45361 +       }
45362 +    }
45363 +}
45364 +
45365 +
45366 +# argument processing
45367 +
45368 +$dir = "testie$$";
45369 +
45370 +my(@tests, $verbose, $arg);
45371 +$verbose = 0;
45372 +
45373 +while (@ARGV) {
45374 +    $_ = shift @ARGV;
45375 +    if (/^([A-Za-z_]\w*)=(.*)$/s) {
45376 +       $Testie::_variables{$1} = $2;
45377 +    } elsif (/^-$/) {
45378 +       push @tests, $_;
45379 +    } elsif (!/^-/) {
45380 +       if (-d $_) {
45381 +           search_dir($_, \@tests);
45382 +       } else {
45383 +           push @tests, $_;
45384 +       }
45385 +    } elsif (/^-v$/ || argcmp($_, '--version', 4)) {
45386 +       print_version;
45387 +    } elsif (/^-V$/ || argcmp($_, '--verbose', 4)) {
45388 +       $verbose = 1;
45389 +    } elsif (/^-VV$/ || argcmp($_, '--superverbose', 2)) {
45390 +       $verbose = 2;
45391 +    } elsif (/^-e$/ || argcmp($_, '--expand', 1)) {
45392 +       $expand_mode = 1;
45393 +       $preserve_temporaries = 1;
45394 +       $dir = ".";
45395 +    } elsif (argcmp($_, '--help', 1)) {
45396 +       help;
45397 +    } elsif (argcmp($_, '--preserve-temporaries', 1)) {
45398 +       $preserve_temporaries = 1;
45399 +    } elsif (/^-s$/ || argcmp($_, '--show', 2)) {
45400 +       usage if @ARGV == 0;
45401 +       push @show, (shift @ARGV);
45402 +    } elsif (/^-s(.+)$/) {
45403 +       push @show, $1;
45404 +    } elsif (argcmp($_, '--show', 2, $arg)) {
45405 +       push @show, $arg;
45406 +    } else {
45407 +       usage;
45408 +    }
45409 +}
45410 +
45411 +if (-d $dir && !$expand_mode) {
45412 +    print STDERR "warning: $dir directory exists; removing it\n";
45413 +    system("/bin/rm -rf $dir");
45414 +    -d $dir && die "cannot remove $dir directory: $!\n";
45415 +}
45416 +mkdir $dir || die "cannot create $dir directory: $!\n";
45417 +
45418 +# check @show for stdout/stderr
45419 +foreach my $s (@show) {
45420 +    $show_stdout = 1 if $s eq 'stdout';
45421 +    $show_stderr = 1 if $s eq 'stderr';
45422 +}
45423 +
45424 +push @tests, '-' if !@tests;
45425 +foreach my $test (@tests) {
45426 +    run_test($test, $verbose);
45427 +}
45428 +
45429 +system("/bin/rm -rf $dir") if !$preserve_temporaries;
45430 +if ($internal_errors > 0) {
45431 +    exit(2);
45432 +} elsif ($attempts == 0
45433 +        || ($errors == 0 && $require_errors < $attempts)) {
45434 +    exit(0);
45435 +} else {
45436 +    exit(1);
45437 +}
45438 +
45439 +
45440 +=pod
45441 +
45442 +=head1 NAME
45443 +
45444 +testie - simple test harness
45445 +
45446 +=head1 SYNOPSIS
45447 +
45448 +  testie [OPTIONS] [FILE]...
45449 +
45450 +=head1 DESCRIPTION
45451 +
45452 +Testie is a simple test harness. Each testie test file incorporates a shell
45453 +script to be run and, optionally, input and expected output files for that
45454 +script. Testie runs the script; the test fails if any of the script
45455 +commands fail, or if the script generates unexpected output.
45456 +
45457 +To run testie, pass it one or more test filenames. It will print useful
45458 +error messages for failed tests. Alternatively, give it directory names;
45459 +the directories are recursively searched for 'F<*.testie>' files.
45460 +
45461 +Return status is 0 if all tests succeed, 1 if any test fails, and 2 if a
45462 +test fails due to an internal error. Tests whose %require prerequisites
45463 +fail do not affect the return status, except that if all tests'
45464 +prerequisites fail, the return status is 1 instead of 0.
45465 +
45466 +=head1 OPTIONS
45467 +
45468 +=over 8
45469 +
45470 +=item I<VARIABLE>=I<VALUE>
45471 +
45472 +Provide a setting for I<VARIABLE>. Occurrences in the script of
45473 +'C<$VARIABLE>' or 'C<${VARIABLE}>' will be replaced by I<VALUE>. Note that
45474 +this is not an environment variable setting. Variable references to unset
45475 +variables are left unchanged.
45476 +
45477 +=item -V, --verbose
45478 +
45479 +Print information to standard error about successful tests as well as
45480 +unsuccessful tests.
45481 +
45482 +=item -VV, --superverbose
45483 +
45484 +Like --verbose, but use a slightly different format, and additionally print
45485 +every test's %desc section before the test results.
45486 +
45487 +=item -v, --version
45488 +
45489 +Print version number information and exit.
45490 +
45491 +=item --help
45492 +
45493 +Print help information and exit.
45494 +
45495 +=item --preserve-temporaries
45496 +
45497 +Preserve the temporary directory created for the test.
45498 +
45499 +=item -s, --show FILE
45500 +
45501 +Echo the contents of FILE on completion. FILE should be one of the
45502 +filenames specified by %file or %expect*, or 'stdout' or 'stderr'.
45503 +
45504 +=item -e, --expand
45505 +
45506 +Don't run the given test; instead, expand its files into the current
45507 +directory.  The script is stored in a file called '+script+'.
45508 +
45509 +=back
45510 +
45511 +=head1 FILE FORMAT
45512 +
45513 +Testie test files consist of several sections, each introduced by a line
45514 +starting with %. There must be, at least, a %script section.
45515 +
45516 +The %file and %expect* sections define input and/or output files by
45517 +name. Testie runs its script in a private directory in F</tmp>; any files
45518 +mentioned in %file or %expect* are placed in that directory.
45519 +
45520 +=over 8
45521 +
45522 +=item %script
45523 +
45524 +The shell script (in sh syntax) that controls the test. Testie will run
45525 +each command in sequence. Every command in the script must succeed, with
45526 +exit status 0, or the test will fail. The script's inputs and outputs are
45527 +defined with the %file and %expect* sections.
45528 +
45529 +=item %require [-q]
45530 +
45531 +A shell script (in sh syntax) defining prerequisites that must be satisfied
45532 +before the test can run. Every command in the script must succeed, with
45533 +exit status 0, for the test to run. %require's output is not checked,
45534 +however. The C<-q> flag tells testie not to print an error message if a
45535 +requirement fails.
45536 +
45537 +=item %desc
45538 +
45539 +A short description of the test.  In --superverbose mode, its contents are
45540 +printed before the test results.
45541 +
45542 +=item %info
45543 +
45544 +This section is ignored. It is intended for information about the test.
45545 +
45546 +=item %cut
45547 +
45548 +This section is ignored. It is intended to comment out obsolete parts of
45549 +the test.
45550 +
45551 +=item %file [-d] [+LENGTH] FILENAME...
45552 +
45553 +Create an input file for the script. FILENAME can be 'stdin', which sets
45554 +the script's standard input. If LENGTH is provided, the file data consists
45555 +of the LENGTH bytes following this line. Otherwise, it consists of the data
45556 +up to the next section. The C<-d> flag tells testie to delete the
45557 +first character of each line in the section; this makes it possible to
45558 +include files that have lines that start with %. FILENAME cannot contain
45559 +slashes.
45560 +
45561 +=item %expectv [-a] [-d] [+LENGTH] FILENAME...
45562 +
45563 +An expected output file for the script. FILENAME can be 'stdout', for
45564 +standard output. If LENGTH is provided, the file data consists of the
45565 +LENGTH bytes following this line; otherwise, it consists of the data up to
45566 +the next section.
45567 +
45568 +Testie will run the script, then compare the script's output file with the
45569 +provided data. They must match exactly or the test fails.
45570 +
45571 +The C<-a> flag marks this expected output as an alternate. Testie will
45572 +compare the script's output file with each provided alternate; the test
45573 +succeeds if any of the alternates match. The C<-d> flag behaves as in
45574 +%file.
45575 +
45576 +=item %expect [-a] [-d] [-i] [+LENGTH] FILENAME...
45577 +
45578 +An expected output file for the script. Arguments are as for %expectv.
45579 +
45580 +Testie will run the script, then compare the file generated by script
45581 +with the provided data. The files are compared line-by-line. Testie
45582 +ignores trailing whitespace on each line and in the files at large. It also
45583 +ignores lines in the script output that match %ignore patterns (see below).
45584 +Blank lines in the %expect data match one or more blank lines in the
45585 +output. %expect lines can contain Perl regular expressions, enclosed by two
45586 +sets of braces; so the %expect line
45587 +
45588 +    foo{{(bar)?}}
45589 +
45590 +matches either 'foo' or 'foobar'. The C<-i> flag makes any regular
45591 +expressions case-insensitive.
45592 +
45593 +=item %expectx [-a] [-d] [-i] [+LENGTH] FILENAME...
45594 +
45595 +%expectx is just like %expect, except that every line is treated as a
45596 +regular expression (so there is no need for the "{{ }}" escapes).
45597 +
45598 +=item %stdin [+LENGTH]
45599 +
45600 +Same as '%file stdin [ARGS]'.
45601 +
45602 +=item %stdout [-a] [-d] [-i] [+LENGTH]
45603 +
45604 +Same as '%expect stdout'.
45605 +
45606 +=item %stderr [-a] [-d] [-i] [+LENGTH]
45607 +
45608 +Same as '%expect stderr'.
45609 +
45610 +=item %ignorex [-d] [-i] [+LENGTH] [FILENAME]
45611 +
45612 +Each line in the %ignorex section is a Perl regular expression.  Lines in
45613 +the supplied FILENAME that match any of those regular expressions will not
45614 +be considered when comparing files with %expect[x] data.  The regular
45615 +expression must match the whole line.  FILENAME may be 'all', in which case
45616 +the regular expressions will apply to all %expect[x] files.
45617 +
45618 +=item %ignore, %ignorev
45619 +
45620 +Like '%ignorex', but '%ignore' parses regular expressions only inside
45621 +double braces ("{{ }}"), and '%ignorev' lines must match exactly.
45622 +
45623 +=item %eot
45624 +
45625 +Marks the end of the current test.  The rest of the file will be parsed for
45626 +additional tests.
45627 +
45628 +=item %eof
45629 +
45630 +The rest of the file is ignored.
45631 +
45632 +=back
45633 +
45634 +=head1 EXAMPLE
45635 +
45636 +This simple testie script checks that 'grep -c' works for a simple output
45637 +file.
45638 +
45639 +  %script
45640 +  grep -c B.
45641 +  %stdin
45642 +  Bfoo
45643 +  B
45644 +  %stdout
45645 +  1
45646 +
45647 +=head1 AUTHOR
45648 +
45649 +Eddie Kohler, <kohler@cs.ucla.edu>
45650 Files click-1.6.0/inst/bin/xml2click and click-1.6.0-27/inst/bin/xml2click differ
45651 diff -Nurb click-1.6.0/inst/include/click/algorithm.hh click-1.6.0-27/inst/include/click/algorithm.hh
45652 --- click-1.6.0/inst/include/click/algorithm.hh 1969-12-31 19:00:00.000000000 -0500
45653 +++ click-1.6.0-27/inst/include/click/algorithm.hh      2009-02-05 10:20:41.000000000 -0500
45654 @@ -0,0 +1,24 @@
45655 +#ifndef CLICK_ALGORITHM_HH
45656 +#define CLICK_ALGORITHM_HH
45657 +CLICK_DECLS
45658 +
45659 +template <class T>
45660 +inline T *
45661 +find(T *begin, T *end, const T &val)
45662 +{
45663 +    while (begin < end && *begin != val)
45664 +       begin++;
45665 +    return begin;
45666 +}
45667 +
45668 +template <class T>
45669 +inline const T *
45670 +find(const T *begin, const T *end, const T &val)
45671 +{
45672 +    while (begin < end && *begin != val)
45673 +       begin++;
45674 +    return begin;
45675 +}
45676 +
45677 +CLICK_ENDDECLS
45678 +#endif
45679 diff -Nurb click-1.6.0/inst/include/click/archive.hh click-1.6.0-27/inst/include/click/archive.hh
45680 --- click-1.6.0/inst/include/click/archive.hh   1969-12-31 19:00:00.000000000 -0500
45681 +++ click-1.6.0-27/inst/include/click/archive.hh        2009-02-05 10:20:41.000000000 -0500
45682 @@ -0,0 +1,29 @@
45683 +// -*- c-basic-offset: 2; related-file-name: "../../lib/archive.cc" -*-
45684 +#ifndef CLICK_ARCHIVE_HH
45685 +#define CLICK_ARCHIVE_HH
45686 +#include <click/string.hh>
45687 +#include <click/vector.hh>
45688 +CLICK_DECLS
45689 +class ErrorHandler;
45690 +
45691 +struct ArchiveElement {
45692 +  
45693 +  String name;
45694 +  int date;
45695 +  int uid;
45696 +  int gid;
45697 +  int mode;
45698 +  String data;
45699 +
45700 +  bool live() const                    { return name; }
45701 +  bool dead() const                    { return !name; }
45702 +  void kill()                          { name = String(); }
45703 +  
45704 +};
45705 +
45706 +int separate_ar_string(const String &, Vector<ArchiveElement> &,
45707 +                      ErrorHandler * = 0);
45708 +String create_ar_string(const Vector<ArchiveElement> &, ErrorHandler * = 0);
45709 +
45710 +CLICK_ENDDECLS
45711 +#endif
45712 diff -Nurb click-1.6.0/inst/include/click/atomic.hh click-1.6.0-27/inst/include/click/atomic.hh
45713 --- click-1.6.0/inst/include/click/atomic.hh    1969-12-31 19:00:00.000000000 -0500
45714 +++ click-1.6.0-27/inst/include/click/atomic.hh 2009-02-05 10:20:41.000000000 -0500
45715 @@ -0,0 +1,433 @@
45716 +// -*- c-basic-offset: 4 -*-
45717 +#ifndef CLICK_ATOMIC_HH
45718 +#define CLICK_ATOMIC_HH
45719 +#if CLICK_LINUXMODULE
45720 +# include <click/glue.hh>
45721 +#endif
45722 +CLICK_DECLS
45723 +#if CLICK_LINUXMODULE
45724 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
45725 +#  define CLICK_ATOMIC_VAL     _val.counter
45726 +# else
45727 +#  define CLICK_ATOMIC_VAL     __atomic_fool_gcc(&_val)
45728 +# endif
45729 +# ifdef __SMP__
45730 +#  define CLICK_ATOMIC_LOCK    "lock ; "
45731 +# else
45732 +#  define CLICK_ATOMIC_LOCK    /* nothing */
45733 +# endif
45734 +#else
45735 +# define CLICK_ATOMIC_VAL      _val
45736 +# if HAVE_MULTITHREAD && defined(__i386__)
45737 +#  define CLICK_ATOMIC_X86     1
45738 +#  define CLICK_ATOMIC_LOCK    "lock ; "
45739 +# else
45740 +#  define CLICK_ATOMIC_LOCK    /* nothing */
45741 +# endif
45742 +#endif
45743 +
45744 +/** @file <click/atomic.hh>
45745 + * @brief An atomic 32-bit integer.
45746 + */
45747 +
45748 +/** @class atomic_uint32_t
45749 + * @brief A 32-bit integer with support for atomic operations.
45750 + *
45751 + * The atomic_uint32_t class represents a 32-bit integer, with support for
45752 + * atomic operations.  The +=, -=, &=, |=, ++, and -- operations are
45753 + * implemented using atomic instructions.  There are also atomic swap(),
45754 + * fetch_and_add(), dec_and_test(), and compare_and_swap() operations.
45755 + *
45756 + * Because of some issues with compiler implementations, atomic_uint32_t has
45757 + * no explicit constructor; to set an atomic_uint32_t to a value, use
45758 + * operator=.
45759 + *
45760 + * The atomic_uint32_t only provides true atomic semantics when that has been
45761 + * implemented.  It has been implemented in the Linux kernel, and at userlevel
45762 + * (when --enable-multithread has been defined) for x86 machines.  In other
45763 + * situations, it's not truly atomic (because it doesn't need to be).
45764 + */
45765 +class atomic_uint32_t { public:
45766 +
45767 +    // No constructors because, unfortunately, GCC generates worse code. Use
45768 +    // operator= instead.
45769 +  
45770 +    inline uint32_t value() const;
45771 +    inline operator uint32_t() const;
45772 +  
45773 +    inline atomic_uint32_t &operator=(uint32_t v);
45774 +
45775 +    inline atomic_uint32_t &operator+=(int32_t delta);
45776 +    inline atomic_uint32_t &operator-=(int32_t delta);
45777 +    inline atomic_uint32_t &operator|=(uint32_t mask);
45778 +    inline atomic_uint32_t &operator&=(uint32_t mask);
45779 +
45780 +    inline void operator++();
45781 +    inline void operator++(int);
45782 +    inline void operator--();
45783 +    inline void operator--(int);
45784 +
45785 +    inline uint32_t swap(uint32_t v);
45786 +    inline uint32_t fetch_and_add(uint32_t delta);
45787 +    inline bool dec_and_test();
45788 +    inline bool compare_and_swap(uint32_t test_value, uint32_t new_value);
45789 +  
45790 +  private:
45791 +
45792 +#if CLICK_LINUXMODULE
45793 +    atomic_t _val;
45794 +#elif HAVE_MULTITHREAD
45795 +    volatile uint32_t _val;
45796 +#else
45797 +    uint32_t _val;
45798 +#endif
45799 +
45800 +};
45801 +
45802 +/** @brief  Return the value. */
45803 +inline uint32_t
45804 +atomic_uint32_t::value() const
45805 +{
45806 +#if CLICK_LINUXMODULE
45807 +    return atomic_read(&_val);
45808 +#else
45809 +    return CLICK_ATOMIC_VAL;
45810 +#endif
45811 +}
45812 +
45813 +/** @brief  Return the value. */
45814 +inline
45815 +atomic_uint32_t::operator uint32_t() const
45816 +{
45817 +    return value();
45818 +}
45819 +
45820 +/** @brief  Set the value to @a v. */
45821 +inline atomic_uint32_t &
45822 +atomic_uint32_t::operator=(uint32_t v)
45823 +{
45824 +#if CLICK_LINUXMODULE
45825 +    atomic_set(&_val, v);
45826 +#else
45827 +    CLICK_ATOMIC_VAL = v;
45828 +#endif
45829 +    return *this;
45830 +}
45831 +
45832 +/** @brief  Atomically add @a delta to the value. */
45833 +inline atomic_uint32_t &
45834 +atomic_uint32_t::operator+=(int32_t delta)
45835 +{
45836 +#if CLICK_LINUXMODULE
45837 +    atomic_add(delta, &_val);
45838 +#elif CLICK_ATOMIC_X86
45839 +    asm volatile (CLICK_ATOMIC_LOCK "addl %1,%0"
45840 +                 : "=m" (CLICK_ATOMIC_VAL)
45841 +                 : "r" (delta), "m" (CLICK_ATOMIC_VAL)
45842 +                 : "cc");
45843 +#else
45844 +    CLICK_ATOMIC_VAL += delta;
45845 +#endif
45846 +    return *this;
45847 +}
45848 +
45849 +/** @brief  Atomically subtract @a delta from the value. */
45850 +inline atomic_uint32_t &
45851 +atomic_uint32_t::operator-=(int32_t delta)
45852 +{
45853 +#if CLICK_LINUXMODULE
45854 +    atomic_sub(delta, &_val);
45855 +#elif CLICK_ATOMIC_X86
45856 +    asm volatile (CLICK_ATOMIC_LOCK "subl %1,%0"
45857 +                 : "=m" (CLICK_ATOMIC_VAL)
45858 +                 : "r" (delta), "m" (CLICK_ATOMIC_VAL)
45859 +                 : "cc");
45860 +#else
45861 +    CLICK_ATOMIC_VAL -= delta;
45862 +#endif
45863 +    return *this;
45864 +}
45865 +
45866 +/** @brief  Atomically bitwise-or the value with @a mask. */
45867 +inline atomic_uint32_t &
45868 +atomic_uint32_t::operator|=(uint32_t mask)
45869 +{
45870 +#if CLICK_LINUXMODULE && HAVE_LINUX_ATOMIC_SET_MASK
45871 +    atomic_set_mask(mask, &_val);
45872 +#elif CLICK_LINUXMODULE
45873 +    unsigned long flags;
45874 +    local_irq_save(flags);
45875 +    CLICK_ATOMIC_VAL |= mask;
45876 +    local_irq_restore(flags);
45877 +#elif CLICK_ATOMIC_X86
45878 +    asm volatile (CLICK_ATOMIC_LOCK "orl %1,%0"
45879 +                 : "=m" (CLICK_ATOMIC_VAL)
45880 +                 : "r" (mask), "m" (CLICK_ATOMIC_VAL)
45881 +                 : "cc");
45882 +#else
45883 +    CLICK_ATOMIC_VAL |= mask;
45884 +#endif
45885 +     return *this;
45886 +}
45887 +
45888 +/** @brief  Atomically bitwise-and the value with @a mask. */
45889 +inline atomic_uint32_t &
45890 +atomic_uint32_t::operator&=(uint32_t mask)
45891 +{
45892 +#if CLICK_LINUXMODULE && HAVE_LINUX_ATOMIC_SET_MASK
45893 +    atomic_clear_mask(~mask, &_val);
45894 +#elif CLICK_LINUXMODULE
45895 +    unsigned long flags;
45896 +    local_irq_save(flags);
45897 +    CLICK_ATOMIC_VAL &= mask;
45898 +    local_irq_restore(flags);
45899 +#elif CLICK_ATOMIC_X86
45900 +    asm volatile (CLICK_ATOMIC_LOCK "andl %1,%0"
45901 +                 : "=m" (CLICK_ATOMIC_VAL)
45902 +                 : "r" (mask), "m" (CLICK_ATOMIC_VAL)
45903 +                 : "cc");
45904 +#else
45905 +    CLICK_ATOMIC_VAL &= mask;
45906 +#endif
45907 +    return *this;
45908 +}
45909 +
45910 +/** @brief  Atomically increment the value. */
45911 +inline void
45912 +atomic_uint32_t::operator++()
45913 +{
45914 +#if CLICK_LINUXMODULE
45915 +    atomic_inc(&_val);
45916 +#elif CLICK_ATOMIC_X86
45917 +    asm volatile (CLICK_ATOMIC_LOCK "incl %0"
45918 +                 : "=m" (CLICK_ATOMIC_VAL)
45919 +                 : "m" (CLICK_ATOMIC_VAL)
45920 +                 : "cc");
45921 +#else
45922 +    CLICK_ATOMIC_VAL++;
45923 +#endif
45924 +}
45925 +
45926 +/** @brief  Atomically increment the value. */
45927 +inline void
45928 +atomic_uint32_t::operator++(int)
45929 +{
45930 +#if CLICK_LINUXMODULE
45931 +    atomic_inc(&_val);
45932 +#elif CLICK_ATOMIC_X86
45933 +    asm volatile (CLICK_ATOMIC_LOCK "incl %0"
45934 +                 : "=m" (CLICK_ATOMIC_VAL)
45935 +                 : "m" (CLICK_ATOMIC_VAL)
45936 +                 : "cc");
45937 +#else
45938 +    CLICK_ATOMIC_VAL++;
45939 +#endif
45940 +}
45941 +
45942 +/** @brief  Atomically decrement the value. */
45943 +inline void
45944 +atomic_uint32_t::operator--()
45945 +{
45946 +#if CLICK_LINUXMODULE
45947 +    atomic_dec(&_val);
45948 +#elif CLICK_ATOMIC_X86
45949 +    asm volatile (CLICK_ATOMIC_LOCK "decl %0"
45950 +                 : "=m" (CLICK_ATOMIC_VAL)
45951 +                 : "m" (CLICK_ATOMIC_VAL)
45952 +                 : "cc");
45953 +#else
45954 +    CLICK_ATOMIC_VAL--;
45955 +#endif
45956 +}
45957 +
45958 +/** @brief  Atomically decrement the value. */
45959 +inline void
45960 +atomic_uint32_t::operator--(int)
45961 +{
45962 +#if CLICK_LINUXMODULE
45963 +    atomic_dec(&_val);
45964 +#elif CLICK_ATOMIC_X86
45965 +    asm volatile (CLICK_ATOMIC_LOCK "decl %0"
45966 +                 : "=m" (CLICK_ATOMIC_VAL)
45967 +                 : "m" (CLICK_ATOMIC_VAL)
45968 +                 : "cc");
45969 +#else
45970 +    CLICK_ATOMIC_VAL--;
45971 +#endif
45972 +}
45973 +
45974 +/** @brief  Atomically assign the value to @a v, returning the old value.
45975 + *
45976 + * Behaves like this, but in one atomic step:
45977 + * @code
45978 + * uint32_t old_value = value();
45979 + * *this = v;
45980 + * return old_value;
45981 + * @endcode*/
45982 +inline uint32_t
45983 +atomic_uint32_t::swap(uint32_t v)
45984 +{
45985 +#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86
45986 +    asm ("xchgl %0,%1"
45987 +        : "=r" (v), "=m" (CLICK_ATOMIC_VAL));
45988 +    return v;
45989 +#elif CLICK_LINUXMODULE
45990 +    unsigned long flags;
45991 +    local_irq_save(flags);
45992 +    uint32_t old_value = value();
45993 +    CLICK_ATOMIC_VAL = v;
45994 +    local_irq_restore(flags);
45995 +    return old_value;
45996 +#else
45997 +    uint32_t old_value = value();
45998 +    CLICK_ATOMIC_VAL = v;
45999 +    return old_value;
46000 +#endif
46001 +}
46002 +
46003 +/** @brief  Atomically add @a delta to the value, returning the old value.
46004 + *
46005 + * Behaves like this, but in one atomic step:
46006 + * @code
46007 + * uint32_t old_value = value();
46008 + * *this += delta;
46009 + * return old_value;
46010 + * @endcode */
46011 +inline uint32_t
46012 +atomic_uint32_t::fetch_and_add(uint32_t delta)
46013 +{
46014 +#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86
46015 +    asm volatile (CLICK_ATOMIC_LOCK "xaddl %0,%1"
46016 +                 : "=r" (delta), "=m" (CLICK_ATOMIC_VAL) 
46017 +                 : "0" (delta), "m" (CLICK_ATOMIC_VAL)
46018 +                 : "cc");
46019 +    return delta;
46020 +#elif CLICK_LINUXMODULE
46021 +    unsigned long flags;
46022 +    local_irq_save(flags);
46023 +    uint32_t old_value = value();
46024 +    CLICK_ATOMIC_VAL += delta;
46025 +    local_irq_restore(flags);
46026 +    return old_value;
46027 +#else
46028 +    uint32_t old_value = value();
46029 +    CLICK_ATOMIC_VAL += delta;
46030 +    return old_value;
46031 +#endif
46032 +}
46033 +
46034 +/** @brief  Atomically decrement the value, returning true if the new value
46035 + *         is 0.
46036 + *
46037 + * Behaves like this, but in one atomic step:
46038 + * @code
46039 + * --*this;
46040 + * return value() == 0;
46041 + * @endcode */
46042 +inline bool
46043 +atomic_uint32_t::dec_and_test()
46044 +{
46045 +#if CLICK_LINUXMODULE
46046 +    return atomic_dec_and_test(&_val);
46047 +#elif CLICK_ATOMIC_X86
46048 +    uint8_t result;
46049 +    asm volatile (CLICK_ATOMIC_LOCK "decl %0 ; sete %1"
46050 +                 : "=m" (CLICK_ATOMIC_VAL), "=qm" (result)
46051 +                 : "m" (CLICK_ATOMIC_VAL)
46052 +                 : "cc");
46053 +    return result;
46054 +#else
46055 +    return (--CLICK_ATOMIC_VAL == 0);
46056 +#endif
46057 +}
46058 +
46059 +/** @brief  Perform a compare-and-swap operation.
46060 + *  @param  test_value  test value
46061 + *  @param  new_value   new value
46062 + *  @return True if the old value equaled @a test_value (in which case the
46063 + *         value was set to @a new_value), false otherwise.
46064 + *
46065 + * Behaves like this, but in one atomic step:
46066 + * @code
46067 + * uint32_t old_value = value();
46068 + * if (old_value == test_value)
46069 + *     *this = new_value;
46070 + * return old_value == test_value;
46071 + * @endcode */
46072 +inline bool
46073 +atomic_uint32_t::compare_and_swap(uint32_t test_value, uint32_t new_value)
46074 +{
46075 +#if (CLICK_LINUXMODULE && (defined(__i386__) || defined(__arch_um__) || defined(__x86_64__))) || CLICK_ATOMIC_X86
46076 +    asm volatile (CLICK_ATOMIC_LOCK "cmpxchgl %2,%0 ; sete %%al"
46077 +                 : "=m" (CLICK_ATOMIC_VAL), "=a" (test_value)
46078 +                 : "r" (new_value), "m" (CLICK_ATOMIC_VAL), "a" (test_value)
46079 +                 : "cc");
46080 +    return (uint8_t) test_value;
46081 +#elif CLICK_LINUXMODULE
46082 +    unsigned long flags;
46083 +    local_irq_save(flags);
46084 +    uint32_t old_value = value();
46085 +    if (old_value == test_value)
46086 +       CLICK_ATOMIC_VAL = new_value;
46087 +    local_irq_restore(flags);
46088 +    return old_value == test_value;
46089 +#else
46090 +    uint32_t old_value = value();
46091 +    if (old_value == test_value)
46092 +       CLICK_ATOMIC_VAL = new_value;
46093 +    return old_value == test_value;
46094 +#endif
46095 +}
46096 +
46097 +inline uint32_t
46098 +operator+(const atomic_uint32_t &a, const atomic_uint32_t &b)
46099 +{
46100 +    return a.value() + b.value();
46101 +}
46102 +
46103 +inline uint32_t
46104 +operator-(const atomic_uint32_t &a, const atomic_uint32_t &b)
46105 +{
46106 +    return a.value() - b.value();
46107 +}
46108 +
46109 +inline bool
46110 +operator==(const atomic_uint32_t &a, const atomic_uint32_t &b)
46111 +{
46112 +    return a.value() == b.value();
46113 +}
46114 +
46115 +inline bool
46116 +operator!=(const atomic_uint32_t &a, const atomic_uint32_t &b)
46117 +{
46118 +    return a.value() != b.value();
46119 +}
46120 +
46121 +inline bool
46122 +operator>(const atomic_uint32_t &a, const atomic_uint32_t &b)
46123 +{
46124 +    return a.value() > b.value();
46125 +}
46126 +
46127 +inline bool
46128 +operator<(const atomic_uint32_t &a, const atomic_uint32_t &b)
46129 +{
46130 +    return a.value() < b.value();
46131 +}
46132 +
46133 +inline bool
46134 +operator>=(const atomic_uint32_t &a, const atomic_uint32_t &b)
46135 +{
46136 +    return a.value() >= b.value();
46137 +}
46138 +
46139 +inline bool
46140 +operator<=(const atomic_uint32_t &a, const atomic_uint32_t &b)
46141 +{
46142 +    return a.value() <= b.value();
46143 +}
46144 +
46145 +typedef atomic_uint32_t uatomic32_t;
46146 +
46147 +CLICK_ENDDECLS
46148 +#endif
46149 diff -Nurb click-1.6.0/inst/include/click/bighashmap.cc click-1.6.0-27/inst/include/click/bighashmap.cc
46150 --- click-1.6.0/inst/include/click/bighashmap.cc        1969-12-31 19:00:00.000000000 -0500
46151 +++ click-1.6.0-27/inst/include/click/bighashmap.cc     2009-02-05 10:20:41.000000000 -0500
46152 @@ -0,0 +1,719 @@
46153 +/*
46154 + * bighashmap.{cc,hh} -- a hash table template that supports removal
46155 + * Eddie Kohler
46156 + *
46157 + * Copyright (c) 2000 Mazu Networks, Inc.
46158 + * Copyright (c) 2003 International Computer Science Institute
46159 + *
46160 + * Permission is hereby granted, free of charge, to any person obtaining a
46161 + * copy of this software and associated documentation files (the "Software"),
46162 + * to deal in the Software without restriction, subject to the conditions
46163 + * listed in the Click LICENSE file. These conditions include: you must
46164 + * preserve this copyright notice, and you cannot mention the copyright
46165 + * holders in advertising related to the Software without their permission.
46166 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
46167 + * notice is a summary of the Click LICENSE file; the license in that file is
46168 + * legally binding.
46169 + */
46170 +
46171 +#ifndef CLICK_BIGHASHMAP_CC
46172 +#define CLICK_BIGHASHMAP_CC
46173 +
46174 +CLICK_ENDDECLS
46175 +#include <click/bighashmap.hh>
46176 +#include <click/bighashmap_arena.hh>
46177 +CLICK_DECLS
46178 +
46179 +#define BIGHASHMAP_REARRANGE_ON_FIND 1
46180 +
46181 +template <class K, class V>
46182 +void
46183 +HashMap<K, V>::initialize(HashMap_ArenaFactory *factory, size_t initial_nbuckets)
46184 +{
46185 +  _nbuckets = initial_nbuckets;
46186 +  _buckets = new Elt *[_nbuckets];
46187 +  for (size_t i = 0; i < _nbuckets; i++)
46188 +    _buckets[i] = 0;
46189 +  set_dynamic_resizing(true);
46190 +
46191 +  _n = 0;
46192 +
46193 +  set_arena(factory);
46194 +}
46195 +
46196 +template <class K, class V>
46197 +HashMap<K, V>::HashMap()
46198 +  : _default_value(), _arena(0)
46199 +{
46200 +  initialize(0, DEFAULT_INITIAL_NBUCKETS);
46201 +}
46202 +
46203 +template <class K, class V>
46204 +HashMap<K, V>::HashMap(const V &def, HashMap_ArenaFactory *factory)
46205 +  : _default_value(def), _arena(0)
46206 +{
46207 +  initialize(factory, DEFAULT_INITIAL_NBUCKETS);
46208 +}
46209 +
46210 +template <class K, class V>
46211 +void
46212 +HashMap<K, V>::copy_from(const HashMap<K, V> &o)
46213 +  // requires that 'this' is empty and has the same number of buckets as 'o'
46214 +  // and the same resize policy
46215 +{
46216 +  for (size_t i = 0; i < _nbuckets; i++) {
46217 +    Elt **pprev = &_buckets[i];
46218 +    *pprev = 0;
46219 +    for (const Elt *e = o._buckets[i]; e; e = e->next) {
46220 +      Elt *ee = reinterpret_cast<Elt *>(_arena->alloc());
46221 +      new(reinterpret_cast<void *>(&ee->key)) K(e->key);
46222 +      new(reinterpret_cast<void *>(&ee->value)) V(e->value);
46223 +      ee->next = 0;
46224 +      *pprev = ee;
46225 +      pprev = &ee->next;
46226 +    }
46227 +  }
46228 +  _n = o._n;
46229 +}
46230 +
46231 +template <class K, class V>
46232 +HashMap<K, V>::HashMap(const HashMap<K, V> &o)
46233 +  : _buckets(new Elt *[o._nbuckets]), _nbuckets(o._nbuckets),
46234 +    _default_value(o._default_value), _capacity(o._capacity), _arena(o._arena)
46235 +{
46236 +  _arena->use();
46237 +  copy_from(o);
46238 +}
46239 +
46240 +template <class K, class V>
46241 +HashMap<K, V> &
46242 +HashMap<K, V>::operator=(const HashMap<K, V> &o)
46243 +{
46244 +  if (&o != this) {
46245 +    clear();
46246 +    _default_value = o._default_value;
46247 +    if (_nbuckets < o._nbuckets)
46248 +      resize0(o._nbuckets);
46249 +    _nbuckets = o._nbuckets;
46250 +    _capacity = o._capacity;
46251 +    copy_from(o);
46252 +  }
46253 +  return *this;
46254 +}
46255 +
46256 +template <class K, class V>
46257 +HashMap<K, V>::~HashMap()
46258 +{
46259 +  for (size_t i = 0; i < _nbuckets; i++)
46260 +    for (Elt *e = _buckets[i]; e; ) {
46261 +      Elt *next = e->next;
46262 +      e->key.~K();
46263 +      e->value.~V();
46264 +      _arena->free(e);
46265 +      e = next;
46266 +    }
46267 +  delete[] _buckets;
46268 +  _arena->unuse();
46269 +}
46270 +
46271 +template <class K, class V>
46272 +void
46273 +HashMap<K, V>::set_dynamic_resizing(bool on)
46274 +{
46275 +  if (!on)
46276 +    _capacity = 0x7FFFFFFF;
46277 +  else if (_nbuckets >= MAX_NBUCKETS)
46278 +    _capacity = 0x7FFFFFFE;
46279 +  else
46280 +    _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets;
46281 +}
46282 +
46283 +template <class K, class V>
46284 +void
46285 +HashMap<K, V>::set_arena(HashMap_ArenaFactory *factory)
46286 +{
46287 +  assert(empty());
46288 +  if (_arena)
46289 +    _arena->unuse();
46290 +  _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory);
46291 +  _arena->use();
46292 +}
46293 +
46294 +template <class K, class V>
46295 +inline size_t
46296 +HashMap<K, V>::bucket(const K &key) const
46297 +{
46298 +  return ((size_t) hashcode(key)) % _nbuckets;
46299 +}
46300 +
46301 +template <class K, class V>
46302 +typename HashMap<K, V>::Pair *
46303 +HashMap<K, V>::find_pair(const K &key) const
46304 +{
46305 +#if BIGHASHMAP_REARRANGE_ON_FIND
46306 +  Elt *prev = 0;
46307 +  size_t b = bucket(key);
46308 +  for (Elt *e = _buckets[b]; e; prev = e, e = e->next)
46309 +    if (e->key == key) {
46310 +      if (prev) {
46311 +        // move to front
46312 +        prev->next = e->next;
46313 +       e->next = _buckets[b];
46314 +       _buckets[b] = e;
46315 +      }
46316 +      return e;
46317 +    }
46318 +  return 0;
46319 +#else
46320 +  for (Elt *e = _buckets[bucket(key)]; e; e = e->next)
46321 +    if (e->key == key)
46322 +      return e;
46323 +  return 0;
46324 +#endif
46325 +}
46326 +
46327 +
46328 +template <class K, class V>
46329 +void
46330 +HashMap<K, V>::resize0(size_t new_nbuckets)
46331 +{
46332 +  Elt **new_buckets = new Elt *[new_nbuckets];
46333 +  for (size_t i = 0; i < new_nbuckets; i++)
46334 +    new_buckets[i] = 0;
46335 +
46336 +  size_t old_nbuckets = _nbuckets;
46337 +  Elt **old_buckets = _buckets;
46338 +  _nbuckets = new_nbuckets;
46339 +  _buckets = new_buckets;
46340 +  if (dynamic_resizing())
46341 +    set_dynamic_resizing(true);        // reset threshold
46342 +  
46343 +  for (size_t i = 0; i < old_nbuckets; i++)
46344 +    for (Elt *e = old_buckets[i]; e; ) {
46345 +      Elt *n = e->next;
46346 +      size_t b = bucket(e->key);
46347 +      e->next = new_buckets[b];
46348 +      new_buckets[b] = e;
46349 +      e = n;
46350 +    }
46351 +
46352 +  delete[] old_buckets;
46353 +}
46354 +
46355 +template <class K, class V>
46356 +void
46357 +HashMap<K, V>::resize(size_t want_nbuckets)
46358 +{
46359 +  size_t new_nbuckets = 1;
46360 +  while (new_nbuckets < want_nbuckets && new_nbuckets < MAX_NBUCKETS)
46361 +    new_nbuckets = ((new_nbuckets + 1) << 1) - 1;
46362 +  assert(new_nbuckets > 0 && new_nbuckets <= MAX_NBUCKETS);
46363 +  if (_nbuckets != new_nbuckets)
46364 +    resize0(new_nbuckets);
46365 +}
46366 +
46367 +template <class K, class V>
46368 +bool
46369 +HashMap<K, V>::insert(const K &key, const V &value)
46370 +{
46371 +  size_t b = bucket(key);
46372 +  for (Elt *e = _buckets[b]; e; e = e->next)
46373 +    if (e->key == key) {
46374 +      e->value = value;
46375 +      return false;
46376 +    }
46377 +
46378 +  if (_n >= _capacity) {
46379 +    resize(_nbuckets + 1);
46380 +    b = bucket(key);
46381 +  }
46382 +  
46383 +  if (Elt *e = reinterpret_cast<Elt *>(_arena->alloc())) {
46384 +    new(reinterpret_cast<void *>(&e->key)) K(key);
46385 +    new(reinterpret_cast<void *>(&e->value)) V(value);
46386 +    e->next = _buckets[b];
46387 +    _buckets[b] = e;
46388 +    _n++;
46389 +  }
46390 +  return true;
46391 +}
46392 +
46393 +template <class K, class V>
46394 +bool
46395 +HashMap<K, V>::remove(const K &key)
46396 +{
46397 +  size_t b = bucket(key);
46398 +  Elt *prev = 0;
46399 +  Elt *e = _buckets[b];
46400 +  while (e && !(e->key == key)) {
46401 +    prev = e;
46402 +    e = e->next;
46403 +  }
46404 +  if (e) {
46405 +    if (prev)
46406 +      prev->next = e->next;
46407 +    else
46408 +      _buckets[b] = e->next;
46409 +    e->key.~K();
46410 +    e->value.~V();
46411 +    _arena->free(e);
46412 +    _n--;
46413 +    return true;
46414 +  } else
46415 +    return false;
46416 +}
46417 +
46418 +template <class K, class V>
46419 +typename HashMap<K, V>::Pair *
46420 +HashMap<K, V>::find_pair_force(const K &key, const V &default_value)
46421 +{
46422 +  size_t b = bucket(key);
46423 +  for (Elt *e = _buckets[b]; e; e = e->next)
46424 +    if (e->key == key)
46425 +      return e;
46426 +  if (_n >= _capacity) {
46427 +    resize(_nbuckets + 1);
46428 +    b = bucket(key);
46429 +  }
46430 +  if (Elt *e = reinterpret_cast<Elt *>(_arena->alloc())) {
46431 +    new(reinterpret_cast<void *>(&e->key)) K(key);
46432 +    new(reinterpret_cast<void *>(&e->value)) V(default_value);
46433 +    e->next = _buckets[b];
46434 +    _buckets[b] = e;
46435 +    _n++;
46436 +    return e;
46437 +  } else
46438 +    return 0;
46439 +}
46440 +
46441 +template <class K, class V>
46442 +void
46443 +HashMap<K, V>::clear()
46444 +{
46445 +  for (size_t i = 0; i < _nbuckets; i++) {
46446 +    for (Elt *e = _buckets[i]; e; ) {
46447 +      Elt *next = e->next;
46448 +      e->key.~K();
46449 +      e->value.~V();
46450 +      _arena->free(e);
46451 +      e = next;
46452 +    }
46453 +    _buckets[i] = 0;
46454 +  }
46455 +  _n = 0;
46456 +}
46457 +
46458 +template <class K, class V>
46459 +void
46460 +HashMap<K, V>::swap(HashMap<K, V> &o)
46461 +{
46462 +  Elt **t_elts;
46463 +  V t_v;
46464 +  size_t t_size;
46465 +  HashMap_Arena *t_arena;
46466 +
46467 +  t_elts = _buckets; _buckets = o._buckets; o._buckets = t_elts;
46468 +  t_size = _nbuckets; _nbuckets = o._nbuckets; o._nbuckets = t_size;
46469 +  t_v = _default_value; _default_value = o._default_value; o._default_value = t_v;
46470 +
46471 +  t_size = _n; _n = o._n; o._n = t_size;
46472 +  t_size = _capacity; _capacity = o._capacity; o._capacity = t_size;
46473 +
46474 +  t_arena = _arena; _arena = o._arena; o._arena = t_arena;
46475 +}
46476 +
46477 +template <class K, class V>
46478 +_HashMap_const_iterator<K, V>::_HashMap_const_iterator(const HashMap<K, V> *hm, bool begin)
46479 +  : _hm(hm)
46480 +{
46481 +  size_t nb = _hm->_nbuckets;
46482 +  typename HashMap<K, V>::Elt **b = _hm->_buckets;
46483 +  for (_bucket = 0; _bucket < nb && begin; _bucket++)
46484 +    if (b[_bucket]) {
46485 +      _elt = b[_bucket];
46486 +      return;
46487 +    }
46488 +  _elt = 0;
46489 +}
46490 +
46491 +template <class K, class V>
46492 +void
46493 +_HashMap_const_iterator<K, V>::operator++(int)
46494 +{
46495 +  if (_elt->next)
46496 +    _elt = _elt->next;
46497 +  else {
46498 +    size_t nb = _hm->_nbuckets;
46499 +    typename HashMap<K, V>::Elt **b = _hm->_buckets;
46500 +    for (_bucket++; _bucket < nb; _bucket++)
46501 +      if (b[_bucket]) {
46502 +       _elt = b[_bucket];
46503 +       return;
46504 +      }
46505 +    _elt = 0;
46506 +  }
46507 +}
46508 +
46509 +#if 0
46510 +static size_t
46511 +HashMap_partition_elts(void **elts, size_t left, size_t right)
46512 +{
46513 +  void *pivot = elts[(left + right) / 2];
46514 +
46515 +  // loop invariant:
46516 +  // elts[i] < pivot for all left_init <= i < left
46517 +  // elts[i] > pivot for all right < i <= right_init
46518 +  while (left < right) {
46519 +    if (elts[left] < pivot)
46520 +      left++;
46521 +    else if (elts[right] > pivot)
46522 +      right--;
46523 +    else {
46524 +      void *x = elts[left];
46525 +      elts[left] = elts[right];
46526 +      elts[right] = x;
46527 +    }
46528 +  }
46529 +
46530 +  return left;
46531 +}
46532 +
46533 +void
46534 +HashMap_qsort_elts(void **elts, size_t left, size_t right)
46535 +{
46536 +  if (left < right) {
46537 +    size_t split = HashMap_partition_elts(elts, left, right);
46538 +    HashMap_qsort_elts(elts, left, split);
46539 +    HashMap_qsort_elts(elts, split, right);
46540 +  }
46541 +}
46542 +#endif
46543 +
46544 +
46545 +// void * partial specialization
46546 +
46547 +template <class K>
46548 +void
46549 +HashMap<K, void *>::initialize(HashMap_ArenaFactory *factory, size_t initial_nbuckets)
46550 +{
46551 +  _nbuckets = initial_nbuckets;
46552 +  _buckets = new Elt *[_nbuckets];
46553 +  for (size_t i = 0; i < _nbuckets; i++)
46554 +    _buckets[i] = 0;
46555 +  set_dynamic_resizing(true);
46556 +
46557 +  _n = 0;
46558 +
46559 +  set_arena(factory);
46560 +}
46561 +
46562 +template <class K>
46563 +HashMap<K, void *>::HashMap()
46564 +  : _default_value(0), _arena(0)
46565 +{
46566 +  initialize(0, DEFAULT_INITIAL_NBUCKETS);
46567 +}
46568 +
46569 +template <class K>
46570 +HashMap<K, void *>::HashMap(void *def, HashMap_ArenaFactory *factory)
46571 +  : _default_value(def), _arena(0)
46572 +{
46573 +  initialize(factory, DEFAULT_INITIAL_NBUCKETS);
46574 +}
46575 +
46576 +template <class K>
46577 +void
46578 +HashMap<K, void *>::copy_from(const HashMap<K, void *> &o)
46579 +{
46580 +  for (size_t i = 0; i < _nbuckets; i++) {
46581 +    Elt **pprev = &_buckets[i];
46582 +    *pprev = 0;
46583 +    for (const Elt *e = o._buckets[i]; e; e = e->next) {
46584 +      Elt *ee = reinterpret_cast<Elt *>(_arena->alloc());
46585 +      new(reinterpret_cast<void *>(&ee->key)) K(e->key);
46586 +      ee->value = e->value;
46587 +      ee->next = 0;
46588 +      *pprev = ee;
46589 +      pprev = &ee->next;
46590 +    }
46591 +  }
46592 +  _n = o._n;
46593 +}
46594 +
46595 +template <class K>
46596 +HashMap<K, void *>::HashMap(const HashMap<K, void *> &o)
46597 +  : _buckets(new Elt *[o._nbuckets]), _nbuckets(o._nbuckets),
46598 +    _default_value(o._default_value), _capacity(o._capacity), _arena(o._arena)
46599 +{
46600 +  _arena->use();
46601 +  copy_from(o);
46602 +}
46603 +
46604 +template <class K>
46605 +HashMap<K, void *> &
46606 +HashMap<K, void *>::operator=(const HashMap<K, void *> &o)
46607 +{
46608 +  if (&o != this) {
46609 +    clear();
46610 +    _default_value = o._default_value;
46611 +    if (_nbuckets < o._nbuckets)
46612 +      resize0(o._nbuckets);
46613 +    _nbuckets = o._nbuckets;
46614 +    _capacity = o._capacity;
46615 +    copy_from(o);
46616 +  }
46617 +  return *this;
46618 +}
46619 +
46620 +template <class K>
46621 +HashMap<K, void *>::~HashMap()
46622 +{
46623 +  for (size_t i = 0; i < _nbuckets; i++)
46624 +    for (Elt *e = _buckets[i]; e; ) {
46625 +      Elt *next = e->next;
46626 +      e->key.~K();
46627 +      _arena->free(e);
46628 +      e = next;
46629 +    }
46630 +  delete[] _buckets;
46631 +  _arena->unuse();
46632 +}
46633 +
46634 +template <class K>
46635 +void
46636 +HashMap<K, void *>::set_dynamic_resizing(bool on)
46637 +{
46638 +  if (!on)
46639 +    _capacity = 0x7FFFFFFF;
46640 +  else if (_nbuckets >= MAX_NBUCKETS)
46641 +    _capacity = 0x7FFFFFFE;
46642 +  else
46643 +    _capacity = DEFAULT_RESIZE_THRESHOLD * _nbuckets;
46644 +}
46645 +
46646 +template <class K>
46647 +void
46648 +HashMap<K, void *>::set_arena(HashMap_ArenaFactory *factory)
46649 +{
46650 +  assert(empty());
46651 +  if (_arena)
46652 +    _arena->unuse();
46653 +  _arena = HashMap_ArenaFactory::get_arena(sizeof(Elt), factory);
46654 +  _arena->use();
46655 +}
46656 +
46657 +template <class K>
46658 +inline size_t
46659 +HashMap<K, void *>::bucket(const K &key) const
46660 +{
46661 +  return ((size_t) hashcode(key)) % _nbuckets;
46662 +}
46663 +
46664 +template <class K>
46665 +typename HashMap<K, void *>::Pair *
46666 +HashMap<K, void *>::find_pair(const K &key) const
46667 +{
46668 +#if BIGHASHMAP_REARRANGE_ON_FIND
46669 +  Elt *prev = 0;
46670 +  size_t b = bucket(key);
46671 +  for (Elt *e = _buckets[b]; e; prev = e, e = e->next)
46672 +    if (e->key == key) {
46673 +      if (prev) {
46674 +        // move to front
46675 +        prev->next = e->next;
46676 +       e->next = _buckets[b];
46677 +       _buckets[b] = e;
46678 +      }
46679 +      return e;
46680 +    }
46681 +  return 0;
46682 +#else
46683 +  for (Elt *e = _buckets[bucket(key)]; e; e = e->next)
46684 +    if (e->key == key)
46685 +      return e;
46686 +  return 0;
46687 +#endif
46688 +}
46689 +
46690 +
46691 +template <class K>
46692 +void
46693 +HashMap<K, void *>::resize0(size_t new_nbuckets)
46694 +{
46695 +  Elt **new_buckets = new Elt *[new_nbuckets];
46696 +  for (size_t i = 0; i < new_nbuckets; i++)
46697 +    new_buckets[i] = 0;
46698 +
46699 +  size_t old_nbuckets = _nbuckets;
46700 +  Elt **old_buckets = _buckets;
46701 +  _nbuckets = new_nbuckets;
46702 +  _buckets = new_buckets;
46703 +  if (dynamic_resizing())
46704 +    set_dynamic_resizing(true);        // reset threshold
46705 +  
46706 +  for (size_t i = 0; i < old_nbuckets; i++)
46707 +    for (Elt *e = old_buckets[i]; e; ) {
46708 +      Elt *n = e->next;
46709 +      size_t b = bucket(e->key);
46710 +      e->next = new_buckets[b];
46711 +      new_buckets[b] = e;
46712 +      e = n;
46713 +    }
46714 +
46715 +  delete[] old_buckets;
46716 +}
46717 +
46718 +template <class K>
46719 +void
46720 +HashMap<K, void *>::resize(size_t want_nbuckets)
46721 +{
46722 +  size_t new_nbuckets = 1;
46723 +  while (new_nbuckets < want_nbuckets && new_nbuckets < MAX_NBUCKETS)
46724 +    new_nbuckets = ((new_nbuckets + 1) << 1) - 1;
46725 +  assert(new_nbuckets > 0 && new_nbuckets <= MAX_NBUCKETS);
46726 +  if (_nbuckets != new_nbuckets)
46727 +    resize0(new_nbuckets);
46728 +}
46729 +
46730 +template <class K>
46731 +bool
46732 +HashMap<K, void *>::insert(const K &key, void *value)
46733 +{
46734 +  size_t b = bucket(key);
46735 +  for (Elt *e = _buckets[b]; e; e = e->next)
46736 +    if (e->key == key) {
46737 +      e->value = value;
46738 +      return false;
46739 +    }
46740 +
46741 +  if (_n >= _capacity) {
46742 +    resize(_nbuckets + 1);
46743 +    b = bucket(key);
46744 +  }
46745 +  
46746 +  if (Elt *e = reinterpret_cast<Elt *>(_arena->alloc())) {
46747 +    new(reinterpret_cast<void *>(&e->key)) K(key);
46748 +    e->value = value;
46749 +    e->next = _buckets[b];
46750 +    _buckets[b] = e;
46751 +    _n++;
46752 +  }
46753 +  return true;
46754 +}
46755 +
46756 +template <class K>
46757 +bool
46758 +HashMap<K, void *>::remove(const K &key)
46759 +{
46760 +  size_t b = bucket(key);
46761 +  Elt *prev = 0;
46762 +  Elt *e = _buckets[b];
46763 +  while (e && !(e->key == key)) {
46764 +    prev = e;
46765 +    e = e->next;
46766 +  }
46767 +  if (e) {
46768 +    if (prev)
46769 +      prev->next = e->next;
46770 +    else
46771 +      _buckets[b] = e->next;
46772 +    e->key.~K();
46773 +    _arena->free(e);
46774 +    _n--;
46775 +    return true;
46776 +  } else
46777 +    return false;
46778 +}
46779 +
46780 +template <class K>
46781 +typename HashMap<K, void *>::Pair *
46782 +HashMap<K, void *>::find_pair_force(const K &key, void *default_value)
46783 +{
46784 +  size_t b = bucket(key);
46785 +  for (Elt *e = _buckets[b]; e; e = e->next)
46786 +    if (e->key == key)
46787 +      return e;
46788 +  if (_n >= _capacity) {
46789 +    resize(_nbuckets + 1);
46790 +    b = bucket(key);
46791 +  }
46792 +  if (Elt *e = reinterpret_cast<Elt *>(_arena->alloc())) {
46793 +    new(reinterpret_cast<void *>(&e->key)) K(key);
46794 +    e->value = default_value;
46795 +    e->next = _buckets[b];
46796 +    _buckets[b] = e;
46797 +    _n++;
46798 +    return e;
46799 +  } else
46800 +    return 0;
46801 +}
46802 +
46803 +template <class K>
46804 +void
46805 +HashMap<K, void *>::clear()
46806 +{
46807 +  for (size_t i = 0; i < _nbuckets; i++) {
46808 +    for (Elt *e = _buckets[i]; e; ) {
46809 +      Elt *next = e->next;
46810 +      e->key.~K();
46811 +      _arena->free(e);
46812 +      e = next;
46813 +    }
46814 +    _buckets[i] = 0;
46815 +  }
46816 +  _n = 0;
46817 +}
46818 +
46819 +template <class K>
46820 +void
46821 +HashMap<K, void *>::swap(HashMap<K, void *> &o)
46822 +{
46823 +  Elt **t_elts;
46824 +  void *t_v;
46825 +  size_t t_size;
46826 +  HashMap_Arena *t_arena;
46827 +
46828 +  t_elts = _buckets; _buckets = o._buckets; o._buckets = t_elts;
46829 +  t_size = _nbuckets; _nbuckets = o._nbuckets; o._nbuckets = t_size;
46830 +  t_v = _default_value; _default_value = o._default_value; o._default_value = t_v;
46831 +
46832 +  t_size = _n; _n = o._n; o._n = t_size;
46833 +  t_size = _capacity; _capacity = o._capacity; o._capacity = t_size;
46834 +
46835 +  t_arena = _arena; _arena = o._arena; o._arena = t_arena;
46836 +}
46837 +
46838 +
46839 +template <class K>
46840 +_HashMap_const_iterator<K, void *>::_HashMap_const_iterator(const HashMap<K, void *> *hm, bool begin)
46841 +  : _hm(hm)
46842 +{
46843 +  size_t nb = _hm->_nbuckets;
46844 +  typename HashMap<K, void *>::Elt **b = _hm->_buckets;
46845 +  for (_bucket = 0; _bucket < nb && begin; _bucket++)
46846 +    if (b[_bucket]) {
46847 +      _elt = b[_bucket];
46848 +      return;
46849 +    }
46850 +  _elt = 0;
46851 +}
46852 +
46853 +template <class K>
46854 +void
46855 +_HashMap_const_iterator<K, void *>::operator++(int)
46856 +{
46857 +  if (_elt->next)
46858 +    _elt = _elt->next;
46859 +  else {
46860 +    size_t nb = _hm->_nbuckets;
46861 +    typename HashMap<K, void *>::Elt **b = _hm->_buckets;
46862 +    for (_bucket++; _bucket < nb; _bucket++)
46863 +      if (b[_bucket]) {
46864 +       _elt = b[_bucket];
46865 +       return;
46866 +      }
46867 +    _elt = 0;
46868 +  }
46869 +}
46870 +
46871 +#endif
46872 diff -Nurb click-1.6.0/inst/include/click/bighashmap.hh click-1.6.0-27/inst/include/click/bighashmap.hh
46873 --- click-1.6.0/inst/include/click/bighashmap.hh        1969-12-31 19:00:00.000000000 -0500
46874 +++ click-1.6.0-27/inst/include/click/bighashmap.hh     2009-02-05 10:20:41.000000000 -0500
46875 @@ -0,0 +1,567 @@
46876 +#ifndef CLICK_BIGHASHMAP_HH
46877 +#define CLICK_BIGHASHMAP_HH
46878 +#include <click/hashcode.hh>
46879 +CLICK_DECLS
46880 +class HashMap_Arena;
46881 +class HashMap_ArenaFactory;
46882 +
46883 +// K AND V REQUIREMENTS:
46884 +//
46885 +//             K::K(const K &)
46886 +//             k1 == k2
46887 +// unsigned    hashcode(const K &)
46888 +//                     If hashcode(k1) != hashcode(k2), then k1 != k2.
46889 +//
46890 +//             V::V() -- only used for default value
46891 +//             V::V(const V &)
46892 +// V &         V::operator=(const V &)
46893 +
46894 +template <class K, class V> class _HashMap_const_iterator;
46895 +template <class K, class V> class _HashMap_iterator;
46896 +
46897 +template <class K, class V>
46898 +class HashMap { public:
46899 +
46900 +  struct Pair;
46901 +  
46902 +  HashMap();
46903 +  explicit HashMap(const V &, HashMap_ArenaFactory * = 0);
46904 +  HashMap(const HashMap<K, V> &);
46905 +  ~HashMap();
46906 +
46907 +  void set_arena(HashMap_ArenaFactory *);
46908 +  
46909 +  size_t size() const                  { return _n; }
46910 +  bool empty() const                   { return _n == 0; }
46911 +  size_t nbuckets() const              { return _nbuckets; }
46912 +
46913 +  Pair *find_pair(const K &) const;
46914 +  inline V *findp(const K &) const;
46915 +  inline const V &find(const K &, const V &) const;
46916 +  inline const V &find(const K &) const;
46917 +  inline const V &operator[](const K &) const;
46918 +
46919 +  Pair *find_pair_force(const K &, const V &);
46920 +  Pair *find_pair_force(const K &k) { return find_pair_force(k, _default_value); }
46921 +  V *findp_force(const K &k, const V &v) { if (Pair *p = find_pair_force(k, v)) return &p->value; else return 0; }
46922 +  V &find_force(const K &k, const V &v) { return *findp_force(k, v); }
46923 +  V *findp_force(const K &k)   { return findp_force(k, _default_value); }
46924 +  V &find_force(const K &k)    { return *findp_force(k, _default_value); }
46925 +  
46926 +  bool insert(const K &, const V &);
46927 +  bool remove(const K &);
46928 +  void clear();
46929 +
46930 +  void swap(HashMap<K, V> &);
46931 +
46932 +  // iteration
46933 +  typedef _HashMap_const_iterator<K, V> const_iterator;
46934 +  typedef _HashMap_iterator<K, V> iterator;
46935 +  inline const_iterator begin() const;
46936 +  inline iterator begin();
46937 +  inline const_iterator end() const;
46938 +  inline iterator end();
46939 +  
46940 +  // dynamic resizing
46941 +  void resize(size_t);
46942 +  bool dynamic_resizing() const                { return _capacity < 0x7FFFFFFF; }
46943 +  void set_dynamic_resizing(bool);
46944 +
46945 +  HashMap<K, V> &operator=(const HashMap<K, V> &);
46946 +
46947 +  struct Pair {
46948 +    K key;
46949 +    V value;
46950 +  };
46951 +
46952 +  enum { MAX_NBUCKETS = 32767,
46953 +        DEFAULT_INITIAL_NBUCKETS = 127,
46954 +        DEFAULT_RESIZE_THRESHOLD = 2 };
46955 +  
46956 + private:
46957 +  
46958 +    struct Elt : public Pair {
46959 +       Elt *next;
46960 +#if defined(__GNUC__) && __GNUC__ < 4
46961 +       /* Shut up compiler about Pair lacking default constructor */
46962 +       Elt(const Pair &p)              : Pair(p) { }
46963 +#endif
46964 +    };
46965 +
46966 +  Elt **_buckets;
46967 +  size_t _nbuckets;
46968 +  V _default_value;
46969 +
46970 +  size_t _n;
46971 +  size_t _capacity;
46972 +
46973 +  HashMap_Arena *_arena;
46974 +
46975 +  void initialize(HashMap_ArenaFactory *, size_t);
46976 +  void copy_from(const HashMap<K, V> &);
46977 +  void resize0(size_t);
46978 +  size_t bucket(const K &) const;
46979 +
46980 +  friend class _HashMap_iterator<K, V>;
46981 +  friend class _HashMap_const_iterator<K, V>;
46982 +  
46983 +};
46984 +
46985 +template <class K, class V>
46986 +class _HashMap_const_iterator { public:
46987 +
46988 +  bool live() const                    { return _elt; }
46989 +  typedef bool (_HashMap_const_iterator::*unspecified_bool_type)() const;
46990 +  inline operator unspecified_bool_type() const CLICK_DEPRECATED;
46991 +  void operator++(int);
46992 +  void operator++()                    { (*this)++; }
46993 +  
46994 +  typedef typename HashMap<K, V>::Pair Pair;
46995 +  const Pair *pair() const             { return _elt; }
46996 +
46997 +  const K &key() const                 { return _elt->key; }
46998 +  const V &value() const               { return _elt->value; }
46999 +
47000 + private:
47001 +
47002 +  const HashMap<K, V> *_hm;
47003 +  typename HashMap<K, V>::Elt *_elt;
47004 +  size_t _bucket;
47005 +
47006 +  _HashMap_const_iterator(const HashMap<K, V> *m, bool begin);
47007 +  friend class HashMap<K, V>;
47008 +  friend class _HashMap_iterator<K, V>;
47009 +
47010 +};
47011 +
47012 +template <class K, class V>
47013 +class _HashMap_iterator : public _HashMap_const_iterator<K, V> { public:
47014 +
47015 +  typedef _HashMap_const_iterator<K, V> inherited;
47016 +
47017 +  typedef typename HashMap<K, V>::Pair Pair;
47018 +  Pair *pair() const   { return const_cast<Pair *>(inherited::pair()); }
47019 +  V &value() const     { return const_cast<V &>(inherited::value()); }
47020 +
47021 + private:
47022 +  
47023 +  _HashMap_iterator(HashMap<K, V> *m, bool begin) : inherited(m, begin) { }
47024 +  friend class HashMap<K, V>;
47025 +
47026 +};
47027 +
47028 +template <class K, class V>
47029 +inline typename HashMap<K, V>::const_iterator
47030 +HashMap<K, V>::begin() const
47031 +{
47032 +  return const_iterator(this, true);
47033 +}
47034 +
47035 +template <class K, class V>
47036 +inline typename HashMap<K, V>::iterator
47037 +HashMap<K, V>::begin()
47038 +{
47039 +  return iterator(this, true);
47040 +}
47041 +
47042 +template <class K, class V>
47043 +inline typename HashMap<K, V>::const_iterator
47044 +HashMap<K, V>::end() const
47045 +{
47046 +  return const_iterator(this, false);
47047 +}
47048 +
47049 +template <class K, class V>
47050 +inline typename HashMap<K, V>::iterator
47051 +HashMap<K, V>::end()
47052 +{
47053 +  return iterator(this, false);
47054 +}
47055 +
47056 +template <class K, class V>
47057 +inline V *
47058 +HashMap<K, V>::findp(const K &key) const
47059 +{
47060 +  Pair *p = find_pair(key);
47061 +  return (p ? &p->value : 0);
47062 +}
47063 +
47064 +template <class K, class V>
47065 +inline const V &
47066 +HashMap<K, V>::find(const K &key, const V &default_value) const
47067 +{
47068 +  Pair *p = find_pair(key);
47069 +  const V *v = (p ? &p->value : &default_value);
47070 +  return *v;
47071 +}
47072 +
47073 +template <class K, class V>
47074 +inline const V &
47075 +HashMap<K, V>::find(const K &key) const
47076 +{
47077 +  return find(key, _default_value);
47078 +}
47079 +
47080 +template <class K, class V>
47081 +inline const V &
47082 +HashMap<K, V>::operator[](const K &key) const
47083 +{
47084 +  return find(key);
47085 +}
47086 +
47087 +template <class K, class V>
47088 +inline
47089 +_HashMap_const_iterator<K, V>::operator unspecified_bool_type() const
47090 +{
47091 +    return live() ? &_HashMap_const_iterator::live : 0;
47092 +}
47093 +
47094 +
47095 +template <class K>
47096 +class HashMap<K, void *> { public:
47097 +
47098 +  struct Pair;
47099 +
47100 +  HashMap();
47101 +  explicit HashMap(void *, HashMap_ArenaFactory * = 0);
47102 +  HashMap(const HashMap<K, void *> &);
47103 +  ~HashMap();
47104 +  
47105 +  void set_arena(HashMap_ArenaFactory *);
47106 +  
47107 +  size_t size() const                  { return _n; }
47108 +  bool empty() const                   { return _n == 0; }
47109 +  size_t nbuckets() const              { return _nbuckets; }
47110 +
47111 +  Pair *find_pair(const K &) const;
47112 +  inline void **findp(const K &) const;
47113 +  inline void *find(const K &, void *) const;
47114 +  inline void *find(const K &) const;
47115 +  inline void *operator[](const K &) const;
47116 +
47117 +  Pair *find_pair_force(const K &, void *);
47118 +  Pair *find_pair_force(const K &k) { return find_pair_force(k, _default_value); }
47119 +  void **findp_force(const K &k, void *v) { if (Pair *p = find_pair_force(k, v)) return &p->value; else return 0; }
47120 +  void *&find_force(const K &k, void *v) { return *findp_force(k, v); }
47121 +  void **findp_force(const K &k) { return findp_force(k, _default_value); }
47122 +  void *&find_force(const K &k)  { return *findp_force(k, _default_value); }
47123 +  
47124 +  bool insert(const K &, void *);
47125 +  bool remove(const K &);
47126 +  void clear();
47127 +
47128 +  void swap(HashMap<K, void *> &);
47129 +
47130 +  // iterators
47131 +  typedef _HashMap_const_iterator<K, void *> const_iterator;
47132 +  typedef _HashMap_iterator<K, void *> iterator;
47133 +  inline const_iterator begin() const;
47134 +  inline iterator begin();
47135 +  inline const_iterator end() const;
47136 +  inline iterator end();
47137 +
47138 +  // dynamic resizing
47139 +  void resize(size_t);
47140 +  bool dynamic_resizing() const                { return _capacity < 0x7FFFFFFF; }
47141 +  void set_dynamic_resizing(bool);
47142 +
47143 +  HashMap<K, void *> &operator=(const HashMap<K, void *> &);
47144 +
47145 +  struct Pair {
47146 +    K key;
47147 +    void *value;
47148 +  };
47149 +  
47150 +  enum { MAX_NBUCKETS = 32767,
47151 +        DEFAULT_INITIAL_NBUCKETS = 127,
47152 +        DEFAULT_RESIZE_THRESHOLD = 2 };
47153 +  
47154 +  private:
47155 +  
47156 +    struct Elt : public Pair {
47157 +       Elt *next;
47158 +#if defined(__GNUC__) && __GNUC__ < 4
47159 +       /* Shut up compiler about Pair lacking default constructor */
47160 +       Elt(const Pair &p)              : Pair(p) { }
47161 +#endif
47162 +    };
47163 +
47164 +  Elt **_buckets;
47165 +  size_t _nbuckets;
47166 +  void *_default_value;
47167 +
47168 +  size_t _n;
47169 +  size_t _capacity;
47170 +
47171 +  HashMap_Arena *_arena;
47172 +
47173 +  void initialize(HashMap_ArenaFactory *, size_t);
47174 +  void copy_from(const HashMap<K, void *> &);
47175 +  void resize0(size_t);
47176 +  size_t bucket(const K &) const;
47177 +
47178 +  friend class _HashMap_iterator<K, void *>;
47179 +  friend class _HashMap_const_iterator<K, void *>;
47180 +  
47181 +};
47182 +
47183 +template <class K>
47184 +class _HashMap_const_iterator<K, void *> { public:
47185 +
47186 +  bool live() const                    { return _elt; }
47187 +  typedef bool (_HashMap_const_iterator::*unspecified_bool_type)() const;
47188 +  inline operator unspecified_bool_type() const CLICK_DEPRECATED;
47189 +  void operator++(int);
47190 +  void operator++()                    { (*this)++; }
47191 +  
47192 +  typedef typename HashMap<K, void *>::Pair Pair;
47193 +  const Pair *pair() const             { return _elt; }
47194 +  
47195 +  const K &key() const                 { return _elt->key; }
47196 +  void *value() const                  { return _elt->value; }
47197 +  
47198 + private:
47199 +
47200 +  const HashMap<K, void *> *_hm;
47201 +  typename HashMap<K, void *>::Elt *_elt;
47202 +  size_t _bucket;
47203 +
47204 +  _HashMap_const_iterator(const HashMap<K, void *> *, bool begin);
47205 +  template <class, class> friend class _HashMap_const_iterator;
47206 +  template <class, class> friend class _HashMap_iterator;
47207 +  template <class, class> friend class HashMap;
47208 +
47209 +};
47210 +
47211 +template <class K>
47212 +class _HashMap_iterator<K, void *> : public _HashMap_const_iterator<K, void *> { public:
47213 +
47214 +  typedef _HashMap_const_iterator<K, void *> inherited;
47215 +
47216 +  typedef typename HashMap<K, void *>::Pair Pair;
47217 +  Pair *pair() const   { return const_cast<Pair *>(inherited::pair()); }
47218 +  void *&value() const { return this->_elt->value; }
47219 +
47220 + private:
47221 +
47222 +  _HashMap_iterator(HashMap<K, void *> *m, bool begin) : inherited(m, begin) { }
47223 +  template <class, class> friend class HashMap;
47224 +
47225 +};
47226 +
47227 +template <class K>
47228 +inline typename HashMap<K, void *>::const_iterator
47229 +HashMap<K, void *>::begin() const
47230 +{
47231 +  return const_iterator(this, true);
47232 +}
47233 +
47234 +template <class K>
47235 +inline typename HashMap<K, void *>::iterator
47236 +HashMap<K, void *>::begin()
47237 +{
47238 +  return iterator(this, true);
47239 +}
47240 +
47241 +template <class K>
47242 +inline typename HashMap<K, void *>::const_iterator
47243 +HashMap<K, void *>::end() const
47244 +{
47245 +  return const_iterator(this, false);
47246 +}
47247 +
47248 +template <class K>
47249 +inline typename HashMap<K, void *>::iterator
47250 +HashMap<K, void *>::end()
47251 +{
47252 +  return iterator(this, false);
47253 +}
47254 +
47255 +template <class K>
47256 +inline void **
47257 +HashMap<K, void *>::findp(const K &key) const
47258 +{
47259 +  Pair *p = find_pair(key);
47260 +  return (p ? &p->value : 0);
47261 +}
47262 +
47263 +template <class K>
47264 +inline void *
47265 +HashMap<K, void *>::find(const K &key, void *default_value) const
47266 +{
47267 +  Pair *p = find_pair(key);
47268 +  return (p ? p->value : default_value);
47269 +}
47270 +
47271 +template <class K>
47272 +inline void *
47273 +HashMap<K, void *>::find(const K &key) const
47274 +{
47275 +  return find(key, _default_value);
47276 +}
47277 +
47278 +template <class K>
47279 +inline void *
47280 +HashMap<K, void *>::operator[](const K &key) const
47281 +{
47282 +  return find(key);
47283 +}
47284 +
47285 +template <class K>
47286 +inline
47287 +_HashMap_const_iterator<K, void *>::operator unspecified_bool_type() const
47288 +{
47289 +    return live() ? &_HashMap_const_iterator::live : 0;
47290 +}
47291 +
47292 +
47293 +template <class K, class T>
47294 +class HashMap<K, T *> : public HashMap<K, void *> { public:
47295 +
47296 +  typedef HashMap<K, void *> inherited;
47297 +  struct Pair;
47298 +  
47299 +  HashMap()                            : inherited() { }
47300 +  explicit HashMap(T *def, HashMap_ArenaFactory *factory = 0)
47301 +                                       : inherited(def, factory) { }
47302 +  HashMap(const HashMap<K, T *> &o) : inherited(o) { }
47303 +  ~HashMap()                           { }
47304 +  
47305 +  void set_arena(HashMap_ArenaFactory *af) { inherited::set_arena(af); }
47306 +  
47307 +  // size_t size() const               inherited
47308 +  // bool empty() const                        inherited
47309 +  // size_t nbuckets() const           inherited
47310 +  
47311 +  Pair *find_pair(const K &k) const { return reinterpret_cast<Pair *>(inherited::find_pair(k)); }
47312 +  T **findp(const K &k) const { return reinterpret_cast<T **>(inherited::findp(k)); }
47313 +  T *find(const K &k, T *v) const { return reinterpret_cast<T *>(inherited::find(k, v)); }
47314 +  T *find(const K &k) const { return reinterpret_cast<T *>(inherited::find(k)); }
47315 +  T *operator[](const K &k) const { return reinterpret_cast<T *>(inherited::operator[](k)); }
47316 +  
47317 +  Pair *find_pair_force(const K &k, T *v) { return reinterpret_cast<Pair *>(inherited::find_pair_force(k, v)); }
47318 +  Pair *find_pair_force(const K &k) { return reinterpret_cast<Pair *>(inherited::find_pair_force(k)); }
47319 +  T **findp_force(const K &k, T *v) { return reinterpret_cast<T **>(inherited::findp_force(k, v)); }
47320 +  T *&find_force(const K &k, T *v) { return *reinterpret_cast<T **>(inherited::findp_force(k, v)); }
47321 +  T **findp_force(const K &k) { return reinterpret_cast<T **>(inherited::findp_force(k)); }
47322 +  T *&find_force(const K &k) { return *reinterpret_cast<T **>(inherited::findp_force(k)); }
47323 +  
47324 +  bool insert(const K &k, T *v)                { return inherited::insert(k, v); }
47325 +  // bool remove(const K &)            inherited
47326 +  // void clear()                      inherited
47327 +
47328 +  void swap(HashMap<K, T *> &o)        { inherited::swap(o); }
47329 +
47330 +  // iteration
47331 +  typedef _HashMap_const_iterator<K, T *> const_iterator;
47332 +  typedef _HashMap_iterator<K, T *> iterator;  
47333 +  inline const_iterator begin() const;
47334 +  inline iterator begin();
47335 +  inline const_iterator end() const;
47336 +  inline iterator end();
47337 +
47338 +  // dynamic resizing methods          inherited
47339 +
47340 +  HashMap<K, T *> &operator=(const HashMap<K, T *> &o) { return static_cast<HashMap<K, T *> &>(inherited::operator=(o)); }
47341 +
47342 +  struct Pair {
47343 +    K key;
47344 +    T *value;
47345 +  };
47346 +  
47347 +};
47348 +
47349 +template <class K, class T>
47350 +class _HashMap_const_iterator<K, T *> { public:
47351 +
47352 +    typedef _HashMap_const_iterator<K, void *> inherited;
47353 +
47354 +    bool live() const          { return _i.live(); }
47355 +    typedef typename inherited::unspecified_bool_type unspecified_bool_type;
47356 +    inline operator unspecified_bool_type() const CLICK_DEPRECATED;
47357 +    void operator++(int)       { _i.operator++(0); }
47358 +    void operator++()          { _i.operator++(); }
47359 +  
47360 +    typedef typename HashMap<K, T *>::Pair Pair;
47361 +    const Pair *pair() const { return reinterpret_cast<const Pair *>(_i.pair()); }
47362 +  
47363 +    const K &key() const       { return _i.key(); }
47364 +    T *value() const           { return reinterpret_cast<T *>(_i.value()); }
47365 +
47366 + private:
47367 +
47368 +    inherited _i;
47369 +    
47370 +    _HashMap_const_iterator(const HashMap<K, T *> *t, bool begin) : _i(t, begin) { }  
47371 +    friend class _HashMap_iterator<K, T *>;
47372 +    template <class, class> friend class HashMap;
47373 +  
47374 +};
47375 +
47376 +template <class K, class T>
47377 +class _HashMap_iterator<K, T *> : public _HashMap_const_iterator<K, T *> { public:
47378 +
47379 +  typedef _HashMap_const_iterator<K, T *> inherited;
47380 +
47381 +  typedef typename HashMap<K, T *>::Pair Pair;
47382 +  Pair *pair() const   { return const_cast<Pair *>(inherited::pair()); }
47383 +  T *&value() const    { return pair()->value; }
47384 +
47385 + private:
47386 +  
47387 +  _HashMap_iterator(HashMap<K, T *> *t, bool begin) : inherited(t, begin) { }
47388 +  template <class, class> friend class HashMap;
47389 +  
47390 +};
47391 +
47392 +template <class K, class T>
47393 +inline typename HashMap<K, T *>::const_iterator
47394 +HashMap<K, T *>::begin() const
47395 +{
47396 +  return const_iterator(this, true);
47397 +}
47398 +
47399 +template <class K, class T>
47400 +inline typename HashMap<K, T *>::iterator
47401 +HashMap<K, T *>::begin()
47402 +{
47403 +  return iterator(this, true);
47404 +}
47405 +
47406 +template <class K, class T>
47407 +inline typename HashMap<K, T *>::const_iterator
47408 +HashMap<K, T *>::end() const
47409 +{
47410 +  return const_iterator(this, false);
47411 +}
47412 +
47413 +template <class K, class T>
47414 +inline typename HashMap<K, T *>::iterator
47415 +HashMap<K, T *>::end()
47416 +{
47417 +  return iterator(this, false);
47418 +}
47419 +
47420 +template <class K, class T>
47421 +inline
47422 +_HashMap_const_iterator<K, T *>::operator unspecified_bool_type() const
47423 +{
47424 +    return inherited::live() ? &inherited::live : 0;
47425 +}
47426 +
47427 +template <class K, class V>
47428 +inline bool
47429 +operator==(const _HashMap_const_iterator<K, V> &a, const _HashMap_const_iterator<K, V> &b)
47430 +{
47431 +  return a.pair() == b.pair();
47432 +}
47433 +
47434 +template <class K, class V>
47435 +inline bool
47436 +operator!=(const _HashMap_const_iterator<K, V> &a, const _HashMap_const_iterator<K, V> &b)
47437 +{
47438 +  return a.pair() != b.pair();
47439 +}
47440 +
47441 +CLICK_ENDDECLS
47442 +#endif
47443 diff -Nurb click-1.6.0/inst/include/click/bighashmap_arena.hh click-1.6.0-27/inst/include/click/bighashmap_arena.hh
47444 --- click-1.6.0/inst/include/click/bighashmap_arena.hh  1969-12-31 19:00:00.000000000 -0500
47445 +++ click-1.6.0-27/inst/include/click/bighashmap_arena.hh       2009-02-05 10:20:41.000000000 -0500
47446 @@ -0,0 +1,98 @@
47447 +// -*- c-basic-offset: 4; related-file-name: "../../lib/bighashmap_arena.cc" -*-
47448 +#ifndef CLICK_BIGHASHMAP_ARENA_HH
47449 +#define CLICK_BIGHASHMAP_ARENA_HH
47450 +CLICK_DECLS
47451 +
47452 +class HashMap_Arena { public:
47453 +
47454 +    HashMap_Arena(uint32_t element_size);
47455 +
47456 +    void use()                 { _refcount++; }
47457 +    void unuse();
47458 +
47459 +    bool detached() const      { return _detached; }
47460 +    void detach()              { _detached = true; }
47461 +
47462 +    void *alloc();
47463 +    void free(void *);
47464 +    
47465 +  private:
47466 +
47467 +    struct Link {
47468 +       Link *next;
47469 +    };
47470 +    Link *_free;
47471 +
47472 +    enum { NELEMENTS = 127 };  // not a power of 2 so we don't fall into a
47473 +                               // too-large bucket
47474 +    char *_cur_buffer;
47475 +    int _buffer_pos;
47476 +    
47477 +    uint32_t _element_size;
47478 +
47479 +    char **_buffers;
47480 +    int _nbuffers;
47481 +    int _buffers_cap;
47482 +
47483 +    uint32_t _refcount;
47484 +    bool _detached;
47485 +    
47486 +    ~HashMap_Arena();
47487 +    void *hard_alloc();
47488 +
47489 +    friend class Link;         // shut up, compiler
47490 +    
47491 +};
47492 +
47493 +class HashMap_ArenaFactory { public:
47494 +
47495 +    HashMap_ArenaFactory();
47496 +    virtual ~HashMap_ArenaFactory();
47497 +
47498 +    static void static_initialize();
47499 +    static void static_cleanup();
47500 +    
47501 +    static HashMap_Arena *get_arena(uint32_t, HashMap_ArenaFactory * =0);
47502 +    virtual HashMap_Arena *get_arena_func(uint32_t);
47503 +    
47504 +  private:
47505 +
47506 +    HashMap_Arena **_arenas[2];
47507 +    int _narenas[2];
47508 +
47509 +    static HashMap_ArenaFactory *the_factory;
47510 +    
47511 +};
47512 +
47513 +inline void
47514 +HashMap_Arena::unuse()
47515 +{
47516 +    _refcount--;
47517 +    if (_refcount <= 0)
47518 +       delete this;
47519 +}
47520 +
47521 +inline void *
47522 +HashMap_Arena::alloc()
47523 +{
47524 +    if (_free) {
47525 +       void *ret = _free;
47526 +       _free = _free->next;
47527 +       return ret;
47528 +    } else if (_buffer_pos > 0) {
47529 +       _buffer_pos -= _element_size;
47530 +       return _cur_buffer + _buffer_pos;
47531 +    } else
47532 +       return hard_alloc();
47533 +}
47534 +
47535 +inline void
47536 +HashMap_Arena::free(void *v)
47537 +{
47538 +    Link *link = reinterpret_cast<Link *>(v);
47539 +    link->next = _free;
47540 +    _free = link;
47541 +}
47542 +
47543 +CLICK_ENDDECLS
47544 +#endif
47545 diff -Nurb click-1.6.0/inst/include/click/bitvector.hh click-1.6.0-27/inst/include/click/bitvector.hh
47546 --- click-1.6.0/inst/include/click/bitvector.hh 1969-12-31 19:00:00.000000000 -0500
47547 +++ click-1.6.0-27/inst/include/click/bitvector.hh      2009-02-05 10:20:41.000000000 -0500
47548 @@ -0,0 +1,248 @@
47549 +// -*- c-basic-offset: 4; related-file-name: "../../lib/bitvector.cc" -*-
47550 +#ifndef CLICK_BITVECTOR_HH
47551 +#define CLICK_BITVECTOR_HH
47552 +#include <click/glue.hh>
47553 +CLICK_DECLS
47554 +
47555 +class Bitvector { public:
47556 +
47557 +    class Bit;
47558 +
47559 +    Bitvector()                        : _max(-1), _data(&_f0), _f0(0), _f1(0) { }
47560 +    explicit Bitvector(int);
47561 +    explicit Bitvector(unsigned);
47562 +    explicit Bitvector(bool b) : _max(0), _data(&_f0), _f0(b), _f1(0) { }
47563 +    Bitvector(int, bool);
47564 +    Bitvector(unsigned, bool);
47565 +    Bitvector(const Bitvector &);
47566 +    ~Bitvector()               { if (_data != &_f0) delete[] _data; }
47567 +
47568 +    int size() const           { return _max + 1; }
47569 +
47570 +    bool zero() const;
47571 +    
47572 +    typedef bool (Bitvector::*unspecified_bool_type)() const;
47573 +    operator bool() const      { return !zero() ? &Bitvector::zero : 0; }
47574 +
47575 +    Bit operator[](int);
47576 +    bool operator[](int) const;
47577 +    Bit force_bit(int);
47578 +
47579 +    void clear();
47580 +    void resize(int n);
47581 +
47582 +    bool operator==(const Bitvector &) const;
47583 +    bool operator!=(const Bitvector &) const;
47584 +
47585 +    Bitvector operator~() const;
47586 +    Bitvector operator&(const Bitvector &) const;
47587 +    Bitvector operator|(const Bitvector &) const;
47588 +    Bitvector operator^(const Bitvector &) const;
47589 +    Bitvector operator-(const Bitvector &) const;
47590 +
47591 +    Bitvector &operator=(const Bitvector &);
47592 +    void negate();
47593 +    Bitvector &operator&=(const Bitvector &);
47594 +    Bitvector &operator|=(const Bitvector &);
47595 +    Bitvector &operator^=(const Bitvector &);
47596 +    Bitvector &operator-=(const Bitvector &);
47597 +    Bitvector &assign(int, bool);
47598 +
47599 +    void or_at(const Bitvector &, int);
47600 +    void or_with_difference(const Bitvector &, Bitvector &diff);
47601 +    bool nonzero_intersection(const Bitvector &) const;
47602 +
47603 +    // expose the implementation
47604 +    int max_word() const               { return (_max < 0 ? -1 : _max>>5); }
47605 +    uint32_t *data_words()             { return _data; }
47606 +    const uint32_t *data_words() const { return _data; } 
47607 +
47608 +  private:
47609 +    
47610 +    enum { MAX_INLINE_BIT = 63, MAX_INLINE_WORD = 1 };
47611 +
47612 +    int _max;
47613 +    uint32_t *_data;
47614 +    uint32_t _f0;
47615 +    uint32_t _f1;
47616 +
47617 +    void finish_copy_constructor(const Bitvector &);
47618 +    void clear_last();
47619 +    void resize_to_max(int, bool);
47620 +
47621 +};
47622 +
47623 +class Bitvector::Bit { public:
47624 +
47625 +    Bit(uint32_t &p, int off)          : _p(p), _mask(1U<<off) { }
47626 +
47627 +    typedef Bitvector::unspecified_bool_type unspecified_bool_type;
47628 +    inline operator unspecified_bool_type() const {
47629 +       return (_p & _mask) != 0 ? &Bitvector::zero : 0;
47630 +    }
47631 +
47632 +    bool operator=(bool b);
47633 +    bool operator=(const Bit &);
47634 +
47635 +  private:
47636 +
47637 +    uint32_t &_p;
47638 +    uint32_t _mask;
47639 +
47640 +};
47641 +
47642 +
47643 +inline
47644 +Bitvector::Bitvector(int n)
47645 +    : _max(n - 1), _data(&_f0), _f0(0), _f1(0)
47646 +{
47647 +    if (_max > MAX_INLINE_BIT)
47648 +       resize_to_max(_max, false);
47649 +}
47650 +
47651 +inline
47652 +Bitvector::Bitvector(unsigned n)
47653 +    : _max(n - 1), _data(&_f0), _f0(0), _f1(0)
47654 +{
47655 +    if (_max > MAX_INLINE_BIT)
47656 +       resize_to_max(_max, false);
47657 +}
47658 +
47659 +inline
47660 +Bitvector::Bitvector(int n, bool b)
47661 +    : _max(n - 1), _data(&_f0), _f0(0), _f1(0)
47662 +{
47663 +    if (_max > MAX_INLINE_BIT)
47664 +       resize_to_max(_max, false);
47665 +    if (b)
47666 +       assign(n, b);
47667 +}
47668 +
47669 +inline
47670 +Bitvector::Bitvector(unsigned n, bool b)
47671 +    : _max(n - 1), _data(&_f0), _f0(0), _f1(0)
47672 +{
47673 +    if (_max > MAX_INLINE_BIT)
47674 +       resize_to_max(_max, false);
47675 +    if (b)
47676 +       assign(n, b);
47677 +}
47678 +
47679 +inline
47680 +Bitvector::Bitvector(const Bitvector &o)
47681 +    : _max(o._max), _data(&_f0), _f0(o._data[0]), _f1(o._data[1])
47682 +{
47683 +    if (_max > MAX_INLINE_BIT)
47684 +       finish_copy_constructor(o);
47685 +}
47686 +
47687 +inline void
47688 +Bitvector::resize(int n)
47689 +{
47690 +    if (n - 1 > MAX_INLINE_BIT)
47691 +       resize_to_max(n - 1, true);
47692 +    _max = n - 1;
47693 +}
47694 +
47695 +inline bool
47696 +Bitvector::Bit::operator=(bool b)
47697 +{
47698 +    if (b)
47699 +       _p |= _mask;
47700 +    else
47701 +       _p &= ~_mask;
47702 +    return b;
47703 +}
47704 +
47705 +inline bool
47706 +Bitvector::Bit::operator=(const Bit &o)
47707 +{
47708 +    return *this = (bool)o;
47709 +}
47710 +
47711 +inline Bitvector::Bit
47712 +Bitvector::operator[](int i)
47713 +{
47714 +    assert(i >= 0 && i <= _max);
47715 +    return Bit(_data[i>>5], i&31);
47716 +}
47717 +
47718 +inline Bitvector::Bit
47719 +Bitvector::force_bit(int i)
47720 +{
47721 +    assert(i >= 0);
47722 +    if (i > _max)
47723 +       resize(i + 1);
47724 +    return Bit(_data[i>>5], i&31);
47725 +}
47726 +
47727 +inline bool
47728 +Bitvector::operator[](int i) const
47729 +{
47730 +    assert(i >= 0 && i <= _max);
47731 +    return (_data[i>>5] & (1<<(i&31))) != 0;
47732 +}
47733 +
47734 +inline bool
47735 +Bitvector::operator==(const Bitvector &o) const
47736 +{
47737 +    if (_max != o._max)
47738 +       return false;
47739 +    else if (_max <= MAX_INLINE_BIT)
47740 +       return memcmp(_data, o._data, 8) == 0;
47741 +    else
47742 +       return memcmp(_data, o._data, (max_word() + 1)*4) == 0;
47743 +}
47744 +
47745 +inline bool
47746 +Bitvector::operator!=(const Bitvector &o) const
47747 +{
47748 +    return !(*this == o);
47749 +}
47750 +
47751 +inline Bitvector &
47752 +Bitvector::operator-=(const Bitvector &o)
47753 +{
47754 +    return *this &= ~o;
47755 +}
47756 +
47757 +inline Bitvector
47758 +Bitvector::operator~() const
47759 +{
47760 +    Bitvector m = *this;
47761 +    m.negate();
47762 +    return m;
47763 +}
47764 +
47765 +inline Bitvector
47766 +Bitvector::operator&(const Bitvector &o) const
47767 +{
47768 +    Bitvector m = *this;
47769 +    m &= o;
47770 +    return m;
47771 +}
47772 +
47773 +inline Bitvector
47774 +Bitvector::operator|(const Bitvector &o) const
47775 +{
47776 +    Bitvector m = *this;
47777 +    m |= o;
47778 +    return m;
47779 +}
47780 +
47781 +inline Bitvector
47782 +Bitvector::operator^(const Bitvector &o) const
47783 +{
47784 +    Bitvector m = *this;
47785 +    m ^= o;
47786 +    return m;
47787 +}
47788 +
47789 +inline Bitvector
47790 +Bitvector::operator-(const Bitvector &o) const
47791 +{
47792 +    return *this & ~o;
47793 +}
47794 +
47795 +CLICK_ENDDECLS
47796 +#endif
47797 diff -Nurb click-1.6.0/inst/include/click/clp.h click-1.6.0-27/inst/include/click/clp.h
47798 --- click-1.6.0/inst/include/click/clp.h        1969-12-31 19:00:00.000000000 -0500
47799 +++ click-1.6.0-27/inst/include/click/clp.h     2009-02-05 10:20:41.000000000 -0500
47800 @@ -0,0 +1,152 @@
47801 +#ifndef LCDF_CLP_H
47802 +#define LCDF_CLP_H
47803 +#ifdef __cplusplus
47804 +extern "C" {
47805 +#endif
47806 +
47807 +/* clp.h - Public interface to CLP.
47808 + * This file is part of CLP, the command line parser package.
47809 + *
47810 + * Copyright (c) 1997-2006 Eddie Kohler, kohler@icir.org
47811 + *
47812 + * Permission is hereby granted, free of charge, to any person obtaining a
47813 + * copy of this software and associated documentation files (the "Software"),
47814 + * to deal in the Software without restriction, subject to the conditions
47815 + * listed in the Click LICENSE file, which is available in full at
47816 + * http://www.pdos.lcs.mit.edu/click/license.html. The conditions include: you
47817 + * must preserve this copyright notice, and you cannot mention the copyright
47818 + * holders in advertising related to the Software without their permission.
47819 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
47820 + * notice is a summary of the Click LICENSE file; the license in that file is
47821 + * legally binding. */
47822 +
47823 +
47824 +/* Argument types */
47825 +#define Clp_NoArg              0
47826 +#define Clp_ArgString          1
47827 +#define Clp_ArgStringNotOption 2
47828 +#define Clp_ArgBool            3
47829 +#define Clp_ArgInt             4
47830 +#define Clp_ArgUnsigned                5
47831 +#define Clp_ArgDouble          6
47832 +
47833 +#define Clp_FirstUserType      10
47834 +
47835 +/* Argument type flags */
47836 +#define Clp_DisallowOptions    (1<<0)  /* Argument won't resemble an option */
47837 +
47838 +/* Flags for individual Clp_Options */
47839 +#define Clp_Mandatory          (1<<0)  /* Has mandatory argument */
47840 +#define Clp_Optional           (1<<1)  /* Has optional argument */
47841 +#define Clp_Negate             (1<<2)  /* Allow --no-OPT */
47842 +#define Clp_OnlyNegated                (1<<3)  /* Allow --no-OPT, but not --OPT */
47843 +#define Clp_PreferredMatch     (1<<4)  /* Prefer --OPT to --OPTwhatever when
47844 +                                          matching option prefixes */
47845 +
47846 +/* Option types for Clp_SetOptionChar */
47847 +/*     Clp_NotOption           0 */
47848 +#define Clp_Short              (1<<0)
47849 +#define Clp_Long               (1<<1)
47850 +#define Clp_ShortNegated       (1<<2)
47851 +#define Clp_LongNegated                (1<<3)
47852 +#define Clp_LongImplicit       (1<<4)
47853 +
47854 +/* Flags for Clp_AddStringListType */
47855 +#define Clp_AllowNumbers       (1<<0)
47856 +
47857 +/* Return values from Clp_Next */
47858 +#define Clp_NotOption          0
47859 +#define Clp_Done               -1
47860 +#define Clp_BadOption          -2
47861 +#define Clp_Error              -3
47862 +
47863 +/* Sizes of clp->val */
47864 +#define Clp_ValSize            40
47865 +#define Clp_ValIntSize         10
47866 +
47867 +
47868 +typedef struct Clp_Option Clp_Option;
47869 +typedef struct Clp_Parser Clp_Parser;
47870 +typedef struct Clp_Internal Clp_Internal;
47871 +typedef struct Clp_ParserState Clp_ParserState;
47872 +
47873 +typedef int (*Clp_ArgParseFunc)(Clp_Parser *, const char *, int, void *);
47874 +typedef void (*Clp_ErrorHandler)(const char *);
47875 +
47876 +
47877 +struct Clp_Option {
47878 +  
47879 +  const char *long_name;
47880 +  int short_name;
47881 +  
47882 +  int option_id;
47883 +  
47884 +  int arg_type;
47885 +  int flags;
47886 +  
47887 +};
47888 +
47889 +
47890 +struct Clp_Parser {
47891 +  
47892 +  int negated;
47893 +  
47894 +  int have_arg;
47895 +  const char *arg;
47896 +  
47897 +  union {
47898 +    int i;
47899 +    unsigned u;
47900 +    double d;
47901 +    const char *s;
47902 +    void *pv;
47903 +#ifdef HAVE_INT64_TYPES
47904 +    int64_t i64;
47905 +    uint64_t u64;
47906 +#endif
47907 +    char cs[Clp_ValSize];
47908 +    unsigned char ucs[Clp_ValSize];
47909 +    int is[Clp_ValIntSize];
47910 +    unsigned us[Clp_ValIntSize];
47911 +  } val;
47912 +  
47913 +  Clp_Internal *internal;
47914 +  
47915 +};
47916 +
47917 +
47918 +Clp_Parser *   Clp_NewParser(int argc, const char * const *argv,
47919 +                             int nopt, Clp_Option *opt);
47920 +void           Clp_DeleteParser(Clp_Parser *);
47921 +
47922 +Clp_ErrorHandler Clp_SetErrorHandler(Clp_Parser *, Clp_ErrorHandler);
47923 +int            Clp_SetOptionChar(Clp_Parser *, int c, int option_type);
47924 +
47925 +int            Clp_AddType
47926 +                       (Clp_Parser *, int type_id, int flags,
47927 +                        Clp_ArgParseFunc func, void *user_data);
47928 +int            Clp_AddStringListType
47929 +                       (Clp_Parser *, int type_id, int flags, ...);
47930 +int            Clp_AddStringListTypeVec
47931 +                       (Clp_Parser *, int type_id, int flags,
47932 +                        int n, char **str, int *val);
47933 +
47934 +const char *   Clp_ProgramName(Clp_Parser *);
47935 +
47936 +int            Clp_Next(Clp_Parser *);
47937 +const char *   Clp_Shift(Clp_Parser *, int allow_dashes);
47938 +int            Clp_SetOptionProcessing(Clp_Parser *, int option_processing);
47939 +
47940 +Clp_ParserState *Clp_NewParserState(void);
47941 +void           Clp_DeleteParserState(Clp_ParserState *);
47942 +void           Clp_SaveParser(Clp_Parser *, Clp_ParserState *);
47943 +void           Clp_RestoreParser(Clp_Parser *, Clp_ParserState *);
47944 +
47945 +int            Clp_OptionError(Clp_Parser *, const char *, ...);
47946 +int            Clp_CurOptionNameBuf(Clp_Parser *, char *buf, int buflen);
47947 +const char *   Clp_CurOptionName(Clp_Parser *); /* uses static memory */
47948 +
47949 +#ifdef __cplusplus
47950 +}
47951 +#endif
47952 +#endif
47953 diff -Nurb click-1.6.0/inst/include/click/config-bsdmodule.h click-1.6.0-27/inst/include/click/config-bsdmodule.h
47954 --- click-1.6.0/inst/include/click/config-bsdmodule.h   1969-12-31 19:00:00.000000000 -0500
47955 +++ click-1.6.0-27/inst/include/click/config-bsdmodule.h        2009-02-05 10:20:41.000000000 -0500
47956 @@ -0,0 +1,52 @@
47957 +/* include/click/config-bsdmodule.h.  Generated from config-bsdmodule.h.in by configure.  */
47958 +/* Process this file with configure to produce config-bsdmodule.h. -*- mode: c -*- */
47959 +#ifndef CLICK_CONFIG_BSDMODULE_H
47960 +#define CLICK_CONFIG_BSDMODULE_H
47961 +
47962 +/* Define stuff under a FreeBSD module. */
47963 +#ifndef __FreeBSD__
47964 +# error "I must be compiled on a FreeBSD machine"
47965 +#endif
47966 +#define KERNEL 1
47967 +#define _KERNEL 1
47968 +#define KLD_MODULE 1
47969 +
47970 +/* Define if your BSD kernel has Click extensions. */
47971 +/* #undef HAVE_CLICK_BSD_KERNEL */
47972 +
47973 +/* Define if your BSD kernel has polling extensions. */
47974 +/* #undef HAVE_BSD_POLLING */
47975 +
47976 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
47977 +   fairly with the kernel. */
47978 +/* #undef HAVE_ADAPTIVE_SCHEDULER */
47979 +
47980 +/* Include integer and other type definitions. */
47981 +#include <sys/types.h>
47982 +
47983 +/* Define assert macro. */
47984 +#define assert(x) /* nada */
47985 +
47986 +/* Define likely and unlikely macros. */
47987 +#define likely(x)      (x)
47988 +#define unlikely(x)    (x)
47989 +
47990 +#ifdef __cplusplus
47991 +
47992 +/* Declare operator new. */
47993 +void *operator new(size_t) throw ();
47994 +void *operator new[](size_t) throw ();
47995 +
47996 +/* Provide placement new. */
47997 +inline void *operator new(size_t, void *v) throw () { return v; }
47998 +#define HAVE_PLACEMENT_NEW 1
47999 +
48000 +/* Define macros that surround Click declarations. */
48001 +#define CLICK_DECLS            namespace Click {
48002 +#define CLICK_ENDDECLS         }
48003 +#define CLICK_USING_DECLS      using namespace Click;
48004 +#define CLICK_NAME(name)       ::Click::name
48005 +
48006 +#endif /* __cplusplus */
48007 +
48008 +#endif /* CLICK_CONFIG_BSDMODULE_H */
48009 diff -Nurb click-1.6.0/inst/include/click/config-linuxmodule.h click-1.6.0-27/inst/include/click/config-linuxmodule.h
48010 --- click-1.6.0/inst/include/click/config-linuxmodule.h 1969-12-31 19:00:00.000000000 -0500
48011 +++ click-1.6.0-27/inst/include/click/config-linuxmodule.h      2009-02-05 10:20:41.000000000 -0500
48012 @@ -0,0 +1,153 @@
48013 +/* include/click/config-linuxmodule.h.  Generated from config-linuxmodule.h.in by configure.  */
48014 +/* Process this file with configure to produce config-linuxmodule.h. -*- mode: c -*- */
48015 +#ifndef CLICK_CONFIG_LINUXMODULE_H
48016 +#define CLICK_CONFIG_LINUXMODULE_H
48017 +
48018 +/* Define stuff under a Linux module. */
48019 +#ifndef __linux__
48020 +# error "I must be compiled on a Linux machine"
48021 +#endif
48022 +#define __KERNEL__ 1
48023 +#define MODULE 1
48024 +
48025 +/* Define if your Linux kernel is running in SMP mode. */
48026 +#define __SMP__ 1
48027 +
48028 +/* Define if Click should use an adaptive scheduler to share the CPU(s) more
48029 +   fairly with the kernel. */
48030 +/* #undef HAVE_ADAPTIVE_SCHEDULER */
48031 +
48032 +/* Define if your Linux kernel has Click extensions. */
48033 +#define HAVE_CLICK_KERNEL 1
48034 +
48035 +/* Define if your Linux kernel has Click transmit notification extensions. */
48036 +/* #undef HAVE_CLICK_KERNEL_TX_NOTIFY */
48037 +
48038 +/* Define if fast checksum functions available. */
48039 +#define HAVE_FAST_CHECKSUM 1
48040 +
48041 +/* Define if 'int64_t' is typedefed to 'long' in linuxmodule. */
48042 +/* #undef HAVE_INT64_IS_LONG_LINUXMODULE */
48043 +
48044 +/* Define if 'int64_t' is typedefed to 'long long' in linuxmodule. */
48045 +#define HAVE_INT64_IS_LONG_LONG_LINUXMODULE 1
48046 +
48047 +/* Define to enable assertion checking. Failed assertions will print a message
48048 +   and optionally stop the router. */
48049 +/* #undef HAVE_KERNEL_ASSERT */
48050 +
48051 +/* Define if you have the <asm/alternative.h> header file. */
48052 +#define HAVE_LINUX_ASM_ALTERNATIVE_H 1
48053 +
48054 +/* Define if your Linux kernel architecture defines atomic_set_mask. */
48055 +/* #undef HAVE_LINUX_ATOMIC_SET_MASK */
48056 +
48057 +/* Define if your Linux kernel has polling extensions. */
48058 +#define HAVE_LINUX_POLLING 1
48059 +
48060 +/* Define if your Linux kernel has read_net_skbcount. */
48061 +/* #undef HAVE_LINUX_READ_NET_SKBCOUNT */
48062 +
48063 +/* Define if 'struct skb_shared_info' has a 'gso_size' member. */
48064 +/* #undef HAVE_LINUX_SKB_SHINFO_GSO_SIZE */
48065 +
48066 +/* Define if 'struct skb_shared_info' has an 'ip6_frag_id' member. */
48067 +/* #undef HAVE_LINUX_SKB_SHINFO_IP6_FRAG_ID */
48068 +
48069 +/* Define if 'struct skb_shared_info' has a 'tso_size' member. */
48070 +/* #undef HAVE_LINUX_SKB_SHINFO_TSO_SIZE */
48071 +
48072 +/* Define if 'struct skb_shared_info' has a 'ufo_size' member. */
48073 +/* #undef HAVE_LINUX_SKB_SHINFO_UFO_SIZE */
48074 +
48075 +/* Define if 'struct sk_buff' has an 'fclone' member. */
48076 +/* #undef HAVE_LINUX_SKBUFF_FCLONE */
48077 +
48078 +/* Define if 'struct sk_buff' has a 'security' member. */
48079 +/* #undef HAVE_LINUX_SKBUFF_SECURITY */
48080 +
48081 +/* Define if your Linux kernel exposes strlen. */
48082 +#define HAVE_LINUX_STRLEN_EXPOSED 1
48083 +
48084 +/* Define if your Linux kernel has tulip_interrupt_hook. */
48085 +/* #undef HAVE_LINUX_TULIP_INTERRUPT_HOOK */
48086 +
48087 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
48088 +#define HAVE_LINUXMODULE_2_6 1
48089 +
48090 +/* Define if you have the net_enable_timestamp function. */
48091 +/* #undef HAVE_NET_ENABLE_TIMESTAMP */
48092 +
48093 +/* Define if you have the netif_tx_lock function. */
48094 +/* #undef HAVE_NETIF_TX_LOCK */
48095 +
48096 +/* Define if fast checksum functions require correct alignment. */
48097 +#ifndef __i386__
48098 +# define FAST_CHECKSUM_ALIGNED 1
48099 +#endif
48100 +
48101 +/* Include integer type definitions. */
48102 +# include <linux/autoconf.h>
48103 +#include <linux/types.h>
48104 +typedef ptrdiff_t intptr_t;
48105 +//typedef unsigned long uintptr_t; /* XXX? */
48106 +
48107 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_LINUXMODULE. */
48108 +#ifdef HAVE_INT64_IS_LONG_LINUXMODULE
48109 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_LINUXMODULE
48110 +#endif
48111 +
48112 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_LINUXMODULE. */
48113 +#if HAVE_LONG_LONG && defined(HAVE_INT64_IS_LONG_LONG_LINUXMODULE)
48114 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_LINUXMODULE
48115 +#endif
48116 +
48117 +/* Define KBUILD symbols. */
48118 +#if !defined(KBUILD_STR) && HAVE_LINUXMODULE_2_6
48119 +# define KBUILD_STR(s)         #s
48120 +# define KBUILD_BASENAME       KBUILD_STR(click)
48121 +# define KBUILD_MODNAME                KBUILD_STR(click)
48122 +#endif
48123 +
48124 +#ifdef __cplusplus
48125 +
48126 +/* Declare operator new. */
48127 +void *operator new(size_t) throw ();
48128 +void *operator new[](size_t) throw ();
48129 +
48130 +/* Provide placement new. */
48131 +inline void *operator new(size_t, void *v) { return v; }
48132 +#define HAVE_PLACEMENT_NEW 1
48133 +
48134 +/* Define macros that surround Click declarations. */
48135 +#define CLICK_DECLS            /* */
48136 +#define CLICK_ENDDECLS         /* */
48137 +#define CLICK_USING_DECLS      /* */
48138 +#define CLICK_NAME(name)       ::name
48139 +
48140 +/* Fix incompatibilities between some Linux versions and Click/C++. */
48141 +#include <click/fixconfig.h>
48142 +
48143 +#endif /* __cplusplus */
48144 +
48145 +/* Define assert macro. */
48146 +# ifdef __cplusplus
48147 +extern "C" {
48148 +# endif
48149 +void click_assert_failed(const char *file, int line, const char *problem_text);
48150 +# ifdef __cplusplus
48151 +}
48152 +# endif
48153 +
48154 +#ifdef HAVE_KERNEL_ASSERT
48155 +# define assert(x)     ((x) ? (void)0 : click_assert_failed(__FILE__, __LINE__, #x))
48156 +#else
48157 +# define assert(x)     /* nada */
48158 +#endif
48159 +
48160 +/* Some architectures do not have builtin integer functions in kernel. */
48161 +#if defined(__MIPSEL__) || defined(__MIPSEB__)
48162 +# define HAVE_NO_INTEGER_BUILTINS 1
48163 +#endif
48164 +
48165 +#endif /* CLICK_CONFIG_LINUXMODULE_H */
48166 diff -Nurb click-1.6.0/inst/include/click/config-ns.h click-1.6.0-27/inst/include/click/config-ns.h
48167 --- click-1.6.0/inst/include/click/config-ns.h  1969-12-31 19:00:00.000000000 -0500
48168 +++ click-1.6.0-27/inst/include/click/config-ns.h       2009-02-05 10:20:41.000000000 -0500
48169 @@ -0,0 +1,20 @@
48170 +/* include/click/config-ns.h.  Generated from config-ns.h.in by configure.  */
48171 +/* Process this file with configure to produce config-ns.h. -*- mode: c -*- */
48172 +#ifndef CLICK_CONFIG_NS_H
48173 +#define CLICK_CONFIG_NS_H
48174 +
48175 +#ifdef __cplusplus
48176 +
48177 +/* Define macros that surround Click declarations. */
48178 +#define CLICK_DECLS            namespace Click {
48179 +#define CLICK_ENDDECLS         }
48180 +#define CLICK_USING_DECLS      using namespace Click;
48181 +#define CLICK_NAME(name)       ::Click::name
48182 +
48183 +#endif /* __cplusplus */
48184 +
48185 +/* Include userlevel configuration. */
48186 +#define CLICK_USERLEVEL 1
48187 +#include <click/config-userlevel.h>
48188 +
48189 +#endif /* CLICK_CONFIG_NS_H */
48190 diff -Nurb click-1.6.0/inst/include/click/config-userlevel.h click-1.6.0-27/inst/include/click/config-userlevel.h
48191 --- click-1.6.0/inst/include/click/config-userlevel.h   1969-12-31 19:00:00.000000000 -0500
48192 +++ click-1.6.0-27/inst/include/click/config-userlevel.h        2009-02-05 10:20:41.000000000 -0500
48193 @@ -0,0 +1,249 @@
48194 +/* include/click/config-userlevel.h.  Generated from config-userlevel.h.in by configure.  */
48195 +/* Process this file with configure to produce config-userlevel.h. -*- mode: c -*- */
48196 +#ifndef CLICK_CONFIG_USERLEVEL_H
48197 +#define CLICK_CONFIG_USERLEVEL_H
48198 +
48199 +/* Define if accept() uses socklen_t. */
48200 +#define HAVE_ACCEPT_SOCKLEN_T 1
48201 +
48202 +/* Define if <pcap.h> uses bpf_timeval. */
48203 +/* #undef HAVE_BPF_TIMEVAL */
48204 +
48205 +/* Define if you have the <byteswap.h> header file. */
48206 +#define HAVE_BYTESWAP_H 1
48207 +
48208 +/* Define to 1 if you have the declaration
48209 +   of 'madvise', and to 0 if you don't. */
48210 +#define HAVE_DECL_MADVISE 1
48211 +
48212 +/* Define to 1 if you have the declaration
48213 +   of 'pcap_setnonblock', and to 0 if you don't. */
48214 +#define HAVE_DECL_PCAP_SETNONBLOCK 1
48215 +
48216 +/* Define if you have the <dlfcn.h> header file. */
48217 +#define HAVE_DLFCN_H 1
48218 +
48219 +/* Define if dynamic linking is possible. */
48220 +#define HAVE_DYNAMIC_LINKING 1
48221 +
48222 +/* Define if you have the ffs function. */
48223 +#define HAVE_FFS 1
48224 +
48225 +/* Define if you have the ffsl function. */
48226 +#define HAVE_FFSL 1
48227 +
48228 +/* Define if you have the ffsll function. */
48229 +#define HAVE_FFSLL 1
48230 +
48231 +/* Floating point arithmetic is allowed. */
48232 +#define HAVE_FLOAT_TYPES 1
48233 +
48234 +/* Define if you have the <grp.h> header file. */
48235 +#define HAVE_GRP_H 1
48236 +
48237 +/* Define if the last argument to EV_SET has pointer type. */
48238 +/* #undef HAVE_EV_SET_UDATA_POINTER */
48239 +
48240 +/* Define if 'struct if_data' has an 'ifi_datalen' member. */
48241 +/* #undef HAVE_IF_DATA_IFI_DATALEN */
48242 +
48243 +/* Define if 'int64_t' is typedefed to 'long' at user level. */
48244 +/* #undef HAVE_INT64_IS_LONG_USERLEVEL */
48245 +
48246 +/* Define if 'int64_t' is typedefed to 'long long' at user level. */
48247 +#define HAVE_INT64_IS_LONG_LONG_USERLEVEL 1
48248 +
48249 +/* Define if you have the <inttypes.h> header file. */
48250 +#define HAVE_INTTYPES_H 1
48251 +
48252 +/* Define if you have the kqueue function. */
48253 +/* #undef HAVE_KQUEUE */
48254 +
48255 +/* Define if your C library contains large file support. */
48256 +#define HAVE_LARGE_FILE_SUPPORT 1
48257 +
48258 +/* Define if you have the <linux/if_tun.h> header file. */
48259 +#define HAVE_LINUX_IF_TUN_H 1
48260 +
48261 +/* Define if you have the madvise function. */
48262 +#define HAVE_MADVISE 1
48263 +
48264 +/* Define if you have the mmap function. */
48265 +#define HAVE_MMAP 1
48266 +
48267 +/* Define if you have the <net/bpf.h> header file. */
48268 +/* #undef HAVE_NET_BPF_H */
48269 +
48270 +/* Define if you have the <net/if_tap.h> header file. */
48271 +/* #undef HAVE_NET_IF_TAP_H */
48272 +
48273 +/* Define if you have the <net/if_tun.h> header file. */
48274 +/* #undef HAVE_NET_IF_TUN_H */
48275 +
48276 +/* Define if you have the <netdb.h> header file. */
48277 +#define HAVE_NETDB_H 1
48278 +
48279 +/* Define if <new.h> exists and works. */
48280 +/* #undef HAVE_NEW_H */
48281 +
48282 +/* Define if <new> exists and works. */
48283 +#define HAVE_NEW_HDR 1
48284 +
48285 +/* Define if you have -lpcap and pcap.h. */
48286 +#define HAVE_PCAP 1
48287 +
48288 +/* Define if you have the pcap_setnonblock function. */
48289 +#define HAVE_PCAP_SETNONBLOCK 1
48290 +
48291 +/* Define if you have -lproper and prop.h, and proper operations should be
48292 +   preferred to their non-proper counterparts. */
48293 +/* #undef HAVE_PROPER */
48294 +
48295 +/* Define if you have a non-emulated <poll.h> header file. */
48296 +#define HAVE_POLL_H 1
48297 +
48298 +/* Placement new is always provided below. */
48299 +#define HAVE_PLACEMENT_NEW 1
48300 +
48301 +/* Define if you have the <pwd.h> header file. */
48302 +#define HAVE_PWD_H 1
48303 +
48304 +/* Define if you have the sigaction function. */
48305 +#define HAVE_SIGACTION 1
48306 +
48307 +/* Define if you have the snprintf function. */
48308 +#define HAVE_SNPRINTF 1
48309 +
48310 +/* Define if 'struct sockaddr_in' has a 'sin_len' member. */
48311 +/* #undef HAVE_SOCKADDR_IN_SIN_LEN */
48312 +
48313 +/* Define if you have the strerror function. */
48314 +#define HAVE_STRERROR 1
48315 +
48316 +/* Define if you have the <strings.h> header file. */
48317 +#define HAVE_STRINGS_H 1
48318 +
48319 +/* Define if you have the strtoul function. */
48320 +#define HAVE_STRTOUL 1
48321 +
48322 +/* Define if you have the <sys/event.h> header file. */
48323 +/* #undef HAVE_SYS_EVENT_H */
48324 +
48325 +/* Define if you have the <sys/mman.h> header file. */
48326 +#define HAVE_SYS_MMAN_H 1
48327 +
48328 +/* Define if you have the tcgetpgrp function. */
48329 +#define HAVE_TCGETPGRP 1
48330 +
48331 +/* Define if you have the <termio.h> header file. */
48332 +#define HAVE_TERMIO_H 1
48333 +
48334 +/* Define if you have u_intXX_t types but not uintXX_t types. */
48335 +/* #undef HAVE_U_INT_TYPES */
48336 +
48337 +/* Define if you have the <unistd.h> header file. */
48338 +#define HAVE_UNISTD_H 1
48339 +
48340 +/* Define if a Click user-level driver might run multiple threads. */
48341 +/* #undef HAVE_USER_MULTITHREAD */
48342 +
48343 +/* Define if you have the vsnprintf function. */
48344 +#define HAVE_VSNPRINTF 1
48345 +
48346 +/* The size of a `off_t', as computed by sizeof. */
48347 +#define SIZEOF_OFF_T 8
48348 +
48349 +
48350 +/* Set feature test macros before anything is included. */
48351 +#if HAVE_LARGE_FILE_SUPPORT && HAVE_INT64_TYPES
48352 +# define _LARGEFILE_SOURCE 1
48353 +# define _FILE_OFFSET_BITS 64
48354 +#endif
48355 +
48356 +/* Include integer type definitions. */
48357 +#ifdef HAVE_INTTYPES_H
48358 +# include <inttypes.h>
48359 +#endif
48360 +#include <sys/types.h>
48361 +
48362 +/* Define uint types in terms of u_int types, if necessary. */
48363 +#ifdef HAVE_U_INT_TYPES
48364 +typedef u_int8_t uint8_t;
48365 +typedef u_int16_t uint16_t;
48366 +typedef u_int32_t uint32_t;
48367 +# ifdef HAVE_INT64_TYPES
48368 +typedef u_int64_t uint64_t;
48369 +# endif
48370 +typedef long intptr_t;         /* XXX? */
48371 +typedef unsigned long uintptr_t;
48372 +#endif
48373 +
48374 +/* Define HAVE_INT64_IS_LONG based on HAVE_INT64_IS_LONG_USERLEVEL. */
48375 +#ifdef HAVE_INT64_IS_LONG_USERLEVEL
48376 +# define HAVE_INT64_IS_LONG HAVE_INT64_IS_LONG_USERLEVEL
48377 +#endif
48378 +
48379 +/* Define HAVE_INT64_IS_LONG_LONG based on HAVE_INT64_IS_LONG_LONG_USERLEVEL. */
48380 +#ifdef HAVE_INT64_IS_LONG_LONG_USERLEVEL
48381 +# define HAVE_INT64_IS_LONG_LONG HAVE_INT64_IS_LONG_LONG_USERLEVEL
48382 +#endif
48383 +
48384 +/* Define HAVE_MULTITHREAD based on HAVE_USER_MULTITHREAD. */
48385 +#ifdef HAVE_USER_MULTITHREAD
48386 +# define HAVE_MULTITHREAD HAVE_USER_MULTITHREAD
48387 +#endif
48388 +
48389 +/* Include assert macro. */
48390 +#include <assert.h>
48391 +
48392 +/* Define likely and unlikely macros. */
48393 +#if __GNUC__ >= 3
48394 +# define likely(x)     __builtin_expect(!!(x), 1)
48395 +# define unlikely(x)   __builtin_expect(!!(x), 0)
48396 +#else
48397 +# define likely(x)     (x)
48398 +# define unlikely(x)   (x)
48399 +#endif
48400 +
48401 +/* Define if mmap is allowed. */
48402 +#if defined(HAVE_SYS_MMAN_H) && defined(HAVE_MMAP)
48403 +# define ALLOW_MMAP 1
48404 +#endif
48405 +
48406 +/* Prototype strerror if we don't have it. */
48407 +#ifndef HAVE_STRERROR
48408 +char *strerror(int errno);
48409 +#endif
48410 +
48411 +/* Use nanosecond-granularity timestamps if they are enabled. */
48412 +#ifdef HAVE_NANOTIMESTAMP_ENABLED
48413 +#define HAVE_NANOTIMESTAMP 1
48414 +#endif
48415 +
48416 +#ifdef __cplusplus
48417 +
48418 +/* Provide placement new. */
48419 +#if HAVE_NEW_HDR
48420 +# include <new>
48421 +#elif HAVE_NEW_H
48422 +# include <new.h>
48423 +#else
48424 +inline void *operator new(size_t, void *v) { return v; }
48425 +#endif
48426 +
48427 +/* Prototype madvise if we have it, but not the prototype. */
48428 +#if ALLOW_MMAP && HAVE_MADVISE && !HAVE_DECL_MADVISE
48429 +extern "C" int madvise(void *addr, size_t len, int behav);
48430 +#endif
48431 +
48432 +/* Define macros that surround Click declarations. */
48433 +#ifndef CLICK_DECLS
48434 +# define CLICK_DECLS           /* */
48435 +# define CLICK_ENDDECLS                /* */
48436 +# define CLICK_USING_DECLS     /* */
48437 +# define CLICK_NAME(name)      ::name
48438 +#endif
48439 +
48440 +#endif /* __cplusplus */
48441 +
48442 +#endif /* CLICK_CONFIG_USERLEVEL_H */
48443 diff -Nurb click-1.6.0/inst/include/click/config.h click-1.6.0-27/inst/include/click/config.h
48444 --- click-1.6.0/inst/include/click/config.h     1969-12-31 19:00:00.000000000 -0500
48445 +++ click-1.6.0-27/inst/include/click/config.h  2009-02-05 10:20:41.000000000 -0500
48446 @@ -0,0 +1,168 @@
48447 +/* include/click/config.h.  Generated from config.h.in by configure.  */
48448 +/* Process this file with configure to produce config.h. -*- mode: c -*- */
48449 +#ifndef CLICK_CONFIG_H
48450 +#define CLICK_CONFIG_H
48451 +
48452 +/* Define to byte order of target machine. */
48453 +#define CLICK_BYTE_ORDER 1234
48454 +#define CLICK_BIG_ENDIAN       4321
48455 +#define CLICK_LITTLE_ENDIAN    1234
48456 +#define CLICK_NO_ENDIAN                0
48457 +
48458 +/* Define for Click memory allocation debugging. */
48459 +/* #undef CLICK_DMALLOC */
48460 +
48461 +/* Version number of package */
48462 +#define CLICK_VERSION "1.6.0"
48463 +
48464 +/* Define if PollDevice should run fast to get good benchmark numbers */
48465 +/* #undef CLICK_WARP9 */
48466 +
48467 +/* Define if you have the __builtin_clz function. */
48468 +#define HAVE___BUILTIN_CLZ 1
48469 +
48470 +/* Define if you have the __builtin_clzl function. */
48471 +#define HAVE___BUILTIN_CLZL 1
48472 +
48473 +/* Define if you have the __builtin_clzll function. */
48474 +#define HAVE___BUILTIN_CLZLL 1
48475 +
48476 +/* Define if you have the __builtin_ffs function. */
48477 +#define HAVE___BUILTIN_FFS 1
48478 +
48479 +/* Define if you have the __builtin_ffsl function. */
48480 +#define HAVE___BUILTIN_FFSL 1
48481 +
48482 +/* Define if you have the __builtin_ffsll function. */
48483 +#define HAVE___BUILTIN_FFSLL 1
48484 +
48485 +/* Define if the va_list type is addressable. */
48486 +#define HAVE_ADDRESSABLE_VA_LIST 1
48487 +
48488 +/* Define if right shift of signed integers acts by sign extension. */
48489 +#define HAVE_ARITHMETIC_RIGHT_SHIFT 1
48490 +
48491 +/* Define if the machine is indifferent to alignment. */
48492 +#define HAVE_INDIFFERENT_ALIGNMENT 1
48493 +
48494 +/* Define if you want to use Intel-specific instructions. */
48495 +/* #undef HAVE_INTEL_CPU */
48496 +
48497 +/* Define if 64-bit integer types are enabled. */
48498 +#define HAVE_INT64_TYPES 1
48499 +
48500 +/* Define if IPv6 support is enabled. */
48501 +/* #undef HAVE_IP6 */
48502 +
48503 +/* Define if IPsec support is enabled. */
48504 +/* #undef HAVE_IPSEC */
48505 +
48506 +/* Define to 1 if the system has the type `long long'. */
48507 +#define HAVE_LONG_LONG 1
48508 +
48509 +/* Define if nanosecond-granularity timestamps are enabled. */
48510 +/* #undef HAVE_NANOTIMESTAMP_ENABLED */
48511 +
48512 +/* Define if you want to use the stride scheduler. */
48513 +#define HAVE_STRIDE_SCHED 1
48514 +
48515 +/* Define to 1 since we have Strings. */
48516 +#define HAVE_STRING 1
48517 +
48518 +/* Define to 1 if the system has the type `struct timespec'. */
48519 +#define HAVE_STRUCT_TIMESPEC 1
48520 +
48521 +#ifdef HAVE_STRIDE_SCHED
48522 +/* Define if you want task scheduling to use a heap, not a linked list. */
48523 +/* #undef HAVE_TASK_HEAP */
48524 +#endif
48525 +
48526 +/* The size of a `int', as computed by sizeof. */
48527 +#define SIZEOF_INT 4
48528 +
48529 +/* The size of a `long', as computed by sizeof. */
48530 +#define SIZEOF_LONG 4
48531 +
48532 +/* The size of a `long long', as computed by sizeof. */
48533 +#define SIZEOF_LONG_LONG 8
48534 +
48535 +/* The size of a `struct timespec', as computed by sizeof. */
48536 +#define SIZEOF_STRUCT_TIMESPEC 8
48537 +
48538 +/* The size of a `struct timeval', as computed by sizeof. */
48539 +#define SIZEOF_STRUCT_TIMEVAL 8
48540 +
48541 +/* Define if you want to run multithreaded Click. */
48542 +/* #undef __MTCLICK__ */
48543 +#define NUM_CLICK_CPUS 1
48544 +
48545 +#ifndef __cplusplus
48546 +/* Define inline, if necessary. C only. */
48547 +/* #undef inline */
48548 +#endif
48549 +
48550 +#ifdef __cplusplus
48551 +/* Explicit template instances? */
48552 +#if __GNUC__ == 2 && __GNUC_MINOR__ < 90
48553 +#define EXPLICIT_TEMPLATE_INSTANCES 1
48554 +#endif
48555 +#endif /* __cplusplus */
48556 +
48557 +/* Define macros for declaring packed structures. */
48558 +#ifdef __GNUC__
48559 +#define CLICK_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
48560 +#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close __attribute__((packed))
48561 +#else
48562 +#define CLICK_PACKED_STRUCTURE(open, close) _Cannot_pack_structure__Use_GCC
48563 +#define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close
48564 +#endif
48565 +
48566 +/* Define macro for deprecated functions. */
48567 +#if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0)
48568 +#define CLICK_DEPRECATED
48569 +#else
48570 +#define CLICK_DEPRECATED __attribute__((deprecated))
48571 +#endif
48572 +
48573 +/* Define ARCH_IS_BIG_ENDIAN based on CLICK_BYTE_ORDER. */
48574 +#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
48575 +#define ARCH_IS_BIG_ENDIAN     1
48576 +#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
48577 +#define ARCH_IS_BIG_ENDIAN     0
48578 +#endif
48579 +
48580 +/* EXPORT_ELEMENT, ELEMENT_REQUIRES, ELEMENT_PROVIDES, ELEMENT_HEADER,
48581 +   ELEMENT_LIBS, and ELEMENT_MT_SAFE are noops. */
48582 +#define EXPORT_ELEMENT(x)
48583 +#define ELEMENT_REQUIRES(x)
48584 +#define ELEMENT_PROVIDES(x)
48585 +#define ELEMENT_HEADER(x)
48586 +#define ELEMENT_LIBS(x)
48587 +#define ELEMENT_MT_SAFE(x)
48588 +
48589 +/* Assume CLICK_USERLEVEL unless otherwise defined. */
48590 +#if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) && !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE)
48591 +# define CLICK_USERLEVEL 1
48592 +#endif
48593 +
48594 +/* Define stuff under a Linux module. */
48595 +#ifdef CLICK_LINUXMODULE
48596 +# include <click/config-linuxmodule.h>
48597 +#endif
48598 +
48599 +/* Define stuff under a FreeBSD module. */
48600 +#ifdef CLICK_BSDMODULE
48601 +# include <click/config-bsdmodule.h>
48602 +#endif
48603 +
48604 +/* Define stuff under nsclick. */
48605 +#ifdef CLICK_NS
48606 +# include <click/config-ns.h>
48607 +#endif
48608 +
48609 +/* Define stuff under tools or a user-level driver. */
48610 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
48611 +# include <click/config-userlevel.h>
48612 +#endif
48613 +
48614 +#endif /* CLICK_CONFIG_H */
48615 diff -Nurb click-1.6.0/inst/include/click/confparse.hh click-1.6.0-27/inst/include/click/confparse.hh
48616 --- click-1.6.0/inst/include/click/confparse.hh 1969-12-31 19:00:00.000000000 -0500
48617 +++ click-1.6.0-27/inst/include/click/confparse.hh      2009-02-05 10:20:41.000000000 -0500
48618 @@ -0,0 +1,510 @@
48619 +// -*- c-basic-offset: 4; related-file-name: "../../lib/confparse.cc" -*-
48620 +#ifndef CLICK_CONFPARSE_HH
48621 +#define CLICK_CONFPARSE_HH
48622 +/// @cond never
48623 +#include <click/string.hh>
48624 +#include <click/vector.hh>
48625 +struct in_addr;
48626 +CLICK_DECLS
48627 +class ErrorHandler;
48628 +class StringAccum;
48629 +class Timestamp;
48630 +#ifndef CLICK_TOOL
48631 +class Element;
48632 +class Router;
48633 +class Handler;
48634 +class HandlerCall;
48635 +# define CP_VA_PARSE_ARGS_REST Element*, ErrorHandler*, ...
48636 +# define CP_OPT_CONTEXT                , Element* context = 0
48637 +# define CP_CONTEXT            , Element* context
48638 +# define CP_PASS_CONTEXT       , context
48639 +#else
48640 +# define CP_VA_PARSE_ARGS_REST ErrorHandler*, ...
48641 +# define CP_OPT_CONTEXT
48642 +# define CP_CONTEXT
48643 +# define CP_PASS_CONTEXT
48644 +#endif
48645 +#ifndef CLICK_COMPILING_CONFPARSE_CC
48646 +# define CLICK_CONFPARSE_DEPRECATED CLICK_DEPRECATED
48647 +#else
48648 +# define CLICK_CONFPARSE_DEPRECATED /* */
48649 +#endif
48650 +#if __GNUC__ <= 3
48651 +# define CP_SENTINEL
48652 +#else
48653 +# define CP_SENTINEL __attribute__((sentinel))
48654 +#endif
48655 +/// @endcond
48656 +
48657 +/// @name Argument Manipulation
48658 +//@{
48659 +const char* cp_skip_space(const char* begin, const char* end);
48660 +const char* cp_skip_comment_space(const char* begin, const char* end);
48661 +bool cp_eat_space(String &str);
48662 +inline bool cp_is_space(const String &str);
48663 +bool cp_is_word(const String &str);
48664 +bool cp_is_click_id(const String &str);
48665 +
48666 +String cp_uncomment(const String &str);
48667 +String cp_unquote(const String &str);
48668 +const char* cp_process_backslash(const char* begin, const char* end, StringAccum &sa);
48669 +String cp_quote(const String &str, bool allow_newlines = false);
48670 +
48671 +void cp_argvec(const String& str, Vector<String>& conf);
48672 +String cp_unargvec(const Vector<String>& conf);
48673 +
48674 +void cp_spacevec(const String& str, Vector<String>& conf);
48675 +String cp_pop_spacevec(String& str);
48676 +String cp_unspacevec(const String* begin, const String* end);
48677 +inline String cp_unspacevec(const Vector<String>& conf);
48678 +//@}
48679 +
48680 +/// @name Direct Parsing Functions
48681 +//@{
48682 +enum CpErrors {
48683 +    CPE_OK = 0,
48684 +    CPE_FORMAT,
48685 +    CPE_NEGATIVE,
48686 +    CPE_OVERFLOW,
48687 +    CPE_INVALID,
48688 +    CPE_MEMORY,
48689 +    CPE_NOUNITS
48690 +};
48691 +extern int cp_errno;
48692 +
48693 +// strings and words
48694 +bool cp_string(const String& str, String* result, String *rest = 0);
48695 +bool cp_word(const String& str, String* result, String *rest = 0);
48696 +bool cp_keyword(const String& str, String* result, String *rest = 0);
48697 +
48698 +// numbers
48699 +bool cp_bool(const String& str, bool* result);
48700 +
48701 +const char *cp_integer(const char* begin, const char* end, int base, int* result);
48702 +const char *cp_integer(const char* begin, const char* end, int base, unsigned int* result);
48703 +/// @cond never
48704 +inline const unsigned char *cp_integer(const unsigned char* begin, const unsigned char* end, int base, unsigned int* result);
48705 +/// @endcond
48706 +
48707 +#if SIZEOF_LONG == SIZEOF_INT
48708 +// may be needed to simplify overloading 
48709 +inline const char *cp_integer(const char* begin, const char* end, int base, long* result);
48710 +inline const char *cp_integer(const char* begin, const char* end, int base, unsigned long* result);
48711 +#elif SIZEOF_LONG != 8
48712 +# error "long has an odd size"
48713 +#endif
48714 +
48715 +#if HAVE_INT64_TYPES
48716 +const char *cp_integer(const char* begin, const char* end, int base, int64_t* result);
48717 +const char *cp_integer(const char* begin, const char* end, int base, uint64_t* result);
48718 +/// @cond never
48719 +inline const unsigned char *cp_integer(const unsigned char* begin, const unsigned char* end, int base, uint64_t* result);
48720 +/// @endcond
48721 +#endif
48722 +
48723 +bool cp_integer(const String& str, int base, int* result);
48724 +bool cp_integer(const String& str, int base, unsigned int* result);
48725 +#if SIZEOF_LONG == SIZEOF_INT
48726 +inline bool cp_integer(const String& str, int base, long* result);
48727 +inline bool cp_integer(const String& str, int base, unsigned long* result);
48728 +#endif
48729 +#ifdef HAVE_INT64_TYPES
48730 +bool cp_integer(const String& str, int base, int64_t* result);
48731 +bool cp_integer(const String& str, int base, uint64_t* result);
48732 +#endif
48733 +
48734 +inline bool cp_integer(const String& str, int* result);
48735 +inline bool cp_integer(const String& str, unsigned int* result);
48736 +#if SIZEOF_LONG == SIZEOF_INT
48737 +inline bool cp_integer(const String& str, long* result);
48738 +inline bool cp_integer(const String& str, unsigned long* result);
48739 +#endif
48740 +#ifdef HAVE_INT64_TYPES
48741 +inline bool cp_integer(const String& str, int64_t* result);
48742 +inline bool cp_integer(const String& str, uint64_t* result);
48743 +#endif
48744 +
48745 +#ifdef CLICK_USERLEVEL
48746 +bool cp_file_offset(const String& str, off_t* result);
48747 +#endif
48748 +
48749 +#define CP_REAL2_MAX_FRAC_BITS 28
48750 +bool cp_real2(const String& str, int frac_bits, int32_t* result);
48751 +bool cp_real2(const String& str, int frac_bits, uint32_t* result);
48752 +bool cp_real10(const String& str, int frac_digits, int32_t* result);
48753 +bool cp_real10(const String& str, int frac_digits, uint32_t* result);
48754 +bool cp_real10(const String& str, int frac_digits, uint32_t* result_int, uint32_t* result_frac);
48755 +#ifdef HAVE_FLOAT_TYPES
48756 +bool cp_double(const String& str, double* result);
48757 +#endif
48758 +
48759 +bool cp_seconds_as(const String& str, int frac_digits, uint32_t* result);
48760 +bool cp_seconds_as_milli(const String& str, uint32_t* result);
48761 +bool cp_seconds_as_micro(const String& str, uint32_t* result);
48762 +bool cp_time(const String& str, Timestamp* result);
48763 +bool cp_time(const String& str, struct timeval* result);
48764 +
48765 +bool cp_bandwidth(const String& str, uint32_t* result);
48766 +
48767 +// network addresses
48768 +class IPAddress;
48769 +class IPAddressList;
48770 +bool cp_ip_address(const String& str, IPAddress* result  CP_OPT_CONTEXT);
48771 +inline bool cp_ip_address(const String& str, struct in_addr* result  CP_OPT_CONTEXT);
48772 +bool cp_ip_address(const String& str, unsigned char* result  CP_OPT_CONTEXT);
48773 +bool cp_ip_prefix(const String& str, IPAddress* result_addr, IPAddress* result_mask, bool allow_bare_address  CP_OPT_CONTEXT);
48774 +bool cp_ip_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask, bool allow_bare_address  CP_OPT_CONTEXT);
48775 +bool cp_ip_prefix(const String& str, IPAddress* result_addr, IPAddress* result_mask  CP_OPT_CONTEXT);
48776 +bool cp_ip_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask  CP_OPT_CONTEXT);
48777 +bool cp_ip_address_list(const String& str, Vector<IPAddress>* result  CP_OPT_CONTEXT);
48778 +
48779 +#ifdef HAVE_IP6
48780 +class IP6Address;
48781 +bool cp_ip6_address(const String& str, IP6Address* result  CP_OPT_CONTEXT);
48782 +bool cp_ip6_address(const String& str, unsigned char* result  CP_OPT_CONTEXT);
48783 +bool cp_ip6_prefix(const String& str, IP6Address* result_addr, int* result_prefix, bool allow_bare_address  CP_OPT_CONTEXT);
48784 +bool cp_ip6_prefix(const String& str, unsigned char* result_addr, int* result_prefix, bool allow_bare_address  CP_OPT_CONTEXT);
48785 +bool cp_ip6_prefix(const String& str, unsigned char* result_addr, unsigned char* result_mask, bool allow_bare_address  CP_OPT_CONTEXT);
48786 +bool cp_ip6_prefix(const String& str, IP6Address* result_addr, IP6Address* result_mask, bool allow_bare_address  CP_OPT_CONTEXT);
48787 +#endif
48788 +
48789 +class EtherAddress;
48790 +bool cp_ethernet_address(const String& str, EtherAddress* result  CP_OPT_CONTEXT);
48791 +bool cp_ethernet_address(const String& str, unsigned char* result  CP_OPT_CONTEXT);
48792 +
48793 +bool cp_tcpudp_port(const String& str, int proto, uint16_t* result  CP_OPT_CONTEXT);
48794 +
48795 +#ifndef CLICK_TOOL
48796 +Element *cp_element(const String& str, Element* context, ErrorHandler* errh=0);
48797 +Element *cp_element(const String& str, Router* router, ErrorHandler* errh=0);
48798 +bool cp_handler_name(const String& str, Element** result_element, String* result_hname, Element* context, ErrorHandler* errh=0);
48799 +bool cp_handler(const String& str, int flags, Element** result_element, const Handler** result_handler, Element* context, ErrorHandler* errh=0);
48800 +#endif
48801 +
48802 +#ifdef HAVE_IPSEC
48803 +bool cp_des_cblock(const String& str, unsigned char* result);
48804 +#endif
48805 +
48806 +#if CLICK_USERLEVEL
48807 +bool cp_filename(const String& str, String* result);
48808 +#endif
48809 +//@}
48810 +
48811 +/// @name cp_va_kparse
48812 +//@{
48813 +int cp_va_kparse(const Vector<String>& conf, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
48814 +int cp_va_kparse(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
48815 +int cp_va_space_kparse(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
48816 +int cp_va_kparse_keyword(const String& str, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
48817 +int cp_va_kparse_remove_keywords(Vector<String>& conf, CP_VA_PARSE_ARGS_REST) CP_SENTINEL;
48818 +
48819 +int cp_assign_arguments(const Vector<String>& argv, const String *keys_begin, const String *keys_end, Vector<String>* values = 0);
48820 +
48821 +void cp_va_static_initialize();
48822 +void cp_va_static_cleanup();
48823 +
48824 +/// @brief Type of flags for cp_va_kparse() items.
48825 +enum CpKparseFlags {
48826 +    cpkN = 0,          ///< Default flags
48827 +    cpkM = 1,          ///< Argument is mandatory
48828 +    cpkP = 2,          ///< Argument may be specified positionally
48829 +    cpkC = 4,          ///< Argument presence should be confirmed
48830 +    cpkNormal = cpkN,
48831 +    cpkMandatory = cpkM,
48832 +    cpkPositional = cpkP,
48833 +    cpkConfirm = cpkC
48834 +};
48835 +
48836 +/// @brief Type of argument type names for cp_va_kparse() items.
48837 +typedef const char *CpVaParseCmd;
48838 +
48839 +extern const CpVaParseCmd
48840 +    cpEnd,             ///< Use as argument name.  Ends cp_va argument list.
48841 +    cpIgnoreRest,      ///< Use as argument name.  No result storage; causes cp_va_kparse to ignore unparsed arguments and any remaining items.
48842 +    cpIgnore,          ///< No result storage (this argument is ignored).
48843 +    cpArgument,                ///< Result storage String*, accepts any argument.
48844 +    cpArguments,       ///< Result storage Vector<String>*, accepts any number of arguments with the same keyword.
48845 +    cpString,          ///< Result storage String*, parsed by cp_string().
48846 +    cpWord,            ///< Result storage String*, parsed by cp_word().
48847 +    cpKeyword,         ///< Result storage String*, parsed by cp_keyword().
48848 +    cpBool,            ///< Result storage bool*, parsed by cp_bool().
48849 +    cpByte,            ///< Result storage unsigned char*, parsed by cp_integer().
48850 +    cpShort,           ///< Result storage short*, parsed by cp_integer().
48851 +    cpUnsignedShort,   ///< Result storage unsigned short*, parsed by cp_integer().
48852 +    cpInteger,         ///< Result storage int32_t*, parsed by cp_integer().
48853 +    cpUnsigned,                ///< Result storage uint32_t*, parsed by cp_integer().
48854 +    cpNamedInteger,    ///< Parse parameter uint32_t nameinfo_type, result storage int32_t*, parsed by NameInfo::query_int.
48855 +#ifdef HAVE_INT64_TYPES
48856 +    cpInteger64,       ///< Result storage int64_t*, parsed by cp_integer().
48857 +    cpUnsigned64,      ///< Result storage uint64_t*, parsed by cp_integer().
48858 +#endif
48859 +#ifdef CLICK_USERLEVEL
48860 +    cpFileOffset,      ///< Result storage off_t*, parsed by cp_integer().
48861 +#endif
48862 +    cpUnsignedReal2,   ///< Parse parameter int frac_bits, result storage uint32_t*, parsed by cp_real2().
48863 +    cpReal10,          ///< Parse parameter int frac_digits, result storage int32_t*, parsed by cp_real10().
48864 +    cpUnsignedReal10,  ///< Parse parameter int frac_digits, result storage uint32_t*, parsed by cp_real10().
48865 +#ifdef HAVE_FLOAT_TYPES
48866 +    cpDouble,          ///< Result storage double*, parsed by cp_double().
48867 +#endif
48868 +    cpSeconds,         ///< Result storage uint32_t*, parsed by cp_seconds_as() with frac_digits 0.
48869 +    cpSecondsAsMilli,  ///< Result storage uint32_t*, parsed by cp_seconds_as_milli().
48870 +    cpSecondsAsMicro,  ///< Result storage uint32_t*, parsed by cp_seconds_as_micro().
48871 +    cpTimestamp,       ///< Result storage Timestamp*, parsed by cp_time().
48872 +    cpTimeval,         ///< Result storage struct timeval*, parsed by cp_time().
48873 +    cpInterval,                ///< Result storage struct timeval*, parsed by cp_time().
48874 +    cpBandwidth,       ///< Result storage uint32_t*, parsed by cp_bandwidth().
48875 +    cpIPAddress,       ///< Result storage IPAddress* or equivalent, parsed by cp_ip_address().
48876 +    cpIPPrefix,                ///< Result storage IPAddress* addr and IPAddress *mask, parsed by cp_ip_prefix().
48877 +    cpIPAddressOrPrefix,///< Result storage IPAddress* addr and IPAddress *mask, parsed by cp_ip_prefix().
48878 +    cpIPAddressList,   ///< Result storage Vector<IPAddress>*, parsed by cp_ip_address_list().
48879 +    cpEthernetAddress, ///< Result storage EtherAddress*, parsed by cp_ethernet_address().
48880 +    cpTCPPort,         ///< Result storage uint16_t*, parsed by cp_tcpudp_port().
48881 +    cpUDPPort,         ///< Result storage uint16_t*, parsed by cp_tcpudp_port().
48882 +    cpElement,         ///< Result storage Element**, parsed by cp_element().
48883 +    cpHandlerName,     ///< Result storage Element** and String*, parsed by cp_handler_name().
48884 +    cpHandlerCallRead, ///< Result storage HandlerCall*, parsed by HandlerCall.
48885 +    cpHandlerCallWrite,        ///< Result storage HandlerCall*, parsed by HandlerCall.
48886 +    cpHandlerCallPtrRead, ///< Result storage HandlerCall**, parsed by HandlerCall::reset_read.
48887 +    cpHandlerCallPtrWrite, ///< Result storage HandlerCall**, parsed by HandlerCall::reset_write.
48888 +    cpIP6Address,      ///< Result storage IP6Address* or equivalent, parsed by cp_ip6_address().
48889 +    cpIP6Prefix,       ///< Result storage IP6Address* addr and IP6Address* mask, parsed by cp_ip6_prefix().
48890 +    cpIP6AddressOrPrefix,///< Result storage IP6Address* addr and IP6Address* mask, parsed by cp_ip6_prefix().
48891 +    cpDesCblock,       ///< Result storage uint8_t[8], parsed by cp_des_cblock().
48892 +    cpFilename,                ///< Result storage String*, parsed by cp_filename().
48893 +    cpOptional,                ///< cp_va_parse only: Following arguments are optional.
48894 +    cpKeywords,                ///< cp_va_parse only: Following arguments are keywords.
48895 +    cpConfirmKeywords, ///< cp_va_parse only: Following arguments are confirmed keywords.
48896 +    cpMandatoryKeywords,///< cp_va_parse only: Following arguments are mandatory keywords.
48897 +    // old names, here for compatibility:
48898 +    cpEtherAddress,    //                      EtherAddress*
48899 +    cpReadHandlerCall, //                      HandlerCall**
48900 +    cpWriteHandlerCall;        //                      HandlerCall**
48901 +//@}
48902 +
48903 +/// @name Unparsing
48904 +//@{
48905 +String cp_unparse_bool(bool value);
48906 +String cp_unparse_real2(int32_t value, int frac_bits);
48907 +String cp_unparse_real2(uint32_t value, int frac_bits);
48908 +#ifdef HAVE_INT64_TYPES
48909 +String cp_unparse_real2(int64_t value, int frac_bits);
48910 +String cp_unparse_real2(uint64_t value, int frac_bits);
48911 +#endif
48912 +String cp_unparse_real10(int32_t value, int frac_digits);
48913 +String cp_unparse_real10(uint32_t value, int frac_digits);
48914 +String cp_unparse_milliseconds(uint32_t value);
48915 +String cp_unparse_microseconds(uint32_t value);
48916 +String cp_unparse_interval(const Timestamp& value);
48917 +String cp_unparse_interval(const struct timeval& value);
48918 +String cp_unparse_bandwidth(uint32_t value);
48919 +//@}
48920 +
48921 +/// @name Legacy Functions
48922 +//@{
48923 +int cp_va_parse(const Vector<String>& conf, CP_VA_PARSE_ARGS_REST);
48924 +int cp_va_parse(const String& str, CP_VA_PARSE_ARGS_REST);
48925 +int cp_va_space_parse(const String& str, CP_VA_PARSE_ARGS_REST);
48926 +int cp_va_parse_keyword(const String& str, CP_VA_PARSE_ARGS_REST);
48927 +int cp_va_parse_remove_keywords(Vector<String>& conf, int first, CP_VA_PARSE_ARGS_REST);
48928 +// Argument syntax:
48929 +// cp_va_arg ::= cpEnd         // terminates argument list (not 0!)
48930 +//    |   cpOptional | cpKeywords | cpIgnore...                // manipulators
48931 +//    |   CpVaParseCmd cmd, const char *description,
48932 +//       [Optional Helpers], Results
48933 +//                             // Helpers and Results depend on 'cmd';
48934 +//                             // see table above
48935 +//    |   const char *keyword, CpVaParseCmd cmd, const char *description,
48936 +//       [Optional Helpers], Results
48937 +//                             // keyword argument, within cpKeywords or
48938 +//                             // cpMandatoryKeywords
48939 +//    |   const char *keyword, CpVaParseCmd cmd, const char *description,
48940 +//       bool *keyword_given, [Optional Helpers], Results
48941 +//                             // keyword argument, within cpConfirmKeywords
48942 +// Returns the number of result arguments set, or negative on error.
48943 +// Stores no values in the result arguments on error.
48944 +//@}
48945 +
48946 +/// @name Argument Types for cp_va_kparse
48947 +//@{
48948 +struct cp_value;
48949 +struct cp_argtype;
48950 +
48951 +typedef void (*cp_parsefunc)(cp_value* value, const String& arg,
48952 +                            ErrorHandler* errh, const char* argdesc  CP_CONTEXT);
48953 +typedef void (*cp_storefunc)(cp_value* value  CP_CONTEXT);
48954 +
48955 +struct cp_argtype {
48956 +    const char* name;
48957 +    cp_argtype* next;
48958 +    cp_parsefunc parse;
48959 +    cp_storefunc store;
48960 +    void* user_data;
48961 +    int flags;
48962 +    const char* description;
48963 +    int internal;
48964 +    int use_count;
48965 +};
48966 +
48967 +struct cp_value {
48968 +    // set by cp_va_parse:
48969 +    const cp_argtype* argtype;
48970 +    const char* keyword;
48971 +    const char* description CLICK_CONFPARSE_DEPRECATED;
48972 +    int extra;
48973 +    void* store;
48974 +    void* store2;
48975 +    bool* store_confirm;
48976 +    // set by parsefunc, used by storefunc:
48977 +    union {
48978 +       bool b;
48979 +       int32_t i;
48980 +       uint32_t u;
48981 +#ifdef HAVE_INT64_TYPES
48982 +       int64_t i64;
48983 +       uint64_t u64;
48984 +#endif
48985 +#ifdef HAVE_FLOAT_TYPES
48986 +       double d;
48987 +#endif
48988 +       unsigned char address[16];
48989 +       int is[4];
48990 +#ifndef CLICK_TOOL
48991 +       Element* element;
48992 +#endif
48993 +    } v, v2;
48994 +    String v_string;
48995 +    String v2_string;
48996 +};
48997 +
48998 +enum { cpArgNormal = 0, cpArgStore2 = 1, cpArgExtraInt = 2, cpArgAllowNumbers = 4 };
48999 +int cp_register_argtype(const char* name, const char* description, int flags,
49000 +                       cp_parsefunc parsefunc, cp_storefunc storefunc,
49001 +                       void* user_data = 0);
49002 +void cp_unregister_argtype(const char* name);
49003 +
49004 +int cp_register_stringlist_argtype(const char* name, const char* description,
49005 +                                  int flags);
49006 +int cp_extend_stringlist_argtype(const char* name, ...);
49007 +// Takes: const char* name, int value, ...., const char* ender = (const char*)0
49008 +//@}
49009 +
49010 +/// @cond never
49011 +bool cp_seconds_as(int want_power, const String& str, uint32_t* result) CLICK_DEPRECATED;
49012 +
49013 +#define cp_integer64 cp_integer
49014 +#define cp_unsigned64 cp_integer
49015 +#define cp_unsigned cp_integer
49016 +#define cp_unsigned_real10 cp_real10
49017 +#define cp_unsigned_real2 cp_real2
49018 +/// @endcond
49019 +
49020 +/** @brief  Join the strings in @a conf with spaces and return the result.
49021 + *
49022 + *  This function does not quote or otherwise protect the strings in @a conf.
49023 + *  The caller should do that if necessary.
49024 + *  @sa cp_unspacevec(const String *, const String *) */
49025 +inline String cp_unspacevec(const Vector<String>& conf)
49026 +{
49027 +    return cp_unspacevec(conf.begin(), conf.end());
49028 +}
49029 +
49030 +/** @brief  Test if @a str is all spaces.
49031 + *  @return True when every character in @a str is a space. */
49032 +inline bool cp_is_space(const String& str)
49033 +{
49034 +    return cp_skip_space(str.begin(), str.end()) == str.end();
49035 +}
49036 +
49037 +/** @brief  Parse an integer from @a str in base 0.
49038 + *
49039 + *  Same as cp_integer(str, 0, result). */
49040 +inline bool cp_integer(const String& str, int* result)
49041 +{
49042 +    return cp_integer(str, 0, result);
49043 +}
49044 +
49045 +inline bool cp_integer(const String& str, unsigned int* result)
49046 +{
49047 +    return cp_integer(str, 0, result);
49048 +}
49049 +
49050 +/// @cond never
49051 +inline const unsigned char *cp_integer(const unsigned char *begin, const unsigned char *end, int base, unsigned int* result)
49052 +{
49053 +    return (const unsigned char *) cp_integer((const char *) begin, (const char *) end, base, result);
49054 +}
49055 +/// @endcond
49056 +
49057 +#ifdef HAVE_INT64_TYPES
49058 +/// @cond never
49059 +inline const unsigned char *cp_integer(const unsigned char *begin, const unsigned char *end, int base, uint64_t* result)
49060 +{
49061 +    return (const unsigned char *) cp_integer((const char *) begin, (const char *) end, base, result);
49062 +}
49063 +/// @endcond
49064 +
49065 +inline bool cp_integer(const String& str, uint64_t* result)
49066 +{
49067 +    return cp_integer(str, 0, result);
49068 +}
49069 +
49070 +inline bool cp_integer(const String& str, int64_t* result)
49071 +{
49072 +    return cp_integer(str, 0, result);
49073 +}
49074 +#endif
49075 +
49076 +#if SIZEOF_LONG == SIZEOF_INT
49077 +inline const char* cp_integer(const char* begin, const char* end, int base, long* result)
49078 +{
49079 +    return cp_integer(begin, end, base, reinterpret_cast<int*>(result));
49080 +}
49081 +
49082 +inline bool cp_integer(const String& str, int base, long* result)
49083 +{
49084 +    return cp_integer(str, base, reinterpret_cast<int*>(result));
49085 +}
49086 +
49087 +inline bool cp_integer(const String& str, long* result)
49088 +{
49089 +    return cp_integer(str, reinterpret_cast<int*>(result));
49090 +}
49091 +
49092 +inline const char* cp_integer(const char* begin, const char* end, int base, unsigned long* result)
49093 +{
49094 +    return cp_integer(begin, end, base, reinterpret_cast<unsigned int*>(result));
49095 +}
49096 +
49097 +inline bool cp_integer(const String& str, int base, unsigned long* result)
49098 +{
49099 +    return cp_integer(str, base, reinterpret_cast<unsigned int*>(result));
49100 +}
49101 +
49102 +inline bool cp_integer(const String& str, unsigned long* result)
49103 +{
49104 +    return cp_integer(str, reinterpret_cast<unsigned int*>(result));
49105 +}
49106 +#endif
49107 +
49108 +inline bool cp_ip_address(const String& str, struct in_addr* ina  CP_CONTEXT)
49109 +{
49110 +    return cp_ip_address(str, reinterpret_cast<IPAddress*>(ina)  CP_PASS_CONTEXT);
49111 +}
49112 +
49113 +/// @cond never
49114 +inline bool cp_seconds_as(int want_power, const String &str, uint32_t *result)
49115 +{
49116 +    return cp_seconds_as(str, want_power, result);
49117 +}
49118 +
49119 +#undef CP_VA_ARGS_REST
49120 +#undef CP_OPT_CONTEXT
49121 +#undef CP_CONTEXT
49122 +#undef CP_PASS_CONTEXT
49123 +#undef CLICK_CONFPARSE_DEPRECATED
49124 +#undef CP_SENTINEL
49125 +#define cpEnd ((CpVaParseCmd) 0)
49126 +/// @endcond
49127 +CLICK_ENDDECLS
49128 +#endif
49129 diff -Nurb click-1.6.0/inst/include/click/crc32.h click-1.6.0-27/inst/include/click/crc32.h
49130 --- click-1.6.0/inst/include/click/crc32.h      1969-12-31 19:00:00.000000000 -0500
49131 +++ click-1.6.0-27/inst/include/click/crc32.h   2009-02-05 10:20:41.000000000 -0500
49132 @@ -0,0 +1,15 @@
49133 +/* -*- related-file-name: "../../lib/crc32.c" -*- */
49134 +#ifndef CLICK_CRC32_H
49135 +#define CLICK_CRC32_H
49136 +#ifdef __cplusplus
49137 +extern "C" {
49138 +#endif
49139 +
49140 +unsigned long update_crc(unsigned long crc_accum,
49141 +                         char *data_blk_ptr,
49142 +                         int data_blk_size);
49143 +
49144 +#ifdef __cplusplus
49145 +}
49146 +#endif
49147 +#endif
49148 diff -Nurb click-1.6.0/inst/include/click/cxxprotect.h click-1.6.0-27/inst/include/click/cxxprotect.h
49149 --- click-1.6.0/inst/include/click/cxxprotect.h 1969-12-31 19:00:00.000000000 -0500
49150 +++ click-1.6.0-27/inst/include/click/cxxprotect.h      2009-02-05 10:20:41.000000000 -0500
49151 @@ -0,0 +1,22 @@
49152 +#ifdef __cplusplus
49153 +#define new            xxx_new
49154 +#define this           xxx_this
49155 +#define delete         xxx_delete
49156 +#define class          xxx_class
49157 +#define virtual                xxx_virtual
49158 +#define typename       xxx_typename
49159 +#define private                xxx_private
49160 +#define protected      xxx_protected
49161 +#define public         xxx_public
49162 +#define namespace      xxx_namespace
49163 +#endif
49164 +
49165 +#ifndef CLICK_CXX_PROTECT
49166 +# ifdef __cplusplus
49167 +#  define CLICK_CXX_PROTECT    extern "C" {
49168 +#  define CLICK_CXX_UNPROTECT  }
49169 +# else
49170 +#  define CLICK_CXX_PROTECT    /* nothing */
49171 +#  define CLICK_CXX_UNPROTECT  /* nothing */
49172 +# endif
49173 +#endif
49174 diff -Nurb click-1.6.0/inst/include/click/cxxunprotect.h click-1.6.0-27/inst/include/click/cxxunprotect.h
49175 --- click-1.6.0/inst/include/click/cxxunprotect.h       1969-12-31 19:00:00.000000000 -0500
49176 +++ click-1.6.0-27/inst/include/click/cxxunprotect.h    2009-02-05 10:20:41.000000000 -0500
49177 @@ -0,0 +1,12 @@
49178 +#ifdef __cplusplus
49179 +#undef new
49180 +#undef this
49181 +#undef delete
49182 +#undef class
49183 +#undef virtual
49184 +#undef typename
49185 +#undef private
49186 +#undef protected
49187 +#undef public
49188 +#undef namespace
49189 +#endif
49190 diff -Nurb click-1.6.0/inst/include/click/dequeue.cc click-1.6.0-27/inst/include/click/dequeue.cc
49191 --- click-1.6.0/inst/include/click/dequeue.cc   1969-12-31 19:00:00.000000000 -0500
49192 +++ click-1.6.0-27/inst/include/click/dequeue.cc        2009-02-05 10:20:41.000000000 -0500
49193 @@ -0,0 +1,170 @@
49194 +/*
49195 + * dequeue.{cc,hh} -- double-ended queue template class
49196 + * Douglas S. J. De Couto
49197 + * Based on code from Click Vector<> class (vector.{cc,hh}).
49198 + *
49199 + * Copyright (c) 2003 Massachusetts Institute of Technology
49200 + *
49201 + * Permission is hereby granted, free of charge, to any person obtaining a
49202 + * copy of this software and associated documentation files (the "Software"),
49203 + * to deal in the Software without restriction, subject to the conditions
49204 + * listed in the Click LICENSE file. These conditions include: you must
49205 + * preserve this copyright notice, and you cannot mention the copyright
49206 + * holders in advertising related to the Software without their permission.
49207 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
49208 + * notice is a summary of the Click LICENSE file; the license in that file is
49209 + * legally binding.
49210 + */
49211 +
49212 +#ifndef CLICK_DEQUEUE_CC
49213 +#define CLICK_DEQUEUE_CC
49214 +
49215 +CLICK_ENDDECLS
49216 +#include <click/dequeue.hh>
49217 +CLICK_DECLS
49218 +
49219 +template <class T>
49220 +DEQueue<T>::DEQueue(const DEQueue<T> &o)
49221 +    : _l(0), _n(0), _cap(0), _head(0), _tail(0)
49222 +{
49223 +    *this = o;
49224 +}
49225 +
49226 +template <class T>
49227 +DEQueue<T>::~DEQueue()
49228 +{
49229 +    for (int i = _head, j = 0; j < _n; i = next_i(i), j++)
49230 +       _l[i].~T();
49231 +    CLICK_LFREE(_l, _cap * sizeof(T));
49232 +}
49233 +
49234 +template <class T> DEQueue<T> &
49235 +DEQueue<T>::operator=(const DEQueue<T> &o)
49236 +{
49237 +    if (&o != this) {
49238 +       for (int i = _head, j = 0; j < _n; i = next_i(i), j++)
49239 +           _l[i].~T();
49240 +       _n = 0;
49241 +       _head = 0;
49242 +       _tail = 0;
49243 +       if (reserve(o._n)) {
49244 +           _n = o._n;
49245 +           for (int i = 0, j = o._head; i < _n; i++, j = o.next_i(j))
49246 +               new(velt(i)) T(o._l[j]);
49247 +           _tail = _n;
49248 +       }
49249 +    }
49250 +    return *this;
49251 +}
49252 +
49253 +template <class T> DEQueue<T> &
49254 +DEQueue<T>::assign(int n, const T &e)
49255 +{
49256 +    resize(0, e);
49257 +    resize(n, e);
49258 +    return *this;
49259 +}
49260 +
49261 +template <class T> bool
49262 +DEQueue<T>::reserve(int want)
49263 +{
49264 +    if (want < 0)
49265 +       want = _cap > 0 ? _cap * 2 : 4;
49266 +    if (want <= _cap)
49267 +       return true;
49268 +
49269 +    T *new_l = (T *) CLICK_LALLOC(want * sizeof(T));
49270 +    if (!new_l)
49271 +       return false;
49272 +  
49273 +    for (int i = _head, j = 0; j < _n; j++, i = next_i(i)) {
49274 +       new(velt(new_l, j)) T(_l[i]);
49275 +       _l[i].~T();
49276 +    }
49277 +
49278 +    CLICK_LFREE(_l, _cap * sizeof(T));
49279 +
49280 +    _l = new_l;
49281 +    _cap = want;
49282 +    _head = 0;
49283 +    _tail = _n;
49284 +    return true;
49285 +}
49286 +
49287 +template <class T> void
49288 +DEQueue<T>::shrink(int nn)
49289 +{
49290 +    // delete els from back of queue
49291 +    if (nn < _n) {
49292 +       int num_to_del = _n - nn;
49293 +       for ( ; num_to_del > 0; _tail = prev_i(_tail), num_to_del--)
49294 +           _l[prev_i(_tail)].~T();
49295 +       _n = nn;
49296 +    }
49297 +}
49298 +
49299 +template <class T> void
49300 +DEQueue<T>::resize(int nn, const T &e)
49301 +{
49302 +  // extra/excess els are added/removed to/from back of queue
49303 +  if (nn <= _cap || reserve(nn)) {
49304 +    // construct new els
49305 +    for ( ; _n < nn; _tail = next_i(_tail), _n++)
49306 +      new(velt(_tail)) T(e);
49307 +
49308 +    // delete excess els
49309 +    for ( ; nn < _n; _tail = prev_i(_tail), _n--)
49310 +      _l[prev_i(_tail)].~T();
49311 +  }
49312 +}
49313 +
49314 +template <class T> void
49315 +DEQueue<T>::swap(DEQueue<T> &o)
49316 +{
49317 +  T *l = _l;
49318 +  int n = _n;
49319 +  int cap = _cap;
49320 +  int head = _head;
49321 +  int tail = _tail;
49322 +  _l = o._l;
49323 +  _n = o._n;
49324 +  _cap = o._cap;
49325 +  _head = o._head;
49326 +  _tail = o._tail;
49327 +  o._l = l;
49328 +  o._n = n;
49329 +  o._cap = cap;
49330 +  o._head = head;
49331 +  o._tail = tail;
49332 +}
49333 +
49334 +template <class T> inline void
49335 +DEQueue<T>::check_rep()
49336 +{
49337 +  // pushes go on to back (tail), pops come from front (head).
49338 +  // elements closer to the tail have larger indices in the array
49339 +  // (modulo total size).
49340 +
49341 +  // _head is index of front
49342 +  // _tail is 1 + index of back, i.e. where next push goes
49343 +
49344 +  if (!_l) {
49345 +    assert(_n == 0);
49346 +    assert(_cap == 0);
49347 +    assert(_head == 0);
49348 +    assert(_tail == 0);
49349 +  } else {
49350 +    assert(_head >= 0);
49351 +    assert(_head < _cap);
49352 +    assert(_tail >= 0);
49353 +    assert(_tail < _cap);
49354 +    if (_n == _cap)
49355 +      assert(_head == _tail);
49356 +    else
49357 +      assert(_n == (_tail >= _head ? _tail - _head : _cap - _head + _tail));
49358 +  }      
49359 +}
49360 +
49361 +
49362 +
49363 +#endif
49364 diff -Nurb click-1.6.0/inst/include/click/dequeue.hh click-1.6.0-27/inst/include/click/dequeue.hh
49365 --- click-1.6.0/inst/include/click/dequeue.hh   1969-12-31 19:00:00.000000000 -0500
49366 +++ click-1.6.0-27/inst/include/click/dequeue.hh        2009-02-05 10:20:41.000000000 -0500
49367 @@ -0,0 +1,146 @@
49368 +// dequeue.hh
49369 +// Douglas S. J. De Couto
49370 +// 26 June 2003
49371 +
49372 +// Inspired by Click Vector<> and SimpleQueue code
49373 +
49374 +#ifndef CLICK_DEQUEUE_HH
49375 +#define CLICK_DEQUEUE_HH
49376 +#include <click/glue.hh>
49377 +CLICK_DECLS
49378 +
49379 +template <class T>
49380 +class DEQueue {
49381 +
49382 +public:
49383 +  DEQueue()                      : _l(0), _n(0), _cap(0), _head(0), _tail(0) { }
49384 +  explicit DEQueue(int capacity) : _l(0), _n(0), _cap(0), _head(0), _tail(0) { reserve(capacity); }
49385 +  DEQueue(int n, const T &e)     : _l(0), _n(0), _cap(0), _head(0), _tail(0) { resize(n, e);      }
49386 +  DEQueue(const DEQueue<T> &);
49387 +  ~DEQueue();
49388 +
49389 +    inline void check_rep();
49390 +
49391 +  int size() const { return _n; }
49392 +
49393 +  const T &at(int i) const             { assert(i>=0 && i<_n); return _l[idx(i)]; }
49394 +  const T &operator[](int i) const     { return at(i); }
49395 +  const T &front() const                { return at(0); }
49396 +  const T &back() const                        { return at(_n - 1); }
49397 +  const T &at_u(int i) const           { return _l[idx(i)]; }
49398 +  
49399 +  T &at(int i)                         { assert(i>=0 && i<_n); return _l[idx(i)]; }
49400 +  T &operator[](int i)                 { return at(i); }
49401 +  T &front()                            { return at(0); }
49402 +  T &back()                            { return at(_n - 1); }
49403 +  T &at_u(int i)                       { return _l[idx(i)]; }
49404 +
49405 +    struct const_iterator {
49406 +       const DEQueue &_q;
49407 +       int _pos;
49408 +
49409 +       const_iterator(const DEQueue<T> &q, int p) : _q(q), _pos(p)  { }
49410 +       const_iterator(const const_iterator &i) : _q(i._q), _pos(i._pos) { }
49411 +       const_iterator &operator++() { _pos++; return *this; }
49412 +       const_iterator &operator--() { _pos--; return *this; }
49413 +       const_iterator operator++(int) { const_iterator t = *this; ++*this; return t; }
49414 +       const_iterator operator--(int) { const_iterator t = *this; --*this; return t; }
49415 +       const_iterator &operator+=(int n) { _pos += n; return *this; }
49416 +       const_iterator &operator-=(int n) { _pos -= n; return *this; }
49417 +       const T &operator[](int n) const { return _q[_pos + n]; }
49418 +       bool operator==(const const_iterator &i) const { return _pos == i._pos && _q._l == i._q._l;  }
49419 +       bool operator!=(const const_iterator &i) const { return _pos != i._pos || _q._l != i._q._l;  }
49420 +       const T &operator*()  const { return _q[_pos];  }
49421 +       const T *operator->() const { return &_q[_pos]; }
49422 +    };
49423 +
49424 +    struct iterator : public const_iterator {
49425 +       iterator(DEQueue<T> &q, int p) : const_iterator(q, p) { }
49426 +       iterator(const iterator &i) : const_iterator(i._q, i._pos) { }
49427 +       T &operator[](int n) const { return const_cast<T &>(const_iterator::operator[](n)); }
49428 +       T &operator*() const { return const_cast<T &>(const_iterator::operator*()); }
49429 +       T *operator->() const { return const_cast<T *>(const_iterator::operator->()); }
49430 +    };
49431 +  
49432 +    iterator begin()                   { return iterator(*this, 0); }
49433 +    const_iterator begin() const       { return const_iterator((DEQueue<T> &) *this, 0); }
49434 +    iterator end()                     { return iterator(*this, _n); }
49435 +    const_iterator end() const         { return const_iterator((DEQueue<T> &) *this, _n); }
49436 +
49437 +    inline void push_back(const T &);
49438 +    inline void pop_back();
49439 +  
49440 +    inline void push_front(const T &);
49441 +    inline void pop_front();
49442 +
49443 +  void clear()                          { shrink(0); }
49444 +  bool reserve(int);
49445 +  void resize(int nn, const T &e = T());
49446 +
49447 +  DEQueue<T> &operator=(const DEQueue<T> &);
49448 +  DEQueue<T> &assign(int n, const T &e = T());
49449 +  void swap(DEQueue<T> &);
49450 +
49451 +private:
49452 +
49453 +  T *_l;
49454 +  int _n;
49455 +  int _cap;
49456 +  int _head;
49457 +  int _tail;
49458 +
49459 +  int next_i(int i) const               { return (i != _cap - 1 ? i + 1 : 0); }
49460 +  int prev_i(int i) const               { return (i != 0 ? i - 1 : _cap - 1); }
49461 +  int idx(int i)    const               { return (i + _head) % _cap;  }
49462 +
49463 +  void *velt(int i) const              { return (void *) &_l[i]; }
49464 +  static void *velt(T *l, int i)       { return (void *) &l[i];  }
49465 +  void shrink(int nn);
49466 +  
49467 +  friend class iterator;
49468 +  friend class const_iterator;
49469 +
49470 +};
49471 +
49472 +
49473 +
49474 +template <class T> inline void
49475 +DEQueue<T>::push_front(const T &e)
49476 +{
49477 +    if (_n < _cap || reserve(-1)) {
49478 +       _head = prev_i(_head);
49479 +       new(velt(_head)) T(e);
49480 +       _n++;
49481 +    }
49482 +}
49483 +
49484 +template <class T> inline void
49485 +DEQueue<T>::pop_front()
49486 +{
49487 +    assert(_n > 0);
49488 +    --_n;
49489 +    _l[_head].~T();
49490 +    _head = next_i(_head);
49491 +}
49492 +
49493 +template <class T> inline void
49494 +DEQueue<T>::push_back(const T &e)
49495 +{
49496 +    if (_n < _cap || reserve(-1)) {
49497 +       new(velt(_tail)) T(e);
49498 +       _n++;
49499 +       _tail = next_i(_tail);
49500 +    }
49501 +}
49502 +
49503 +template <class T> inline void
49504 +DEQueue<T>::pop_back()
49505 +{
49506 +    assert(_n > 0);
49507 +    --_n;
49508 +    _tail = prev_i(_tail);
49509 +    _l[_tail].~T();
49510 +}
49511 +
49512 +CLICK_ENDDECLS
49513 +#endif
49514 diff -Nurb click-1.6.0/inst/include/click/driver.hh click-1.6.0-27/inst/include/click/driver.hh
49515 --- click-1.6.0/inst/include/click/driver.hh    1969-12-31 19:00:00.000000000 -0500
49516 +++ click-1.6.0-27/inst/include/click/driver.hh 2009-02-05 10:20:41.000000000 -0500
49517 @@ -0,0 +1,37 @@
49518 +// -*- c-basic-offset: 4; related-file-name: "../../lib/driver.cc" -*-
49519 +#ifndef CLICK_DRIVER_HH
49520 +#define CLICK_DRIVER_HH
49521 +#include <click/package.hh>
49522 +
49523 +#define CLICK_DEFAULT_PROVIDES /* nada */
49524 +
49525 +#if CLICK_USERLEVEL
49526 +CLICK_DECLS
49527 +class Router;
49528 +class Master;
49529 +class ErrorHandler;
49530 +class Lexer;
49531 +class ArchiveElement;
49532 +
49533 +void click_static_initialize();
49534 +void click_static_cleanup();
49535 +
49536 +Lexer *click_lexer();
49537 +Router *click_read_router(String filename, bool is_expr, ErrorHandler * = 0, bool initialize = true, Master * = 0);
49538 +
49539 +String click_compile_archive_file(String package, const Vector<ArchiveElement> &archive, int ai, const String &target, const String &extra_flags, ErrorHandler *errh);
49540 +
49541 +CLICK_ENDDECLS
49542 +#elif CLICK_TOOL
49543 +CLICK_DECLS
49544 +class ErrorHandler;
49545 +class ArchiveElement;
49546 +
49547 +void click_static_initialize();
49548 +
49549 +String click_compile_archive_file(String package, const Vector<ArchiveElement> &archive, int ai, const String &target, const String &extra_flags, ErrorHandler *errh);
49550 +
49551 +CLICK_ENDDECLS
49552 +#endif
49553 +
49554 +#endif
49555 diff -Nurb click-1.6.0/inst/include/click/element.hh click-1.6.0-27/inst/include/click/element.hh
49556 --- click-1.6.0/inst/include/click/element.hh   1969-12-31 19:00:00.000000000 -0500
49557 +++ click-1.6.0-27/inst/include/click/element.hh        2009-02-05 10:20:41.000000000 -0500
49558 @@ -0,0 +1,659 @@
49559 +// -*- c-basic-offset: 4; related-file-name: "../../lib/element.cc" -*-
49560 +#ifndef CLICK_ELEMENT_HH
49561 +#define CLICK_ELEMENT_HH
49562 +#include <click/glue.hh>
49563 +#include <click/vector.hh>
49564 +#include <click/string.hh>
49565 +#include <click/packet.hh>
49566 +CLICK_DECLS
49567 +class Router;
49568 +class Master;
49569 +class Task;
49570 +class Timer;
49571 +class Element;
49572 +class ErrorHandler;
49573 +class Bitvector;
49574 +class Handler;
49575 +
49576 +/** @file <click/element.hh>
49577 + * @brief Click's Element class.
49578 + */
49579 +
49580 +#define CLICK_ELEMENT_PORT_COUNT_DEPRECATED CLICK_DEPRECATED
49581 +
49582 +// #define CLICK_STATS 5
49583 +
49584 +typedef int (*HandlerHook)(int operation, String&, Element*, const Handler*, ErrorHandler*);
49585 +typedef String (*ReadHandlerHook)(Element*, void*);
49586 +typedef int (*WriteHandlerHook)(const String&, Element*, void*, ErrorHandler*);
49587 +
49588 +class Element { public:
49589 +    
49590 +    Element();
49591 +    virtual ~Element();
49592 +    static int nelements_allocated;
49593 +
49594 +    // RUNTIME
49595 +    virtual void push(int port, Packet*);
49596 +    virtual Packet* pull(int port);
49597 +    virtual Packet* simple_action(Packet*);
49598 +
49599 +    virtual bool run_task(Task *);     // return true iff did useful work
49600 +    virtual void run_timer(Timer *);
49601 +#if CLICK_USERLEVEL
49602 +    virtual void selected(int fd);
49603 +#endif
49604 +
49605 +    inline void checked_output_push(int port, Packet*) const;
49606 +    
49607 +    // ELEMENT CHARACTERISTICS
49608 +    virtual const char *class_name() const = 0;
49609 +
49610 +    virtual const char *port_count() const;
49611 +    static const char PORTS_0_0[];
49612 +    static const char PORTS_0_1[];
49613 +    static const char PORTS_1_0[];
49614 +    static const char PORTS_1_1[];
49615 +    
49616 +    virtual const char *processing() const;
49617 +    static const char AGNOSTIC[];
49618 +    static const char PUSH[];
49619 +    static const char PULL[];
49620 +    static const char PUSH_TO_PULL[];
49621 +    static const char PULL_TO_PUSH[];
49622 +    
49623 +    virtual const char *flow_code() const;
49624 +    static const char COMPLETE_FLOW[];
49625 +    
49626 +    virtual const char *flags() const;
49627 +
49628 +    virtual void *cast(const char *);
49629 +    
49630 +    // CONFIGURATION, INITIALIZATION, AND CLEANUP
49631 +    enum ConfigurePhase {
49632 +       CONFIGURE_PHASE_FIRST = 0,
49633 +       CONFIGURE_PHASE_INFO = 20,
49634 +       CONFIGURE_PHASE_PRIVILEGED = 90,
49635 +       CONFIGURE_PHASE_DEFAULT = 100,
49636 +       CONFIGURE_PHASE_LAST = 2000
49637 +    };
49638 +    virtual int configure_phase() const;
49639 +    
49640 +    virtual int configure(Vector<String>&, ErrorHandler*);
49641 +    
49642 +    virtual void add_handlers();
49643 +  
49644 +    virtual int initialize(ErrorHandler*);
49645 +    
49646 +    virtual void take_state(Element *old_element, ErrorHandler*);
49647 +    virtual Element *hotswap_element() const;
49648 +
49649 +    enum CleanupStage {
49650 +       CLEANUP_NO_ROUTER,
49651 +       CLEANUP_BEFORE_CONFIGURE = CLEANUP_NO_ROUTER,
49652 +       CLEANUP_CONFIGURE_FAILED,
49653 +       CLEANUP_CONFIGURED,
49654 +       CLEANUP_INITIALIZE_FAILED,
49655 +       CLEANUP_INITIALIZED,
49656 +       CLEANUP_ROUTER_INITIALIZED,
49657 +       CLEANUP_MANUAL
49658 +    };
49659 +    virtual void cleanup(CleanupStage);
49660 +
49661 +    static inline void static_initialize();
49662 +    static inline void static_cleanup();
49663 +
49664 +    // ELEMENT ROUTER CONNECTIONS
49665 +    String name() const;
49666 +    String landmark() const;
49667 +    virtual String declaration() const;
49668 +  
49669 +    inline Router *router() const;
49670 +    inline int eindex() const;
49671 +    inline int eindex(Router *r) const;
49672 +    Master *master() const;
49673 +
49674 +    // INPUTS AND OUTPUTS
49675 +    inline int nports(bool isoutput) const;
49676 +    inline int ninputs() const;
49677 +    inline int noutputs() const;
49678 +
49679 +    class Port;
49680 +    inline const Port &port(bool isoutput, int port) const;
49681 +    inline const Port &input(int port) const;
49682 +    inline const Port &output(int port) const;
49683 +
49684 +    inline bool port_active(bool isoutput, int port) const;
49685 +    inline bool input_is_push(int port) const;
49686 +    inline bool input_is_pull(int port) const;
49687 +    inline bool output_is_push(int port) const;
49688 +    inline bool output_is_pull(int port) const;
49689 +    void port_flow(bool isoutput, int port, Bitvector*) const;
49690 +  
49691 +    // LIVE RECONFIGURATION
49692 +    virtual void configuration(Vector<String>&) const;
49693 +    String configuration() const;
49694 +  
49695 +    virtual bool can_live_reconfigure() const;
49696 +    virtual int live_reconfigure(Vector<String>&, ErrorHandler*);
49697 +
49698 +#if CLICK_USERLEVEL
49699 +    // SELECT
49700 +    enum { SELECT_READ = 1, SELECT_WRITE = 2 };
49701 +    int add_select(int fd, int mask);
49702 +    int remove_select(int fd, int mask);
49703 +#endif
49704 +
49705 +    // HANDLERS
49706 +    void add_read_handler(const String &name, ReadHandlerHook, void*);
49707 +    void add_write_handler(const String &name, WriteHandlerHook, void*);
49708 +    void set_handler(const String &name, int flags, HandlerHook, void* = 0, void* = 0);
49709 +    int set_handler_flags(const String &name, int flags);
49710 +    void add_task_handlers(Task*, const String& prefix = String());
49711 +
49712 +    static String read_positional_handler(Element*, void*);
49713 +    static String read_keyword_handler(Element*, void*);
49714 +    static int reconfigure_positional_handler(const String&, Element*, void*, ErrorHandler*);
49715 +    static int reconfigure_keyword_handler(const String&, Element*, void*, ErrorHandler*);
49716 +  
49717 +    virtual int llrpc(unsigned command, void* arg);
49718 +    int local_llrpc(unsigned command, void* arg);
49719 +
49720 +#if CLICK_STATS >= 2
49721 +    // STATISTICS
49722 +    int _calls; // Push and pull calls into this element.
49723 +    uint64_t _self_cycles;  // Cycles spent in self and children.
49724 +    uint64_t _child_cycles; // Cycles spent in children.
49725 +#endif
49726 +  
49727 +    class Port { public:
49728 +    
49729 +       inline bool active() const;
49730 +       inline Element* element() const;
49731 +       inline int port() const;
49732 +    
49733 +       inline void push(Packet* p) const;
49734 +       inline Packet* pull() const;
49735 +
49736 +#if CLICK_STATS >= 1
49737 +       unsigned npackets() const       { return _packets; }
49738 +#endif
49739 +
49740 +      private:
49741 +    
49742 +       Element* _e;
49743 +       int _port;
49744 +    
49745 +#if CLICK_STATS >= 1
49746 +       mutable unsigned _packets;      // How many packets have we moved?
49747 +#endif
49748 +#if CLICK_STATS >= 2
49749 +       Element* _owner;                // Whose input or output are we?
49750 +#endif
49751 +
49752 +       inline Port();
49753 +       inline Port(Element*, Element*, int);
49754 +       
49755 +       friend class Element;
49756 +    
49757 +    };
49758 +
49759 +    // DEPRECATED
49760 +    String id() const CLICK_DEPRECATED;
49761 +
49762 +    inline void set_ninputs(int) CLICK_ELEMENT_PORT_COUNT_DEPRECATED;
49763 +    inline void set_noutputs(int) CLICK_ELEMENT_PORT_COUNT_DEPRECATED;
49764 +    inline void add_input() CLICK_ELEMENT_PORT_COUNT_DEPRECATED;
49765 +    inline void add_output() CLICK_ELEMENT_PORT_COUNT_DEPRECATED;
49766 +    
49767 +    virtual bool run_task() CLICK_DEPRECATED;
49768 +    virtual void run_timer() CLICK_DEPRECATED;
49769 +    
49770 +  private:
49771 +
49772 +    enum { INLINE_PORTS = 4 };
49773 +
49774 +    Port* _ports[2];
49775 +    Port _inline_ports[INLINE_PORTS];
49776 +
49777 +    int _nports[2];
49778 +
49779 +    Router* _router;
49780 +    int _eindex;
49781 +
49782 +    Element(const Element &);
49783 +    Element &operator=(const Element &);
49784 +  
49785 +    // METHODS USED BY ROUTER
49786 +    inline void attach_router(Router* r, int n)        { _router = r; _eindex = n; }
49787 +    
49788 +    int set_nports(int, int);
49789 +    int notify_nports(int, int, ErrorHandler *);
49790 +    enum Processing { VAGNOSTIC, VPUSH, VPULL };
49791 +    static int next_processing_code(const char*& p, ErrorHandler* errh);
49792 +    void processing_vector(int* input_codes, int* output_codes, ErrorHandler*) const;
49793 +
49794 +    void initialize_ports(const int* input_codes, const int* output_codes);
49795 +    int connect_port(bool isoutput, int port, Element*, int);
49796 +    
49797 +    void add_default_handlers(bool writable_config);
49798 +
49799 +    friend class Router;
49800 +    
49801 +};
49802 +
49803 +
49804 +/** @brief Initialize static data for this element class.
49805 + *
49806 + * Elements that need to initialize global state, such as global hash tables
49807 + * or configuration parsing functions, should place that initialization code
49808 + * inside a static_initialize() static member function.  Click's build
49809 + * machinery will find that function and cause it to be called when the
49810 + * element code is loaded, before any elements of the class are created.
49811 + *
49812 + * static_initialize functions are called in an arbitrary and unpredictable
49813 + * order (not, for example, the configure_phase() order).  Element authors are
49814 + * responsible for handling static initialization dependencies.
49815 + *
49816 + * For Click to find a static_initialize declaration, it must appear inside
49817 + * the element class's class declaration on its own line and have the
49818 + * following prototype:
49819 + *
49820 + * @code
49821 + * static void static_initialize();
49822 + * @endcode
49823 + *
49824 + * It must also have public accessibility.
49825 + *
49826 + * @sa Element::static_cleanup
49827 + */
49828 +inline void
49829 +Element::static_initialize()
49830 +{
49831 +}
49832 +
49833 +/** @brief Clean up static data for this element class.
49834 + *
49835 + * Elements that need to free global state, such as global hash tables or
49836 + * configuration parsing functions, should place that code inside a
49837 + * static_cleanup() static member function.  Click's build machinery will find
49838 + * that function and cause it to be called when the element code is unloaded.
49839 + *
49840 + * static_cleanup functions are called in an arbitrary and unpredictable order
49841 + * (not, for example, the configure_phase() order, and not the reverse of the
49842 + * static_initialize order).  Element authors are responsible for handling
49843 + * static cleanup dependencies.
49844 + *
49845 + * For Click to find a static_cleanup declaration, it must appear inside the
49846 + * element class's class declaration on its own line and have the following
49847 + * prototype:
49848 + *
49849 + * @code
49850 + * static void static_cleanup();
49851 + * @endcode
49852 + *
49853 + * It must also have public accessibility.
49854 + *
49855 + * @sa Element::static_initialize
49856 + */
49857 +inline void
49858 +Element::static_cleanup()
49859 +{
49860 +}
49861 +
49862 +/** @brief Return the element's router. */
49863 +inline Router*
49864 +Element::router() const
49865 +{
49866 +    return _router;
49867 +}
49868 +
49869 +/** @brief Return the element's index within its router.
49870 + * @invariant this == router()->element(eindex())
49871 + */
49872 +inline int
49873 +Element::eindex() const
49874 +{
49875 +    return _eindex;
49876 +}
49877 +
49878 +/** @brief Return the element's index within router @a r.
49879 + * 
49880 + * Returns -1 if @a r != router(). */
49881 +inline int
49882 +Element::eindex(Router* r) const
49883 +{
49884 +    return (router() == r ? _eindex : -1);
49885 +}
49886 +
49887 +/** @brief Return the number of input or output ports.
49888 + * @param isoutput false for input ports, true for output ports */
49889 +inline int
49890 +Element::nports(bool isoutput) const
49891 +{
49892 +    return _nports[isoutput];
49893 +}
49894 +
49895 +/** @brief Return the number of input ports. */
49896 +inline int
49897 +Element::ninputs() const
49898 +{
49899 +    return _nports[0];
49900 +}
49901 +
49902 +/** @brief Return the number of output ports. */
49903 +inline int
49904 +Element::noutputs() const
49905 +{
49906 +    return _nports[1];
49907 +}
49908 +
49909 +/** @brief Sets the element's number of input ports (deprecated).
49910 + *
49911 + * @param ninputs number of input ports
49912 + *
49913 + * @deprecated The set_ninputs() function is deprecated.  Elements should
49914 + * instead use port_count() to define an acceptable range of input port
49915 + * counts.  Elements that called set_ninputs() from configure(), setting the
49916 + * number of input ports based on configuration arguments, should compare the
49917 + * desired number of ports to ninputs() and signal an error if they disagree.
49918 + *
49919 + * This function can be called from the constructor, notify_ninputs(),
49920 + * notify_noutputs(), or configure(), but not from initialize() or later.  */
49921 +inline void
49922 +Element::set_ninputs(int ninputs)
49923 +{
49924 +    set_nports(ninputs, _nports[1]);
49925 +}
49926 +
49927 +/** @brief Sets the element's number of output ports (deprecated).
49928 + *
49929 + * @param noutputs number of output ports
49930 + *
49931 + * @deprecated The set_noutputs() function is deprecated.  Elements should
49932 + * instead use port_count() to define an acceptable range of output port
49933 + * counts.  Elements that called set_noutputs() from configure(), setting the
49934 + * number of output ports based on configuration arguments, should compare the
49935 + * desired number of ports to noutputs() and signal an error if they disagree.
49936 + *
49937 + * This function can be called from the constructor, notify_ninputs(),
49938 + * notify_noutputs(), or configure(), but not from initialize() or later.  */
49939 +inline void
49940 +Element::set_noutputs(int noutputs)
49941 +{
49942 +    set_nports(_nports[0], noutputs);
49943 +}
49944 +
49945 +/** @brief Adds an input port (deprecated).
49946 + *
49947 + * @deprecated See the deprecation note at set_ninputs().
49948 + *
49949 + * An abbreviation for set_ninputs(ninputs() + 1).  Subject to the same
49950 + * restrictions as set_ninputs().
49951 + *
49952 + * @sa set_ninputs */
49953 +inline void
49954 +Element::add_input()
49955 +{
49956 +    set_nports(_nports[0] + 1, _nports[1]);
49957 +}
49958 +
49959 +/** @brief Adds an output port (deprecated).
49960 + *
49961 + * @deprecated See the deprecation note at set_noutputs().
49962 + *
49963 + * An abbreviation for set_noutputs(noutputs() + 1).  Subject to the same
49964 + * restrictions as set_noutputs().
49965 + *
49966 + * @sa set_noutputs */
49967 +inline void
49968 +Element::add_output()
49969 +{
49970 +    set_nports(_nports[0], _nports[1] + 1);
49971 +}
49972 +
49973 +/** @brief Return one of the element's ports.
49974 + * @param isoutput false for input ports, true for output ports
49975 + * @param port port number
49976 + *
49977 + * An assertion fails if @a p is out of range. */
49978 +inline const Element::Port&
49979 +Element::port(bool isoutput, int port) const
49980 +{
49981 +    assert((unsigned) port < (unsigned) _nports[isoutput]);
49982 +    return _ports[isoutput][port];
49983 +}
49984 +
49985 +/** @brief Return one of the element's input ports.
49986 + * @param port port number
49987 + *
49988 + * An assertion fails if @a port is out of range.
49989 + *
49990 + * @sa Port, port */
49991 +inline const Element::Port&
49992 +Element::input(int port) const
49993 +{
49994 +    return Element::port(false, port);
49995 +}
49996 +
49997 +/** @brief Return one of the element's output ports.
49998 + * @param port port number
49999 + *
50000 + * An assertion fails if @a port is out of range.
50001 + *
50002 + * @sa Port, port */
50003 +inline const Element::Port&
50004 +Element::output(int port) const
50005 +{
50006 +    return Element::port(true, port);
50007 +}
50008 +
50009 +/** @brief Check whether a port is active.
50010 + * @param isoutput false for input ports, true for output ports
50011 + * @param port port number
50012 + *
50013 + * Returns true iff @a port is in range and @a port is active.  Push outputs
50014 + * and pull inputs are active; pull outputs and push inputs are not.
50015 + *
50016 + * @sa Element::Port::active */
50017 +inline bool
50018 +Element::port_active(bool isoutput, int port) const
50019 +{
50020 +    return (unsigned) port < (unsigned) nports(isoutput)
50021 +       && _ports[isoutput][port].active();
50022 +}
50023 +
50024 +/** @brief Check whether output @a port is push.
50025 + *
50026 + * Returns true iff output @a port exists and is push.  @sa port_active */
50027 +inline bool
50028 +Element::output_is_push(int port) const
50029 +{
50030 +    return port_active(true, port);
50031 +}
50032 +
50033 +/** @brief Check whether output @a port is pull.
50034 + *
50035 + * Returns true iff output @a port exists and is pull. */
50036 +inline bool
50037 +Element::output_is_pull(int port) const
50038 +{
50039 +    return (unsigned) port < (unsigned) nports(true)
50040 +       && !_ports[1][port].active();
50041 +}
50042 +
50043 +/** @brief Check whether input @a port is pull.
50044 + *
50045 + * Returns true iff input @a port exists and is pull.  @sa port_active */
50046 +inline bool
50047 +Element::input_is_pull(int port) const
50048 +{
50049 +    return port_active(false, port);
50050 +}
50051 +
50052 +/** @brief Check whether input @a port is push.
50053 + *
50054 + * Returns true iff input @a port exists and is push. */
50055 +inline bool
50056 +Element::input_is_push(int port) const
50057 +{
50058 +    return (unsigned) port < (unsigned) nports(false)
50059 +       && !_ports[0][port].active();
50060 +}
50061 +
50062 +#if CLICK_STATS >= 2
50063 +# define PORT_CTOR_INIT(o) , _packets(0), _owner(o)
50064 +#else
50065 +# if CLICK_STATS >= 1
50066 +#  define PORT_CTOR_INIT(o) , _packets(0)
50067 +# else
50068 +#  define PORT_CTOR_INIT(o)
50069 +# endif
50070 +#endif
50071 +
50072 +inline
50073 +Element::Port::Port()
50074 +    : _e(0), _port(-2) PORT_CTOR_INIT(0)
50075 +{
50076 +}
50077 +
50078 +inline
50079 +Element::Port::Port(Element* owner, Element* e, int p)
50080 +    : _e(e), _port(p) PORT_CTOR_INIT(owner)
50081 +{
50082 +    (void) owner;
50083 +}
50084 +
50085 +/** @brief Returns whether this port is active (a push output or a pull input).
50086 + *
50087 + * @sa Element::port_active
50088 + */
50089 +inline bool
50090 +Element::Port::active() const
50091 +{
50092 +    return _port >= 0;
50093 +}
50094 +    
50095 +/** @brief Returns the element connected to this active port.
50096 + *
50097 + * Returns 0 if this port is not active(). */
50098 +inline Element*
50099 +Element::Port::element() const
50100 +{
50101 +    return _e;
50102 +}
50103 +
50104 +/** @brief Returns the port number of the port connected to this active port.
50105 + *
50106 + * Returns < 0 if this port is not active(). */
50107 +inline int
50108 +Element::Port::port() const
50109 +{
50110 +    return _port;
50111 +}
50112 +
50113 +/** @brief Push packet @a p over this port.
50114 + *
50115 + * Pushes packet @a p downstream through the router configuration by passing
50116 + * it to the next element's @link Element::push() push() @endlink function.
50117 + * Returns when the rest of the router finishes processing @a p.
50118 + *
50119 + * This port must be an active() push output port.  Usually called from
50120 + * element code like @link Element::output output(i) @endlink .push(p).
50121 + *
50122 + * When element code calls Element::Port::push(@a p), it relinquishes control
50123 + * of packet @a p.  When push() returns, @a p may have been altered or even
50124 + * freed by downstream elements.  Thus, you must not use @a p after pushing it
50125 + * downstream.  To push a copy and keep a copy, see Packet::clone().
50126 + *
50127 + * output(i).push(p) basically behaves like the following code, although it
50128 + * maintains additional statistics depending on how CLICK_STATS is defined:
50129 + *
50130 + * @code
50131 + * output(i).element()->push(output(i).port(), p);
50132 + * @endcode
50133 + */
50134 +inline void
50135 +Element::Port::push(Packet* p) const
50136 +{
50137 +    assert(_e);
50138 +#if CLICK_STATS >= 1
50139 +    _packets++;
50140 +#endif
50141 +#if CLICK_STATS >= 2
50142 +    _e->input(_port)._packets++;
50143 +    uint64_t c0 = click_get_cycles();
50144 +    _e->push(_port, p);
50145 +    uint64_t c1 = click_get_cycles();
50146 +    uint64_t x = c1 - c0;
50147 +    _e->_calls += 1;
50148 +    _e->_self_cycles += x;
50149 +    _owner->_child_cycles += x;
50150 +#else
50151 +    _e->push(_port, p);
50152 +#endif
50153 +}
50154 +
50155 +/** @brief Pull a packet over this port and return it.
50156 + *
50157 + * Pulls a packet from upstream in the router configuration by calling the
50158 + * previous element's @link Element::pull() pull() @endlink function.  When
50159 + * the router finishes processing, returns the result.
50160 + *
50161 + * This port must be an active() pull input port.  Usually called from element
50162 + * code like @link Element::input input(i) @endlink .pull().
50163 + *
50164 + * input(i).pull() basically behaves like the following code, although it
50165 + * maintains additional statistics depending on how CLICK_STATS is defined:
50166 + *
50167 + * @code
50168 + * input(i).element()->pull(input(i).port())
50169 + * @endcode
50170 + */
50171 +inline Packet*
50172 +Element::Port::pull() const
50173 +{
50174 +    assert(_e);
50175 +#if CLICK_STATS >= 2
50176 +    _e->output(_port)._packets++;
50177 +    uint64_t c0 = click_get_cycles();
50178 +    Packet *p = _e->pull(_port);
50179 +    uint64_t c1 = click_get_cycles();
50180 +    uint64_t x = c1 - c0;
50181 +    _e->_calls += 1;
50182 +    _e->_self_cycles += x;
50183 +    _owner->_child_cycles += x;
50184 +#else
50185 +    Packet* p = _e->pull(_port);
50186 +#endif
50187 +#if CLICK_STATS >= 1
50188 +    if (p)
50189 +       _packets++;
50190 +#endif
50191 +    return p;
50192 +}
50193 +
50194 +/** @brief Push packet @a p to output @a port, or kill it if @a port is out of
50195 + * range.
50196 + *
50197 + * @param port output port number
50198 + * @param p packet to push
50199 + *
50200 + * If @a port is in range (>= 0 and < noutputs()), then push packet @a p
50201 + * forward using output(@a port).push(@a p).  Otherwise, kill @a p with @a p
50202 + * ->kill().
50203 + *
50204 + * @note It is invalid to call checked_output_push() on a pull output @a port.
50205 + */
50206 +inline void
50207 +Element::checked_output_push(int port, Packet* p) const
50208 +{
50209 +    if ((unsigned) port < (unsigned) noutputs())
50210 +       _ports[1][port].push(p);
50211 +    else
50212 +       p->kill();
50213 +}
50214 +
50215 +#undef CONNECTION_CTOR_INIT
50216 +CLICK_ENDDECLS
50217 +#endif
50218 diff -Nurb click-1.6.0/inst/include/click/elemfilter.hh click-1.6.0-27/inst/include/click/elemfilter.hh
50219 --- click-1.6.0/inst/include/click/elemfilter.hh        1969-12-31 19:00:00.000000000 -0500
50220 +++ click-1.6.0-27/inst/include/click/elemfilter.hh     2009-02-05 10:20:41.000000000 -0500
50221 @@ -0,0 +1,54 @@
50222 +// -*- c-basic-offset: 4; related-file-name: "../../lib/elemfilter.cc" -*-
50223 +#ifndef CLICK_ELEMFILTER_HH
50224 +#define CLICK_ELEMFILTER_HH
50225 +#include <click/element.hh>
50226 +CLICK_DECLS
50227 +
50228 +class ElementFilter { public:
50229 +
50230 +    ElementFilter()                    { }
50231 +    virtual ~ElementFilter()           { }
50232 +
50233 +    inline bool match_input(Element*, int port);
50234 +    inline bool match_output(Element*, int port);
50235 +    inline bool match_port(Element*, bool isoutput, int port);
50236 +
50237 +    enum PortType { NONE = -1, INPUT = 0, OUTPUT = 1 };
50238 +    virtual bool check_match(Element* e, int port, PortType);
50239 +
50240 +    void filter(Vector<Element*>&);
50241 +
50242 +};
50243 +
50244 +class CastElementFilter : public ElementFilter { public:
50245 +
50246 +    CastElementFilter(const String&);
50247 +    bool check_match(Element*, int, PortType);
50248 +
50249 +  private:
50250 +
50251 +    String _what;
50252 +
50253 +};
50254 +
50255 +
50256 +inline bool
50257 +ElementFilter::match_input(Element* e, int port)
50258 +{
50259 +    return check_match(e, port, INPUT);
50260 +}
50261 +
50262 +inline bool
50263 +ElementFilter::match_output(Element* e, int port)
50264 +{
50265 +    return check_match(e, port, OUTPUT);
50266 +}
50267 +
50268 +inline bool
50269 +ElementFilter::match_port(Element* e, bool isoutput, int port)
50270 +{
50271 +    return check_match(e, port, (PortType) isoutput);
50272 +}
50273 +
50274 +CLICK_ENDDECLS
50275 +#endif
50276 diff -Nurb click-1.6.0/inst/include/click/error.hh click-1.6.0-27/inst/include/click/error.hh
50277 --- click-1.6.0/inst/include/click/error.hh     1969-12-31 19:00:00.000000000 -0500
50278 +++ click-1.6.0-27/inst/include/click/error.hh  2009-02-05 10:20:41.000000000 -0500
50279 @@ -0,0 +1,187 @@
50280 +// -*- c-basic-offset: 2; related-file-name: "../../lib/error.cc" -*-
50281 +#ifndef CLICK_ERROR_HH
50282 +#define CLICK_ERROR_HH
50283 +#include <click/string.hh>
50284 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
50285 +# include <stdio.h>
50286 +#endif
50287 +#include <stdarg.h>
50288 +#if HAVE_ADDRESSABLE_VA_LIST
50289 +# define VA_LIST_REF_T         va_list *
50290 +# define VA_LIST_DEREF(val)    (*(val))
50291 +# define VA_LIST_REF(val)      (&(val))
50292 +#else
50293 +# define VA_LIST_REF_T         va_list
50294 +# define VA_LIST_DEREF(val)    (val)
50295 +# define VA_LIST_REF(val)      (val)
50296 +#endif
50297 +CLICK_DECLS
50298 +
50299 +class ErrorHandler { public:
50300 +  
50301 +  enum Seriousness {
50302 +    ERRVERBOSITY_CONTEXT= 0x8000,
50303 +    ERRVERBOSITY_MAX   = 0xFFFF,
50304 +    ERRVERBOSITY_DEFAULT= ERRVERBOSITY_MAX,
50305 +    ERRVERBOSITY_MASK  = 0x0000FFFF,
50306 +    ERRVERBOSITY_SHIFT = 16,
50307 +
50308 +    ERR_MIN_DEBUG      = 0x00000000,
50309 +    ERR_MIN_MESSAGE    = 0x00010000,
50310 +    ERR_MIN_WARNING    = 0x00020000,
50311 +    ERR_MIN_ERROR      = 0x00030000,
50312 +    ERR_MIN_FATAL      = 0x00040000,
50313 +
50314 +    // fatal() with no explicit exit status exits with this status
50315 +    FATAL_EXITSTATUS   = 1,
50316 +    
50317 +    ERR_DEBUG          = ERR_MIN_DEBUG + ERRVERBOSITY_DEFAULT,
50318 +    ERR_CONTEXT_MESSAGE        = ERR_MIN_MESSAGE + ERRVERBOSITY_CONTEXT,
50319 +    ERR_MESSAGE                = ERR_MIN_MESSAGE + ERRVERBOSITY_DEFAULT,
50320 +    ERR_WARNING                = ERR_MIN_WARNING + ERRVERBOSITY_DEFAULT,
50321 +    ERR_CONTEXT_ERROR  = ERR_MIN_ERROR + ERRVERBOSITY_CONTEXT,
50322 +    ERR_ERROR          = ERR_MIN_ERROR + ERRVERBOSITY_DEFAULT,
50323 +    ERR_FATAL          = ERR_MIN_FATAL + ERRVERBOSITY_DEFAULT + (FATAL_EXITSTATUS << ERRVERBOSITY_SHIFT)
50324 +  };
50325 +  
50326 +  ErrorHandler()                       { }
50327 +  virtual ~ErrorHandler()              { }
50328 +  
50329 +  static ErrorHandler *static_initialize(ErrorHandler *errh); // returns errh
50330 +  static void static_cleanup();
50331 +
50332 +  static ErrorHandler *default_handler();
50333 +  static ErrorHandler *silent_handler();
50334
50335 +  static bool has_default_handler(); 
50336 +  static void set_default_handler(ErrorHandler *);
50337 +  
50338 +  virtual int nwarnings() const = 0;
50339 +  virtual int nerrors() const = 0;
50340 +  virtual void reset_counts() = 0;
50341 +  virtual int min_verbosity() const;
50342 +
50343 +  // seriousness < ERR_MIN_WARNING returns OK_RESULT, which is 0
50344 +  // seriousness >= ERR_MIN_WARNING returns ERROR_RESULT, which is -EINVAL
50345 +  static const int OK_RESULT;
50346 +  static const int ERROR_RESULT;
50347 +
50348 +  void debug(const char *format, ...);
50349 +  void message(const char *format, ...);
50350 +  int warning(const char *format, ...);
50351 +  int error(const char *format, ...);
50352 +  int fatal(const char *format, ...);
50353 +
50354 +  void ldebug(const String &landmark, const char *format, ...);
50355 +  void lmessage(const String &landmark, const char *format, ...);
50356 +  int lwarning(const String &landmark, const char *format, ...);
50357 +  int lerror(const String &landmark, const char *format, ...);
50358 +  int lfatal(const String &landmark, const char *format, ...);
50359 +
50360 +  int verror(Seriousness, const String &landmark, const char *format, va_list);
50361 +  int verror_text(Seriousness, const String &landmark, const String &text);
50362 +  
50363 +  String make_text(Seriousness, const char *, ...);
50364 +  virtual String make_text(Seriousness, const char *, va_list);
50365 +  virtual String decorate_text(Seriousness, const String &, const String &);
50366 +  virtual void handle_text(Seriousness, const String &) = 0;
50367 +  virtual int count_error(Seriousness, const String &) = 0;
50368 +
50369 +  virtual void set_error_code(int);
50370 +
50371 +  static String prepend_lines(const String &prefix, const String &text);
50372 +
50373 +  // error conversions
50374 +  struct Conversion;
50375 +  typedef String (*ConversionHook)(int flags, VA_LIST_REF_T);
50376 +  enum ConversionFlags {
50377 +    ZERO_PAD = 1, PLUS_POSITIVE = 2, SPACE_POSITIVE = 4, LEFT_JUST = 8,
50378 +    ALTERNATE_FORM = 16, UPPERCASE = 32, SIGNED = 64, NEGATIVE = 128
50379 +  };
50380 +  static Conversion *add_conversion(const String &, ConversionHook);
50381 +  static int remove_conversion(Conversion *);
50382 +  
50383 +};
50384 +
50385 +class BaseErrorHandler : public ErrorHandler { public:
50386 +  BaseErrorHandler()                   : _nwarnings(0), _nerrors(0) { }
50387 +  int nwarnings() const                        { return _nwarnings; }
50388 +  int nerrors() const                  { return _nerrors; }
50389 +  void reset_counts()                  { _nwarnings = _nerrors = 0; }
50390 +  int count_error(Seriousness, const String &);
50391 + private:
50392 +  int _nwarnings, _nerrors;
50393 +};
50394 +
50395 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
50396 +class FileErrorHandler : public BaseErrorHandler { public:
50397 +  FileErrorHandler(FILE *, const String & = String());
50398 +  void handle_text(Seriousness, const String &);
50399 + private:
50400 +  FILE *_f;
50401 +  String _context;
50402 +};
50403 +#endif
50404 +
50405 +class ErrorVeneer : public ErrorHandler { public:
50406 +
50407 +  ErrorVeneer(ErrorHandler *errh)      : _errh(errh) { }
50408 +
50409 +  int nwarnings() const;
50410 +  int nerrors() const;
50411 +  void reset_counts();
50412 +
50413 +  String make_text(Seriousness, const char *, va_list);
50414 +  String decorate_text(Seriousness, const String &, const String &);
50415 +  void handle_text(Seriousness, const String &);
50416 +  int count_error(Seriousness, const String &);
50417 +
50418 + protected:
50419 +
50420 +  ErrorHandler *_errh;
50421
50422 +};
50423 +
50424 +class ContextErrorHandler : public ErrorVeneer { public:
50425 +  ContextErrorHandler(ErrorHandler *, const String &context, const String &indent = "  ", const String &context_landmark = "");
50426 +  String decorate_text(Seriousness, const String &, const String &);
50427 + private:
50428 +  String _context;
50429 +  String _indent;
50430 +  String _context_landmark;
50431 +};
50432 +
50433 +class PrefixErrorHandler : public ErrorVeneer { public:
50434 +  PrefixErrorHandler(ErrorHandler *, const String &prefix);
50435 +  String decorate_text(Seriousness, const String &, const String &);
50436 + private:
50437 +  String _prefix;
50438 +};
50439 +
50440 +class LandmarkErrorHandler : public ErrorVeneer { public:
50441 +  LandmarkErrorHandler(ErrorHandler *, const String &);
50442 +  void set_landmark(const String &s)   { _landmark = s; }
50443 +  String decorate_text(Seriousness, const String &, const String &);
50444 + private:
50445 +  String _landmark;
50446 +};
50447 +
50448 +class VerboseFilterErrorHandler : public ErrorVeneer { public:
50449 +  VerboseFilterErrorHandler(ErrorHandler *, int min_verbosity);
50450 +  int min_verbosity() const;
50451 +  void handle_text(Seriousness, const String &);
50452 + private:
50453 +  int _min_verbosity;
50454 +};
50455 +
50456 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
50457 +class BailErrorHandler : public ErrorVeneer { public:
50458 +  BailErrorHandler(ErrorHandler *, Seriousness = ERR_MIN_ERROR);
50459 +  void handle_text(Seriousness, const String &);
50460 + private:
50461 +  int _exit_seriousness;
50462 +};
50463 +#endif
50464 +
50465 +CLICK_ENDDECLS
50466 +#endif
50467 diff -Nurb click-1.6.0/inst/include/click/etheraddress.hh click-1.6.0-27/inst/include/click/etheraddress.hh
50468 --- click-1.6.0/inst/include/click/etheraddress.hh      1969-12-31 19:00:00.000000000 -0500
50469 +++ click-1.6.0-27/inst/include/click/etheraddress.hh   2009-02-05 10:20:41.000000000 -0500
50470 @@ -0,0 +1,137 @@
50471 +// -*- related-file-name: "../../lib/etheraddress.cc" -*-
50472 +#ifndef CLICK_ETHERADDRESS_HH
50473 +#define CLICK_ETHERADDRESS_HH
50474 +#include <click/string.hh>
50475 +#include <click/glue.hh>
50476 +CLICK_DECLS
50477 +
50478 +class EtherAddress { public:
50479 +  
50480 +    inline EtherAddress();
50481 +    explicit EtherAddress(const unsigned char *data);
50482 +
50483 +    typedef bool (EtherAddress::*unspecified_bool_type)() const;
50484 +    inline operator unspecified_bool_type() const;
50485 +    inline bool is_group() const;
50486 +    
50487 +    inline unsigned char *data();
50488 +    inline const unsigned char *data() const;
50489 +    inline const uint16_t *sdata() const;
50490 +
50491 +    inline size_t hashcode() const;
50492 +    
50493 +    // bool operator==(EtherAddress, EtherAddress);
50494 +    // bool operator!=(EtherAddress, EtherAddress);
50495 +
50496 +    String unparse() const;
50497 +
50498 +    inline operator String() const;
50499 +    inline String s() const;
50500 +  
50501 + private:
50502 +  
50503 +    uint16_t _data[3];
50504 +  
50505 +};
50506 +
50507 +/** @brief Constructs an EtherAddress equal to 00:00:00:00:00:00. */
50508 +inline
50509 +EtherAddress::EtherAddress()
50510 +{
50511 +    _data[0] = _data[1] = _data[2] = 0;
50512 +}
50513 +
50514 +/** @brief Constructs an EtherAddress from data.
50515 +    @param data the address data, in network byte order
50516 +
50517 +    The bytes data[0]...data[5] are used to construct the address. */
50518 +inline
50519 +EtherAddress::EtherAddress(const unsigned char *data)
50520 +{
50521 +    memcpy(_data, data, 6);
50522 +}
50523 +
50524 +/** @brief Returns true iff the address is not 00:00:00:00:00:00. */
50525 +inline
50526 +EtherAddress::operator unspecified_bool_type() const
50527 +{
50528 +    return _data[0] || _data[1] || _data[2] ? &EtherAddress::is_group : 0;
50529 +}
50530 +
50531 +/** @brief Returns true iff this address is a group address.
50532 +
50533 +    Group addresses have the low-order bit of the first byte set to 1, as in
50534 +    01:00:00:00:00:00. */
50535 +inline bool
50536 +EtherAddress::is_group() const
50537 +{
50538 +    return data()[0] & 1;
50539 +}
50540 +
50541 +/** @brief Returns a pointer to the address data. */
50542 +inline const unsigned char *
50543 +EtherAddress::data() const
50544 +{
50545 +    return reinterpret_cast<const unsigned char *>(_data);
50546 +}
50547 +
50548 +/** @brief Returns a pointer to the address data. */
50549 +inline unsigned char *
50550 +EtherAddress::data()
50551 +{
50552 +    return reinterpret_cast<unsigned char *>(_data);
50553 +}
50554 +
50555 +/** @brief Returns a pointer to the address data, as an array of uint16_ts. */
50556 +inline const uint16_t *
50557 +EtherAddress::sdata() const
50558 +{
50559 +    return _data;
50560 +}
50561 +
50562 +/** @brief Unparses this address into a colon-separated hex String.
50563 +    @sa unparse */
50564 +inline
50565 +EtherAddress::operator String() const
50566 +{
50567 +    return unparse();
50568 +}
50569 +
50570 +/** @brief Unparses this address into a colon-separated hex String.
50571 +    @sa unparse */
50572 +inline String
50573 +EtherAddress::s() const
50574 +{
50575 +    return unparse();
50576 +}
50577 +
50578 +/** @relates EtherAddress
50579 +    @brief Compares two EtherAddress objects for equality. */
50580 +inline bool
50581 +operator==(const EtherAddress &a, const EtherAddress &b)
50582 +{
50583 +    return (a.sdata()[0] == b.sdata()[0]
50584 +           && a.sdata()[1] == b.sdata()[1]
50585 +           && a.sdata()[2] == b.sdata()[2]);
50586 +}
50587 +
50588 +/** @relates EtherAddress
50589 +    @brief Compares two EtherAddress objects for inequality. */
50590 +inline bool
50591 +operator!=(const EtherAddress &a, const EtherAddress &b)
50592 +{
50593 +    return !(a == b);
50594 +}
50595 +
50596 +class StringAccum;
50597 +StringAccum &operator<<(StringAccum &, const EtherAddress &);
50598 +
50599 +inline size_t
50600 +EtherAddress::hashcode() const
50601 +{
50602 +    const uint16_t *d = sdata();
50603 +    return (d[2] | (d[1] << 16)) ^ (d[0] << 9);
50604 +}
50605 +
50606 +CLICK_ENDDECLS
50607 +#endif
50608 diff -Nurb click-1.6.0/inst/include/click/ewma.hh click-1.6.0-27/inst/include/click/ewma.hh
50609 --- click-1.6.0/inst/include/click/ewma.hh      1969-12-31 19:00:00.000000000 -0500
50610 +++ click-1.6.0-27/inst/include/click/ewma.hh   2009-02-05 10:20:41.000000000 -0500
50611 @@ -0,0 +1,488 @@
50612 +#ifndef CLICK_EWMA_HH
50613 +#define CLICK_EWMA_HH
50614 +#include <click/glue.hh>
50615 +#include <click/confparse.hh>
50616 +CLICK_DECLS
50617 +
50618 +/** @file <click/ewma.hh>
50619 + *  @brief  Click's classes for supporting exponentially weighted moving
50620 + *  averages.
50621 + */
50622 +
50623 +/** @class DirectEWMAX include/click/ewma.hh <click/ewma.hh>
50624 + *  @brief  An exponentially weighted moving average.
50625 + *
50626 + *  The DirectEWMAX template class represents a simple exponentially weighted
50627 + *  moving average.  The average starts out with value 0.  The update()
50628 + *  function adds a new observation to the average.
50629 + *
50630 + *  The template parameter P defines three EWMA parameters: value type,
50631 + *  stability shift, and scale factor.
50632 + *
50633 + *  The value type is simply the unsigned integral type used to store the
50634 + *  average.  It is also the type of each observation.  <code>unsigned</code>
50635 + *  and <code>uint64_t</code> are examples.
50636 + *
50637 + *  The stability shift specifies alpha, the stability parameter.  Concretely,
50638 + *  alpha = 1. / (2 ** stability_shift).  Thus, a stability shift of 4
50639 + *  corresponds to an alpha of 1/16.
50640 + *
50641 + *  The scaling factor specifies how many bits of fraction are kept per
50642 + *  observation.  Fraction bits are necessary to account for small differences
50643 + *  between observations.  For example, consider a EWMA with value 0, alpha
50644 + *  1/16, and 0 bits of fraction.  Assume the EWMA begins to observe a stream
50645 + *  of observations equal to 1.  Despite these observations, the EWMA's value
50646 + *  will never change from 0, since the 1/16 alpha factor rounds the new
50647 + *  observations down to 0.  At least 4 bits of fraction are required to
50648 + *  account for this difference.  There is a tradeoff: the more bits of
50649 + *  fraction, the more precise the EWMA, but the less bits available to
50650 + *  account for large values.
50651 + *
50652 + *  These EWMA parameters are defined by five of P's members, two typedefs and
50653 + *  three possibly static member functions.
50654 + *
50655 + *  <dl>
50656 + *  <dt><strong>P::value_type</strong></dt>
50657 + *  <dd>The EWMA's value type.  Example: <code>unsigned</code>.</dd>
50658 + *
50659 + *  <dt><strong>P::signed_value_type</strong></dt>
50660 + *  <dd>The signed version of <code>P::value_type</code>.  Used internally.
50661 + *  Example: <code>int</code>.</dd>
50662 + *
50663 + *  <dt><strong>unsigned P::stability_shift()</strong></dt>
50664 + *  <dd>This function should return this EWMA's stability shift
50665 + *  (see below).</dd>
50666 + *
50667 + *  <dt><strong>unsigned P::scale()</strong></dt>
50668 + *  <dd>This function should return this EWMA's scaling factor
50669 + *  (see below).</dd>
50670 + *
50671 + *  <dt><strong>unsigned P::compensation()</strong></dt>
50672 + *  <dd>This function should return this EWMA's stability compensation,
50673 + *  which normally equals 1 @<@< (stability_shift - 1).</dd>
50674 + *  </dl>
50675 + *
50676 + *  Since DirectEWMAX inherits from an object of type P, these members are
50677 + *  also directly available to callers.
50678 + *
50679 + *  The FixedEWMAXParameters and StabilityEWMAXParameters types are good
50680 + *  template arguments for DirectEWMAX.
50681 + *
50682 + *  @sa RateEWMAX
50683 + */
50684 +template <typename P>
50685 +class DirectEWMAX : public P { public:
50686 +
50687 +    typedef typename P::value_type value_type;
50688 +    
50689 +    /** @brief  Create a EWMA with initial value 0. */
50690 +    DirectEWMAX()
50691 +       : _avg(0) {
50692 +    }
50693 +
50694 +    /** @brief  Return the current scaled moving average.
50695 +     *  @note   The returned value has scale() bits of fraction. */
50696 +    value_type scaled_average() const {
50697 +       return _avg;
50698 +    }
50699 +
50700 +    /** @brief  Return the current moving average.
50701 +     *  @note   The returned value is unscaled. */
50702 +    value_type unscaled_average() const {
50703 +       return (_avg + P::compensation()) >> P::scale();
50704 +    }
50705 +
50706 +    /** @brief  Reset the EWMA to value 0. */
50707 +    void clear() {
50708 +       _avg = 0;
50709 +    }
50710 +
50711 +    /** @brief  Update the moving average with a new observation.
50712 +     *  @param  value  the observation (unscaled) */
50713 +    inline void update(value_type value);
50714 +
50715 +    /** @brief  Update the moving average with @a count identical observations.
50716 +     *  @param  value  the observation (unscaled)
50717 +     *  @param  count  number of observations
50718 +     *  @note   This may be faster than calling update(@a value) @a count
50719 +     *  times. */
50720 +    void update_n(value_type value, unsigned count);
50721 +
50722 +    /** @brief  Unparse the current average into a String.
50723 +     *  @note   The returned value is unscaled, but may contain a fractional
50724 +     *  part. */
50725 +    String unparse() const;
50726 +
50727 +    /** @brief  Update the moving average with a new observation (deprecated).
50728 +     *  @param  value  the observation (unscaled)
50729 +     *  @deprecated  Use update() instead. */
50730 +    inline void update_with(value_type value) CLICK_DEPRECATED {
50731 +       update(value);
50732 +    }
50733 +
50734 +  private:
50735 +  
50736 +    value_type _avg;
50737 +  
50738 +};
50739 +
50740 +template <typename P>
50741 +inline void
50742 +DirectEWMAX<P>::update(value_type val)
50743 +{
50744 +    value_type val_scaled = (val << P::scale()) + P::compensation();
50745 +    unsigned stability = P::stability_shift();
50746 +#if HAVE_ARITHMETIC_RIGHT_SHIFT
50747 +    _avg += static_cast<typename P::signed_value_type>(val_scaled - _avg) >> stability;
50748 +#else
50749 +    if (val_scaled < _avg)
50750 +       _avg -= (_avg - val_scaled) >> stability;
50751 +    else
50752 +       _avg += (val_scaled - _avg) >> stability;
50753 +#endif
50754 +}
50755 +
50756 +template <typename P>
50757 +void
50758 +DirectEWMAX<P>::update_n(value_type value, unsigned count)
50759 +{
50760 +    // XXX use table lookup
50761 +    value_type val_scaled = value << P::scale();
50762 +    if (count >= 100)
50763 +       _avg = val_scaled;
50764 +    else {
50765 +       val_scaled += P::compensation();
50766 +       unsigned stability = P::stability_shift();
50767 +#if HAVE_ARITHMETIC_RIGHT_SHIFT
50768 +       for (; count > 0; count--)
50769 +           _avg += static_cast<typename P::signed_value_type>(val_scaled - _avg) >> stability;
50770 +#else
50771 +       if (val_scaled < _avg)
50772 +           for (; count > 0; count--)
50773 +               _avg -= (_avg - val_scaled) >> stability;
50774 +       else
50775 +           for (; count > 0; count--)
50776 +               _avg += (val_scaled - _avg) >> stability;
50777 +#endif
50778 +    }
50779 +}
50780 +
50781 +template <typename P>
50782 +inline String
50783 +DirectEWMAX<P>::unparse() const
50784 +{
50785 +    return cp_unparse_real2(scaled_average(), P::scale());
50786 +}
50787 +
50788 +/** @class FixedEWMAXParameters include/click/ewma.hh <click/ewma.hh>
50789 + *  @brief  Parameters for a EWMA with constant scaling factor and stability
50790 + *  shift.
50791 + *
50792 + *  The FixedEWMAXParameters template class is used as a template argument to
50793 + *  DirectEWMAX.  It defines a EWMA with fixed constant scaling factor and
50794 + *  stability shift.  FixedEWMAXParameters's first template argument is the
50795 + *  EWMA's stability shift, its second template argument is the EWMA's scaling
50796 + *  factor, its third template argument is the EWMA's value type, and the
50797 + *  fourth template argument is the EWMA's signed value type.
50798 + *
50799 + *  Example 1: <code>DirectEWMAX@<FixedEWMAXParameters@<4, 10, unsigned, int@>
50800 + *  @></code> defines a EWMA with alpha 1/16 (stability shift 4), scaling
50801 + *  factor 10, and value type unsigned.  (These are the default parameters
50802 + *  available in the DirectEWMA typedef.)
50803 + *
50804 + *  Example 2: <code>DirectEWMAX@<FixedEWMAXParameters@<3, 10, uint64_t,
50805 + *  int64_t@> @></code> defines a EWMA with alpha 1/8 (stability shift 3),
50806 + *  scaling factor 10, and value type uint64_t.
50807 + */
50808 +template <unsigned STABILITY, unsigned SCALE, typename T = unsigned, typename U = int>
50809 +class FixedEWMAXParameters { public:
50810 +
50811 +    typedef T value_type;
50812 +    typedef U signed_value_type;
50813 +
50814 +    /** @brief  Returns this EWMA's stability shift.
50815 +     *  @return  the 1st template parameter */
50816 +    static unsigned stability_shift() {
50817 +       return STABILITY;
50818 +    }
50819 +
50820 +    /** @brief  Returns this EWMA's scaling factor (bits of fraction).
50821 +     *  @return  the 2nd template parameter */
50822 +    static unsigned scale() {
50823 +       return SCALE;
50824 +    }
50825 +
50826 +    /** @brief  Returns this EWMA's compensation.
50827 +     *  @return  1 << (stability_shift() - 1) */
50828 +    static unsigned compensation() {
50829 +       return 1 << (STABILITY - 1);
50830 +    }
50831 +    
50832 +};
50833 +
50834 +/** @brief A DirectEWMAX with stability shift 4 (alpha 1/16), scaling factor
50835 + *  10 (10 bits of fraction), and underlying type <code>unsigned</code>. */
50836 +typedef DirectEWMAX<FixedEWMAXParameters<4, 10> > DirectEWMA;
50837 +
50838 +/** @brief A DirectEWMAX with stability shift 3 (alpha 1/8), scaling factor
50839 + *  10 (10 bits of fraction), and underlying type <code>unsigned</code>. */
50840 +typedef DirectEWMAX<FixedEWMAXParameters<3, 10> > FastDirectEWMA;
50841 +
50842 +
50843 +/** @class StabilityEWMAXParameters include/click/ewma.hh <click/ewma.hh>
50844 + *  @brief  Parameters for a EWMA with constant scaling factor
50845 + *         and user-settable alpha.
50846 + *
50847 + *  The StabilityEWMAXParameters template class is used as a template argument
50848 + *  to DirectEWMAX.  It defines a EWMA with fixed constant scaling factor.
50849 + *  StabilityEWMAXParameters's first template argument is the EWMA's scaling
50850 + *  factor, its second template argument is the EWMA's value type, and the
50851 + *  third template argument is the EWMA's signed value type.
50852 + *
50853 + *  Example: <code>DirectEWMAX@<StabilityEWMAXParameters@<10, unsigned, int@>
50854 + *  @></code> defines a EWMA with user-settable alpha (stability shift)
50855 + *  initially equal to 1/16, scaling factor 10, and value type unsigned.
50856 + *
50857 + *  A <code>DirectEWMAX@<StabilityEWMAXParameters@<...@> @></code> object has
50858 + *  stability_shift() and set_stability_shift() methods.
50859 + */
50860 +template <unsigned SCALE, typename T = unsigned, typename U = int>
50861 +class StabilityEWMAXParameters { public:
50862 +
50863 +    typedef T value_type;
50864 +    typedef U signed_value_type;
50865 +
50866 +    /** @brief  Create a StabilityEWMAXParameters with initial alpha 1/16. */
50867 +    StabilityEWMAXParameters()
50868 +       : _stability(4) {
50869 +    }
50870 +
50871 +    /** @brief  Return the current stability shift.
50872 +     *
50873 +     *  The current alpha equals 1. / (2 ** stability_shift()). */
50874 +    unsigned stability_shift() const {
50875 +       return _stability;
50876 +    }
50877 +
50878 +    /** @brief  Set the current stability shift.
50879 +     *  @param  stability_shift  new value */
50880 +    void set_stability_shift(unsigned stability_shift) {
50881 +       _stability = stability_shift;
50882 +    }
50883 +    
50884 +    /** @brief  Returns this EWMA's scaling factor (bits of fraction).
50885 +     *  @return  the 1st template parameter */
50886 +    static unsigned scale() {
50887 +       return SCALE;
50888 +    }
50889 +
50890 +    /** @brief  Returns this EWMA's compensation.
50891 +     *  @return  1 << (stability_shift() - 1) */
50892 +    unsigned compensation() const {
50893 +       return 1 << (stability_shift() - 1);
50894 +    }
50895 +
50896 +  private:
50897 +
50898 +    unsigned _stability;
50899 +    
50900 +};
50901 +
50902 +
50903 +
50904 +/** @class RateEWMAX include/click/ewma.hh <click/ewma.hh>
50905 + *  @brief  An exponentially weighted moving average used to measure a rate.
50906 + *
50907 + *  The RateEWMAX template class represents an exponentially weighted moving
50908 + *  average that measures a <em>rate</em>: a value that changes over time.
50909 + *  The average starts out with value 0.
50910 + *
50911 + *  RateEWMAX adds to DirectEWMAX a concept of epochs, which are periods of
50912 + *  time.  A RateEWMAX object collects samples over the current epoch.  When
50913 + *  the epoch closes, the collected sample count is used to update the moving
50914 + *  average.  Thus, the moving average is measured in samples per epoch.  The
50915 + *  rate() and unparse_rate() member functions return the rate in samples per
50916 + *  <em>second</em>, rather than per epoch.
50917 + *
50918 + *  Note that it often makes sense to call update() before calling
50919 + *  scaled_average(), rate(), or unparse_rate(), in case an epoch or two has
50920 + *  passed and the average should take account of passing time.
50921 + *
50922 + *  The template parameter P defines the EWMA parameters required by
50923 + *  DirectEWMAX, and three others: a rate count, an epoch measurement, and an
50924 + *  epoch frequency.
50925 + *
50926 + *  The rate count is the number of rates measured per object.  Usually it is
50927 + *  1.
50928 + *
50929 + *  The epoch measurement is a function that returns the current epoch as an
50930 + *  unsigned number.  Epochs should increase monotonically.
50931 + *
50932 + *  The epoch frequency is the number of epochs per second, and is only used
50933 + *  by rate() and unparse_rate().
50934 + *
50935 + *  These are defined by:
50936 + *
50937 + *  <dl>
50938 + *  <dt><strong>P::rate_count</strong></dt>
50939 + *  <dd>The rate count, as a static constant (for example, defined by an
50940 + *  enum).</dd>
50941 + *
50942 + *  <dt><strong>unsigned P::epoch()</strong></dt>
50943 + *  <dd>This function returns the current epoch number.</dd>
50944 + *
50945 + *  <dt><strong>unsigned P::epoch_frequency()</strong></dt>
50946 + *  <dd>This function returns the number of epochs per second.</dd>
50947 + *  </dl>
50948 + *
50949 + *  Since RateEWMAX inherits from an object of type P, these members are
50950 + *  also directly available to callers.
50951 + *
50952 + *  The RateEWMAXParameters type is a good template argument for DirectEWMAX.
50953 + *
50954 + *  @sa RateEWMAX
50955 + */
50956 +template <typename P>
50957 +class RateEWMAX : public P { public:
50958 +
50959 +    typedef typename P::value_type value_type;
50960 +    typedef typename P::signed_value_type signed_value_type;
50961 +
50962 +    /** @brief  Create a rate EWMA with initial value(s) 0. */
50963 +    RateEWMAX() {
50964 +       _current_epoch = P::epoch();
50965 +       for (unsigned i = 0; i < P::rate_count; i++)
50966 +           _current[i] = 0;
50967 +    }
50968 +
50969 +    /** @brief  Return the current scaled moving average.
50970 +     *  @param  ratenum  rate index (0 <= ratenum < rate_count)
50971 +     *  @note   The returned value has scale() bits of fraction.
50972 +     *  @note   scaled_average() does not check the current epoch.
50973 +     *         If an epoch might have passed since the last update(), you
50974 +     *         should call update(0, @a ratenum) before calling this
50975 +     *         function. */
50976 +    signed_value_type scaled_average(unsigned ratenum = 0) const {
50977 +       // note: return type must be signed!
50978 +       return _avg[ratenum].scaled_average();
50979 +    }
50980 +    
50981 +    /** @brief  Return the current rate in samples per second.
50982 +     *  @param  ratenum  rate index (0 <= ratenum < rate_count)
50983 +     *  @note   The returned value is unscaled.
50984 +     *  @note   rate() does not check the current epoch.
50985 +     *         If an epoch might have passed since the last update(), you
50986 +     *         should call update(0, @a ratenum) before calling this
50987 +     *         function. */
50988 +    inline int rate(unsigned ratenum = 0) const;
50989
50990 +    /** @brief  Update the sample count for the current epoch.
50991 +     *  @param  delta    increment for current epoch sample count
50992 +     *  @param  ratenum  rate index (0 <= ratenum < rate_count)
50993 +     *  @note   If the epoch has changed since the last update(),
50994 +     *         this function applies the last epoch's sample count (if any)
50995 +     *         to the relevant moving average, accounts for any passage of
50996 +     *         time (in case one or more epochs have passed with no samples),
50997 +     *         and clears the sample count for the new epoch. */
50998 +    inline void update(signed_value_type delta, unsigned ratenum = 0);
50999 +
51000 +    /** @brief  Unparse the current average into a String.
51001 +     *  @param  ratenum  rate index (0 <= ratenum < rate_count)
51002 +     *  @note   The returned value is unscaled, but may contain a fractional
51003 +     *  part.
51004 +     *  @note   unparse_rate() does not check the current epoch.
51005 +     *         If an epoch might have passed since the last update(), you
51006 +     *         should call update(0, @a ratenum) before calling this
51007 +     *         function. */
51008 +    String unparse_rate(unsigned ratenum = 0) const;
51009 +  
51010 +  private:
51011 +  
51012 +    unsigned _current_epoch;
51013 +    value_type _current[P::rate_count];
51014 +    DirectEWMAX<P> _avg[P::rate_count];
51015 +  
51016 +    inline void update_time(unsigned now);
51017 +    
51018 +};
51019 +
51020 +/** @class RateEWMAXParameters include/click/ewma.hh <click/ewma.hh>
51021 + *  @brief  Parameters for a RateEWMA with constant scaling factor
51022 + *         and alpha, one rate count, and epochs of jiffies.
51023 + *
51024 + *  The RateEWMAXParameters template class is used as a template argument
51025 + *  to RateEWMAX.  It defines a EWMA with fixed constant scaling factor and
51026 + *  alpha and one rate count.  The EWMA uses jiffies as epochs.  Template
51027 + *  parameters are as for DirectEWMAXParameters.
51028 + *
51029 + *  Example: <code>RateEWMAX@<RateEWMAXParameters@<4, 10, unsigned, int@>
51030 + *  @></code> defines a rate EWMA with user-settable alpha (stability shift)
51031 + *  initially equal to 1/16, scaling factor 10, and value type unsigned.
51032 + */
51033 +template <unsigned STABILITY, unsigned SCALE, typename T = unsigned, typename U = int>
51034 +class RateEWMAXParameters : public FixedEWMAXParameters<STABILITY, SCALE, T, U> { public:
51035 +    enum {
51036 +       rate_count = 1
51037 +    };
51038 +
51039 +    /** @brief  Return the current epoch number.
51040 +     *  @note   RateEWMAXParameters measures epochs in jiffies. */
51041 +    static unsigned epoch() {
51042 +       return click_jiffies();
51043 +    }
51044 +
51045 +    /** @brief  Return the number of epochs (jiffies) per second. */
51046 +    static unsigned epoch_frequency() {
51047 +       return CLICK_HZ;
51048 +    }
51049 +};
51050 +
51051 +/** @brief A RateEWMAX with stability shift 4 (alpha 1/16), scaling factor 10
51052 + *  (10 bits of fraction), one rate, and underlying type <code>unsigned</code>
51053 + *  that measures epochs in jiffies. */
51054 +typedef RateEWMAX<RateEWMAXParameters<4, 10> > RateEWMA;
51055 +
51056 +
51057 +template <typename P>
51058 +inline void
51059 +RateEWMAX<P>::update_time(unsigned now)
51060 +{
51061 +    unsigned jj = _current_epoch;
51062 +    if (now != jj) {
51063 +       for (unsigned i = 0; i < P::rate_count; i++) {
51064 +           // adjust the average rate using the last measured packets
51065 +           _avg[i].update(_current[i]);
51066 +
51067 +           // adjust for time w/ no packets
51068 +           if (jj + 1 != now)
51069 +               _avg[i].update_n(0, now - jj - 1);
51070 +           _current[i] = 0;
51071 +       }
51072 +       _current_epoch = now;
51073 +    }
51074 +}
51075 +
51076 +template <typename P>
51077 +inline void
51078 +RateEWMAX<P>::update(signed_value_type delta, unsigned ratenum)
51079 +{
51080 +    update_time(P::epoch());
51081 +    _current[ratenum] += delta;
51082 +}
51083 +
51084 +template <typename P>
51085 +inline int
51086 +RateEWMAX<P>::rate(unsigned ratenum) const
51087 +{
51088 +    return (scaled_average(ratenum) * P::epoch_frequency()) >> _avg[ratenum].scale();
51089 +}
51090 +
51091 +template <typename P>
51092 +inline String
51093 +RateEWMAX<P>::unparse_rate(unsigned ratenum) const
51094 +{
51095 +    return cp_unparse_real2(scaled_average(ratenum) * P::epoch_frequency(), _avg[ratenum].scale());
51096 +}
51097 +
51098 +CLICK_ENDDECLS
51099 +#endif
51100 diff -Nurb click-1.6.0/inst/include/click/fixconfig.h click-1.6.0-27/inst/include/click/fixconfig.h
51101 --- click-1.6.0/inst/include/click/fixconfig.h  1969-12-31 19:00:00.000000000 -0500
51102 +++ click-1.6.0-27/inst/include/click/fixconfig.h       2009-02-05 10:20:41.000000000 -0500
51103 @@ -0,0 +1,13 @@
51104 +#ifndef CLICK_FIXCONFIG_H
51105 +#define CLICK_FIXCONFIG_H 1
51106 +
51107 +#if CLICK_LINUXMODULE && HAVE_LINUX_ASM_ALTERNATIVE_H
51108 +// The .smp_locks section and C++-style weak linkage interact badly.
51109 +# if CONFIG_SMP && (defined(__i386__) || defined(__x86_64__))
51110 +#  include <asm/alternative.h>
51111 +#  undef LOCK_PREFIX
51112 +#  define LOCK_PREFIX "lock ; "
51113 +# endif
51114 +#endif
51115 +
51116 +#endif
51117 diff -Nurb click-1.6.0/inst/include/click/gaprate.hh click-1.6.0-27/inst/include/click/gaprate.hh
51118 --- click-1.6.0/inst/include/click/gaprate.hh   1969-12-31 19:00:00.000000000 -0500
51119 +++ click-1.6.0-27/inst/include/click/gaprate.hh        2009-02-05 10:20:41.000000000 -0500
51120 @@ -0,0 +1,96 @@
51121 +// -*- c-basic-offset: 4; related-file-name: "../../lib/gaprate.cc" -*-
51122 +#ifndef CLICK_GAPRATE_HH
51123 +#define CLICK_GAPRATE_HH
51124 +#include <click/timestamp.hh>
51125 +CLICK_DECLS
51126 +class ErrorHandler;
51127 +
51128 +class GapRate { public:
51129 +
51130 +    inline GapRate();
51131 +    inline GapRate(unsigned);
51132 +
51133 +    unsigned rate() const                      { return _rate; }
51134 +  
51135 +    inline void set_rate(unsigned);
51136 +    void set_rate(unsigned, ErrorHandler *);
51137 +    inline void reset();
51138 +
51139 +    inline bool need_update(const Timestamp &);
51140 +    void update()                              { _sec_count++; }
51141 +    void update_with(int incr)                 { _sec_count += incr; }
51142 +
51143 +    enum { UGAP_SHIFT = 12 };
51144 +    enum { MAX_RATE = 1000000U << UGAP_SHIFT };
51145 +
51146 +  private:
51147 +  
51148 +    unsigned _ugap;
51149 +    int _sec_count;
51150 +    long _tv_sec;
51151 +    unsigned _rate;
51152 +#if DEBUG_GAPRATE
51153 +    Timestamp _last;
51154 +#endif
51155 +
51156 +};
51157 +
51158 +inline void
51159 +GapRate::reset()
51160 +{
51161 +    _tv_sec = -1;
51162 +#if DEBUG_GAPRATE
51163 +    _last.set_sec(0);
51164 +#endif
51165 +}
51166 +
51167 +inline void
51168 +GapRate::set_rate(unsigned rate)
51169 +{
51170 +    if (rate > MAX_RATE)
51171 +       rate = MAX_RATE;
51172 +    _rate = rate;
51173 +    _ugap = (rate == 0 ? MAX_RATE + 1 : MAX_RATE / rate);
51174 +#if DEBUG_GAPRATE
51175 +    click_chatter("ugap: %u", _ugap);
51176 +#endif
51177 +    reset();
51178 +}
51179 +
51180 +inline
51181 +GapRate::GapRate()
51182 +{
51183 +    set_rate(0);
51184 +}
51185 +
51186 +inline
51187 +GapRate::GapRate(unsigned rate)
51188 +{
51189 +    set_rate(rate);
51190 +}
51191 +
51192 +inline bool
51193 +GapRate::need_update(const Timestamp &now)
51194 +{
51195 +    unsigned need = (now.usec() << UGAP_SHIFT) / _ugap;
51196 +
51197 +    if (_tv_sec < 0) {
51198 +       // 27.Feb.2005: often OK to send a packet after reset unless rate is
51199 +       // 0 -- requested by Bart Braem
51200 +       // check include/click/gaprate.hh (1.2)
51201 +       _tv_sec = now.sec();
51202 +       _sec_count = need + ((now.usec() << UGAP_SHIFT) - (need * _ugap) > _ugap / 2);
51203 +    } else if (now.sec() > _tv_sec) {
51204 +       _tv_sec = now.sec();
51205 +       if (_sec_count > 0)
51206 +           _sec_count -= _rate;
51207 +    }
51208 +
51209 +#if DEBUG_GAPRATE
51210 +    click_chatter("%{timestamp} -> %u @ %u [%d]", &now, need, _sec_count, (int)need >= _sec_count);
51211 +#endif
51212 +    return ((int)need >= _sec_count);
51213 +}
51214 +
51215 +CLICK_ENDDECLS
51216 +#endif
51217 diff -Nurb click-1.6.0/inst/include/click/glue.hh click-1.6.0-27/inst/include/click/glue.hh
51218 --- click-1.6.0/inst/include/click/glue.hh      1969-12-31 19:00:00.000000000 -0500
51219 +++ click-1.6.0-27/inst/include/click/glue.hh   2009-02-05 10:20:41.000000000 -0500
51220 @@ -0,0 +1,420 @@
51221 +// -*- c-basic-offset: 4; related-file-name: "../../lib/glue.cc" -*-
51222 +#ifndef CLICK_GLUE_HH
51223 +#define CLICK_GLUE_HH
51224 +// Removes many common #include <header>s and abstracts differences between
51225 +// kernel and user space, and between operating systems.
51226 +
51227 +// HEADERS
51228 +
51229 +#if CLICK_LINUXMODULE
51230 +
51231 +# define _LOOSE_KERNEL_NAMES 1 /* define ino_t, off_t, etc. */
51232 +# undef __KERNEL_STRICT_NAMES
51233 +# ifndef __OPTIMIZE__
51234 +#  define __OPTIMIZE__ 1 /* get ntohl() macros. otherwise undefined. */
51235 +# endif
51236 +# include <click/cxxprotect.h>
51237 +CLICK_CXX_PROTECT
51238 +# ifdef WANT_MOD_USE_COUNT
51239 +#  define __NO_VERSION__
51240 +#  include <linux/module.h>
51241 +#  define HAVE_MOD_USE_COUNT 1
51242 +# endif
51243 +# include <linux/kernel.h>
51244 +# include <linux/version.h>
51245 +# include <linux/string.h>
51246 +# include <linux/skbuff.h>
51247 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
51248 +#  include <linux/malloc.h>
51249 +#  include <linux/vmalloc.h>
51250 +#  include <linux/interrupt.h>
51251 +# else
51252 +#  include <linux/hardirq.h>
51253 +# endif
51254 +# include <linux/ctype.h>
51255 +# include <linux/time.h>
51256 +# include <linux/errno.h>
51257 +CLICK_CXX_UNPROTECT
51258 +# include <click/cxxunprotect.h>
51259 +
51260 +#elif CLICK_BSDMODULE
51261 +
51262 +# include <click/cxxprotect.h>
51263 +CLICK_CXX_PROTECT
51264 +# include <sys/ctype.h>
51265 +# include <sys/systm.h>
51266 +# include <sys/time.h>
51267 +# include <sys/param.h>
51268 +# include <sys/kernel.h>
51269 +# include <sys/mbuf.h>
51270 +# include <sys/malloc.h>
51271 +# include <sys/libkern.h>
51272 +# include <sys/proc.h>
51273 +# include <sys/sysproto.h>
51274 +CLICK_CXX_UNPROTECT
51275 +# include <click/cxxunprotect.h>
51276 +
51277 +#else /* CLICK_USERLEVEL */
51278 +
51279 +# include <stdio.h>
51280 +# include <stdlib.h>
51281 +# include <string.h>
51282 +# include <ctype.h>
51283 +# include <errno.h>
51284 +# include <limits.h>
51285 +# include <sys/socket.h>
51286 +# include <netinet/in.h>
51287 +# include <sys/time.h>
51288 +# ifdef CLICK_NS
51289 +extern "C" int simclick_gettimeofday(struct timeval *);
51290 +# endif
51291 +
51292 +#endif
51293 +
51294 +
51295 +// DEBUGGING OUTPUT
51296 +extern "C" {
51297 +void click_chatter(const char *fmt, ...);
51298 +}
51299 +
51300 +
51301 +// DEBUG MALLOC
51302 +
51303 +#if CLICK_DMALLOC && (CLICK_LINUXMODULE || CLICK_BSDMODULE)
51304 +extern uint32_t click_dmalloc_where;
51305 +# 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)
51306 +#else
51307 +# define CLICK_DMALLOC_REG(s)
51308 +#endif
51309 +
51310 +
51311 +// LALLOC
51312 +
51313 +#if CLICK_LINUXMODULE
51314 +# define CLICK_LALLOC(size)    (click_lalloc((size)))
51315 +# define CLICK_LFREE(p, size)  (click_lfree((p), (size)))
51316 +extern "C" {
51317 +void *click_lalloc(size_t size);
51318 +void click_lfree(volatile void *p, size_t size);
51319 +}
51320 +#else
51321 +# define CLICK_LALLOC(size)    ((void *)(new uint8_t[(size)]))
51322 +# define CLICK_LFREE(p, size)  delete[] ((uint8_t *)(p))
51323 +#endif
51324 +
51325 +
51326 +// RANDOMNESS
51327 +
51328 +CLICK_DECLS
51329 +extern void click_random_srandom(); // srand(), but use true randomness
51330 +CLICK_ENDDECLS
51331 +
51332 +#if CLICK_LINUXMODULE
51333 +extern "C" {
51334 +extern uint32_t click_random_seed;
51335 +extern void srandom(uint32_t);
51336 +#define        RAND_MAX        2147483647
51337 +inline uint32_t
51338 +random()
51339 +{
51340 +    click_random_seed = click_random_seed*69069L + 1;
51341 +    return (click_random_seed ^ jiffies) & RAND_MAX;
51342 +}
51343 +}
51344 +#endif
51345 +
51346 +
51347 +// SORTING
51348 +
51349 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk);
51350 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *));
51351 +
51352 +
51353 +// OTHER
51354 +
51355 +#if CLICK_LINUXMODULE
51356 +
51357 +// current processor
51358 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
51359 +#  define click_current_processor()    (current_thread_info()->cpu)
51360 +# else
51361 +#  define click_current_processor()    (current->processor)
51362 +# endif
51363 +
51364 +// provide a definition for net_device for kernel compatibility
51365 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 0)
51366 +typedef struct device net_device;
51367 +#  define dev_get_by_name dev_get
51368 +# endif
51369 +
51370 +extern "C" {
51371 +
51372 +long strtol(const char *, char **, int);
51373 +
51374 +inline unsigned long
51375 +strtoul(const char *nptr, char **endptr, int base)
51376 +{
51377 +    return simple_strtoul(nptr, endptr, base);
51378 +}
51379 +
51380 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0) && __GNUC__ == 2 && __GNUC_MINOR__ == 96
51381 +int click_strcmp(const char *, const char *);
51382 +
51383 +inline int
51384 +strcmp(const char *a, const char *b)
51385 +{
51386 +    return click_strcmp(a, b);
51387 +}
51388 +# endif
51389 +
51390 +}
51391 +
51392 +#elif CLICK_BSDMODULE
51393 +
51394 +/* Char-type glue */
51395 +
51396 +# define _U    0x01    /* upper */
51397 +# define _L    0x02    /* lower */
51398 +# define _D    0x04    /* digit */
51399 +# define _C    0x08    /* cntrl */
51400 +# define _P    0x10    /* punct */
51401 +# define _S    0x20    /* white space (space/lf/tab) */
51402 +# define _X    0x40    /* hex digit */
51403 +# define _SP   0x80    /* hard space (0x20) */
51404 +
51405 +extern unsigned char _ctype[];
51406 +
51407 +# define __ismask(x)   (_ctype[(int)(unsigned char)(x)])
51408 +# define isalnum(c)    ((__ismask(c)&(_U|_L|_D)) != 0)
51409 +
51410 +# define strchr(s, c)  index(s, c)
51411 +
51412 +# define memmove(dst, src, len)                bcopy((src), (dst), (len))
51413 +
51414 +typedef struct ifnet net_device;
51415 +
51416 +#else /* not CLICK_LINUXMODULE || CLICK_BSDMODULE */
51417 +
51418 +// provide a definition for net_device
51419 +typedef struct device net_device;
51420 +
51421 +#endif /* CLICK_LINUXMODULE */
51422 +
51423 +
51424 +// COMPILE-TIME ASSERTION CHECKING
51425 +
51426 +#define static_assert(c) switch (c) case 0: case (c):
51427 +
51428 +
51429 +// TIMEVALS AND JIFFIES
51430 +
51431 +#if CLICK_LINUXMODULE
51432 +# define click_gettimeofday(tvp)       (do_gettimeofday(tvp))
51433 +# define click_jiffies()               ((unsigned)jiffies)
51434 +# define CLICK_HZ                      HZ
51435 +#elif CLICK_BSDMODULE
51436 +# define click_gettimeofday(tvp)       (getmicrotime(tvp))
51437 +# define click_jiffies()               ((unsigned)ticks)
51438 +# define CLICK_HZ                      hz
51439 +#else
51440 +#ifndef CLICK_NS
51441 +# define click_gettimeofday(tvp)       (gettimeofday(tvp, (struct timezone *)0))
51442 +#else
51443 +# define click_gettimeofday(tvp)       (simclick_gettimeofday(tvp))
51444 +#endif
51445 +CLICK_DECLS
51446 +unsigned click_jiffies();
51447 +CLICK_ENDDECLS
51448 +# define CLICK_HZ                      100
51449 +#endif
51450 +
51451 +
51452 +// TIMEVAL OPERATIONS
51453 +
51454 +#ifndef timercmp
51455 +// Convenience macros for operations on timevals.
51456 +// NOTE: 'timercmp' does not work for >= or <=.
51457 +# define timerisset(tvp)       ((tvp)->tv_sec || (tvp)->tv_usec)
51458 +# define timerclear(tvp)       ((tvp)->tv_sec = (tvp)->tv_usec = 0)
51459 +# define timercmp(a, b, CMP)                   \
51460 +  (((a)->tv_sec == (b)->tv_sec) ?              \
51461 +   ((a)->tv_usec CMP (b)->tv_usec) :           \
51462 +   ((a)->tv_sec CMP (b)->tv_sec))
51463 +#endif
51464 +#ifndef timeradd
51465 +# define timeradd(a, b, result)                                                      \
51466 +  do {                                                                       \
51467 +    (result)->tv_sec = (a)->tv_sec + (b)->tv_sec;                            \
51468 +    (result)->tv_usec = (a)->tv_usec + (b)->tv_usec;                         \
51469 +    if ((result)->tv_usec >= 1000000)                                        \
51470 +      {                                                                              \
51471 +       ++(result)->tv_sec;                                                   \
51472 +       (result)->tv_usec -= 1000000;                                         \
51473 +      }                                                                              \
51474 +  } while (0)
51475 +#endif
51476 +#ifndef timersub
51477 +# define timersub(a, b, result)                                                      \
51478 +  do {                                                                       \
51479 +    (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;                            \
51480 +    (result)->tv_usec = (a)->tv_usec - (b)->tv_usec;                         \
51481 +    if ((result)->tv_usec < 0) {                                             \
51482 +      --(result)->tv_sec;                                                    \
51483 +      (result)->tv_usec += 1000000;                                          \
51484 +    }                                                                        \
51485 +  } while (0)
51486 +#endif
51487 +
51488 +#ifndef CLICK_TIMEVAL_OPERATORS
51489 +
51490 +inline struct timeval
51491 +make_timeval(int sec, int usec)
51492 +{
51493 +    struct timeval tv;
51494 +    tv.tv_sec = sec;
51495 +    tv.tv_usec = usec;
51496 +    return tv;
51497 +}
51498 +
51499 +inline bool
51500 +operator==(const struct timeval &a, const struct timeval &b)
51501 +{
51502 +    return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec;
51503 +}
51504 +
51505 +inline bool
51506 +operator!=(const struct timeval &a, const struct timeval &b)
51507 +{
51508 +    return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec;
51509 +}
51510 +
51511 +inline bool
51512 +operator<(const struct timeval &a, const struct timeval &b)
51513 +{
51514 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec);
51515 +}
51516 +
51517 +inline bool
51518 +operator<=(const struct timeval &a, const struct timeval &b)
51519 +{
51520 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec);
51521 +}
51522 +
51523 +inline bool
51524 +operator>=(const struct timeval &a, const struct timeval &b)
51525 +{
51526 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec);
51527 +}
51528 +
51529 +inline bool
51530 +operator>(const struct timeval &a, const struct timeval &b)
51531 +{
51532 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec);
51533 +}
51534 +
51535 +inline struct timeval &
51536 +operator+=(struct timeval &a, const struct timeval &b)
51537 +{
51538 +    a.tv_sec += b.tv_sec;
51539 +    a.tv_usec += b.tv_usec;
51540 +    if (a.tv_usec >= 1000000) {
51541 +       a.tv_sec++;
51542 +       a.tv_usec -= 1000000;
51543 +    }
51544 +    return a;
51545 +}
51546 +
51547 +inline struct timeval &
51548 +operator-=(struct timeval &a, const struct timeval &b)
51549 +{
51550 +    a.tv_sec -= b.tv_sec;
51551 +    a.tv_usec -= b.tv_usec;
51552 +    if (a.tv_usec < 0) {
51553 +       a.tv_sec--;
51554 +       a.tv_usec += 1000000;
51555 +    }
51556 +    return a;
51557 +}
51558 +
51559 +inline struct timeval
51560 +operator+(struct timeval a, const struct timeval &b)
51561 +{
51562 +    a += b;
51563 +    return a;
51564 +}
51565 +
51566 +inline struct timeval
51567 +operator-(struct timeval a, const struct timeval &b)
51568 +{
51569 +    a -= b;
51570 +    return a;
51571 +}
51572 +
51573 +#endif
51574 +
51575 +CLICK_DECLS
51576 +class StringAccum;
51577 +StringAccum &operator<<(StringAccum &, const struct timeval &);
51578 +CLICK_ENDDECLS
51579 +
51580 +
51581 +// BYTE ORDER
51582 +
51583 +#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
51584 +# define le16_to_cpu(x) (x)
51585 +# define cpu_to_le16(x) (x)
51586 +# define le32_to_cpu(x) (x)
51587 +# define cpu_to_le32(x) (x)
51588 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && defined(__APPLE__)
51589 +# include <machine/byte_order.h>
51590 +# define le16_to_cpu(x) NXSwapShort((x))
51591 +# define cpu_to_le16(x) NXSwapShort((x))
51592 +# define le32_to_cpu(x) NXSwapInt((x))
51593 +# define cpu_to_le32(x) NXSwapInt((x))
51594 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN && HAVE_BYTESWAP_H
51595 +# include <byteswap.h>
51596 +# define le16_to_cpu(x) bswap_16((x))
51597 +# define cpu_to_le16(x) bswap_16((x))
51598 +# define le32_to_cpu(x) bswap_32((x))
51599 +# define cpu_to_le32(x) bswap_32((x))
51600 +#else
51601 +/* leave them undefined */
51602 +#endif
51603 +
51604 +
51605 +// CYCLE COUNTS
51606 +
51607 +CLICK_DECLS
51608 +
51609 +#if HAVE_INT64_TYPES
51610 +typedef uint64_t click_cycles_t;
51611 +#else
51612 +typedef uint32_t click_cycles_t;
51613 +#endif
51614 +
51615 +inline click_cycles_t
51616 +click_get_cycles()
51617 +{
51618 +#if CLICK_LINUXMODULE && HAVE_INT64_TYPES && __i386__
51619 +    uint64_t x;
51620 +    __asm__ __volatile__ ("rdtsc" : "=A" (x));
51621 +    return x;
51622 +#elif CLICK_LINUXMODULE && HAVE_INT64_TYPES && __x86_64__
51623 +    uint32_t xlo, xhi;
51624 +    __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi));
51625 +    return xlo | (((uint64_t) xhi) << 32);
51626 +#elif CLICK_LINUXMODULE && __i386__
51627 +    uint32_t xlo, xhi;
51628 +    __asm__ __volatile__ ("rdtsc" : "=a" (xlo), "=d" (xhi));
51629 +    return xhi ? 0xFFFFFFFF : xlo;
51630 +#elif CLICK_BSDMODULE
51631 +    return rdtsc();
51632 +#else
51633 +    // add other architectures here
51634 +    return 0;
51635 +#endif
51636 +}
51637 +
51638 +CLICK_ENDDECLS
51639 +
51640 +#endif
51641 diff -Nurb click-1.6.0/inst/include/click/handlercall.hh click-1.6.0-27/inst/include/click/handlercall.hh
51642 --- click-1.6.0/inst/include/click/handlercall.hh       1969-12-31 19:00:00.000000000 -0500
51643 +++ click-1.6.0-27/inst/include/click/handlercall.hh    2009-02-05 10:20:41.000000000 -0500
51644 @@ -0,0 +1,527 @@
51645 +// -*- c-basic-offset: 4; related-file-name: "../../lib/handlercall.cc" -*-
51646 +#ifndef CLICK_HANDLERCALL_HH
51647 +#define CLICK_HANDLERCALL_HH
51648 +#include <click/router.hh>
51649 +CLICK_DECLS
51650 +
51651 +/** @brief  Convenience class for calling handlers.
51652 + *
51653 + *  The HandlerCall class simplifies the process of calling Click handlers.
51654 + *  (The lower-level interface is the Handler class.)  HandlerCall is used in
51655 + *  two ways: (1) to call handlers immediately via static member functions,
51656 + *  and (2) to set up future handler calls via HandlerCall objects.  The
51657 + *  immediate handler call functions take handler names as arguments and
51658 + *  perform all necessary error checks before calling handlers, if any.  A
51659 + *  HandlerCall object encapsulates a handler reference (possibly including
51660 + *  parameters), again automating all necessary error checks.
51661 + *
51662 + *  <h2>Immediate Handler Calls</h2>
51663 + *
51664 + *  This example code shows how to use the HandlerCall functions for calling
51665 + *  handlers immediately.
51666 + *
51667 + *  @code
51668 + *  class YourElement { ...
51669 + *      Element *_other;
51670 + *  }
51671 + *
51672 + *  void YourElement::function() {
51673 + *      // Call _other's "config" read handler.
51674 + *      String result = HandlerCall::call_read(_other, "config");
51675 + *
51676 + *      // The same, providing an error handler to print errors.
51677 + *      ErrorHandler *errh = ErrorHandler::default_handler();
51678 + *      result = HandlerCall::call_read(_other, "config", errh);
51679 + *      // (Each function takes an optional last argument of "errh".)
51680 + *
51681 + *      // Call the "foo.config" read handler.  Search for element "foo" in
51682 + *      // the current compound element context.
51683 + *      result = HandlerCall::call_read("foo.config", this);
51684 + *
51685 + *      // Call the global "config" read handler for the current router.
51686 + *      result = HandlerCall::call_read("config", this);
51687 + *
51688 + *      // Call _other's "stop" write handler with empty value.
51689 + *      int success = HandlerCall::call_write(_other, "stop");
51690 + *
51691 + *      // Call _other's "config" write handler with value "blah".
51692 + *      success = HandlerCall::call_write(_other, "config", "blah");
51693 + *
51694 + *      // Call the "foo.config" write handler with value "blah".
51695 + *      success = HandlerCall::call_write("foo.config blah", this);
51696 + *      // Or, alternately:
51697 + *      success = HandlerCall::call_write("foo.config", "blah", this);
51698 + *  }
51699 + *  @endcode
51700 + *
51701 + *  <h2>HandlerCall Objects</h2>
51702 + *
51703 + *  This example code shows how to use the HandlerCall objects to call
51704 + *  handlers with simplified error checking.
51705 + *
51706 + *  @code
51707 + *  class YourElement { ...
51708 + *      HandlerCall _read_call;
51709 + *      HandlerCall _write_call;
51710 + *  }
51711 + *
51712 + *  YourElement::YourElement()
51713 + *      : _read_call(), _write_call() {
51714 + *  }
51715 + *
51716 + *  int YourElement::configure(Vector<String> &conf, ErrorHandler *errh) {
51717 + *      return cp_va_parse(conf, this, errh,
51718 + *                         cpOptional,
51719 + *                         cpHandlerCallRead, "read call", &_read_call,
51720 + *                         cpHandlerCallWrite, "write call", &_write_call,
51721 + *                         cpEnd);
51722 + *  }
51723 + *
51724 + *  int YourElement::initialize(ErrorHandler *errh) {
51725 + *      if ((_read_call && _read_call.initialize_read(this, errh) < 0)
51726 + *          || (_write_call && _write_call.initialize_write(this, errh) < 0))
51727 + *          return -1;
51728 + *      return 0;
51729 + *  }
51730 + *
51731 + *  void YourElement::function() {
51732 + *      // call _read_call, print result
51733 + *      if (_read_call)
51734 + *          click_chatter("%s", _read_call.call_read());
51735 + *
51736 + *      // call _write_call with error handler
51737 + *      if (_write_call)
51738 + *          _write_call.call_write(ErrorHandler::default_handler());
51739 + *  }
51740 + *  @endcode
51741 + *
51742 + *  If usually your element's handler calls aren't used, you can save a small
51743 + *  amount of space by using pointers to HandlerCall objects, as in this
51744 + *  example.  The cpHandlerCallPtrRead and cpHandlerCallPtrWrite types allow
51745 + *  the _read_call and _write_call members to start out as null pointers.
51746 + *
51747 + *  @code
51748 + *  class YourElement { ...
51749 + *      HandlerCall *_read_call;
51750 + *      HandlerCall *_write_call;
51751 + *  }
51752 + *
51753 + *  YourElement::YourElement()
51754 + *      : _read_call(0), _write_call(0) {
51755 + *  }
51756 + *
51757 + *  int YourElement::configure(Vector<String> &conf, ErrorHandler *errh) {
51758 + *      return cp_va_parse(conf, this, errh,
51759 + *                         cpOptional,
51760 + *                         cpHandlerCallPtrRead, "read call", &_read_call,
51761 + *                         cpHandlerCallPtrWrite, "write call", &_write_call,
51762 + *                         cpEnd);
51763 + *  }
51764 + *
51765 + *  int YourElement::initialize(ErrorHandler *errh) {
51766 + *      if ((_read_call && _read_call->initialize_read(this, errh) < 0)
51767 + *          || (_write_call && _write_call->initialize_write(this, errh) < 0))
51768 + *          return -1;
51769 + *      return 0;
51770 + *  }
51771 + *
51772 + *  void YourElement::cleanup(CleanupStage) {
51773 + *      delete _read_call;
51774 + *      delete _write_call;
51775 + *  }
51776 + *
51777 + *  void YourElement::function() {
51778 + *      // call _read_call, print result
51779 + *      if (_read_call)
51780 + *          click_chatter("%s", _read_call->call_read());
51781 + *
51782 + *      // call _write_call with error handler
51783 + *      if (_write_call)
51784 + *          _write_call->call_write(ErrorHandler::default_handler());
51785 + *  }
51786 + *  @endcode
51787 + */
51788 +class HandlerCall { public:
51789 +
51790 +    /** @name Immediate Handler Calls */
51791 +    //@{
51792 +    static String call_read(Element *e, const String &hname,
51793 +                           ErrorHandler *errh = 0);
51794 +    static String call_read(const String &hdesc, Element *context,
51795 +                           ErrorHandler *errh = 0);
51796 +    static int call_write(Element *e, const String &hname,
51797 +                         ErrorHandler *errh = 0);
51798 +    static int call_write(Element *e, const String &hname, const String &value,
51799 +                         ErrorHandler *errh = 0);
51800 +    static int call_write(const String &hdesc,
51801 +                         Element *context, ErrorHandler *errh = 0);
51802 +    static int call_write(const String &hdesc, const String &value,
51803 +                         Element *context, ErrorHandler *errh = 0);
51804 +    //@}
51805 +
51806 +
51807 +    
51808 +    /** @brief  Construct an empty HandlerCall.
51809 +     *
51810 +     *  Any attempt to read, write, or initialize the HandlerCall will
51811 +     *  fail. */
51812 +    HandlerCall()
51813 +       : _e(0), _h(Handler::blank_handler()) {
51814 +    }
51815 +
51816 +    /** @brief  Construct a HandlerCall described by @a hdesc.
51817 +     *  @param  hdesc  handler description <tt>"[ename.]hname[ value]"</tt>
51818 +     *
51819 +     *  Although the resulting HandlerCall isn't empty, it must be initialized
51820 +     *  before it can be used.  It returns false for initialized().  The
51821 +     *  handler description is not checked for syntax errors, though;
51822 +     *  initialize() does that. */
51823 +    HandlerCall(const String &hdesc)
51824 +       : _e(reinterpret_cast<Element *>(4)), _h(Handler::blank_handler()),
51825 +         _value(hdesc) {
51826 +    }
51827 +
51828 +
51829 +    enum Flags {
51830 +       OP_READ = Handler::OP_READ, OP_WRITE = Handler::OP_WRITE,
51831 +       PREINITIALIZE = 4
51832 +    };
51833 +
51834 +    /** @brief  Initialize the HandlerCall.
51835 +     *  @param  flags    zero or more of OP_READ, OP_WRITE, PREINITIALIZE
51836 +     *  @param  context  optional element context
51837 +     *  @param  errh     optional error handler
51838 +     *  @return 0 on success, negative on failure
51839 +     *
51840 +     *  Initializes the HandlerCall object.  The handler description supplied
51841 +     *  to the constructor is parsed and checked for syntax errors.  Any
51842 +     *  element reference is looked up relative to @a context, if any.  (For
51843 +     *  example, if @a hdesc was "x.config" and @a context's name is
51844 +     *  "aaa/bbb/ccc", this will search for elements named aaa/bbb/x, aaa/x,
51845 +     *  and finally x.  If @a context is null, then the description must refer
51846 +     *  to a global handler.)  If OP_READ is set in @a flags, then there
51847 +     *  must be a read handler named appropriately; if OP_WRITE is set,
51848 +     *  then there must be a write handler.
51849 +     *
51850 +     *  Initialization fails if the handler description was bogus (for
51851 +     *  example, an empty string, or something like "*#!$&!(#&$."), if the
51852 +     *  named handler does not exist, if a read handler description has
51853 +     *  parameters but the read handler doesn't actually take parameters, and
51854 +     *  so forth.  If @a errh is nonnull, errors are reported there.  The
51855 +     *  HandlerCall becomes empty on failure: empty() will return true, and
51856 +     *  (bool) *this will return false.  Future call_read() and call_write()
51857 +     *  attempts will correctly fail.
51858 +     *
51859 +     *  If the PREINITIALIZE flag is set, the initialize function will check
51860 +     *  whether the router's handlers are ready (Router::handlers_ready()).
51861 +     *  If handlers are not ready, then initialize() will check for syntax
51862 +     *  errors, but not actually look up the handler (since we don't know yet
51863 +     *  whether or not the handler exists).  Absent a syntax error,
51864 +     *  initialize() will return 0 for success even though the HandlerCall
51865 +     *  remains uninitialized. */
51866 +    int initialize(int flags, Element *context, ErrorHandler *errh = 0);
51867 +
51868 +    /** @brief  Initialize the HandlerCall for reading.
51869 +     *  @param  context  optional element context
51870 +     *  @param  errh     optional error handler
51871 +     *
51872 +     *  Equivalent to @link initialize(int, Element*, ErrorHandler*)
51873 +     *  initialize@endlink(OP_READ, @a context, @a errh). */
51874 +    inline int initialize_read(Element *context, ErrorHandler *errh = 0);
51875 +
51876 +    /** @brief  Initialize the HandlerCall for writing.
51877 +     *  @param  context  optional element context
51878 +     *  @param  errh     optional error handler
51879 +     *
51880 +     *  Equivalent to @link initialize(int, Element*, ErrorHandler*)
51881 +     *  initialize@endlink(OP_WRITE, @a context, @a errh). */
51882 +    inline int initialize_write(Element *context, ErrorHandler *errh = 0);
51883 +
51884 +    
51885 +    typedef bool (HandlerCall::*unspecified_bool_type)() const;
51886 +
51887 +    /** @brief  Test if HandlerCall is empty.
51888 +     *  @return True if HandlerCall is not empty, false otherwise.
51889 +     *
51890 +     *  Valid HandlerCall objects have been successfully initialized. */
51891 +    operator unspecified_bool_type() const {
51892 +       return _h != Handler::blank_handler() || _e ? &HandlerCall::empty : 0;
51893 +    }
51894 +    
51895 +    /** @brief  Test if HandlerCall is empty.
51896 +     *  @return True if HandlerCall is empty, false otherwise. */
51897 +    bool empty() const {
51898 +       return _h == Handler::blank_handler() && !_e;
51899 +    }
51900 +
51901 +    /** @brief  Test if HandlerCall is initialized.
51902 +     *  @return True if HandlerCall is initialized, false otherwise. */
51903 +    bool initialized() const {
51904 +       return _h != Handler::blank_handler();
51905 +    }
51906 +
51907 +
51908 +    /** @brief  Call a read handler.
51909 +     *  @param  errh  optional error handler
51910 +     *  @return  Read handler result.
51911 +     *
51912 +     *  Fails and returns the empty string if this HandlerCall is invalid or
51913 +     *  not a read handler.  If @a errh is nonnull, then any errors are
51914 +     *  reported there, whether from HandlerCall or the handler itself. */
51915 +    inline String call_read(ErrorHandler *errh = 0) const;
51916 +
51917 +    /** @brief  Call a write handler.
51918 +     *  @param  errh  optional error handler
51919 +     *  @return  Write handler result.
51920 +     *
51921 +     *  Fails and returns -EINVAL if this HandlerCall is invalid or not a
51922 +     *  write handler.  If @a errh is nonnull, then any errors are reported
51923 +     *  there, whether from HandlerCall or the handler itself. */
51924 +    inline int call_write(ErrorHandler *errh = 0) const;
51925 +
51926 +    /** @brief  Call a write handler with an additional value.
51927 +     *  @param  value_ext  write value extension
51928 +     *  @param  errh       optional error handler
51929 +     *  @return  Write handler result.
51930 +     *
51931 +     *  The @a value_ext is appended to the write value before the handler is
51932 +     *  called.  (For example, consider a handler with description "a.set
51933 +     *  value".  call_write("foo") will call "a.set value foo".)  Fails and
51934 +     *  returns -EINVAL if this HandlerCall is invalid or not a write handler.
51935 +     *  If @a errh is nonnull, then any errors are reported there, whether
51936 +     *  from HandlerCall or the handler itself. */
51937 +    inline int call_write(const String &value_ext, ErrorHandler *errh = 0) const;
51938 +
51939 +
51940 +    /** @brief  Create and initialize a HandlerCall from @a hdesc.
51941 +     *  @param  hcall    stores the HandlerCall result
51942 +     *  @param  hdesc    handler description "[ename.]hname[ value]"
51943 +     *  @param  flags    initialization flags (OP_READ, OP_WRITE, PREINITIALIZE)
51944 +     *  @param  context  optional element context
51945 +     *  @param  errh     optional error handler
51946 +     *  @return  0 on success, -EINVAL on failure
51947 +     *
51948 +     *  Creates a HandlerCall and initializes it.  Behaves somewhat like:
51949 +     *
51950 +     *  @code
51951 +     *  hcall = new HandlerCall(hdesc);
51952 +     *  return hcall->initialize(flags, context, errh);
51953 +     *  @endcode
51954 +     *
51955 +     *  However, (1) if initialization fails, then @a hcall is untouched; and
51956 +     *  (2) if initialization succeeds and @a hcall is not null, then the
51957 +     *  existing HandlerCall is assigned so that it corresponds to the new one
51958 +     *  (no new memory allocations).
51959 +     *
51960 +     *  If @a errh is nonnull, then any errors are reported there. */
51961 +    static int reset(HandlerCall *&hcall, const String &hdesc, int flags,
51962 +                    Element *context, ErrorHandler *errh = 0);
51963 +
51964 +    /** @brief  Create and initialize a HandlerCall on element @a e.
51965 +     *  @param  hcall  stores the HandlerCall result
51966 +     *  @param  e      relevant element, if any
51967 +     *  @param  hname  handler name
51968 +     *  @param  value  handler value
51969 +     *  @param  flags  initialization flags (OP_READ, OP_WRITE, PREINITIALIZE)
51970 +     *  @param  errh   optional error handler
51971 +     *  @return  0 on success, -EINVAL on failure
51972 +     *
51973 +     *  Creates a HandlerCall and initializes it.  Behaves analogously to
51974 +     *  reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*). */
51975 +    static int reset(HandlerCall *&hcall,
51976 +                    Element *e, const String &hname, const String &value,
51977 +                    int flags, ErrorHandler *errh = 0);
51978 +
51979 +
51980 +    /** @brief  Create and initialize a read HandlerCall from @a hdesc.
51981 +     *  @param  hcall    stores the HandlerCall result
51982 +     *  @param  hdesc    handler description "[ename.]hdesc[ param]"
51983 +     *  @param  context  optional element context
51984 +     *  @param  errh     optional error handler
51985 +     *  @return  0 on success, -EINVAL on failure
51986 +     *
51987 +     *  Equivalent to
51988 +     *  @link reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*) reset@endlink(@a hcall, @a hdesc, OP_READ, @a context, @a errh). */
51989 +    static inline int reset_read(HandlerCall *&hcall, const String &hdesc,
51990 +                                Element *context, ErrorHandler *errh = 0);
51991 +
51992 +    /** @brief  Create and initialize a read HandlerCall from @a hdesc.
51993 +     *  @param  hcall  stores the HandlerCall result
51994 +     *  @param  e      relevant element, if any
51995 +     *  @param  hname  handler name
51996 +     *  @param  errh   optional error handler
51997 +     *  @return  0 on success, -EINVAL on failure
51998 +     *
51999 +     *  Equivalent to
52000 +     *  @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). */
52001 +    static inline int reset_read(HandlerCall *&hcall,
52002 +                                Element *e, const String &hname,
52003 +                                ErrorHandler *errh = 0);
52004 +
52005 +    /** @brief  Create and initialize a write HandlerCall from @a hdesc.
52006 +     *  @param  hcall    stores the HandlerCall result
52007 +     *  @param  hdesc    handler description "[ename.]hdesc[ value]"
52008 +     *  @param  context  optional element context
52009 +     *  @param  errh     optional error handler
52010 +     *  @return  0 on success, -EINVAL on failure
52011 +     *
52012 +     *  Equivalent to
52013 +     *  @link reset(HandlerCall*&, const String&, int, Element*, ErrorHandler*) reset@endlink(@a hcall, @a hdesc, OP_WRITE, @a context, @a errh). */
52014 +    static inline int reset_write(HandlerCall *&hcall, const String &hdesc,
52015 +                                 Element *context, ErrorHandler *errh = 0);
52016 +
52017 +    /** @brief  Create and initialize a read HandlerCall from @a hdesc.
52018 +     *  @param  hcall  stores the HandlerCall result
52019 +     *  @param  e      relevant element, if any
52020 +     *  @param  hname  handler name
52021 +     *  @param  value  write handler value
52022 +     *  @param  errh   optional error handler
52023 +     *  @return  0 on success, -EINVAL on failure
52024 +     *
52025 +     *  Equivalent to
52026 +     *  @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). */
52027 +    static inline int reset_write(HandlerCall *&hcall,
52028 +                                 Element *e, const String &hname,
52029 +                                 const String &value = String(),
52030 +                                 ErrorHandler *errh = 0);
52031 +
52032 +
52033 +    /** @brief  Return the Element corresponding to this HandlerCall.
52034 +     *
52035 +     *  Returns null if invalid.  A global handler may return some
52036 +     *  Router::root_element() or null. */
52037 +    Element *element() const {
52038 +       return _e;
52039 +    }
52040 +    
52041 +    /** @brief  Return the Handler corresponding to this HandlerCall.
52042 +     *
52043 +     *  Returns Handler::blank_handler() if invalid. */
52044 +    const Handler *handler() const {
52045 +       return _h;
52046 +    }
52047 +
52048 +    /** @brief  Return the write handler value and/or read handler parameters.
52049 +     *
52050 +     *  Returns the empty string if invalid. */
52051 +    const String &value() const        {
52052 +       return initialized() ? _value : String::empty_string();
52053 +    }
52054 +
52055 +    /** @brief  Sets the write handler value and/or read handler parameters.
52056 +     *  @param  value  new value and/or parameters
52057 +     *
52058 +     *  Does nothing if invalid. */
52059 +    void set_value(const String &value) {
52060 +       if (initialized())
52061 +           _value = value;
52062 +    }
52063 +
52064 +    /** @brief  Return a String that will parse into an equivalent HandlerCall.
52065 +     *
52066 +     *  Will work even if the HandlerCall has not been initialized. */
52067 +    String unparse() const;
52068 +    
52069 +    /** @brief  Make this HandlerCall empty.
52070 +     *
52071 +     *  Subsequent attempts to read, write, or initialize the HandlerCall will
52072 +     *  fail. */
52073 +    void clear() {
52074 +       _e = 0;
52075 +       _h = Handler::blank_handler();
52076 +       _value = String();
52077 +    }
52078 +
52079 +
52080 +    /** @cond never */
52081 +    enum { CHECK_READ = OP_READ, CHECK_WRITE = OP_WRITE };
52082 +    /** @endcond never */
52083 +    
52084 +  private:
52085 +    
52086 +    Element *_e;
52087 +    const Handler *_h;
52088 +    String _value;
52089 +
52090 +    int parse(int flags, Element*, ErrorHandler*);
52091 +    int assign(Element*, const String&, const String&, int flags, ErrorHandler*);
52092 +
52093 +};
52094 +
52095 +inline int
52096 +HandlerCall::reset_read(HandlerCall*& hcall, const String& hdesc, Element* context, ErrorHandler* errh)
52097 +{
52098 +    return reset(hcall, hdesc, OP_READ, context, errh);
52099 +}
52100 +
52101 +inline int
52102 +HandlerCall::reset_write(HandlerCall*& hcall, const String& hdesc, Element* context, ErrorHandler* errh)
52103 +{
52104 +    return reset(hcall, hdesc, OP_WRITE, context, errh);
52105 +}
52106 +
52107 +inline int
52108 +HandlerCall::reset_read(HandlerCall*& hcall, Element* e, const String& hname, ErrorHandler* errh)
52109 +{
52110 +    return reset(hcall, e, hname, String(), OP_READ, errh);
52111 +}
52112 +
52113 +inline int
52114 +HandlerCall::reset_write(HandlerCall*& hcall, Element* e, const String& hname, const String& value, ErrorHandler* errh)
52115 +{
52116 +    return reset(hcall, e, hname, value, OP_WRITE, errh);
52117 +}
52118 +
52119 +inline int
52120 +HandlerCall::initialize_read(Element* context, ErrorHandler* errh)
52121 +{
52122 +    return initialize(OP_READ, context, errh);
52123 +}
52124 +
52125 +inline int
52126 +HandlerCall::initialize_write(Element* context, ErrorHandler* errh)
52127 +{
52128 +    return initialize(OP_WRITE, context, errh);
52129 +}
52130 +
52131 +inline String
52132 +HandlerCall::call_read(ErrorHandler *errh) const
52133 +{
52134 +    return _h->call_read(_e, _value, false, errh);
52135 +}
52136 +
52137 +inline int
52138 +HandlerCall::call_write(ErrorHandler *errh) const
52139 +{
52140 +    return _h->call_write(_value, _e, false, errh);
52141 +}
52142 +
52143 +inline int
52144 +HandlerCall::call_write(const String &value_ext, ErrorHandler *errh) const
52145 +{
52146 +    if (_value && value_ext)
52147 +       return _h->call_write(_value + " " + value_ext, _e, false, errh);
52148 +    else
52149 +       return _h->call_write(_value ? _value : value_ext, _e, false, errh);
52150 +}
52151 +
52152 +/** @brief  Call a write handler specified by element and handler name.
52153 + *  @param  e      relevant element, if any
52154 + *  @param  hname  handler name
52155 + *  @param  errh   optional error handler
52156 + *  @return  handler result, or -EINVAL on error
52157 + *
52158 + *  Searches for a write handler named @a hname on element @a e.  If the
52159 + *  handler exists, calls it (with empty write value) and returns the result.
52160 + *  If @a errh is nonnull, then errors, such as a missing handler or a
52161 + *  read-only handler, are reported there.  If @a e is some router's @link
52162 + *  Router::root_element() root element@endlink, calls the global write
52163 + *  handler named @a hname on that router. */
52164 +inline int
52165 +HandlerCall::call_write(Element *e, const String &hname, ErrorHandler *errh)
52166 +{
52167 +    return call_write(e, hname, String(), errh);
52168 +}
52169 +
52170 +CLICK_ENDDECLS
52171 +#endif
52172 diff -Nurb click-1.6.0/inst/include/click/hashcode.hh click-1.6.0-27/inst/include/click/hashcode.hh
52173 --- click-1.6.0/inst/include/click/hashcode.hh  1969-12-31 19:00:00.000000000 -0500
52174 +++ click-1.6.0-27/inst/include/click/hashcode.hh       2009-02-05 10:20:41.000000000 -0500
52175 @@ -0,0 +1,73 @@
52176 +#ifndef CLICK_HASHCODE_HH
52177 +#define CLICK_HASHCODE_HH
52178 +CLICK_DECLS
52179 +
52180 +template <typename T>
52181 +inline size_t
52182 +hashcode(const T &x)
52183 +{
52184 +    return x.hashcode();
52185 +}
52186 +
52187 +inline size_t hashcode(char c) {
52188 +    return c;
52189 +}
52190 +
52191 +inline size_t hashcode(signed char c) {
52192 +    return c;
52193 +}
52194 +
52195 +inline size_t hashcode(unsigned char c) {
52196 +    return c;
52197 +}
52198 +
52199 +inline size_t hashcode(short s) {
52200 +    return s;
52201 +}
52202 +
52203 +inline size_t hashcode(unsigned short us) {
52204 +    return us;
52205 +}
52206 +
52207 +inline size_t hashcode(int i) {
52208 +    return i;
52209 +}
52210 +
52211 +inline size_t hashcode(unsigned u) {
52212 +    return u;
52213 +}
52214 +
52215 +inline size_t hashcode(long l) {
52216 +    return l;
52217 +}
52218 +
52219 +inline size_t hashcode(unsigned long ul) {
52220 +    return ul;
52221 +}
52222 +
52223 +#if HAVE_LONG_LONG
52224 +inline size_t hashcode(long long ll) {
52225 +    return ll;
52226 +}
52227 +
52228 +inline size_t hashcode(unsigned long long ull) {
52229 +    return ull;
52230 +}
52231 +#endif
52232 +
52233 +#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG
52234 +inline size_t hashcode(int64_t q) {
52235 +    return q;
52236 +}
52237 +
52238 +inline size_t hashcode(uint64_t uq) {
52239 +    return uq;
52240 +}
52241 +#endif
52242 +
52243 +inline size_t hashcode(void *v) {
52244 +    return reinterpret_cast<uintptr_t>(v) >> 3;
52245 +}
52246 +
52247 +CLICK_ENDDECLS
52248 +#endif
52249 diff -Nurb click-1.6.0/inst/include/click/hashmap.cc click-1.6.0-27/inst/include/click/hashmap.cc
52250 --- click-1.6.0/inst/include/click/hashmap.cc   1969-12-31 19:00:00.000000000 -0500
52251 +++ click-1.6.0-27/inst/include/click/hashmap.cc        2009-02-05 10:20:41.000000000 -0500
52252 @@ -0,0 +1,23 @@
52253 +/*
52254 + * hashmap.{cc,hh} -- a simple, stupid hash table template
52255 + * Eddie Kohler
52256 + *
52257 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
52258 + *
52259 + * Permission is hereby granted, free of charge, to any person obtaining a
52260 + * copy of this software and associated documentation files (the "Software"),
52261 + * to deal in the Software without restriction, subject to the conditions
52262 + * listed in the Click LICENSE file. These conditions include: you must
52263 + * preserve this copyright notice, and you cannot mention the copyright
52264 + * holders in advertising related to the Software without their permission.
52265 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
52266 + * notice is a summary of the Click LICENSE file; the license in that file is
52267 + * legally binding.
52268 + */
52269 +
52270 +#ifndef CLICK_HASHMAP_CC
52271 +#define CLICK_HASHMAP_CC
52272 +
52273 +#include <click/bighashmap.cc>
52274 +
52275 +#endif
52276 diff -Nurb click-1.6.0/inst/include/click/hashmap.hh click-1.6.0-27/inst/include/click/hashmap.hh
52277 --- click-1.6.0/inst/include/click/hashmap.hh   1969-12-31 19:00:00.000000000 -0500
52278 +++ click-1.6.0-27/inst/include/click/hashmap.hh        2009-02-05 10:20:41.000000000 -0500
52279 @@ -0,0 +1,7 @@
52280 +#ifndef CLICK_HASHMAP_HH
52281 +#define CLICK_HASHMAP_HH
52282 +
52283 +// This file is here for compatibility only.
52284 +#include <click/bighashmap.hh>
52285 +
52286 +#endif
52287 diff -Nurb click-1.6.0/inst/include/click/ino.hh click-1.6.0-27/inst/include/click/ino.hh
52288 --- click-1.6.0/inst/include/click/ino.hh       1969-12-31 19:00:00.000000000 -0500
52289 +++ click-1.6.0-27/inst/include/click/ino.hh    2009-02-05 10:20:41.000000000 -0500
52290 @@ -0,0 +1,128 @@
52291 +// -*- c-basic-offset: 4; related-file-name: "../../lib/ino.cc" -*-
52292 +#ifndef CLICK_INO_HH
52293 +#define CLICK_INO_HH
52294 +#include <click/string.hh>
52295 +CLICK_DECLS
52296 +class Router;
52297 +
52298 +// NB: inode number 0 is reserved for the system.
52299 +#define INO_DIRTYPE(ino)               ((ino) >> 28)
52300 +#define INO_ELEMENTNO(ino)             ((int)((ino) & 0xFFFFU) - 1)
52301 +#define INO_HANDLERNO(ino)             ((((ino) & 0xFFFFU) ? 0 : Router::FIRST_GLOBAL_HANDLER) + (((ino) >> 16) & 0x7FFFU))
52302 +#define INO_DT_H                       0x1U /* handlers only */
52303 +#define INO_DT_N                       0x2U /* names */
52304 +#define INO_DT_HN                      0x3U /* handlers + names */
52305 +#define INO_DT_GLOBAL                  0x5U /* handlers + names + all #s */
52306 +#define INO_DT_HAS_H(ino)              (INO_DIRTYPE((ino)) & INO_DT_H)
52307 +#define INO_DT_HAS_N(ino)              (INO_DIRTYPE((ino)) >= INO_DT_N)
52308 +#define INO_DT_HAS_U(ino)              (INO_DIRTYPE((ino)) == INO_DT_GLOBAL)
52309 +
52310 +#define INO_MKHANDLER(e, hi)           ((((hi) & 0x7FFFU) << 16) | (((e) + 1) & 0xFFFFU) | 0x80000000U)
52311 +#define INO_MKHDIR(e)                  ((INO_DT_H << 28) | (((e) + 1) & 0xFFFFU))
52312 +#define INO_MKNDIR(e)                  ((INO_DT_N << 28) | (((e) + 1) & 0xFFFFU))
52313 +#define INO_MKHNDIR(e)                 ((INO_DT_HN << 28) | (((e) + 1) & 0xFFFFU))
52314 +#define INO_GLOBALDIR                  (INO_DT_GLOBAL << 28)
52315 +#define INO_ISHANDLER(ino)             (((ino) & 0x80000000U) != 0)
52316 +
52317 +#define INO_DEBUG                      0
52318 +
52319 +class ClickIno { public:
52320 +
52321 +    void initialize();
52322 +    void cleanup();
52323 +
52324 +    uint32_t generation() const                { return _generation; }
52325 +    
52326 +    // All operations should be called with a configuration lock held.
52327 +    inline int prepare(Router*, uint32_t);
52328 +    int nlink(ino_t);
52329 +    ino_t lookup(ino_t dir, const String& component);
52330 +
52331 +    // readdir doesn't handle '.' or '..'.
52332 +    // It returns 0 for "filldir failed, have more", 1 for "out", <0 on error.
52333 +    typedef bool (*filldir_t)(const char* name, int name_len, ino_t ino, int dirtype, uint32_t f_pos, void* thunk);
52334 +    int readdir(ino_t dir, uint32_t& f_pos, filldir_t, void* thunk);
52335 +
52336 +#if INO_DEBUG
52337 +    String info() const;
52338 +#endif
52339 +
52340 +    struct Entry {
52341 +       // Name of this entry.
52342 +       String name;
52343 +
52344 +       // Corresponding eindex plus 1. Might be larger than the number of
52345 +       // elements in the router, because of fake directories added for
52346 +       // compound "elements".
52347 +       uint16_t elementno_plus1;
52348 +
52349 +       // '_x[i].xindex' equals the index in _x of the entry for element
52350 +       // number 'i - 1'.
52351 +       uint16_t xindex;
52352 +
52353 +       // Number of child entries. 'name' is guaranteed to be a prefix of
52354 +       // every child entry.
52355 +       uint16_t skip;
52356 +
52357 +       // See enum below. X_FAKE is true on fake directories added for
52358 +       // compound elements; X_HANDLER_CONFLICT is true if this element name
52359 +       // conflicts with a handler; X_SUBDIR_CONFLICTS_CALCULATED is true if
52360 +       // we've already checked for name conflicts on this element's
52361 +       // children.
52362 +       uint16_t flags;
52363 +    };
52364 +    
52365 +  private:
52366 +
52367 +    enum { X_FAKE = 1, X_HANDLER_CONFLICT = 2, X_SUBDIR_CONFLICTS_CALCULATED = 4 };
52368 +    
52369 +    Entry* _x;
52370 +    int _nentries;
52371 +    int _cap;
52372 +    Router* _router;
52373 +    uint32_t _generation;
52374 +
52375 +    inline int xindex(int elementno) const;
52376 +    inline int next_xindex(int elementno) const;
52377 +    inline int elementno(int xindex) const;
52378 +
52379 +    int name_search(const String& n, int first_xi, int last_xi, int name_offset) const;
52380 +    
52381 +    int grow(int min_size);
52382 +    void calculate_handler_conflicts(int);
52383 +    int true_prepare(Router*, uint32_t);
52384 +
52385 +};
52386 +
52387 +
52388 +inline int
52389 +ClickIno::prepare(Router* router, uint32_t generation)
52390 +{
52391 +    if (generation != _generation)
52392 +       return true_prepare(router, generation);
52393 +    else
52394 +       return 0;
52395 +}
52396 +
52397 +inline int
52398 +ClickIno::xindex(int elementno) const
52399 +{
52400 +    assert(elementno >= -1 && elementno < _nentries - 1);
52401 +    return _x[elementno + 1].xindex;
52402 +}
52403 +
52404 +inline int
52405 +ClickIno::next_xindex(int elementno) const
52406 +{
52407 +    int xi = xindex(elementno);
52408 +    return xi + _x[xi].skip + 1;
52409 +}
52410 +
52411 +inline int
52412 +ClickIno::elementno(int xindex) const
52413 +{
52414 +    return _x[xindex].elementno_plus1 - 1;
52415 +}
52416 +
52417 +CLICK_ENDDECLS
52418 +#endif
52419 diff -Nurb click-1.6.0/inst/include/click/integers.hh click-1.6.0-27/inst/include/click/integers.hh
52420 --- click-1.6.0/inst/include/click/integers.hh  1969-12-31 19:00:00.000000000 -0500
52421 +++ click-1.6.0-27/inst/include/click/integers.hh       2009-02-05 10:20:41.000000000 -0500
52422 @@ -0,0 +1,93 @@
52423 +// -*- c-basic-offset: 4; related-file-name: "../../lib/integers.cc" -*-
52424 +#ifndef CLICK_INTEGERS_HH
52425 +#define CLICK_INTEGERS_HH
52426 +#if !HAVE___BUILTIN_FFS && HAVE_FFS && HAVE_STRINGS_H
52427 +# include <strings.h>
52428 +#endif
52429 +CLICK_DECLS
52430 +
52431 +#ifdef HAVE_INT64_TYPES
52432 +
52433 +inline uint64_t htonq(uint64_t x) {
52434 +    uint32_t hi = x >> 32;
52435 +    uint32_t lo = x & 0xffffffff;
52436 +    return (((uint64_t)htonl(lo)) << 32) | htonl(hi);
52437 +}
52438 +
52439 +inline uint64_t ntohq(uint64_t x) {
52440 +    uint32_t hi = x >> 32;
52441 +    uint32_t lo = x & 0xffffffff;
52442 +    return (((uint64_t)ntohl(lo)) << 32) | ntohl(hi);
52443 +}
52444 +
52445 +#endif
52446 +
52447 +// MSB is bit #1
52448 +#if HAVE___BUILTIN_CLZ && !HAVE_NO_INTEGER_BUILTINS
52449 +inline int ffs_msb(uint32_t x) {
52450 +    return (x ? __builtin_clz(x) + 1 : 0);
52451 +}
52452 +#else
52453 +# define NEED_FFS_MSB_UINT32_T 1
52454 +int ffs_msb(uint32_t);
52455 +#endif
52456 +
52457 +#ifdef HAVE_INT64_TYPES
52458 +# if HAVE___BUILTIN_CLZLL && SIZEOF_LONG_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS
52459 +inline int ffs_msb(uint64_t x) {
52460 +    return (x ? __builtin_clzll(x) + 1 : 0);
52461 +}
52462 +# elif HAVE___BUILTIN_CLZL && SIZEOF_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS
52463 +inline int ffs_msb(uint64_t x) {
52464 +    return (x ? __builtin_clzl(x) + 1 : 0);
52465 +}
52466 +# elif HAVE___BUILTIN_CLZ && SIZEOF_INT == 8 && !HAVE_NO_INTEGER_BUILTINS
52467 +inline int ffs_msb(uint64_t x) {
52468 +    return (x ? __builtin_clz(x) + 1 : 0);
52469 +}
52470 +# else
52471 +#  define NEED_FFS_MSB_UINT64_T 1
52472 +int ffs_msb(uint64_t);
52473 +# endif
52474 +#endif
52475 +
52476 +// LSB is bit #1
52477 +#if HAVE___BUILTIN_FFS && !HAVE_NO_INTEGER_BUILTINS
52478 +inline int ffs_lsb(uint32_t x) {
52479 +    return __builtin_ffs(x);
52480 +}
52481 +#elif HAVE_FFS && !HAVE_NO_INTEGER_BUILTINS
52482 +inline int ffs_lsb(uint32_t x) {
52483 +    return ffs(x);
52484 +}
52485 +#else
52486 +# define NEED_FFS_LSB_UINT32_T 1
52487 +int ffs_lsb(uint32_t);
52488 +#endif
52489 +
52490 +#ifdef HAVE_INT64_TYPES
52491 +# if HAVE___BUILTIN_FFSLL && SIZEOF_LONG_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS
52492 +inline int ffs_lsb(uint64_t x) {
52493 +    return __builtin_ffsll(x);
52494 +}
52495 +# elif HAVE___BUILTIN_FFSL && SIZEOF_LONG == 8 && !HAVE_NO_INTEGER_BUILTINS
52496 +inline int ffs_lsb(uint64_t x) {
52497 +    return __builtin_ffsl(x);
52498 +}
52499 +# elif HAVE___BUILTIN_FFS && SIZEOF_INT == 8 && !HAVE_NO_INTEGER_BUILTINS
52500 +inline int ffs_lsb(uint64_t x) {
52501 +    return __builtin_ffs(x);
52502 +}
52503 +# else
52504 +#  define NEED_FFS_LSB_UINT64_T 1
52505 +int ffs_lsb(uint64_t);
52506 +# endif
52507 +#endif
52508 +
52509 +uint32_t int_sqrt(uint32_t);
52510 +#if HAVE_INT64_TYPES && !CLICK_LINUXMODULE
52511 +uint64_t int_sqrt(uint64_t);
52512 +#endif
52513 +
52514 +CLICK_ENDDECLS
52515 +#endif
52516 diff -Nurb click-1.6.0/inst/include/click/ip6address.hh click-1.6.0-27/inst/include/click/ip6address.hh
52517 --- click-1.6.0/inst/include/click/ip6address.hh        1969-12-31 19:00:00.000000000 -0500
52518 +++ click-1.6.0-27/inst/include/click/ip6address.hh     2009-02-05 10:20:41.000000000 -0500
52519 @@ -0,0 +1,191 @@
52520 +// -*- related-file-name: "../../lib/ip6address.cc" -*-
52521 +#ifndef CLICK_IP6ADDRESS_HH
52522 +#define CLICK_IP6ADDRESS_HH
52523 +#include <click/string.hh>
52524 +#include <clicknet/ip6.h>
52525 +#include <click/ipaddress.hh>
52526 +#include <click/etheraddress.hh>
52527 +CLICK_DECLS
52528 +
52529 +class IP6Address { public:
52530
52531 +  IP6Address();
52532 +  explicit IP6Address(const unsigned char *);
52533 +  explicit IP6Address(IPAddress ip);
52534 +  explicit IP6Address(const String &);         // "fec0:0:0:1::1"
52535 +  explicit IP6Address(const click_in6_addr &a) : _addr(a) { }
52536 +  static IP6Address make_prefix(int);
52537 +
52538 +  typedef size_t (IP6Address::*unspecified_bool_type)() const;
52539 +  operator unspecified_bool_type() const;
52540 +  
52541 +  operator const click_in6_addr &() const      { return _addr; }
52542 +  operator click_in6_addr &()                  { return _addr; }
52543 +  const click_in6_addr &in6_addr() const       { return _addr; }
52544 +  click_in6_addr &in6_addr()                   { return _addr; }
52545 +
52546 +  unsigned char *data()                        { return &_addr.s6_addr[0]; }
52547 +  const unsigned char *data() const    { return &_addr.s6_addr[0]; }
52548 +  unsigned *data32()                   { return &_addr.s6_addr32[0]; }
52549 +  const unsigned *data32() const       { return &_addr.s6_addr32[0]; }
52550 +
52551 +    inline size_t hashcode() const;
52552 +  
52553 +  int mask_to_prefix_len() const;
52554 +  bool matches_prefix(const IP6Address &addr, const IP6Address &mask) const;
52555 +  bool mask_as_specific(const IP6Address &) const;
52556 +  
52557 +  bool ether_address(EtherAddress &) const;
52558 +  bool ip4_address(IPAddress &) const;
52559 +  
52560 +  // bool operator==(const IP6Address &, const IP6Address &);
52561 +  // bool operator!=(const IP6Address &, const IP6Address &);
52562 +  
52563 +  // IP6Address operator&(const IP6Address &, const IP6Address &);
52564 +  // IP6Address operator|(const IP6Address &, const IP6Address &);
52565 +  // IP6Address operator~(const IP6Address &);
52566 +
52567 +  IP6Address &operator&=(const IP6Address &);
52568 +  IP6Address &operator&=(const click_in6_addr &);
52569 +  IP6Address &operator|=(const IP6Address &);
52570 +  IP6Address &operator|=(const click_in6_addr &);
52571 +  
52572 +  IP6Address &operator=(const click_in6_addr &);
52573 +
52574 +  String unparse() const;
52575 +  String unparse_expanded() const;
52576 +  
52577 +  operator String() const              { return unparse(); }
52578 +  String s() const                     { return unparse(); }
52579 +
52580 + private:
52581 +  
52582 +  click_in6_addr _addr;
52583 +
52584 +};
52585 +
52586 +inline
52587 +IP6Address::operator unspecified_bool_type() const
52588 +{
52589 +  const unsigned *ai = data32();
52590 +  return ai[0] || ai[1] || ai[2] || ai[3] ? &IP6Address::hashcode : 0;
52591 +}
52592 +
52593 +inline bool
52594 +operator==(const IP6Address &a, const IP6Address &b)
52595 +{
52596 +  const unsigned *ai = a.data32(), *bi = b.data32();
52597 +  return ai[0] == bi[0] && ai[1] == bi[1] && ai[2] == bi[2] && ai[3] == bi[3];
52598 +}
52599 +
52600 +inline bool
52601 +operator!=(const IP6Address &a, const IP6Address &b)
52602 +{
52603 +  const unsigned *ai = a.data32(), *bi = b.data32();
52604 +  return ai[0] != bi[0] || ai[1] != bi[1] || ai[2] != bi[2] || ai[3] != bi[3];
52605 +}
52606 +
52607 +class StringAccum;
52608 +StringAccum &operator<<(StringAccum &, const IP6Address &);
52609 +
52610 +inline bool
52611 +IP6Address::matches_prefix(const IP6Address &addr, const IP6Address &mask) const
52612 +{
52613 +  const unsigned *xi = data32(), *ai = addr.data32(), *mi = mask.data32();
52614 +  return ((xi[0] ^ ai[0]) & mi[0]) == 0
52615 +    && ((xi[1] ^ ai[1]) & mi[1]) == 0
52616 +    && ((xi[2] ^ ai[2]) & mi[2]) == 0
52617 +    && ((xi[3] ^ ai[3]) & mi[3]) == 0;
52618 +}
52619 +
52620 +inline bool
52621 +IP6Address::mask_as_specific(const IP6Address &mask) const
52622 +{
52623 +  const unsigned *xi = data32(), *mi = mask.data32();
52624 +  return ((xi[0] & mi[0]) == mi[0] && (xi[1] & mi[1]) == mi[1]
52625 +         && (xi[2] & mi[2]) == mi[2] && (xi[3] & mi[3]) == mi[3]);
52626 +}
52627 +
52628 +inline IP6Address &
52629 +IP6Address::operator&=(const IP6Address &b)
52630 +{
52631 +  unsigned *ai = data32();
52632 +  const unsigned *bi = b.data32();
52633 +  ai[0] &= bi[0]; ai[1] &= bi[1]; ai[2] &= bi[2]; ai[3] &= bi[3];
52634 +  return *this;
52635 +}
52636 +
52637 +inline IP6Address &
52638 +IP6Address::operator&=(const click_in6_addr &b)
52639 +{
52640 +  unsigned *ai = data32();
52641 +  const unsigned *bi = b.s6_addr32;
52642 +  ai[0] &= bi[0]; ai[1] &= bi[1]; ai[2] &= bi[2]; ai[3] &= bi[3];
52643 +  return *this;
52644 +}
52645 +
52646 +inline IP6Address &
52647 +IP6Address::operator|=(const IP6Address &b)
52648 +{
52649 +  unsigned *ai = data32();
52650 +  const unsigned *bi = b.data32();
52651 +  ai[0] |= bi[0]; ai[1] |= bi[1]; ai[2] |= bi[2]; ai[3] |= bi[3];
52652 +  return *this;
52653 +}
52654 +
52655 +inline IP6Address &
52656 +IP6Address::operator|=(const click_in6_addr &b)
52657 +{
52658 +  unsigned *ai = data32();
52659 +  const unsigned *bi = b.s6_addr32;
52660 +  ai[0] |= bi[0]; ai[1] |= bi[1]; ai[2] |= bi[2]; ai[3] |= bi[3];
52661 +  return *this;
52662 +}
52663 +
52664 +inline IP6Address
52665 +operator&(const IP6Address &a, const IP6Address &b)
52666 +{
52667 +  const unsigned *ai = a.data32(), *bi = b.data32();
52668 +  IP6Address result;
52669 +  unsigned *ri = result.data32();
52670 +  ri[0] = ai[0] & bi[0]; ri[1] = ai[1] & bi[1];
52671 +  ri[2] = ai[2] & bi[2]; ri[3] = ai[3] & bi[3];
52672 +  return result;
52673 +}
52674 +
52675 +inline IP6Address
52676 +operator|(const IP6Address &a, const IP6Address &b)
52677 +{
52678 +  const unsigned *ai = a.data32(), *bi = b.data32();
52679 +  IP6Address result;
52680 +  unsigned *ri = result.data32();
52681 +  ri[0] = ai[0] | bi[0]; ri[1] = ai[1] | bi[1];
52682 +  ri[2] = ai[2] | bi[2]; ri[3] = ai[3] | bi[3];
52683 +  return result;
52684 +}
52685 +
52686 +inline IP6Address
52687 +operator~(const IP6Address &a)
52688 +{
52689 +  const unsigned *ai = a.data32();
52690 +  IP6Address result;
52691 +  unsigned *ri = result.data32();
52692 +  ri[0] = ~ai[0]; ri[1] = ~ai[1]; ri[2] = ~ai[2]; ri[3] = ~ai[3];
52693 +  return result;
52694 +}
52695 +
52696 +inline IP6Address &
52697 +IP6Address::operator=(const click_in6_addr &a)
52698 +{
52699 +  _addr = a;
52700 +  return *this;
52701 +}
52702 +
52703 +inline size_t
52704 +IP6Address::hashcode() const
52705 +{
52706 +  return data32()[3];
52707 +}
52708 +
52709 +CLICK_ENDDECLS
52710 +#endif
52711 diff -Nurb click-1.6.0/inst/include/click/ip6flowid.hh click-1.6.0-27/inst/include/click/ip6flowid.hh
52712 --- click-1.6.0/inst/include/click/ip6flowid.hh 1969-12-31 19:00:00.000000000 -0500
52713 +++ click-1.6.0-27/inst/include/click/ip6flowid.hh      2009-02-05 10:20:41.000000000 -0500
52714 @@ -0,0 +1,105 @@
52715 +// -*- c-basic-offset: 2; related-file-name: "../../lib/ip6flowid.cc" -*-
52716 +#ifndef CLICK_IP6FLOWID_HH
52717 +#define CLICK_IP6FLOWID_HH
52718 +#include <click/ip6address.hh>
52719 +#include <click/hashcode.hh>
52720 +CLICK_DECLS
52721 +class Packet;
52722 +
52723 +class IP6FlowID { public:
52724 +
52725 +  inline IP6FlowID();
52726 +  inline IP6FlowID(const IP6Address &, uint16_t, const IP6Address &, uint16_t);
52727 +  explicit IP6FlowID(Packet *);
52728 +
52729 +  typedef const IP6Address &(IP6FlowID::*unspecified_bool_type)() const;
52730 +  inline operator unspecified_bool_type() const;
52731 +
52732 +  const IP6Address &saddr() const      { return _saddr; }
52733 +  const IP6Address &daddr() const      { return _daddr; }
52734 +  uint16_t sport() const               { return _sport; }
52735 +  uint16_t dport() const               { return _dport; }
52736 +
52737 +  void set_saddr(const IP6Address &a)  { _saddr = a; }
52738 +  void set_daddr(const IP6Address &a)  { _daddr = a; }
52739 +  void set_sport(uint16_t p)           { _sport = p; }
52740 +  void set_dport(uint16_t p)           { _dport = p; }
52741 +  
52742 +  inline IP6FlowID rev() const;
52743 +
52744 +  inline size_t hashcode() const;
52745 +
52746 +  String unparse() const;
52747 +  operator String() const              { return unparse(); }
52748 +  String s() const                     { return unparse(); }
52749 +  
52750 + protected:
52751 +  
52752 +  // note: several functions depend on this field order!
52753 +  IP6Address _saddr;
52754 +  IP6Address _daddr;
52755 +  uint16_t _sport;                     // network byte order
52756 +  uint16_t _dport;                     // network byte order
52757 +
52758 +};
52759 +
52760 +inline
52761 +IP6FlowID::IP6FlowID()
52762 +  : _saddr(), _daddr(), _sport(0), _dport(0)
52763 +{
52764 +}
52765 +
52766 +inline
52767 +IP6FlowID::IP6FlowID(const IP6Address &saddr, uint16_t sport,
52768 +                    const IP6Address &daddr, uint16_t dport)
52769 +  : _saddr(saddr), _daddr(daddr), _sport(sport), _dport(dport)
52770 +{
52771 +}
52772 +
52773 +inline
52774 +IP6FlowID::operator unspecified_bool_type() const
52775 +{
52776 +  return _saddr || _daddr ? &IP6FlowID::saddr : 0;
52777 +}
52778 +
52779 +inline IP6FlowID
52780 +IP6FlowID::rev() const
52781 +{
52782 +  return IP6FlowID(_daddr, _dport, _saddr, _sport);
52783 +}
52784 +
52785 +
52786 +#define ROT(v, r) ((v)<<(r) | ((unsigned)(v))>>(32-(r)))
52787 +
52788 +#if 0
52789 +inline size_t
52790 +IP6FlowID::hashcode() const
52791 +{ 
52792 +  return (ROT(_saddr.hashcode(), 13) 
52793 +         ^ ROT(_daddr.hashcode(), 23) ^ (_sport | (_dport<<16)));
52794 +}
52795 +#endif
52796 +
52797 +inline size_t IP6FlowID::hashcode() const
52798 +{ 
52799 +  // more complicated hashcode, but causes less collision
52800 +  uint16_t s = ntohs(sport());
52801 +  uint16_t d = ntohs(dport());
52802 +  size_t sx = CLICK_NAME(hashcode)(saddr());
52803 +  size_t dx = CLICK_NAME(hashcode)(daddr());
52804 +  return (ROT(sx, s%16)
52805 +          ^ ROT(dx, 31-d%16))
52806 +         ^ ((d << 16) | s);
52807 +}
52808 +
52809 +#undef ROT
52810 +
52811 +inline bool
52812 +operator==(const IP6FlowID &a, const IP6FlowID &b)
52813 +{
52814 +  return a.dport() == b.dport() && a.sport() == b.sport()
52815 +    && a.daddr() == b.daddr() && a.saddr() == b.saddr();
52816 +}
52817 +
52818 +CLICK_ENDDECLS
52819 +#endif
52820 diff -Nurb click-1.6.0/inst/include/click/ip6table.hh click-1.6.0-27/inst/include/click/ip6table.hh
52821 --- click-1.6.0/inst/include/click/ip6table.hh  1969-12-31 19:00:00.000000000 -0500
52822 +++ click-1.6.0-27/inst/include/click/ip6table.hh       2009-02-05 10:20:41.000000000 -0500
52823 @@ -0,0 +1,39 @@
52824 +// -*- c-basic-offset: 2; related-file-name: "../../lib/ip6table.cc" -*-
52825 +#ifndef CLICK_IP6TABLE_HH
52826 +#define CLICK_IP6TABLE_HH
52827 +#include <click/glue.hh>
52828 +#include <click/vector.hh>
52829 +#include <click/ip6address.hh>
52830 +CLICK_DECLS
52831 +
52832 +// IP6 routing table.
52833 +// Lookup by longest prefix.
52834 +// Each entry contains a gateway and an output index.
52835 +
52836 +class IP6Table { public:
52837 +  
52838 +  IP6Table();
52839 +  ~IP6Table();
52840 +
52841 +  bool lookup(const IP6Address &dst, IP6Address &gw, int &index) const;
52842 +  
52843 +  void add(const IP6Address &dst, const IP6Address &mask, const IP6Address &gw, int index);
52844 +  void del(const IP6Address &dst, const IP6Address &mask);
52845 +  void clear()                         { _v.clear(); }
52846 +  String dump();
52847 +
52848 + private:
52849 +  
52850 +  struct Entry {
52851 +    IP6Address _dst;
52852 +    IP6Address _mask;
52853 +    IP6Address _gw;
52854 +    int _index;
52855 +    int _valid;
52856 +  };
52857 +  Vector<Entry> _v;
52858 +  
52859 +};
52860 +
52861 +CLICK_ENDDECLS
52862 +#endif
52863 diff -Nurb click-1.6.0/inst/include/click/ipaddress.hh click-1.6.0-27/inst/include/click/ipaddress.hh
52864 --- click-1.6.0/inst/include/click/ipaddress.hh 1969-12-31 19:00:00.000000000 -0500
52865 +++ click-1.6.0-27/inst/include/click/ipaddress.hh      2009-02-05 10:20:41.000000000 -0500
52866 @@ -0,0 +1,342 @@
52867 +// -*- c-basic-offset: 4; related-file-name: "../../lib/ipaddress.cc" -*-
52868 +#ifndef CLICK_IPADDRESS_HH
52869 +#define CLICK_IPADDRESS_HH
52870 +#include <click/string.hh>
52871 +#include <click/glue.hh>
52872 +#include <clicknet/ip.h>
52873 +CLICK_DECLS
52874 +class StringAccum;
52875 +
52876 +class IPAddress { public:
52877 +  
52878 +    inline IPAddress();
52879 +    explicit IPAddress(const unsigned char*);
52880 +    inline IPAddress(unsigned int);    // network byte order IP address
52881 +    inline explicit IPAddress(int);    // network byte order IP address
52882 +    inline explicit IPAddress(unsigned long); // network byte order IP address
52883 +    inline explicit IPAddress(long);   // network byte order IP address
52884 +    explicit IPAddress(const String&); // "18.26.4.99"
52885 +    inline IPAddress(struct in_addr);
52886 +    static IPAddress make_prefix(int prefix_len);
52887 +
52888 +    typedef uint32_t (IPAddress::*unspecified_bool_type)() const;
52889 +    inline operator unspecified_bool_type() const;
52890 +    
52891 +    inline uint32_t addr() const;
52892 +    inline operator uint32_t() const;
52893 +  
52894 +    inline struct in_addr in_addr() const;
52895 +    inline operator struct in_addr() const;
52896 +
52897 +    inline unsigned char* data();
52898 +    inline const unsigned char* data() const;
52899 +
52900 +    inline size_t hashcode() const;
52901 +  
52902 +    int mask_to_prefix_len() const;
52903 +    inline bool matches_prefix(IPAddress addr, IPAddress mask) const;
52904 +    inline bool mask_as_specific(IPAddress mask) const;
52905 +    inline bool mask_more_specific(IPAddress mask) const;
52906 +
52907 +    // bool operator==(IPAddress, IPAddress);
52908 +    // bool operator==(IPAddress, uint32_t);
52909 +    // bool operator!=(IPAddress, IPAddress);
52910 +    // bool operator!=(IPAddress, uint32_t);
52911 +  
52912 +    // IPAddress operator&(IPAddress, IPAddress);
52913 +    // IPAddress operator|(IPAddress, IPAddress);
52914 +    // IPAddress operator^(IPAddress, IPAddress);
52915 +    // IPAddress operator~(IPAddress);
52916 +  
52917 +    inline IPAddress& operator&=(IPAddress);
52918 +    inline IPAddress& operator|=(IPAddress);
52919 +    inline IPAddress& operator^=(IPAddress);
52920 +
52921 +    String unparse() const;
52922 +    String unparse_mask() const;
52923 +    String unparse_with_mask(IPAddress) const;
52924 +  
52925 +    inline String s() const;
52926 +    inline operator String() const;
52927 +
52928 +  private:
52929 +  
52930 +    uint32_t _addr;
52931 +
52932 +};
52933 +
52934 +/** @brief Constructs an IPAddress equal to 0.0.0.0. */
52935 +inline
52936 +IPAddress::IPAddress()
52937 +    : _addr(0)
52938 +{
52939 +}
52940 +
52941 +/** @brief Constructs an IPAddress from an integer in network byte order.
52942 +    @param a the address, in network byte order */
52943 +inline
52944 +IPAddress::IPAddress(unsigned int a)
52945 +    : _addr(a)
52946 +{
52947 +}
52948 +
52949 +/** @brief Constructs an IPAddress from an integer in network byte order.
52950 +    @param a the address, in network byte order */
52951 +inline
52952 +IPAddress::IPAddress(int a)
52953 +    : _addr(a)
52954 +{
52955 +}
52956 +
52957 +/** @brief Constructs an IPAddress from an integer in network byte order.
52958 +    @param a the address, in network byte order */
52959 +inline
52960 +IPAddress::IPAddress(unsigned long a)
52961 +    : _addr(a)
52962 +{
52963 +}
52964 +
52965 +/** @brief Constructs an IPAddress from an integer in network byte order.
52966 +    @param a the address, in network byte order */
52967 +inline
52968 +IPAddress::IPAddress(long a)
52969 +    : _addr(a)
52970 +{
52971 +}
52972 +
52973 +/** @brief Constructs an IPAddress from a struct in_addr.
52974 +    @param ina the address */
52975 +inline
52976 +IPAddress::IPAddress(struct in_addr ina)
52977 +    : _addr(ina.s_addr)
52978 +{
52979 +}
52980 +
52981 +/** @brief Returns true iff the address is not 0.0.0.0. */
52982 +inline
52983 +IPAddress::operator unspecified_bool_type() const
52984 +{
52985 +    return _addr != 0 ? &IPAddress::addr : 0;
52986 +}
52987 +
52988 +/** @brief Returns the address as a uint32_t in network byte order. */
52989 +inline
52990 +IPAddress::operator uint32_t() const
52991 +{
52992 +    return _addr;
52993 +}
52994 +
52995 +/** @brief Returns the address as a uint32_t in network byte order. */
52996 +inline uint32_t
52997 +IPAddress::addr() const
52998 +{
52999 +    return _addr;
53000 +}
53001 +
53002 +/** @relates IPAddress
53003 +    @brief Compares two IPAddress objects for equality. */
53004 +inline bool
53005 +operator==(IPAddress a, IPAddress b)
53006 +{
53007 +    return a.addr() == b.addr();
53008 +}
53009 +
53010 +/** @relates IPAddress
53011 +    @brief Compares an IPAddress with a network-byte-order address value for
53012 +    equality.
53013 +    @param a an address
53014 +    @param b an address value in network byte order */
53015 +inline bool
53016 +operator==(IPAddress a, uint32_t b)
53017 +{
53018 +    return a.addr() == b;
53019 +}
53020 +
53021 +/** @relates IPAddress
53022 +    @brief Compares two IPAddress objects for inequality. */
53023 +inline bool
53024 +operator!=(IPAddress a, IPAddress b)
53025 +{
53026 +    return a.addr() != b.addr();
53027 +}
53028 +
53029 +/** @relates IPAddress
53030 +    @brief Compares an IPAddress with a network-byte-order address value for
53031 +    inequality.
53032 +    @param a an address
53033 +    @param b an address value in network byte order */
53034 +inline bool
53035 +operator!=(IPAddress a, uint32_t b)
53036 +{
53037 +    return a.addr() != b;
53038 +}
53039 +
53040 +/** @brief Returns a pointer to the address data.
53041 +    
53042 +    Since the address is stored in network byte order, data()[0] is the top 8
53043 +    bits of the address, data()[1] the next 8 bits, and so forth. */
53044 +inline const unsigned char*
53045 +IPAddress::data() const
53046 +{
53047 +    return reinterpret_cast<const unsigned char*>(&_addr);
53048 +}
53049 +
53050 +/** @brief Returns a pointer to the address data.
53051 +    
53052 +    Since the address is stored in network byte order, data()[0] is the top 8
53053 +    bits of the address, data()[1] the next 8 bits, and so forth. */
53054 +inline unsigned char*
53055 +IPAddress::data()
53056 +{
53057 +    return reinterpret_cast<unsigned char*>(&_addr);
53058 +}
53059 +
53060 +/** @brief Returns a struct in_addr corresponding to the address. */
53061 +inline struct in_addr
53062 +IPAddress::in_addr() const
53063 +{
53064 +    struct in_addr ia;
53065 +    ia.s_addr = _addr;
53066 +    return ia;
53067 +}
53068 +
53069 +/** @brief Returns a struct in_addr corresponding to the address. */
53070 +inline
53071 +IPAddress::operator struct in_addr() const
53072 +{
53073 +    return in_addr();
53074 +}
53075 +
53076 +StringAccum& operator<<(StringAccum&, IPAddress);
53077 +
53078 +/** @brief Returns true iff this address matches the address prefix
53079 +    @a addr/@a mask.
53080 +    @param addr prefix address
53081 +    @param mask prefix mask
53082 +
53083 +    Equivalent to (@a addr & @a mask) == (*this & @a mask).  The prefix address
53084 +    @a addr may be nonzero outside the @a mask. */
53085 +inline bool
53086 +IPAddress::matches_prefix(IPAddress addr, IPAddress mask) const
53087 +{
53088 +    return ((this->addr() ^ addr.addr()) & mask.addr()) == 0;
53089 +}
53090 +
53091 +/** @brief Returns true iff this address, considered as a prefix mask, is at
53092 +    least as specific as @a mask.
53093 +    @param mask prefix mask
53094 +
53095 +    Longer prefix masks are more specific than shorter ones.  For example,
53096 +    make_prefix(20).mask_as_specific(make_prefix(18)) is true, but
53097 +    make_prefix(10).mask_as_specific(make_prefix(14)) is false.
53098 +
53099 +    Equivalent to (*this & @a mask) == @a mask. */
53100 +inline bool
53101 +IPAddress::mask_as_specific(IPAddress mask) const
53102 +{
53103 +    return (addr() & mask.addr()) == mask.addr();
53104 +}
53105 +
53106 +/** @brief Returns true iff this prefix mask is more specific than @a mask.
53107 +    @param mask prefix mask
53108 +
53109 +    Both this address and @a mask must be prefix masks -- i.e.,
53110 +    mask_to_prefix_len() returns 0-32.  Returns true iff this address contains
53111 +    a longer prefix than @a mask.  For example,
53112 +    make_prefix(20).mask_more_specific(make_prefix(18)) is true, but
53113 +    make_prefix(20).mask_more_specific(make_prefix(20)) is false. */
53114 +inline bool
53115 +IPAddress::mask_more_specific(IPAddress mask) const
53116 +{
53117 +    return ((addr() << 1) & mask.addr()) == mask.addr();
53118 +}
53119 +
53120 +/** @relates IPAddress
53121 +    @brief Calculates the IPAddress representing the bitwise-and of @a a and
53122 +    @a b. */
53123 +inline IPAddress
53124 +operator&(IPAddress a, IPAddress b)
53125 +{
53126 +    return IPAddress(a.addr() & b.addr());
53127 +}
53128 +
53129 +/** @brief Assign this address to its bitwise-and with @a a. */
53130 +inline IPAddress&
53131 +IPAddress::operator&=(IPAddress a)
53132 +{
53133 +    _addr &= a._addr;
53134 +    return *this;
53135 +}
53136 +
53137 +/** @relates IPAddress
53138 +    @brief Calculates the IPAddress representing the bitwise-or of @a a and
53139 +    @a b. */
53140 +inline IPAddress
53141 +operator|(IPAddress a, IPAddress b)
53142 +{
53143 +    return IPAddress(a.addr() | b.addr());
53144 +}
53145 +
53146 +/** @brief Assign this address to its bitwise-or with @a a. */
53147 +inline IPAddress&
53148 +IPAddress::operator|=(IPAddress a)
53149 +{
53150 +    _addr |= a._addr;
53151 +    return *this;
53152 +}
53153 +
53154 +/** @relates IPAddress
53155 +    @brief Calculates the IPAddress representing the bitwise-xor of @a a and
53156 +    @a b. */
53157 +inline IPAddress
53158 +operator^(IPAddress a, IPAddress b)
53159 +{
53160 +    return IPAddress(a.addr() ^ b.addr());
53161 +}
53162 +
53163 +/** @brief Assign this address to its bitwise-xor with @a a. */
53164 +inline IPAddress&
53165 +IPAddress::operator^=(IPAddress a)
53166 +{
53167 +    _addr ^= a._addr;
53168 +    return *this;
53169 +}
53170 +
53171 +/** @relates IPAddress
53172 +    @brief Calculates the IPAddress representing the bitwise complement
53173 +    of @a a. */
53174 +inline IPAddress
53175 +operator~(IPAddress a)
53176 +{
53177 +    return IPAddress(~a.addr());
53178 +}
53179 +
53180 +/** @brief Hash function.
53181 + * @return The hash value of this IPAddress.
53182 + *
53183 + * Equal IPAddress objects always have equal hashcode() values.
53184 + */
53185 +inline size_t
53186 +IPAddress::hashcode() const
53187 +{
53188 +    return addr();
53189 +}
53190 +
53191 +/** @brief Unparses this address into a dotted-quad format String.
53192 +    @sa unparse */
53193 +inline
53194 +IPAddress::operator String() const
53195 +{
53196 +    return unparse();
53197 +}
53198 +
53199 +/** @brief Unparses this address into a dotted-quad format String.
53200 +    @sa unparse */
53201 +inline String
53202 +IPAddress::s() const
53203 +{
53204 +    return unparse();
53205 +}
53206 +
53207 +CLICK_ENDDECLS
53208 +#endif
53209 diff -Nurb click-1.6.0/inst/include/click/ipflowid.hh click-1.6.0-27/inst/include/click/ipflowid.hh
53210 --- click-1.6.0/inst/include/click/ipflowid.hh  1969-12-31 19:00:00.000000000 -0500
53211 +++ click-1.6.0-27/inst/include/click/ipflowid.hh       2009-02-05 10:20:41.000000000 -0500
53212 @@ -0,0 +1,106 @@
53213 +// -*- c-basic-offset: 2; related-file-name: "../../lib/ipflowid.cc" -*-
53214 +#ifndef CLICK_IPFLOWID_HH
53215 +#define CLICK_IPFLOWID_HH
53216 +#include <click/ipaddress.hh>
53217 +#include <click/hashcode.hh>
53218 +CLICK_DECLS
53219 +class Packet;
53220 +
53221 +class IPFlowID { public:
53222 +
53223 +  IPFlowID();
53224 +  IPFlowID(IPAddress, uint16_t, IPAddress, uint16_t);
53225 +  explicit IPFlowID(const Packet *);   // reads ip_header and udp_header
53226 +  explicit IPFlowID(const click_ip *); // also reads adjacent TCP/UDP header
53227 +
53228 +  typedef IPAddress (IPFlowID::*unspecified_bool_type)() const;
53229 +  operator unspecified_bool_type() const;
53230 +
53231 +  IPAddress saddr() const              { return _saddr; }
53232 +  IPAddress daddr() const              { return _daddr; }
53233 +  uint16_t sport() const               { return _sport; }
53234 +  uint16_t dport() const               { return _dport; }
53235 +
53236 +  void set_saddr(IPAddress a)          { _saddr = a; }
53237 +  void set_daddr(IPAddress a)          { _daddr = a; }
53238 +  void set_sport(uint16_t p)           { _sport = p; } // network order
53239 +  void set_dport(uint16_t p)           { _dport = p; } // network order
53240 +  
53241 +  IPFlowID rev() const;
53242 +
53243 +  inline size_t hashcode() const;
53244 +
53245 +  String unparse() const;
53246 +  operator String() const              { return unparse(); }
53247 +  String s() const                     { return unparse(); }
53248 +
53249 + protected:
53250 +  
53251 +  // note: several functions depend on this field order!
53252 +  IPAddress _saddr;
53253 +  IPAddress _daddr;
53254 +  uint16_t _sport;                     // network byte order
53255 +  uint16_t _dport;                     // network byte order
53256 +
53257 +};
53258 +
53259 +inline
53260 +IPFlowID::IPFlowID()
53261 +  : _saddr(), _daddr(), _sport(0), _dport(0)
53262 +{
53263 +}
53264 +
53265 +inline
53266 +IPFlowID::IPFlowID(IPAddress saddr, uint16_t sport,
53267 +                  IPAddress daddr, uint16_t dport)
53268 +  : _saddr(saddr), _daddr(daddr), _sport(sport), _dport(dport)
53269 +{
53270 +}
53271 +
53272 +inline
53273 +IPFlowID::operator unspecified_bool_type() const
53274 +{
53275 +  return _saddr || _daddr ? &IPFlowID::saddr : 0;
53276 +}
53277 +
53278 +inline IPFlowID
53279 +IPFlowID::rev() const
53280 +{
53281 +  return IPFlowID(_daddr, _dport, _saddr, _sport);
53282 +}
53283 +
53284 +
53285 +#define ROT(v, r) ((v)<<(r) | ((unsigned)(v))>>(32-(r)))
53286 +
53287 +inline size_t IPFlowID::hashcode() const
53288 +{ 
53289 +  // more complicated hashcode, but causes less collision
53290 +  uint16_t s = ntohs(sport());
53291 +  uint16_t d = ntohs(dport());
53292 +  size_t sx = CLICK_NAME(hashcode)(saddr());
53293 +  size_t dx = CLICK_NAME(hashcode)(daddr());
53294 +  return (ROT(sx, s%16)
53295 +          ^ ROT(dx, 31-d%16))
53296 +         ^ ((d << 16) | s);
53297 +}
53298 +
53299 +#undef ROT
53300 +
53301 +inline bool
53302 +operator==(const IPFlowID &a, const IPFlowID &b)
53303 +{
53304 +  return a.dport() == b.dport() && a.sport() == b.sport()
53305 +    && a.daddr() == b.daddr() && a.saddr() == b.saddr();
53306 +}
53307 +
53308 +inline bool
53309 +operator!=(const IPFlowID &a, const IPFlowID &b)
53310 +{
53311 +  return a.dport() != b.dport() || a.sport() != b.sport()
53312 +    || a.daddr() != b.daddr() || a.saddr() != b.saddr();
53313 +}
53314 +
53315 +StringAccum &operator<<(StringAccum &, const IPFlowID &);
53316 +
53317 +CLICK_ENDDECLS
53318 +#endif
53319 diff -Nurb click-1.6.0/inst/include/click/iptable.hh click-1.6.0-27/inst/include/click/iptable.hh
53320 --- click-1.6.0/inst/include/click/iptable.hh   1969-12-31 19:00:00.000000000 -0500
53321 +++ click-1.6.0-27/inst/include/click/iptable.hh        2009-02-05 10:20:41.000000000 -0500
53322 @@ -0,0 +1,38 @@
53323 +// -*- c-basic-offset: 2; related-file-name: "../../lib/iptable.cc" -*-
53324 +#ifndef CLICK_IPTABLE_HH
53325 +#define CLICK_IPTABLE_HH
53326 +#include <click/glue.hh>
53327 +#include <click/vector.hh>
53328 +#include <click/ipaddress.hh>
53329 +CLICK_DECLS
53330 +
53331 +// IP routing table.
53332 +// Lookup by longest prefix.
53333 +// Each entry contains a gateway and an output index.
53334 +
53335 +class IPTable { public:
53336 +  
53337 +  IPTable();
53338 +  ~IPTable();
53339 +
53340 +  bool lookup(IPAddress dst, IPAddress &gw, int &index) const;
53341 +  
53342 +  void add(IPAddress dst, IPAddress mask, IPAddress gw, int index);
53343 +  void del(IPAddress dst, IPAddress mask);
53344 +  void clear()                         { _v.clear(); }
53345 +
53346 + private:
53347 +  
53348 +  struct Entry {
53349 +    IPAddress dst;
53350 +    IPAddress mask;
53351 +    IPAddress gw;
53352 +    int index;
53353 +    bool valid() const                 { return mask || !dst; }
53354 +  };
53355 +  Vector<Entry> _v;
53356 +  
53357 +};
53358 +
53359 +CLICK_ENDDECLS
53360 +#endif
53361 diff -Nurb click-1.6.0/inst/include/click/lexer.hh click-1.6.0-27/inst/include/click/lexer.hh
53362 --- click-1.6.0/inst/include/click/lexer.hh     1969-12-31 19:00:00.000000000 -0500
53363 +++ click-1.6.0-27/inst/include/click/lexer.hh  2009-02-05 10:20:41.000000000 -0500
53364 @@ -0,0 +1,194 @@
53365 +// -*- c-basic-offset: 4; related-file-name: "../../lib/lexer.cc" -*-
53366 +#ifndef CLICK_LEXER_HH
53367 +#define CLICK_LEXER_HH
53368 +#include <click/hashmap.hh>
53369 +#include <click/router.hh>
53370 +#include <click/glue.hh>
53371 +#include <click/variableenv.hh>
53372 +CLICK_DECLS
53373 +class LexerExtra;
53374 +
53375 +enum Lexemes {
53376 +    lexEOF = 0,
53377 +    lexIdent = 256,
53378 +    lexVariable,
53379 +    lexArrow,
53380 +    lex2Colon,
53381 +    lex2Bar,
53382 +    lex3Dot,
53383 +    lexTunnel,
53384 +    lexElementclass,
53385 +    lexRequire,
53386 +    lexDefine
53387 +};
53388 +
53389 +class Lexeme { public:
53390 +
53391 +    Lexeme()                           : _kind(lexEOF) { }
53392 +    Lexeme(int k, const String &s)     : _kind(k), _s(s) { }
53393 +  
53394 +    int kind() const                   { return _kind; }
53395 +    bool is(int k) const               { return _kind == k; }
53396 +  
53397 +    const String &string() const       { return _s; }
53398 +    String &string()                   { return _s; }
53399 +  
53400 +  private:
53401 +  
53402 +    int _kind;
53403 +    String _s;
53404 +  
53405 +};
53406 +
53407 +class Lexer { public:
53408 +
53409 +    enum { TUNNEL_TYPE = 0, ERROR_TYPE = 1 };
53410 +  
53411 +    class TunnelEnd;
53412 +    class Compound;
53413 +    typedef Router::Hookup Hookup;
53414 +  
53415 +    Lexer();
53416 +    virtual ~Lexer();
53417 +  
53418 +    int begin_parse(const String &data, const String &filename, LexerExtra *, ErrorHandler * = 0);
53419 +    void end_parse(int);
53420 +
53421 +    VariableEnvironment &global_scope()        { return _global_scope; }
53422 +    ErrorHandler *errh() const         { return _errh; }
53423 +  
53424 +    String remaining_text() const;
53425 +    void set_remaining_text(const String &);
53426 +  
53427 +    const Lexeme &lex();
53428 +    void unlex(const Lexeme &);
53429 +    String lex_config();
53430 +    String landmark() const;
53431 +  
53432 +    bool expect(int, bool report_error = true);
53433 +
53434 +    typedef Element *(*ElementFactory)(uintptr_t);
53435 +#ifdef CLICK_LINUXMODULE
53436 +    int add_element_type(const String &, ElementFactory factory, uintptr_t thunk, struct module *module, bool scoped = false);
53437 +#else
53438 +    int add_element_type(const String &, ElementFactory factory, uintptr_t thunk, bool scoped = false);
53439 +#endif
53440 +    int element_type(const String &) const;
53441 +    int force_element_type(String);
53442 +
53443 +    void element_type_names(Vector<String> &) const;
53444 +  
53445 +    int remove_element_type(int t)     { return remove_element_type(t, 0); }
53446 +
53447 +    void connect(int element1, int port1, int element2, int port2);
53448 +    String element_name(int) const;
53449 +    String element_landmark(int) const;
53450 +    
53451 +    void add_tunnel(String, String);
53452 +  
53453 +    bool yport(int &port);
53454 +    bool yelement(int &element, bool comma_ok);
53455 +    void ydeclaration(const String &first_element = String());
53456 +    bool yconnection();
53457 +    void yelementclass();
53458 +    void ytunnel();
53459 +    void ycompound_arguments(Compound *);
53460 +    int ycompound(String name = String());
53461 +    void yrequire();
53462 +    void yvar();
53463 +    bool ystatement(bool nested = false);
53464 +  
53465 +    Router *create_router(Master *);
53466 +
53467 +  private:
53468 +    
53469 +    // lexer
53470 +    String _big_string;
53471 +  
53472 +    const char *_data;
53473 +    const char *_end;
53474 +    const char *_pos;
53475 +  
53476 +    String _filename;
53477 +    String _original_filename;
53478 +    unsigned _lineno;
53479 +    LexerExtra *_lextra;
53480 +  
53481 +    const char *skip_line(const char *);
53482 +    const char *skip_slash_star(const char *);
53483 +    const char *skip_backslash_angle(const char *);
53484 +    const char *skip_quote(const char *, char);
53485 +    const char *process_line_directive(const char *);
53486 +    Lexeme next_lexeme();
53487 +    static String lexeme_string(int);
53488 +  
53489 +    // parser
53490 +    enum { TCIRCLE_SIZE = 8 };
53491 +    Lexeme _tcircle[TCIRCLE_SIZE];
53492 +    int _tpos;
53493 +    int _tfull;
53494 +  
53495 +    // element types
53496 +    struct ElementType {
53497 +       ElementFactory factory;
53498 +       uintptr_t thunk;
53499 +#ifdef CLICK_LINUXMODULE
53500 +       struct module *module;
53501 +#endif
53502 +       String name;
53503 +       int next;
53504 +    };
53505 +    HashMap<String, int> _element_type_map;
53506 +    Vector<ElementType> _element_types;
53507 +    enum { ET_SCOPED = 0x80000000, ET_TMASK = 0x7FFFFFFF, ET_NULL = 0x7FFFFFFF };
53508 +    int _last_element_type;
53509 +    int _free_element_type;
53510 +    VariableEnvironment _global_scope;
53511 +
53512 +    // elements
53513 +    HashMap<String, int> _element_map;
53514 +    Compound *_c;
53515 +  
53516 +    TunnelEnd *_definputs;
53517 +    TunnelEnd *_defoutputs;
53518 +  
53519 +    // compound elements
53520 +    int _anonymous_offset;
53521 +
53522 +    // requirements
53523 +    Vector<String> _requirements;
53524 +  
53525 +    // errors
53526 +    ErrorHandler *_errh;
53527 +  
53528 +    int lerror(const char *, ...);
53529 +
53530 +    String anon_element_name(const String &) const;
53531 +    String deanonymize_element_name(const String &, int);
53532 +    int get_element(String, int, const String & = String(), const String & = String());
53533 +    int lexical_scoping_in() const;
53534 +    void lexical_scoping_out(int);
53535 +    int remove_element_type(int, int *);
53536 +    int make_compound_element(int);
53537 +    void expand_compound_element(int, VariableEnvironment &);
53538 +    void add_router_connections(int, const Vector<int> &, Router *);
53539 +
53540 +    void find_connections(const Hookup &, bool, Vector<Hookup> &) const;
53541 +    void expand_connection(const Hookup &, bool, Vector<Hookup> &) const;
53542 +  
53543 +    friend class Compound;
53544 +    friend class TunnelEnd;
53545 +  
53546 +};
53547 +
53548 +class LexerExtra { public:
53549 +  
53550 +    LexerExtra()                       { }
53551 +    virtual ~LexerExtra()              { }
53552 +  
53553 +    virtual void require(String, ErrorHandler *);
53554 +
53555 +};
53556 +
53557 +CLICK_ENDDECLS
53558 +#endif
53559 diff -Nurb click-1.6.0/inst/include/click/llrpc.h click-1.6.0-27/inst/include/click/llrpc.h
53560 --- click-1.6.0/inst/include/click/llrpc.h      1969-12-31 19:00:00.000000000 -0500
53561 +++ click-1.6.0-27/inst/include/click/llrpc.h   2009-02-05 10:20:41.000000000 -0500
53562 @@ -0,0 +1,182 @@
53563 +#ifndef CLICK_LLRPC_H
53564 +#define CLICK_LLRPC_H
53565 +#if CLICK_LINUXMODULE
53566 +# include <linux/errno.h>
53567 +# include <linux/ioctl.h>
53568 +#else
53569 +# include <errno.h>
53570 +# include <sys/ioctl.h>
53571 +#endif
53572 +
53573 +/* Click low-level RPC interface */
53574 +
53575 +/* Ioctl numbers are not consistent across platforms unless you #define
53576 +   HAVE_PORTABLE_LLRPC. */
53577 +#define _CLICK_NET_IOC_VOID    0x20000000
53578 +#define _CLICK_NET_IOC_OUT     0x40000000
53579 +#define _CLICK_NET_IOC_IN      0x80000000
53580 +#if HAVE_PORTABLE_LLRPC || !defined(__linux__)
53581 +# define _CLICK_IOC_VOID       _CLICK_NET_IOC_VOID
53582 +# define _CLICK_IOC_OUT                _CLICK_NET_IOC_OUT
53583 +# define _CLICK_IOC_IN         _CLICK_NET_IOC_IN
53584 +#else
53585 +# define _CLICK_IOC_VOID       (_IOC_NONE << _IOC_DIRSHIFT)
53586 +# define _CLICK_IOC_OUT                (_IOC_READ << _IOC_DIRSHIFT)
53587 +# define _CLICK_IOC_IN         (_IOC_WRITE << _IOC_DIRSHIFT)
53588 +#endif
53589 +#define _CLICK_IOC_BASE_MASK   0x0FFFFFFF
53590 +#define _CLICK_IOC_SAFE                0x00008000
53591 +#define _CLICK_IOC_FLAT                0x00004000
53592 +#define _CLICK_IOC_SIZE(io)    ((io) >> 16 & 0xFFF)
53593 +
53594 +/* _CLICK_IO[S]: data transfer direction unknown, pass pointer unchanged;
53595 +   _CLICK_IOR[S]: data of specified size sent from kernel to user;
53596 +   _CLICK_IOW[S]: data of specified size sent from user to kernel;
53597 +   _CLICK_IOWR[S]: data of specified size transferred in both directions. */
53598 +
53599 +/* "Non-safe" LLRPCs will not be performed in parallel with other LLRPCs or
53600 +   handlers. */
53601 +#define _CLICK_IOX(d, n, sz)   ((d) | ((sz) << 16) | (n))
53602 +#define _CLICK_IO(n)           _CLICK_IOX(_CLICK_IOC_VOID, (n), 0)
53603 +#define _CLICK_IOR(n, sz)      _CLICK_IOX(_CLICK_IOC_OUT, (n), (sz))
53604 +#define _CLICK_IOW(n, sz)      _CLICK_IOX(_CLICK_IOC_IN, (n), (sz))
53605 +#define _CLICK_IOWR(n, sz)     _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT, (n), (sz))
53606 +
53607 +/* "Safe" LLRPCs may be performed in parallel with read handlers and other
53608 +   safe LLRPCs, but not with write handlers or unsafe LLRPCs. */
53609 +#define _CLICK_IOS(n)          _CLICK_IOX(_CLICK_IOC_VOID|_CLICK_IOC_SAFE, (n), 0)
53610 +#define _CLICK_IORS(n, sz)     _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_SAFE, (n), (sz))
53611 +#define _CLICK_IOWS(n, sz)     _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_SAFE, (n), (sz))
53612 +#define _CLICK_IOWRS(n, sz)    _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_SAFE, (n), (sz))
53613 +
53614 +/* "Flat" LLRPCs do not contain pointers -- all data read or written is
53615 +   contained in the size. They can be safe or unsafe. */
53616 +#define _CLICK_IORF(n, sz)     _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_FLAT, (n), (sz))
53617 +#define _CLICK_IOWF(n, sz)     _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_FLAT, (n), (sz))
53618 +#define _CLICK_IOWRF(n, sz)    _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_FLAT, (n), (sz))
53619 +#define _CLICK_IORSF(n, sz)    _CLICK_IOX(_CLICK_IOC_OUT|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz))
53620 +#define _CLICK_IOWSF(n, sz)    _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz))
53621 +#define _CLICK_IOWRSF(n, sz)   _CLICK_IOX(_CLICK_IOC_IN|_CLICK_IOC_OUT|_CLICK_IOC_SAFE|_CLICK_IOC_FLAT, (n), (sz))
53622 +
53623 +#define CLICK_LLRPC_PROXY                      _CLICK_IO(0)
53624 +#define CLICK_LLRPC_GET_RATE                   _CLICK_IOWRSF(1, 4)
53625 +#define CLICK_LLRPC_GET_RATES                  _CLICK_IOS(2)
53626 +#define CLICK_LLRPC_GET_COUNT                  _CLICK_IOWRSF(3, 4)
53627 +#define CLICK_LLRPC_GET_COUNTS                 _CLICK_IOS(4)
53628 +#define CLICK_LLRPC_GET_SWITCH                 _CLICK_IORSF(5, 4)
53629 +#define CLICK_LLRPC_SET_SWITCH                 _CLICK_IOWF(6, 4)
53630 +#define CLICK_LLRPC_MAP_IPADDRESS              _CLICK_IOWRF(7, 4)
53631 +#define CLICK_LLRPC_IPREWRITER_MAP_TCP         _CLICK_IOWRSF(8, 12)
53632 +#define CLICK_LLRPC_IPREWRITER_MAP_UDP         _CLICK_IOWRSF(9, 12)
53633 +#define CLICK_LLRPC_IPRATEMON_LEVEL_FWD_AVG    _CLICK_IO(10)
53634 +#define CLICK_LLRPC_IPRATEMON_LEVEL_REV_AVG    _CLICK_IO(11)
53635 +#define CLICK_LLRPC_IPRATEMON_FWD_N_REV_AVG    _CLICK_IO(12)
53636 +#define CLICK_LLRPC_IPRATEMON_SET_ANNO_LEVEL   _CLICK_IO(13)
53637 +
53638 +#define CLICK_IOC_TOUSERDEVICE_GET_MULTI       _CLICK_IOS(14)
53639 +#define CLICK_IOC_TOUSERDEVICE_SET_MULTI       _CLICK_IOS(15)
53640 +
53641 +struct click_llrpc_proxy_st {
53642 +  void* proxied_handler;       /* const Router::Handler* */
53643 +  uint32_t proxied_command;
53644 +  void* proxied_data;
53645 +};
53646 +
53647 +#define CLICK_LLRPC_COUNTS_SIZE 8
53648 +struct click_llrpc_counts_st {
53649 +  uint32_t n;
53650 +  uint32_t keys[CLICK_LLRPC_COUNTS_SIZE];
53651 +  uint32_t values[CLICK_LLRPC_COUNTS_SIZE];
53652 +};
53653 +
53654 +
53655 +/* data manipulation */
53656 +
53657 +#if CLICK_USERLEVEL
53658 +
53659 +# define CLICK_LLRPC_GET_DATA(local, remote, size) (memcpy(local, remote, size), 0)
53660 +# define CLICK_LLRPC_PUT_DATA(remote, local, size) (memcpy(remote, local, size), 0)
53661 +# define CLICK_LLRPC_GET(local_obj, remote_addr) (memcpy(&(local_obj), remote_addr, sizeof(local_obj)), 0)
53662 +# define CLICK_LLRPC_PUT(remote_addr, local_obj) (memcpy(remote_addr, &(local_obj), sizeof(local_obj)), 0)
53663 +
53664 +#elif CLICK_LINUXMODULE
53665 +
53666 +# ifdef __cplusplus
53667 +#  define __CLICK_LLRPC_CAST(x) reinterpret_cast< x >
53668 +extern "C" {
53669 +#  include <asm/uaccess.h>
53670 +}
53671 +# else
53672 +#  define __CLICK_LLRPC_CAST(x) (x)
53673 +#  include <asm/uaccess.h>
53674 +# endif
53675 +
53676 +# define __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size) \
53677 +               (copy_from_user(local, remote, size) > 0 ? -EFAULT : 0)
53678 +# define __CLICK_LLRPC_CONSTANT_GET_DATA(local, remote, size) \
53679 +               (size == 1 ? get_user(*__CLICK_LLRPC_CAST(unsigned char *)(local), __CLICK_LLRPC_CAST(unsigned char *)(remote)) \
53680 +                : (size == 2 ? get_user(*__CLICK_LLRPC_CAST(unsigned short *)(local), __CLICK_LLRPC_CAST(unsigned short *)(remote)) \
53681 +                   : (size == 4 ? get_user(*__CLICK_LLRPC_CAST(unsigned *)(local), __CLICK_LLRPC_CAST(unsigned *)(remote)) \
53682 +                      : __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size))))
53683 +
53684 +# define __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size) \
53685 +               (copy_to_user(remote, local, size) > 0 ? -EFAULT : 0)
53686 +# define __CLICK_LLRPC_CONSTANT_PUT_DATA(remote, local, size) \
53687 +               (size == 1 ? put_user(*__CLICK_LLRPC_CAST(const unsigned char *)(local), __CLICK_LLRPC_CAST(unsigned char *)(remote)) \
53688 +                : (size == 2 ? put_user(*__CLICK_LLRPC_CAST(const unsigned short *)(local), __CLICK_LLRPC_CAST(unsigned short *)(remote)) \
53689 +                   : (size == 4 ? put_user(*__CLICK_LLRPC_CAST(const unsigned *)(local), __CLICK_LLRPC_CAST(unsigned *)(remote)) \
53690 +                      : __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size))))
53691 +
53692 +# define CLICK_LLRPC_GET_DATA(local, remote, size) \
53693 +               (__builtin_constant_p(size) && size <= 4 \
53694 +                ? __CLICK_LLRPC_CONSTANT_GET_DATA(local, remote, size) \
53695 +                : __CLICK_LLRPC_GENERIC_GET_DATA(local, remote, size))
53696 +# define CLICK_LLRPC_PUT_DATA(remote, local, size) \
53697 +               (__builtin_constant_p(size) && size <= 4 \
53698 +                ? __CLICK_LLRPC_CONSTANT_PUT_DATA(remote, local, size) \
53699 +                : __CLICK_LLRPC_GENERIC_PUT_DATA(remote, local, size))
53700 +
53701 +# define CLICK_LLRPC_GET(local_obj, remote_addr) \
53702 +               get_user((local_obj), (remote_addr))
53703 +# define CLICK_LLRPC_PUT(remote_addr, local_obj) \
53704 +               put_user((local_obj), (remote_addr))
53705 +
53706 +#elif CLICK_BSDMODULE
53707 +
53708 +/*
53709 + * XXX  LLRPC isn't implemented for BSD yet.
53710 + */
53711 +
53712 +# define CLICK_LLRPC_GET_DATA(local, remote, size) ((void)(local), (void)(remote), (void)(size), -EFAULT)
53713 +# define CLICK_LLRPC_PUT_DATA(remote, local, size) ((void)(local), (void)(remote), (void)(size), -EFAULT)
53714 +# define CLICK_LLRPC_GET(local_obj, remote_addr) ((void)(local_obj), (void)(remote_addr), -EFAULT)
53715 +# define CLICK_LLRPC_PUT(remote_addr, local_obj) ((void)(local_obj), (void)(remote_addr), -EFAULT)
53716 +
53717 +#endif
53718 +
53719 +/* CLICK_NTOH_LLRPC: portable LLRPC numbers to host LLRPC numbers */
53720 +/* CLICK_HTON_LLRPC: host LLRPC numbers to portable LLRPC numbers */
53721 +/* both macros are only suitable for integer constants and the like */
53722 +#if _CLICK_IOC_VOID != _CLICK_NET_IOC_VOID || _CLICK_IOC_OUT != _CLICK_NET_IOC_OUT || _CLICK_IOC_IN != _CLICK_NET_IOC_IN
53723 +# define CLICK_LLRPC_NTOH(command) \
53724 +       (((command) & _CLICK_NET_IOC_VOID ? _CLICK_IOC_VOID : 0) \
53725 +        | ((command) & _CLICK_NET_IOC_OUT ? _CLICK_IOC_OUT : 0) \
53726 +        | ((command) & _CLICK_NET_IOC_IN ? _CLICK_IOC_IN : 0) \
53727 +        | ((command) & _CLICK_IOC_BASE_MASK))
53728 +# define CLICK_LLRPC_HTON(command) \
53729 +       (((command) & _CLICK_IOC_VOID ? _CLICK_NET_IOC_VOID : 0) \
53730 +        | ((command) & _CLICK_IOC_OUT ? _CLICK_NET_IOC_OUT : 0) \
53731 +        | ((command) & _CLICK_IOC_IN ? _CLICK_NET_IOC_IN : 0) \
53732 +        | ((command) & _CLICK_IOC_BASE_MASK))
53733 +#else
53734 +# define CLICK_LLRPC_NTOH(command) (command)
53735 +# define CLICK_LLRPC_HTON(command) (command)
53736 +#endif
53737 +
53738 +/* sanity checks */
53739 +#ifdef __FreeBSD__
53740 +# if _CLICK_IOC_VOID != IOC_VOID || _CLICK_IOC_OUT != IOC_OUT || _CLICK_IOC_IN != IOC_IN
53741 +#  error "bad _CLICK_IOC constants"
53742 +# endif
53743 +#endif
53744 +#endif
53745 diff -Nurb click-1.6.0/inst/include/click/master.hh click-1.6.0-27/inst/include/click/master.hh
53746 --- click-1.6.0/inst/include/click/master.hh    1969-12-31 19:00:00.000000000 -0500
53747 +++ click-1.6.0-27/inst/include/click/master.hh 2009-02-05 10:20:41.000000000 -0500
53748 @@ -0,0 +1,265 @@
53749 +// -*- c-basic-offset: 4; related-file-name: "../../lib/master.cc" -*-
53750 +#ifndef CLICK_MASTER_HH
53751 +#define CLICK_MASTER_HH
53752 +#include <click/vector.hh>
53753 +#include <click/timer.hh>
53754 +#include <click/task.hh>
53755 +#include <click/sync.hh>
53756 +#include <click/atomic.hh>
53757 +#if CLICK_USERLEVEL
53758 +# include <unistd.h>
53759 +# include <signal.h>
53760 +# if HAVE_POLL_H
53761 +#  include <poll.h>
53762 +# endif
53763 +#endif
53764 +#if CLICK_NS
53765 +# include <click/simclick.h>
53766 +#endif
53767 +CLICK_DECLS
53768 +class Element;
53769 +
53770 +#define CLICK_DEBUG_MASTER 0
53771 +
53772 +class Master { public:
53773 +
53774 +    Master(int nthreads);
53775 +    ~Master();
53776 +
53777 +    void use();
53778 +    void unuse();
53779 +
53780 +    void pause();
53781 +    inline void unpause();
53782 +
53783 +    inline int nthreads() const;
53784 +    inline RouterThread* thread(int id) const;
53785 +
53786 +    const volatile int* stopper_ptr() const    { return &_stopper; }
53787 +    
53788 +    Timestamp next_timer_expiry() const                { return _timer_expiry; }
53789 +    void run_timers();
53790 +    
53791 +#if CLICK_USERLEVEL
53792 +    int add_select(int fd, Element*, int mask);
53793 +    int remove_select(int fd, Element*, int mask);
53794 +    void run_selects(bool more_tasks);
53795 +
53796 +    int add_signal_handler(int signo, Router*, const String &handler);
53797 +    int remove_signal_handler(int signo, Router*, const String &handler);
53798 +    inline void run_signals();
53799 +#endif
53800 +
53801 +    void kill_router(Router*);
53802 +    
53803 +#if CLICK_NS
53804 +    void initialize_ns(simclick_node_t *simnode);
53805 +    simclick_node_t *simnode() const           { return _simnode; }
53806 +#endif
53807 +    
53808 +#if CLICK_DEBUG_MASTER
53809 +    String info() const;
53810 +#endif
53811 +
53812 +#if CLICK_USERLEVEL
53813 +    static sig_atomic_t signals_pending;
53814 +#endif
53815 +    
53816 +  private:
53817 +
53818 +    // stick _timer_expiry here so it will most likely fit in a cache line,
53819 +    // & we don't have to worry about its parts being updated separately
53820 +    Timestamp _timer_expiry;
53821 +    
53822 +#if CLICK_LINUXMODULE
53823 +    spinlock_t _master_lock;
53824 +    struct task_struct *_master_lock_task;
53825 +    int _master_lock_count;
53826 +#endif
53827 +    atomic_uint32_t _master_paused;
53828 +    inline void lock_master();
53829 +    inline void unlock_master();
53830 +
53831 +    // ROUTERS
53832 +    Router* _routers;
53833 +    int _refcount;
53834 +    void register_router(Router*);
53835 +    void prepare_router(Router*);
53836 +    void run_router(Router*, bool foreground);
53837 +    void unregister_router(Router*);
53838 +
53839 +    // THREADS
53840 +    Vector<RouterThread*> _threads;
53841 +
53842 +    // DRIVERMANAGER
53843 +    volatile int _stopper;
53844 +    inline void set_stopper(int);
53845 +    bool check_driver();
53846 +
53847 +    // PENDING TASKS
53848 +    uintptr_t _pending_head;
53849 +    volatile uintptr_t *_pending_tail;
53850 +    SpinlockIRQ _task_lock;
53851 +    void process_pending(RouterThread*);
53852 +
53853 +    // TIMERS
53854 +    Vector<Timer*> _timer_heap;
53855 +#if CLICK_LINUXMODULE
53856 +    spinlock_t _timer_lock;
53857 +    struct task_struct *_timer_task;
53858 +#endif
53859 +    void lock_timers();
53860 +    bool attempt_lock_timers();
53861 +    void unlock_timers();
53862 +    void timer_reheapify_from(int, Timer*, bool will_delete);
53863 +
53864 +#if CLICK_USERLEVEL
53865 +    // SELECT
53866 +# if HAVE_SYS_EVENT_H && HAVE_KQUEUE
53867 +    int _kqueue;
53868 +    int _selected_callno;
53869 +    Vector<int> _selected_callnos;
53870 +# endif
53871 +# if !HAVE_POLL_H
53872 +    struct pollfd {
53873 +       int fd;
53874 +       int events;
53875 +    };
53876 +    fd_set _read_select_fd_set;
53877 +    fd_set _write_select_fd_set;
53878 +    int _max_select_fd;
53879 +# endif /* HAVE_POLL_H */
53880 +    Vector<struct pollfd> _pollfds;
53881 +    Vector<Element*> _read_poll_elements;
53882 +    Vector<Element*> _write_poll_elements;
53883 +    Spinlock _select_lock;
53884 +    void remove_pollfd(int pi, int event);
53885 +# if HAVE_SYS_EVENT_H && HAVE_KQUEUE
53886 +    void run_selects_kqueue(bool);
53887 +# endif
53888 +# if HAVE_POLL_H
53889 +    void run_selects_poll(bool);
53890 +# else
53891 +    void run_selects_select(bool);
53892 +# endif
53893 +
53894 +    // SIGNALS
53895 +    struct SignalInfo {
53896 +       int signo;
53897 +       Router *router;
53898 +       String handler;
53899 +       SignalInfo *next;
53900 +    };
53901 +    SignalInfo *_siginfo;
53902 +    bool _signal_adding;
53903 +    Spinlock _signal_lock;
53904 +    void process_signals();
53905 +#endif
53906 +
53907 +#if CLICK_NS
53908 +    simclick_node_t *_simnode;
53909 +#endif
53910 +    
53911 +    Master(const Master&);
53912 +    Master& operator=(const Master&);
53913 +        
53914 +    friend class Task;
53915 +    friend class Timer;
53916 +    friend class RouterThread;
53917 +    friend class Router;
53918 +    
53919 +};
53920 +
53921 +inline int
53922 +Master::nthreads() const
53923 +{
53924 +    return _threads.size() - 2;
53925 +}
53926 +
53927 +inline RouterThread*
53928 +Master::thread(int id) const
53929 +{
53930 +    // return the requested thread, or the quiescent thread if there's no such
53931 +    // thread
53932 +    if ((unsigned)(id + 2) < (unsigned)_threads.size())
53933 +       return _threads.at_u(id + 2);
53934 +    else
53935 +       return _threads.at_u(1);
53936 +}
53937 +
53938 +#if CLICK_USERLEVEL
53939 +inline void
53940 +Master::run_signals()
53941 +{
53942 +    if (signals_pending)
53943 +       process_signals();
53944 +}
53945 +#endif
53946 +
53947 +inline void
53948 +Master::set_stopper(int s)
53949 +{
53950 +    _stopper = s;
53951 +}
53952 +
53953 +inline void
53954 +Master::lock_master()
53955 +{
53956 +#if CLICK_LINUXMODULE
53957 +    if (current != _master_lock_task) {
53958 +       spin_lock(&_master_lock);
53959 +       _master_lock_task = current;
53960 +    } else
53961 +       _master_lock_count++;
53962 +#endif
53963 +}
53964 +
53965 +inline void
53966 +Master::unlock_master()
53967 +{
53968 +#if CLICK_LINUXMODULE
53969 +    assert(current == _master_lock_task);
53970 +    if (_master_lock_count == 0) {
53971 +       _master_lock_task = 0;
53972 +       spin_unlock(&_master_lock);
53973 +    } else
53974 +       _master_lock_count--;
53975 +#endif
53976 +}
53977 +
53978 +inline void
53979 +Master::unpause()
53980 +{
53981 +    _master_paused--;
53982 +}
53983 +
53984 +inline void
53985 +Master::lock_timers()
53986 +{
53987 +#if CLICK_LINUXMODULE
53988 +    if (current != _timer_task)
53989 +       spin_lock(&_timer_lock);
53990 +#endif
53991 +}
53992 +
53993 +inline bool
53994 +Master::attempt_lock_timers()
53995 +{
53996 +#if CLICK_LINUXMODULE
53997 +    return spin_trylock(&_timer_lock);
53998 +#else
53999 +    return true;
54000 +#endif
54001 +}
54002 +
54003 +inline void
54004 +Master::unlock_timers()
54005 +{
54006 +#if CLICK_LINUXMODULE
54007 +    if (current != _timer_task)
54008 +       spin_unlock(&_timer_lock);
54009 +#endif
54010 +}
54011 +
54012 +CLICK_ENDDECLS
54013 +#endif
54014 diff -Nurb click-1.6.0/inst/include/click/md5.h click-1.6.0-27/inst/include/click/md5.h
54015 --- click-1.6.0/inst/include/click/md5.h        1969-12-31 19:00:00.000000000 -0500
54016 +++ click-1.6.0-27/inst/include/click/md5.h     2009-02-05 10:20:41.000000000 -0500
54017 @@ -0,0 +1,146 @@
54018 +/* -*- related-file-name: "../../lib/md5.cc" -*-
54019 +  Copyright (c) 2006-2007 Regents of the University of California
54020 +  Altered for Click by Eddie Kohler. */
54021 +/*
54022 +  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
54023 +
54024 +  This software is provided 'as-is', without any express or implied
54025 +  warranty.  In no event will the authors be held liable for any damages
54026 +  arising from the use of this software.
54027 +
54028 +  Permission is granted to anyone to use this software for any purpose,
54029 +  including commercial applications, and to alter it and redistribute it
54030 +  freely, subject to the following restrictions:
54031 +
54032 +  1. The origin of this software must not be misrepresented; you must not
54033 +     claim that you wrote the original software. If you use this software
54034 +     in a product, an acknowledgment in the product documentation would be
54035 +     appreciated but is not required.
54036 +  2. Altered source versions must be plainly marked as such, and must not be
54037 +     misrepresented as being the original software.
54038 +  3. This notice may not be removed or altered from any source distribution.
54039 +
54040 +  L. Peter Deutsch
54041 +  ghost@aladdin.com
54042 +
54043 + */
54044 +/*
54045 +  Independent implementation of MD5 (RFC 1321).
54046 +
54047 +  This code implements the MD5 Algorithm defined in RFC 1321, whose
54048 +  text is available at
54049 +       http://www.ietf.org/rfc/rfc1321.txt
54050 +  The code is derived from the text of the RFC, including the test suite
54051 +  (section A.5) but excluding the rest of Appendix A.  It does not include
54052 +  any code or documentation that is identified in the RFC as being
54053 +  copyrighted.
54054 +
54055 +  The original and principal author of md5.h is L. Peter Deutsch
54056 +  <ghost@aladdin.com>.  Other authors are noted in the change history
54057 +  that follows (in reverse chronological order):
54058 +
54059 +  2002-04-13 lpd Removed support for non-ANSI compilers; removed
54060 +       references to Ghostscript; clarified derivation from RFC 1321;
54061 +       now handles byte order either statically or dynamically.
54062 +  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
54063 +  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
54064 +       added conditionalization for C++ compilation from Martin
54065 +       Purschke <purschke@bnl.gov>.
54066 +  1999-05-03 lpd Original version.
54067 + */
54068 +
54069 +#ifndef CLICK_MD5_H
54070 +#define CLICK_MD5_H
54071 +#if CLICK_LINUXMODULE
54072 +#include <click/cxxprotect.h>
54073 +CLICK_CXX_PROTECT
54074 +#include <linux/crypto.h>
54075 +#include <asm/scatterlist.h>
54076 +CLICK_CXX_UNPROTECT
54077 +#include <click/cxxunprotect.h>
54078 +
54079 +typedef struct crypto_tfm *md5_state_t;
54080 +
54081 +static inline void md5_init(md5_state_t *pms) {
54082 +    *pms = crypto_alloc_tfm("md5", 0);
54083 +    if (*pms)
54084 +       crypto_digest_init(*pms);
54085 +}
54086 +
54087 +static inline void md5_append(md5_state_t *pms, const unsigned char *data, int nbytes) {
54088 +    if (*pms) {
54089 +       struct scatterlist sg[1];
54090 +       sg[0].page = virt_to_page(data);
54091 +       sg[0].offset = offset_in_page(data);
54092 +       sg[0].length = nbytes;
54093 +       crypto_digest_update(*pms, sg, 1);
54094 +    }
54095 +}
54096 +
54097 +static inline void md5_finish(md5_state_t *pms, const unsigned char digest[16]) {
54098 +    if (*pms)
54099 +       crypto_digest_final(*pms, digest);
54100 +}
54101 +
54102 +static inline void md5_free(md5_state_t *pms) {
54103 +    crypto_free_tfm(*pms);
54104 +}
54105 +
54106 +#else
54107 +
54108 +/*
54109 + * This package supports both compile-time and run-time determination of CPU
54110 + * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
54111 + * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
54112 + * defined as non-zero, the code will be compiled to run only on big-endian
54113 + * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
54114 + * run on either big- or little-endian CPUs, but will run slightly less
54115 + * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
54116 + */
54117 +
54118 +typedef unsigned char md5_byte_t; /* 8-bit byte */
54119 +typedef uint32_t md5_word_t; /* 32-bit word */
54120 +
54121 +/* Define the state of the MD5 Algorithm. */
54122 +typedef struct md5_state_s {
54123 +    md5_word_t count[2];       /* message length in bits, lsw first */
54124 +    md5_word_t abcd[4];                /* digest buffer */
54125 +    md5_byte_t buf[64];                /* accumulate block */
54126 +} md5_state_t;
54127 +
54128 +#ifdef __cplusplus
54129 +extern "C" 
54130 +{
54131 +#endif
54132 +
54133 +/* Initialize the algorithm. */
54134 +void md5_init(md5_state_t *pms);
54135 +
54136 +/* Append a string to the message. */
54137 +void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
54138 +
54139 +/* Finish the message and return the digest. */
54140 +#define MD5_DIGEST_SIZE                        16
54141 +void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
54142 +
54143 +/* Finish the message and return the digest in ASCII.  DOES NOT write a
54144 +   terminating NUL character.
54145 +   If 'allow_at == 0', the digest uses characters [A-Za-z0-9_], and has
54146 +   length between MD5_TEXT_DIGEST_SIZE and MD5_TEXT_DIGEST_MAX_SIZE.
54147 +   If 'allow_at != 0', the digest uses characters [A-Za-z0-9_@], and has
54148 +   length of exactly MD5_TEXT_DIGEST_SIZE.
54149 +   Returns the number of characters written.  Again, this will NOT include
54150 +   a terminating NUL. */
54151 +#define MD5_TEXT_DIGEST_SIZE           22      /* min len */
54152 +#define MD5_TEXT_DIGEST_MAX_SIZE       26      /* max len if !allow_at */
54153 +int md5_finish_text(md5_state_t *pms, char *text_digest, int allow_at);
54154 +
54155 +#define md5_free(pms)          /* do nothing */
54156 +
54157 +#ifdef __cplusplus
54158 +}
54159 +#endif
54160 +
54161 +#endif
54162 +#endif
54163 +
54164 diff -Nurb click-1.6.0/inst/include/click/nameinfo.hh click-1.6.0-27/inst/include/click/nameinfo.hh
54165 --- click-1.6.0/inst/include/click/nameinfo.hh  1969-12-31 19:00:00.000000000 -0500
54166 +++ click-1.6.0-27/inst/include/click/nameinfo.hh       2009-02-05 10:20:41.000000000 -0500
54167 @@ -0,0 +1,210 @@
54168 +// -*- c-basic-offset: 4; related-file-name: "../../lib/nameinfo.cc" -*-
54169 +#ifndef CLICK_NAMEINFO_HH
54170 +#define CLICK_NAMEINFO_HH
54171 +#include <click/string.hh>
54172 +#include <click/vector.hh>
54173 +#include <click/straccum.hh>
54174 +CLICK_DECLS
54175 +class Element;
54176 +class NameDB;
54177 +class ErrorHandler;
54178 +
54179 +class NameInfo { public:
54180 +
54181 +    NameInfo();
54182 +    ~NameInfo();
54183 +
54184 +    static void static_initialize();
54185 +    static void static_cleanup();
54186 +
54187 +    enum {
54188 +       T_NONE = 0,
54189 +       T_SCHEDULEINFO = 0x00000001,
54190 +       T_SCRIPT_INSN = 0x00000002,
54191 +       T_SIGNO = 0x00000003,
54192 +       T_ETHERNET_ADDR = 0x01000001,
54193 +       T_IP_ADDR = 0x04000001,
54194 +       T_IP_PREFIX = 0x04000002,
54195 +       T_IP_PROTO = 0x04000003,
54196 +       T_IPFILTER_TYPE = 0x04000004,
54197 +       T_TCP_OPT = 0x04000005,
54198 +       T_ICMP_TYPE = 0x04010000,
54199 +       T_ICMP_CODE = 0x04010100,
54200 +       T_IP_PORT = 0x04020000,
54201 +       T_TCP_PORT = 0x04020006,
54202 +       T_UDP_PORT = 0x04020011,
54203 +       T_IP_FIELDNAME = 0x04030000,
54204 +       T_ICMP_FIELDNAME = 0x04030001,
54205 +       T_TCP_FIELDNAME = 0x04030006,
54206 +       T_UDP_FIELDNAME = 0x04030011,
54207 +       T_IP6_ADDR = 0x06000001,
54208 +       T_IP6_PREFIX = 0x06000002
54209 +    };
54210 +
54211 +    static NameDB *getdb(uint32_t type, const Element *prefix, int value_size, bool create);
54212 +    static void installdb(NameDB *db, const Element *prefix);
54213 +    static void removedb(NameDB *db);
54214 +
54215 +    static bool query(uint32_t type, const Element *prefix, const String &name, void *value_store, int value_size);
54216 +    static bool query_int(uint32_t type, const Element *prefix, const String &name, int32_t *value_store);
54217 +    static bool query_int(uint32_t type, const Element *prefix, const String &name, uint32_t *value_store);
54218 +    static String revquery(uint32_t type, const Element *prefix, const void *value, int value_size);
54219 +    static inline String revquery_int(uint32_t type, const Element *prefix, int32_t value);
54220 +    static inline void define(uint32_t type, const Element *prefix, const String &name, const void *value, int value_size);
54221 +    static inline void define_int(uint32_t type, const Element *prefix, const String &name, int32_t value);
54222 +
54223 +#ifdef CLICK_NAMEDB_CHECK
54224 +    void check(ErrorHandler *);
54225 +    static void check(const Element *, ErrorHandler *);
54226 +#endif
54227 +    
54228 +  private:
54229 +    
54230 +    Vector<NameDB *> _namedb_roots;
54231 +    Vector<NameDB *> _namedbs;
54232 +
54233 +    inline NameDB *install_dynamic_sentinel() { return (NameDB *) this; }
54234 +    NameDB *namedb(uint32_t type, int value_size, const String &prefix, NameDB *installer);
54235 +    
54236 +#ifdef CLICK_NAMEDB_CHECK
54237 +    uintptr_t _check_generation;
54238 +    void checkdb(NameDB *db, NameDB *parent, ErrorHandler *errh);
54239 +#endif
54240 +    
54241 +};
54242 +
54243 +
54244 +class NameDB { public:
54245 +    
54246 +    inline NameDB(uint32_t type, const String &prefix, int value_size);
54247 +    virtual ~NameDB()                  { }
54248 +
54249 +    uint32_t type() const              { return _type; }
54250 +    int value_size() const             { return _value_size; }
54251 +    const String &prefix() const       { return _prefix; }
54252 +    NameDB *prefix_parent() const      { return _prefix_parent; }
54253 +
54254 +    virtual bool query(const String &name, void *value, int vsize) = 0;
54255 +    virtual String revfind(const void *value, int vsize);
54256 +    virtual void define(const String &name, const void *value, int vsize);
54257 +    inline void define_int(const String &name, int32_t value);
54258 +
54259 +#ifdef CLICK_NAMEDB_CHECK
54260 +    virtual void check(ErrorHandler *);
54261 +#endif
54262 +    
54263 +  private:
54264 +    
54265 +    uint32_t _type;
54266 +    String _prefix;
54267 +    int _value_size;
54268 +    NameDB *_prefix_parent;
54269 +    NameDB *_prefix_sibling;
54270 +    NameDB *_prefix_child;
54271 +    NameInfo *_installed;
54272 +
54273 +#ifdef CLICK_NAMEDB_CHECK
54274 +    uintptr_t _check_generation;
54275 +#endif
54276 +    
54277 +    friend class NameInfo;
54278 +    
54279 +};
54280 +
54281 +class StaticNameDB : public NameDB { public:
54282 +
54283 +    struct Entry {
54284 +       const char *name;
54285 +       uint32_t value;
54286 +    };
54287 +
54288 +    inline StaticNameDB(uint32_t type, const String &prefix, const Entry *entry, int nentry);
54289 +
54290 +    bool query(const String &name, void *value, int vsize);
54291 +    String revfind(const void *value, int vsize);
54292 +
54293 +#ifdef CLICK_NAMEDB_CHECK
54294 +    void check(ErrorHandler *);
54295 +#endif
54296 +    
54297 +  private:
54298 +
54299 +    const Entry *_entries;
54300 +    int _nentries;
54301 +       
54302 +};
54303 +
54304 +class DynamicNameDB : public NameDB { public:
54305 +
54306 +    inline DynamicNameDB(uint32_t type, const String &prefix, int vsize);
54307 +
54308 +    bool query(const String &name, void *value, int vsize);
54309 +    void define(const String &name, const void *value, int vsize);
54310 +    String revfind(const void *value, int vsize);
54311 +    
54312 +#ifdef CLICK_NAMEDB_CHECK
54313 +    void check(ErrorHandler *);
54314 +#endif
54315 +    
54316 +  private:
54317 +
54318 +    Vector<String> _names;
54319 +    StringAccum _values;
54320 +    int _sorted;
54321 +
54322 +    void *find(const String &name, bool create);
54323 +    void sort();
54324 +    
54325 +};
54326 +
54327 +
54328 +inline
54329 +NameDB::NameDB(uint32_t type, const String &prefix, int vsize)
54330 +    : _type(type), _prefix(prefix), _value_size(vsize),
54331 +      _prefix_parent(0), _prefix_sibling(0), _prefix_child(0), _installed(0)
54332 +{
54333 +#ifdef CLICK_NAMEDB_CHECK
54334 +    _check_generation = 0;
54335 +#endif
54336 +}
54337 +
54338 +inline
54339 +StaticNameDB::StaticNameDB(uint32_t type, const String &prefix, const Entry *entry, int nentry)
54340 +    : NameDB(type, prefix, sizeof(entry->value)), _entries(entry), _nentries(nentry)
54341 +{
54342 +}
54343 +
54344 +inline
54345 +DynamicNameDB::DynamicNameDB(uint32_t type, const String &prefix, int vsize)
54346 +    : NameDB(type, prefix, vsize), _sorted(0)
54347 +{
54348 +}
54349 +
54350 +inline String
54351 +NameInfo::revquery_int(uint32_t type, const Element *e, int32_t value)
54352 +{
54353 +    return revquery(type, e, &value, sizeof(value));
54354 +}
54355 +
54356 +inline void
54357 +NameInfo::define(uint32_t type, const Element *e, const String &name, const void *value, int vsize)
54358 +{
54359 +    if (NameDB *db = getdb(type, e, vsize, true))
54360 +       db->define(name, value, vsize);
54361 +}
54362 +
54363 +inline void
54364 +NameInfo::define_int(uint32_t type, const Element *e, const String &name, const int32_t value)
54365 +{
54366 +    if (NameDB *db = getdb(type, e, sizeof(value), true))
54367 +       db->define(name, &value, sizeof(value));
54368 +}
54369 +
54370 +inline void
54371 +NameDB::define_int(const String &name, const int32_t value)
54372 +{
54373 +    define(name, &value, sizeof(value));
54374 +}
54375 +
54376 +CLICK_ENDDECLS
54377 +#endif
54378 diff -Nurb click-1.6.0/inst/include/click/notifier.hh click-1.6.0-27/inst/include/click/notifier.hh
54379 --- click-1.6.0/inst/include/click/notifier.hh  1969-12-31 19:00:00.000000000 -0500
54380 +++ click-1.6.0-27/inst/include/click/notifier.hh       2009-02-05 10:20:41.000000000 -0500
54381 @@ -0,0 +1,488 @@
54382 +// -*- c-basic-offset: 4; related-file-name: "../../lib/notifier.cc" -*-
54383 +#ifndef CLICK_NOTIFIER_HH
54384 +#define CLICK_NOTIFIER_HH
54385 +#include <click/task.hh>
54386 +#include <click/atomic.hh>
54387 +CLICK_DECLS
54388 +
54389 +class NotifierSignal { public:
54390 +
54391 +    inline NotifierSignal();           // always active
54392 +    inline NotifierSignal(atomic_uint32_t* value, uint32_t mask);
54393 +
54394 +    static inline NotifierSignal idle_signal();
54395 +    static inline NotifierSignal busy_signal();
54396 +    static inline NotifierSignal overderived_signal();
54397 +    static inline NotifierSignal uninitialized_signal();
54398 +
54399 +    typedef bool (NotifierSignal::*unspecified_bool_type)() const;
54400 +    inline operator unspecified_bool_type() const;
54401 +    inline bool active() const;
54402 +
54403 +    inline bool idle() const;
54404 +    inline bool busy() const;
54405 +    inline bool overderived() const;
54406 +    inline bool initialized() const;
54407 +
54408 +    inline void set_active(bool active);
54409 +
54410 +    NotifierSignal& operator+=(const NotifierSignal& a);
54411 +
54412 +    String unparse() const;
54413 +    
54414 +    static void static_initialize();
54415 +    
54416 +  private:
54417 +
54418 +    atomic_uint32_t* _value;
54419 +    uint32_t _mask;
54420 +
54421 +    enum { TRUE_MASK = 1, FALSE_MASK = 2, OVERDERIVED_MASK = 4,
54422 +          UNINITIALIZED_MASK = 8 };
54423 +    static atomic_uint32_t static_value;
54424 +    friend bool operator==(const NotifierSignal&, const NotifierSignal&);
54425 +    friend bool operator!=(const NotifierSignal&, const NotifierSignal&);
54426 +    friend NotifierSignal operator+(NotifierSignal, const NotifierSignal&);
54427 +
54428 +};
54429 +
54430 +class Notifier { public:
54431 +
54432 +    enum SearchOp { SEARCH_STOP = 0, SEARCH_CONTINUE, SEARCH_CONTINUE_WAKE };
54433 +    
54434 +    inline Notifier(SearchOp = SEARCH_STOP);
54435 +    inline Notifier(const NotifierSignal &, SearchOp = SEARCH_STOP);
54436 +    virtual ~Notifier();
54437 +
54438 +    int initialize(Router *);
54439 +    
54440 +    inline const NotifierSignal &signal() const;
54441 +    inline SearchOp search_op() const;
54442 +
54443 +    inline bool active() const;
54444 +
54445 +    inline void set_active(bool active);
54446 +    inline void wake();
54447 +    inline void sleep();
54448 +    
54449 +    virtual int add_listener(Task*);
54450 +    virtual void remove_listener(Task*);
54451 +    virtual int add_dependent_signal(NotifierSignal*);
54452 +
54453 +    static const char EMPTY_NOTIFIER[];
54454 +    static const char FULL_NOTIFIER[];
54455 +    
54456 +    static NotifierSignal upstream_empty_signal(Element* e, int port, Task* task, Notifier* dependent_notifier = 0);
54457 +    static NotifierSignal downstream_full_signal(Element* e, int port, Task* task, Notifier* dependent_notifier = 0);
54458 +
54459 +  private:
54460 +
54461 +    NotifierSignal _signal;
54462 +    SearchOp _search_op;
54463 +    
54464 +};
54465 +
54466 +class ActiveNotifier : public Notifier { public:
54467 +
54468 +    ActiveNotifier(SearchOp = SEARCH_STOP);
54469 +    ~ActiveNotifier();
54470 +
54471 +    int add_listener(Task*);           // complains on out of memory
54472 +    void remove_listener(Task*);
54473 +    int add_dependent_signal(NotifierSignal*);
54474 +    void listeners(Vector<Task*>&) const;
54475 +
54476 +    inline void set_active(bool active, bool schedule = true);
54477 +    inline void wake();
54478 +    inline void sleep();
54479 +    
54480 +  private:
54481 +
54482 +    typedef union {
54483 +       Task *t;
54484 +       NotifierSignal *s;
54485 +       void *v;
54486 +    } task_or_signal_t;
54487 +    
54488 +    Task* _listener1;
54489 +    task_or_signal_t* _listeners;
54490 +
54491 +    int listener_change(void *what, int where, bool rem);
54492 +    
54493 +    ActiveNotifier(const ActiveNotifier&); // does not exist
54494 +    ActiveNotifier& operator=(const ActiveNotifier&); // does not exist
54495 +
54496 +};
54497 +
54498 +
54499 +/** @brief Construct a busy signal.
54500 + *
54501 + * The returned signal is always active.
54502 + */
54503 +inline
54504 +NotifierSignal::NotifierSignal()
54505 +    : _value(&static_value), _mask(TRUE_MASK)
54506 +{
54507 +}
54508 +
54509 +/** @brief Construct an activity signal.
54510 + *
54511 + * Elements should not use this constructor directly.
54512 + * @sa Router::new_notifier_signal
54513 + */
54514 +inline
54515 +NotifierSignal::NotifierSignal(atomic_uint32_t* value, uint32_t mask)
54516 +    : _value(value), _mask(mask)
54517 +{
54518 +}
54519 +
54520 +/** @brief Return an idle signal.
54521 + *
54522 + * The returned signal is never active.
54523 + */
54524 +inline NotifierSignal
54525 +NotifierSignal::idle_signal()
54526 +{
54527 +    return NotifierSignal(&static_value, 0);
54528 +}
54529 +
54530 +/** @brief Return a busy signal.
54531 + *
54532 + * The returned signal is always active.
54533 + */
54534 +inline NotifierSignal
54535 +NotifierSignal::busy_signal()
54536 +{
54537 +    return NotifierSignal(&static_value, TRUE_MASK);
54538 +}
54539 +
54540 +/** @brief Return an overderived busy signal.
54541 + *
54542 + * Overderived signals replace derived signals that are too complex to
54543 + * represent.  An overderived signal, like a busy signal, is always active.
54544 + */
54545 +inline NotifierSignal
54546 +NotifierSignal::overderived_signal()
54547 +{
54548 +    return NotifierSignal(&static_value, OVERDERIVED_MASK | TRUE_MASK);
54549 +}
54550 +
54551 +/** @brief Return an uninitialized signal.
54552 + *
54553 + * Unintialized signals may be used occasionally as placeholders for true
54554 + * signals to be added later.  Uninitialized signals are never active.
54555 + */
54556 +inline NotifierSignal
54557 +NotifierSignal::uninitialized_signal()
54558 +{
54559 +    return NotifierSignal(&static_value, UNINITIALIZED_MASK);
54560 +}
54561 +
54562 +/** @brief Return whether the signal is active.
54563 + * @return true iff the signal is currently active.
54564 + */
54565 +inline bool
54566 +NotifierSignal::active() const
54567 +{
54568 +    return (*_value & _mask) != 0;
54569 +}
54570 +
54571 +/** @brief Return whether the signal is active.
54572 + * @return true iff the signal is currently active.
54573 + */
54574 +inline
54575 +NotifierSignal::operator unspecified_bool_type() const
54576 +{
54577 +    return active() ? &NotifierSignal::active : 0;
54578 +}
54579 +
54580 +/** @brief Return whether the signal is idle.
54581 + * @return true iff the signal is idle, i.e. it will never be active.
54582 + */
54583 +inline bool
54584 +NotifierSignal::idle() const
54585 +{
54586 +    return !_mask;
54587 +}
54588 +
54589 +/** @brief Return whether the signal is busy.
54590 + * @return true iff the signal is busy, i.e. it will always be active.
54591 + *
54592 + * @note An overderived_signal() is busy(), but a busy_signal() is not
54593 + * overderived().
54594 + */
54595 +inline bool
54596 +NotifierSignal::busy() const
54597 +{
54598 +    return (_value == &static_value && (_mask & TRUE_MASK));
54599 +}
54600 +
54601 +/** @brief Return whether the signal is overderived.
54602 + * @return true iff the signal equals overderived_signal().
54603 + *
54604 + * @note An overderived_signal() is busy(), but a busy_signal() is not
54605 + * overderived().
54606 + */
54607 +inline bool
54608 +NotifierSignal::overderived() const
54609 +{
54610 +    return (_value == &static_value && (_mask & OVERDERIVED_MASK));
54611 +}
54612 +
54613 +/** @brief Return whether the signal is initialized.
54614 + * @return true iff the signal doesn't equal uninitialized_signal().
54615 + */
54616 +inline bool
54617 +NotifierSignal::initialized() const
54618 +{
54619 +    return (_value != &static_value || !(_mask & UNINITIALIZED_MASK));
54620 +}
54621 +
54622 +/** @brief Set whether the signal is active.
54623 + * @param active true iff the signal is active
54624 + *
54625 + * Use this function to set whether a basic signal is active.
54626 + *
54627 + * It is illegal to call set_active() on derived, idle, busy, or overderived
54628 + * signals.  Some of these actions may cause an assertion failure.
54629 + */
54630 +inline void
54631 +NotifierSignal::set_active(bool active)
54632 +{
54633 +    assert(_value != &static_value);
54634 +    if (active)
54635 +       *_value |= _mask;
54636 +    else
54637 +       *_value &= ~_mask;
54638 +}
54639 +
54640 +/** @relates NotifierSignal
54641 + * @brief Compare two NotifierSignals for equality.
54642 + *
54643 + * Returns true iff the two NotifierSignals are the same -- i.e., they combine
54644 + * information about exactly the same sets of basic signals.
54645 + *
54646 + * All idle() signals compare equal.  busy_signal() and overderived_signal()
54647 + * do not compare equal, however.
54648 + */
54649 +inline bool
54650 +operator==(const NotifierSignal& a, const NotifierSignal& b)
54651 +{
54652 +    return (a._mask == b._mask && (a._value == b._value || a._mask == 0));
54653 +}
54654 +
54655 +/** @relates NotifierSignal
54656 + * @brief Compare two NotifierSignals for inequality.
54657 + *
54658 + * Returns true iff !(@a a == @a b).
54659 + */
54660 +inline bool
54661 +operator!=(const NotifierSignal& a, const NotifierSignal& b)
54662 +{
54663 +    return !(a == b);
54664 +}
54665 +
54666 +/** @relates NotifierSignal
54667 + * @brief Return a derived signal.
54668 + *
54669 + * Returns a derived signal that combines information from its arguments.  The
54670 + * result will be active whenever @a a and/or @a b is active.  If the
54671 + * combination of @a a and @a b is too complex to represent, returns an
54672 + * overderived signal; this trivially follows the invariant since it is always
54673 + * active.
54674 + *
54675 + * Signal derivation is commutative and associative.  The following special
54676 + * combinations are worth remembering:
54677 + *
54678 + *  - An idle() signal plus any other signal @a a equals @a a.  Thus,
54679 + *    idle_signal() is the identity for signal derivation.
54680 + *  - A busy() signal plus any other signal is busy().  Thus, busy_signal()
54681 + *    is the "zero element" for signal derivation.
54682 + *
54683 + * @sa NotifierSignal::operator+=
54684 + */
54685 +inline NotifierSignal
54686 +operator+(NotifierSignal a, const NotifierSignal& b)
54687 +{
54688 +    return a += b;
54689 +}
54690 +
54691 +/** @brief Constructs a Notifier.
54692 + * @param search_op controls notifier path search
54693 + *
54694 + * This function constructs a Notifier object.  The Notifier's associated
54695 + * NotifierSignal is initially idle; it becomes associated with a signal after
54696 + * initialize() is called.
54697 + *
54698 + * The @a search_op argument controls path search.  The rest of this entry
54699 + * describes it further.
54700 + *
54701 + * Elements interested in notification generally search for Notifier objects
54702 + * along all possible packet paths upstream (or downstream) of one of their
54703 + * ports.  When a Notifier is found along a path, further searching along that
54704 + * path is cut off, so only the closest Notifiers are found.  Sometimes,
54705 + * however, it makes more sense to continue searching for more Notifiers.  The
54706 + * correct behavior is Notifier-specific, and is controlled by this method.
54707 + * When the search encounters a Notifier, it consults the Notifier's @a
54708 + * search_op variable supplied to the constructor.  It should equal one of
54709 + * three SearchOp constants, which correspond to the following behavior:
54710 + *
54711 + * <dl>
54712 + * <dt>SEARCH_STOP</dt>
54713 + * <dd>Stop searching along this path.  This is the default.</dd>
54714 + * <dt>SEARCH_CONTINUE</dt>
54715 + * <dd>Continue searching along this path.</dd>
54716 + * <dt>SEARCH_CONTINUE_WAKE</dt>
54717 + * <dd>Continue searching along this path, but any further Notifiers should
54718 + * only be used for adding and removing listeners; ignore their NotifierSignal
54719 + * objects.  This operation is useful, for example, for schedulers that store
54720 + * packets temporarily.  Such schedulers provide their own NotifierSignal,
54721 + * since the scheduler may still hold a packet even when all upstream sources
54722 + * are empty, but since they aren't packet sources, they don't know when
54723 + * new packets arrive and can't wake up sleeping listeners.  During
54724 + * initialization, such schedulers should call Notifier::upstream_empty_signal,
54725 + * passing their own Notifier as the fourth argument.  This will ensure that
54726 + * their signal is turned on appropriately whenever an upstream queue becomes
54727 + * nonempty.</dd>
54728 + * </dl>
54729 + */
54730 +inline
54731 +Notifier::Notifier(SearchOp search_op)
54732 +    : _signal(NotifierSignal::uninitialized_signal()), _search_op(search_op)
54733 +{
54734 +}
54735 +
54736 +/** @brief Constructs a Notifier associated with a given signal.
54737 + * @param signal the associated NotifierSignal
54738 + * @param search_op controls notifier path search
54739 + *
54740 + * This function constructs a Notifier object associated with a specific
54741 + * NotifierSignal, such as NotifierSignal::idle_signal().  Calling
54742 + * initialize() on this Notifier will not change the associated
54743 + * NotifierSignal.  The @a search_op argument is as in
54744 + * Notifier::Notifier(SearchOp), above.
54745 + */
54746 +inline
54747 +Notifier::Notifier(const NotifierSignal &signal, SearchOp search_op)
54748 +    : _signal(signal), _search_op(search_op)
54749 +{
54750 +}
54751 +
54752 +/** @brief Return this Notifier's associated NotifierSignal.
54753 + *
54754 + * Every Notifier object corresponds to one NotifierSignal; this method
54755 + * returns it.  The signal is @link NotifierSignal::idle idle() @endlink
54756 + * before initialize() is called.
54757 + */
54758 +inline const NotifierSignal &
54759 +Notifier::signal() const
54760 +{
54761 +    return _signal;
54762 +}
54763 +
54764 +/** @brief Return this Notifier's search operation.
54765 + *
54766 + * @sa Notifier() for a detailed explanation of search operations.
54767 + */
54768 +inline Notifier::SearchOp
54769 +Notifier::search_op() const
54770 +{
54771 +    return _search_op;
54772 +}
54773 +
54774 +/** @brief Returns whether the associated signal is active.
54775 + *
54776 + * Same as signal().active().
54777 + */
54778 +inline bool
54779 +Notifier::active() const
54780 +{
54781 +    return _signal.active();
54782 +}
54783 +
54784 +/** @brief Sets the associated signal's activity.
54785 + * @param active true iff the signal should be active
54786 + */
54787 +inline void
54788 +Notifier::set_active(bool active)
54789 +{
54790 +    _signal.set_active(active);
54791 +}   
54792 +
54793 +/** @brief Sets the associated signal to active.
54794 + * @sa set_active
54795 + */
54796 +inline void
54797 +Notifier::wake()
54798 +{
54799 +    set_active(true);
54800 +}   
54801 +
54802 +/** @brief Sets the associated signal to inactive.
54803 + * @sa set_active
54804 + */
54805 +inline void
54806 +Notifier::sleep()
54807 +{
54808 +    set_active(false);
54809 +}   
54810 +
54811 +/** @brief Sets the associated signal's activity, possibly scheduling any
54812 + * listener tasks.
54813 + * @param active true iff the signal should be active
54814 + * @param schedule if true, wake up listener tasks
54815 + *
54816 + * If @a active and @a schedule are both true, and the signal was previously
54817 + * inactive, then any listener Tasks are scheduled with Task::reschedule().
54818 + *
54819 + * @sa wake, sleep, add_listener
54820 + */
54821 +inline void
54822 +ActiveNotifier::set_active(bool active, bool schedule)
54823 +{
54824 +    if (active != Notifier::active()) {
54825 +       // 2007.Sep.6: Perhaps there was a race condition here.  Make sure
54826 +       // that we set the notifier to active BEFORE rescheduling downstream
54827 +       // tasks.  This is because, in a multithreaded environment, a task we
54828 +       // reschedule might run BEFORE we set the notifier; after which it
54829 +       // would go to sleep forever.
54830 +       Notifier::set_active(active);
54831 +       
54832 +       if (active && schedule) {
54833 +           if (_listener1)
54834 +               _listener1->reschedule();
54835 +           else if (task_or_signal_t *tos = _listeners) {
54836 +               for (; tos->t; tos++)
54837 +                   tos->t->reschedule();
54838 +               for (tos++; tos->s; tos++)
54839 +                   tos->s->set_active(true);
54840 +           }
54841 +       }
54842 +    }
54843 +}
54844 +
54845 +/** @brief Sets the associated signal to active and schedules any listener
54846 + * tasks.
54847 + *
54848 + * If the signal was previously inactive, then any listener Tasks are
54849 + * scheduled with Task::reschedule().
54850 + *
54851 + * @sa set_active, add_listener
54852 + */
54853 +inline void
54854 +ActiveNotifier::wake()
54855 +{
54856 +    set_active(true, true);
54857 +}
54858 +
54859 +/** @brief Sets the associated signal to inactive.
54860 + * @sa set_active
54861 + */
54862 +inline void
54863 +ActiveNotifier::sleep()
54864 +{
54865 +    set_active(false, true);
54866 +}
54867 +
54868 +CLICK_ENDDECLS
54869 +#endif
54870 diff -Nurb click-1.6.0/inst/include/click/package.hh click-1.6.0-27/inst/include/click/package.hh
54871 --- click-1.6.0/inst/include/click/package.hh   1969-12-31 19:00:00.000000000 -0500
54872 +++ click-1.6.0-27/inst/include/click/package.hh        2009-02-05 10:20:41.000000000 -0500
54873 @@ -0,0 +1,28 @@
54874 +#ifndef CLICK_PACKAGE_HH
54875 +#define CLICK_PACKAGE_HH
54876 +#include <click/vector.hh>
54877 +#include <click/string.hh>
54878 +CLICK_DECLS
54879 +#ifndef CLICK_TOOL
54880 +class Element;
54881 +#endif
54882 +CLICK_ENDDECLS
54883 +
54884 +extern "C" {
54885 +
54886 +void click_provide(const char *);
54887 +void click_unprovide(const char *);
54888 +bool click_has_provision(const char *);
54889 +void click_public_packages(CLICK_NAME(Vector)<CLICK_NAME(String)> &);
54890 +
54891 +#if CLICK_LINUXMODULE
54892 +int click_add_element_type(const char *element_name, CLICK_NAME(Element) *(*factory)(uintptr_t thunk), uintptr_t thunk, struct module *);
54893 +void click_remove_element_type(int);
54894 +#elif !CLICK_TOOL
54895 +int click_add_element_type(const char *element_name, CLICK_NAME(Element) *(*factory)(uintptr_t thunk), uintptr_t thunk);
54896 +void click_remove_element_type(int);
54897 +#endif
54898 +
54899 +}
54900 +
54901 +#endif
54902 diff -Nurb click-1.6.0/inst/include/click/packet.hh click-1.6.0-27/inst/include/click/packet.hh
54903 --- click-1.6.0/inst/include/click/packet.hh    1969-12-31 19:00:00.000000000 -0500
54904 +++ click-1.6.0-27/inst/include/click/packet.hh 2009-02-05 10:20:41.000000000 -0500
54905 @@ -0,0 +1,1171 @@
54906 +// -*- related-file-name: "../../lib/packet.cc" -*-
54907 +#ifndef CLICK_PACKET_HH
54908 +#define CLICK_PACKET_HH
54909 +#include <click/ipaddress.hh>
54910 +#include <click/ip6address.hh>
54911 +#include <click/glue.hh>
54912 +#include <click/timestamp.hh>
54913 +#if CLICK_LINUXMODULE
54914 +# include <click/skbmgr.hh>
54915 +#else
54916 +# include <click/atomic.hh>
54917 +#endif
54918 +struct click_ether;
54919 +struct click_ip;
54920 +struct click_icmp;
54921 +struct click_ip6;
54922 +struct click_tcp;
54923 +struct click_udp;
54924 +
54925 +#if CLICK_NS
54926 +# include <click/simclick.h>
54927 +#endif
54928 +
54929 +
54930 +CLICK_DECLS
54931 +
54932 +class IP6Address;
54933 +class WritablePacket;
54934 +
54935 +class Packet { public:
54936 +
54937 +  // PACKET CREATION
54938 +  enum { DEFAULT_HEADROOM = 28, MIN_BUFFER_LENGTH = 64 };
54939 +  
54940 +  static WritablePacket *make(uint32_t);
54941 +  static WritablePacket *make(const char *, uint32_t);
54942 +  static WritablePacket *make(const unsigned char *, uint32_t);
54943 +  static WritablePacket *make(uint32_t, const unsigned char *, uint32_t, uint32_t);
54944 +  
54945 +#if CLICK_LINUXMODULE
54946 +  // Packet::make(sk_buff *) wraps a Packet around an existing sk_buff.
54947 +  // Packet now owns the sk_buff (ie we don't increment skb->users).
54948 +  static Packet *make(struct sk_buff *);
54949 +  struct sk_buff *skb()                        { return (struct sk_buff *)this; }
54950 +  const struct sk_buff *skb() const    { return (const struct sk_buff*)this; }
54951 +#elif CLICK_BSDMODULE
54952 +  // Packet::make(mbuf *) wraps a Packet around an existing mbuf.
54953 +  // Packet now owns the mbuf.
54954 +  static Packet *make(struct mbuf *);
54955 +  struct mbuf *m()                     { return _m; }
54956 +  const struct mbuf *m() const         { return (const struct mbuf *)_m; }
54957 +  struct mbuf *steal_m();
54958 +#else                  /* User-space */
54959 +  static WritablePacket *make(unsigned char *, uint32_t, void (*destructor)(unsigned char *, size_t));
54960 +#endif
54961 +
54962 +    inline void kill();
54963 +
54964 +    inline bool shared() const;
54965 +    Packet *clone();
54966 +    WritablePacket *uniqueify();
54967 +  
54968 +    inline const unsigned char *data() const;
54969 +    inline const unsigned char *end_data() const;
54970 +    inline uint32_t length() const;
54971 +    inline uint32_t headroom() const;
54972 +    inline uint32_t tailroom() const;
54973 +    inline const unsigned char *buffer() const;
54974 +    inline const unsigned char *end_buffer() const;
54975 +    inline uint32_t buffer_length() const;
54976 +  
54977 +    WritablePacket *push(uint32_t nb); // Add more space before packet.
54978 +    WritablePacket *push_mac_header(uint32_t nb);
54979 +    Packet *nonunique_push(uint32_t nb);
54980 +    void pull(uint32_t nb);            // Get rid of initial bytes.
54981 +    WritablePacket *put(uint32_t nb);  // Add bytes to end of pkt.
54982 +    Packet *nonunique_put(uint32_t nb);
54983 +    void take(uint32_t nb);            // Delete bytes from end of pkt.
54984 +
54985 +    Packet *shift_data(int offset, bool free_on_failure = true);
54986 +#if CLICK_USERLEVEL
54987 +    inline void shrink_data(const unsigned char *, uint32_t length);
54988 +    inline void change_headroom_and_length(uint32_t headroom, uint32_t length);
54989 +#endif
54990 +
54991 +    // HEADER ANNOTATIONS
54992 +    inline const unsigned char *mac_header() const;
54993 +    inline void set_mac_header(const unsigned char *);
54994 +    inline void set_mac_header(const unsigned char *, uint32_t);
54995 +    inline int mac_header_offset() const;
54996 +    inline uint32_t mac_header_length() const;
54997 +    inline int mac_length() const;
54998 +
54999 +    inline const unsigned char *network_header() const;
55000 +    inline void set_network_header(const unsigned char *, uint32_t);
55001 +    inline void set_network_header_length(uint32_t);
55002 +    inline int network_header_offset() const;
55003 +    inline uint32_t network_header_length() const;
55004 +    inline int network_length() const;
55005 +
55006 +    inline const unsigned char *transport_header() const;
55007 +    inline int transport_header_offset() const;
55008 +    inline int transport_length() const;
55009 +
55010 +    // CONVENIENCE HEADER ANNOTATIONS
55011 +    inline const click_ether *ether_header() const;
55012 +    inline void set_ether_header(const click_ether *);
55013 +  
55014 +    inline const click_ip *ip_header() const;
55015 +    inline void set_ip_header(const click_ip *, uint32_t);
55016 +    inline int ip_header_offset() const;
55017 +    inline uint32_t ip_header_length() const;
55018 +
55019 +    inline const click_ip6 *ip6_header() const;
55020 +    inline void set_ip6_header(const click_ip6 *);
55021 +    inline void set_ip6_header(const click_ip6 *, uint32_t);
55022 +    inline int ip6_header_offset() const;
55023 +    inline uint32_t ip6_header_length() const;
55024 +
55025 +    inline const click_icmp *icmp_header() const;
55026 +    inline const click_tcp *tcp_header() const;
55027 +    inline const click_udp *udp_header() const;
55028 +
55029 +    // LINKS
55030 +    inline Packet *next() const;
55031 +    inline Packet *&next();
55032 +    inline void set_next(Packet *p);
55033 +  
55034 +    // ANNOTATIONS
55035 +
55036 + private:
55037 +  struct Anno;
55038 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55039 +  const Anno *anno() const             { return (const Anno *)skb()->cb; }
55040 +  Anno *anno()                         { return (Anno *)skb()->cb; }
55041 +#else                          /* User-space and BSD kernel module */
55042 +  const Anno *anno() const             { return (const Anno *)_cb; }
55043 +  Anno *anno()                         { return (Anno *)_cb; }
55044 +#endif
55045 +  public:
55046 +
55047 +    enum PacketType {          // must agree with if_packet.h
55048 +       HOST = 0, BROADCAST = 1, MULTICAST = 2, OTHERHOST = 3, OUTGOING = 4,
55049 +       LOOPBACK = 5, FASTROUTE = 6
55050 +    };
55051 +
55052 +    enum { ADDR_ANNO_SIZE = 16 };
55053 +
55054 +    uint8_t *addr_anno()                       { return anno()->addr.c; }
55055 +    const uint8_t *addr_anno() const   { return anno()->addr.c; }
55056 +    IPAddress dst_ip_anno() const;
55057 +    void set_dst_ip_anno(IPAddress);
55058 +    const IP6Address &dst_ip6_anno() const;
55059 +    void set_dst_ip6_anno(const IP6Address &);
55060 +
55061 +    inline const Timestamp &timestamp_anno() const;
55062 +    inline Timestamp &timestamp_anno();
55063 +    inline void set_timestamp_anno(const Timestamp &);
55064 +
55065 +    inline net_device *device_anno() const;
55066 +    inline void set_device_anno(net_device *);
55067 +
55068 +    inline PacketType packet_type_anno() const;
55069 +    inline void set_packet_type_anno(PacketType);
55070 +    
55071 +#if CLICK_LINUXMODULE
55072 +# ifdef HAVE_INT64_TYPES
55073 +  uint64_t perfctr_anno() const                { return anno()->perfctr; }
55074 +  void set_perfctr_anno(uint64_t pc)   { anno()->perfctr = pc; }
55075 +# endif
55076 +
55077 +#else                  /* User-space and BSD kernel module */
55078 +
55079 +#if CLICK_NS
55080 +  class SimPacketinfoWrapper {
55081 +  public:
55082 +    simclick_simpacketinfo _pinfo;
55083 +    SimPacketinfoWrapper() {
55084 +      // The uninitialized value for the simulator packet data can't be 
55085 +      // all zeros (0 is a valid packet id) or random junk out of memory
55086 +      // since the simulator will look at this info to see if the packet
55087 +      // was originally generated by it. Accidental collisions with other
55088 +      // packet IDs or bogus packet IDs can cause weird things to happen. So we
55089 +      // set it to all -1 here to keep the simulator from getting confused.
55090 +      memset(&_pinfo,-1,sizeof(_pinfo));
55091 +    }
55092 +  };
55093 +  simclick_simpacketinfo*  get_sim_packetinfo() {
55094 +    return &(_sim_packetinfo._pinfo);
55095 +  }
55096 +  void set_sim_packetinfo(simclick_simpacketinfo* pinfo) { 
55097 +    _sim_packetinfo._pinfo = *pinfo;
55098 +  }
55099 +#endif
55100 +#endif
55101 +
55102 +  enum { USER_ANNO_SIZE = 24,
55103 +        USER_ANNO_US_SIZE = 12,
55104 +        USER_ANNO_S_SIZE = 12,
55105 +        USER_ANNO_U_SIZE = 6,
55106 +        USER_ANNO_I_SIZE = 6 };
55107 +  
55108 +  uint8_t user_anno_c(int i) const     { return anno()->user.c[i]; }
55109 +  void set_user_anno_c(int i, uint8_t v) { anno()->user.c[i] = v; }
55110 +  uint16_t user_anno_us(int i) const   { return anno()->user.us[i]; }
55111 +  void set_user_anno_us(int i, uint16_t v) { anno()->user.us[i] = v; }
55112 +  int16_t user_anno_s(int i) const     { return anno()->user.us[i]; }
55113 +  void set_user_anno_s(int i, int16_t v) { anno()->user.s[i] = v; }
55114 +  uint32_t user_anno_u(int i) const    { return anno()->user.u[i]; }
55115 +  void set_user_anno_u(int i, uint32_t v) { anno()->user.u[i] = v; }
55116 +  int32_t user_anno_i(int i) const     { return anno()->user.i[i]; }
55117 +  void set_user_anno_i(int i, int32_t v) { anno()->user.i[i] = v; }
55118 +
55119 +  const uint8_t *all_user_anno() const { return &anno()->user.c[0]; }
55120 +  uint8_t *all_user_anno()             { return &anno()->user.c[0]; }
55121 +  const uint32_t *all_user_anno_u() const { return &anno()->user.u[0]; }
55122 +  uint32_t *all_user_anno_u()          { return &anno()->user.u[0]; }
55123 +  
55124 +  void clear_annotations();
55125 +  void copy_annotations(const Packet *);
55126 +
55127 +    inline const unsigned char *buffer_data() const CLICK_DEPRECATED;
55128 +  
55129 +  private:
55130 +
55131 +    // Anno must fit in sk_buff's char cb[48].
55132 +    struct Anno {
55133 +       union {
55134 +           char ch[ADDR_ANNO_SIZE];
55135 +           uint8_t c[ADDR_ANNO_SIZE];
55136 +           uint32_t ip4;
55137 +       } addr;
55138 +    
55139 +       union {
55140 +           uint8_t c[USER_ANNO_SIZE];
55141 +           uint16_t us[USER_ANNO_US_SIZE];
55142 +           int16_t s[USER_ANNO_S_SIZE];
55143 +           uint32_t u[USER_ANNO_U_SIZE];
55144 +           int32_t i[USER_ANNO_I_SIZE];
55145 +       } user;
55146 +       // flag allocations: see packet_anno.hh
55147 +    
55148 +#if (CLICK_LINUXMODULE || CLICK_BSDMODULE) && defined(HAVE_INT64_TYPES)
55149 +       uint64_t perfctr;
55150 +#endif
55151 +    };
55152 +
55153 +#if !CLICK_LINUXMODULE
55154 +    // User-space and BSD kernel module implementations.
55155 +    atomic_uint32_t _use_count;
55156 +    Packet *_data_packet;
55157 +    /* mimic Linux sk_buff */
55158 +    unsigned char *_head; /* start of allocated buffer */
55159 +    unsigned char *_data; /* where the packet starts */
55160 +    unsigned char *_tail; /* one beyond end of packet */
55161 +    unsigned char *_end;  /* one beyond end of allocated buffer */
55162 +# if CLICK_USERLEVEL
55163 +    void (*_destructor)(unsigned char *, size_t);
55164 +# endif
55165 +    unsigned char _cb[48];
55166 +    unsigned char *_mac;
55167 +    unsigned char *_nh;
55168 +    unsigned char *_h;
55169 +    PacketType _pkt_type;
55170 +    Timestamp _timestamp;
55171 +# if CLICK_BSDMODULE
55172 +    struct mbuf *_m;
55173 +# endif
55174 +    Packet *_next;
55175 +# if CLICK_NS
55176 +    SimPacketinfoWrapper _sim_packetinfo;
55177 +# endif
55178 +#endif
55179 +  
55180 +  Packet();
55181 +  Packet(const Packet &);
55182 +  ~Packet();
55183 +  Packet &operator=(const Packet &);
55184 +
55185 +#if !CLICK_LINUXMODULE
55186 +  Packet(int, int, int)                        { }
55187 +  static WritablePacket *make(int, int, int);
55188 +  bool alloc_data(uint32_t, uint32_t, uint32_t);
55189 +#endif
55190 +#if CLICK_BSDMODULE
55191 +  static void assimilate_mbuf(Packet *p);
55192 +  void assimilate_mbuf();
55193 +#endif
55194 +
55195 +  inline void shift_header_annotations(int32_t shift);
55196 +  WritablePacket *expensive_uniqueify(int32_t extra_headroom, int32_t extra_tailroom, bool free_on_failure);
55197 +  WritablePacket *expensive_push(uint32_t nbytes);
55198 +  WritablePacket *expensive_put(uint32_t nbytes);
55199 +  
55200 +  friend class WritablePacket;
55201 +
55202 +};
55203 +
55204 +
55205 +class WritablePacket : public Packet { public:
55206 +  
55207 +    inline unsigned char *data() const;
55208 +    inline unsigned char *end_data() const;
55209 +    inline unsigned char *buffer() const;
55210 +    inline unsigned char *end_buffer() const;
55211 +    inline unsigned char *mac_header() const;
55212 +    inline click_ether *ether_header() const;
55213 +    inline unsigned char *network_header() const;
55214 +    inline click_ip *ip_header() const;
55215 +    inline click_ip6 *ip6_header() const;
55216 +    inline unsigned char *transport_header() const;
55217 +    inline click_icmp *icmp_header() const;
55218 +    inline click_tcp *tcp_header() const;
55219 +    inline click_udp *udp_header() const;
55220 +
55221 +    inline unsigned char *buffer_data() const CLICK_DEPRECATED;
55222 +    
55223 + private:
55224 +
55225 +    WritablePacket()                           { }
55226 +    WritablePacket(const Packet &)             { }
55227 +    ~WritablePacket()                          { }
55228 +
55229 +    friend class Packet;
55230 +  
55231 +};
55232 +
55233 +
55234 +
55235 +inline const unsigned char *
55236 +Packet::data() const
55237 +{
55238 +#if CLICK_LINUXMODULE
55239 +    return skb()->data;
55240 +#else
55241 +    return _data;
55242 +#endif
55243 +}
55244 +
55245 +inline const unsigned char *
55246 +Packet::end_data() const
55247 +{
55248 +#if CLICK_LINUXMODULE
55249 +    return skb()->tail;
55250 +#else
55251 +    return _tail;
55252 +#endif
55253 +}
55254 +
55255 +inline uint32_t
55256 +Packet::length() const
55257 +{
55258 +#if CLICK_LINUXMODULE
55259 +    return skb()->len;
55260 +#else
55261 +    return _tail - _data;
55262 +#endif
55263 +}
55264 +
55265 +inline uint32_t
55266 +Packet::headroom() const
55267 +{
55268 +#if CLICK_LINUXMODULE
55269 +    return skb()->data - skb()->head;
55270 +#else
55271 +    return _data - _head;
55272 +#endif
55273 +}
55274 +
55275 +inline uint32_t
55276 +Packet::tailroom() const
55277 +{
55278 +#if CLICK_LINUXMODULE
55279 +    return skb()->end - skb()->tail;
55280 +#else
55281 +    return _end - _tail;
55282 +#endif
55283 +}
55284 +
55285 +inline const unsigned char *
55286 +Packet::buffer() const
55287 +{
55288 +#if CLICK_LINUXMODULE
55289 +    return skb()->head;
55290 +#else
55291 +    return _head;
55292 +#endif
55293 +}
55294 +
55295 +inline const unsigned char *
55296 +Packet::end_buffer() const
55297 +{
55298 +#if CLICK_LINUXMODULE
55299 +    return skb()->end;
55300 +#else
55301 +    return _end;
55302 +#endif
55303 +}
55304 +
55305 +inline uint32_t
55306 +Packet::buffer_length() const
55307 +{
55308 +#if CLICK_LINUXMODULE
55309 +    return skb()->end - skb()->head;
55310 +#else
55311 +    return _end - _head;
55312 +#endif
55313 +}
55314 +
55315 +inline const unsigned char *
55316 +Packet::buffer_data() const
55317 +{
55318 +#if CLICK_LINUXMODULE
55319 +    return skb()->head;
55320 +#else
55321 +    return _head;
55322 +#endif
55323 +}
55324 +
55325 +
55326 +inline Packet *
55327 +Packet::next() const
55328 +{
55329 +#if CLICK_LINUXMODULE
55330 +    return (Packet *)(skb()->next);
55331 +#else
55332 +    return _next;
55333 +#endif
55334 +}
55335 +
55336 +inline Packet *&
55337 +Packet::next()
55338 +{
55339 +#if CLICK_LINUXMODULE
55340 +    return (Packet *&)(skb()->next);
55341 +#else
55342 +    return _next;
55343 +#endif
55344 +}
55345 +
55346 +inline void
55347 +Packet::set_next(Packet *p)
55348 +{
55349 +#if CLICK_LINUXMODULE
55350 +    skb()->next = p->skb();
55351 +#else
55352 +    _next = p;
55353 +#endif
55354 +}
55355 +
55356 +inline const unsigned char *
55357 +Packet::mac_header() const
55358 +{
55359 +#if CLICK_LINUXMODULE
55360 +    return skb_mac_header(skb());
55361 +#else
55362 +    return _mac;
55363 +#endif
55364 +}
55365 +
55366 +inline const unsigned char *
55367 +Packet::network_header() const
55368 +{
55369 +#if CLICK_LINUXMODULE
55370 +    return skb_network_header(skb());
55371 +#else
55372 +    return _nh;
55373 +#endif
55374 +}
55375 +
55376 +inline const unsigned char *
55377 +Packet::transport_header() const
55378 +{
55379 +#if CLICK_LINUXMODULE
55380 +    return skb_transport_header(skb());
55381 +#else
55382 +    return _h;
55383 +#endif
55384 +}
55385 +
55386 +inline const click_ether *
55387 +Packet::ether_header() const
55388 +{
55389 +    return reinterpret_cast<const click_ether *>(mac_header());
55390 +}
55391 +
55392 +inline const click_ip *
55393 +Packet::ip_header() const
55394 +{
55395 +    return reinterpret_cast<const click_ip *>(network_header());
55396 +}
55397 +
55398 +inline const click_ip6 *
55399 +Packet::ip6_header() const
55400 +{
55401 +    return reinterpret_cast<const click_ip6 *>(network_header());
55402 +}
55403 +
55404 +inline const click_icmp *
55405 +Packet::icmp_header() const
55406 +{
55407 +    return reinterpret_cast<const click_icmp *>(transport_header());
55408 +}
55409 +
55410 +inline const click_tcp *
55411 +Packet::tcp_header() const
55412 +{
55413 +    return reinterpret_cast<const click_tcp *>(transport_header());
55414 +}
55415 +
55416 +inline const click_udp *
55417 +Packet::udp_header() const
55418 +{
55419 +    return reinterpret_cast<const click_udp *>(transport_header());
55420 +}
55421 +
55422 +inline int
55423 +Packet::mac_length() const
55424 +{
55425 +    return end_data() - mac_header();
55426 +}
55427 +
55428 +inline int
55429 +Packet::network_length() const
55430 +{
55431 +    return end_data() - network_header();
55432 +}
55433 +
55434 +inline int
55435 +Packet::transport_length() const
55436 +{
55437 +    return end_data() - transport_header();
55438 +}
55439 +
55440 +inline const Timestamp &
55441 +Packet::timestamp_anno() const
55442 +{
55443 +#if CLICK_LINUXMODULE
55444 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
55445 +    return *(const Timestamp *) &skb()->stamp;
55446 +# else
55447 +    return *(const Timestamp *) &skb()->tstamp;
55448 +# endif
55449 +#else
55450 +    return _timestamp;
55451 +#endif
55452 +}
55453 +
55454 +inline Timestamp &
55455 +Packet::timestamp_anno()
55456 +{
55457 +#if CLICK_LINUXMODULE
55458 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
55459 +    return *(Timestamp *) &skb()->stamp;
55460 +# else
55461 +    return *(Timestamp *) &skb()->tstamp;
55462 +# endif
55463 +#else
55464 +    return _timestamp;
55465 +#endif
55466 +}
55467 +
55468 +inline void
55469 +Packet::set_timestamp_anno(const Timestamp &timestamp)
55470 +{
55471 +#if CLICK_LINUXMODULE
55472 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 13)
55473 +    memcpy(&skb()->stamp, &timestamp, 8);
55474 +# else
55475 +    memcpy(&skb()->tstamp, &timestamp, 8);
55476 +# endif
55477 +#else
55478 +    _timestamp = timestamp;
55479 +#endif
55480 +}
55481 +
55482 +inline net_device *
55483 +Packet::device_anno() const
55484 +{
55485 +#if CLICK_LINUXMODULE
55486 +    return skb()->dev;
55487 +#elif CLICK_BSDMODULE
55488 +    if (m())
55489 +       return m()->m_pkthdr.rcvif;
55490 +    else
55491 +       return 0;
55492 +#else
55493 +    return 0;
55494 +#endif
55495 +}
55496 +
55497 +inline void
55498 +Packet::set_device_anno(net_device *dev)
55499 +{
55500 +#if CLICK_LINUXMODULE
55501 +    skb()->dev = dev;
55502 +#elif CLICK_BSDMODULE
55503 +    if (m())
55504 +       m()->m_pkthdr.rcvif = dev;
55505 +#else
55506 +    (void) dev;
55507 +#endif
55508 +}
55509 +
55510 +inline Packet::PacketType
55511 +Packet::packet_type_anno() const
55512 +{
55513 +#if CLICK_LINUXMODULE
55514 +    return (PacketType)(skb()->pkt_type & PACKET_TYPE_MASK);
55515 +#else
55516 +    return _pkt_type;
55517 +#endif
55518 +}
55519 +
55520 +inline void
55521 +Packet::set_packet_type_anno(PacketType p)
55522 +{
55523 +#if CLICK_LINUXMODULE
55524 +    skb()->pkt_type = (skb()->pkt_type & PACKET_CLEAN) | p;
55525 +#else
55526 +    _pkt_type = p;
55527 +#endif
55528 +}
55529 +
55530 +inline WritablePacket *
55531 +Packet::make(uint32_t len)
55532 +{
55533 +  return make(DEFAULT_HEADROOM, (const unsigned char *)0, len, 0);
55534 +}
55535 +
55536 +inline WritablePacket *
55537 +Packet::make(const char *s, uint32_t len)
55538 +{
55539 +  return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0);
55540 +}
55541 +
55542 +inline WritablePacket *
55543 +Packet::make(const unsigned char *s, uint32_t len)
55544 +{
55545 +  return make(DEFAULT_HEADROOM, (const unsigned char *)s, len, 0);
55546 +}
55547 +
55548 +#if CLICK_LINUXMODULE
55549 +inline Packet *
55550 +Packet::make(struct sk_buff *skb)
55551 +{
55552 +  if (atomic_read(&skb->users) == 1) {
55553 +    skb_orphan(skb);
55554 +    return reinterpret_cast<Packet *>(skb);
55555 +  } else {
55556 +    Packet *p = reinterpret_cast<Packet *>(skb_clone(skb, GFP_ATOMIC));
55557 +    atomic_dec(&skb->users);
55558 +    return p;
55559 +  }
55560 +}
55561 +#endif
55562 +
55563 +
55564 +inline void
55565 +Packet::kill()
55566 +{
55567 +#if CLICK_LINUXMODULE
55568 +    struct sk_buff *b = skb();
55569 +    b->next = b->prev = 0;
55570 +# if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 15)
55571 +    b->list = 0;
55572 +# endif
55573 +    skbmgr_recycle_skbs(b);
55574 +#else
55575 +    if (_use_count.dec_and_test())
55576 +       delete this;
55577 +#endif
55578 +}
55579 +
55580 +
55581 +#if CLICK_BSDMODULE            /* BSD kernel module */
55582 +inline void
55583 +Packet::assimilate_mbuf(Packet *p)
55584 +{
55585 +  struct mbuf *m = p->m();
55586 +
55587 +  if (!m) return;
55588 +
55589 +  p->_head = (unsigned char *)
55590 +            (m->m_flags & M_EXT    ? m->m_ext.ext_buf :
55591 +             m->m_flags & M_PKTHDR ? m->m_pktdat :
55592 +                                     m->m_dat);
55593 +  p->_data = (unsigned char *)m->m_data;
55594 +  p->_tail = (unsigned char *)(m->m_data + m->m_len);
55595 +  p->_end = p->_head + (
55596 +               m->m_flags & M_EXT    ? MCLBYTES :
55597 +               m->m_flags & M_PKTHDR ? MHLEN :
55598 +                                       MLEN);
55599 +}
55600 +
55601 +inline void
55602 +Packet::assimilate_mbuf()
55603 +{
55604 +  assimilate_mbuf(this);
55605 +}
55606 +
55607 +inline Packet *
55608 +Packet::make(struct mbuf *m)
55609 +{
55610 +  if (!(m->m_flags & M_PKTHDR))
55611 +    panic("trying to construct Packet from a non-packet mbuf");
55612 +
55613 +  Packet *p = new Packet;
55614 +  if (m->m_pkthdr.len != m->m_len) {
55615 +    /* click needs contiguous data */
55616 +    // click_chatter("m_pulldown, Click needs contiguous data");
55617 +
55618 +    if (m_pulldown(m, 0, m->m_pkthdr.len, NULL) == NULL)
55619 +       panic("m_pulldown failed");
55620 +  }
55621 +  p->_m = m;
55622 +  assimilate_mbuf(p);
55623 +
55624 +  return p;
55625 +}
55626 +#endif
55627 +
55628 +inline bool
55629 +Packet::shared() const
55630 +{
55631 +#if CLICK_LINUXMODULE
55632 +    return skb_cloned(const_cast<struct sk_buff *>(skb()));
55633 +#else
55634 +    return (_data_packet || _use_count > 1);
55635 +#endif
55636 +}
55637 +
55638 +inline WritablePacket *
55639 +Packet::uniqueify()
55640 +{
55641 +  if (!shared())
55642 +    return static_cast<WritablePacket *>(this);
55643 +  else
55644 +    return expensive_uniqueify(0, 0, true);
55645 +}
55646 +
55647 +inline WritablePacket *
55648 +Packet::push(uint32_t nbytes)
55649 +{
55650 +  if (headroom() >= nbytes && !shared()) {
55651 +    WritablePacket *q = (WritablePacket *)this;
55652 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55653 +    __skb_push(q->skb(), nbytes);
55654 +#else                          /* User-space and BSD kernel module */
55655 +    q->_data -= nbytes;
55656 +# if CLICK_BSDMODULE
55657 +    q->m()->m_data -= nbytes;
55658 +    q->m()->m_len += nbytes;
55659 +    q->m()->m_pkthdr.len += nbytes;
55660 +# endif
55661 +#endif
55662 +    return q;
55663 +  } else
55664 +    return expensive_push(nbytes);
55665 +}
55666 +
55667 +inline Packet *
55668 +Packet::nonunique_push(uint32_t nbytes)
55669 +{
55670 +  if (headroom() >= nbytes) {
55671 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55672 +    __skb_push(skb(), nbytes);
55673 +#else                          /* User-space and BSD kernel module */
55674 +    _data -= nbytes;
55675 +# if CLICK_BSDMODULE
55676 +    m()->m_data -= nbytes;
55677 +    m()->m_len += nbytes;
55678 +    m()->m_pkthdr.len += nbytes;
55679 +# endif
55680 +#endif
55681 +    return this;
55682 +  } else
55683 +    return expensive_push(nbytes);
55684 +}
55685 +
55686 +/* Get rid of some bytes at the start of a packet */
55687 +inline void
55688 +Packet::pull(uint32_t nbytes)
55689 +{
55690 +  if (nbytes > length()) {
55691 +    click_chatter("Packet::pull %d > length %d\n", nbytes, length());
55692 +    nbytes = length();
55693 +  }
55694 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55695 +  __skb_pull(skb(), nbytes);
55696 +#else                          /* User-space and BSD kernel module */
55697 +  _data += nbytes;
55698 +# if CLICK_BSDMODULE
55699 +  m()->m_data += nbytes;
55700 +  m()->m_len -= nbytes;
55701 +  m()->m_pkthdr.len -= nbytes;
55702 +# endif
55703 +#endif
55704 +}
55705 +
55706 +inline WritablePacket *
55707 +Packet::put(uint32_t nbytes)
55708 +{
55709 +  if (tailroom() >= nbytes && !shared()) {
55710 +    WritablePacket *q = (WritablePacket *)this;
55711 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55712 +    __skb_put(q->skb(), nbytes);
55713 +#else                          /* User-space and BSD kernel module */
55714 +    q->_tail += nbytes;
55715 +# if CLICK_BSDMODULE
55716 +    q->m()->m_len += nbytes;
55717 +    q->m()->m_pkthdr.len += nbytes;
55718 +# endif
55719 +#endif
55720 +    return q;
55721 +  } else
55722 +    return expensive_put(nbytes);
55723 +}
55724 +
55725 +inline Packet *
55726 +Packet::nonunique_put(uint32_t nbytes)
55727 +{
55728 +  if (tailroom() >= nbytes) {
55729 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55730 +    __skb_put(skb(), nbytes);
55731 +#else                          /* User-space and BSD kernel module */
55732 +    _tail += nbytes;
55733 +# if CLICK_BSDMODULE
55734 +    m()->m_len += nbytes;
55735 +    m()->m_pkthdr.len += nbytes;
55736 +# endif
55737 +#endif
55738 +    return this;
55739 +  } else
55740 +    return expensive_put(nbytes);
55741 +}
55742 +
55743 +/* Get rid of some bytes at the end of a packet */
55744 +inline void
55745 +Packet::take(uint32_t nbytes)
55746 +{
55747 +  if (nbytes > length()) {
55748 +    click_chatter("Packet::take %d > length %d\n", nbytes, length());
55749 +    nbytes = length();
55750 +  }
55751 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55752 +  skb()->tail -= nbytes;
55753 +  skb()->len -= nbytes;
55754 +#else                          /* User-space and BSD kernel module */
55755 +  _tail -= nbytes;
55756 +# if CLICK_BSDMODULE
55757 +  m()->m_len -= nbytes;
55758 +  m()->m_pkthdr.len -= nbytes;
55759 +# endif
55760 +#endif
55761 +}
55762 +
55763 +#if CLICK_USERLEVEL
55764 +inline void
55765 +Packet::shrink_data(const unsigned char *d, uint32_t length)
55766 +{
55767 +  assert(_data_packet);
55768 +  if (d >= _head && d + length >= d && d + length <= _end) {
55769 +    _head = _data = const_cast<unsigned char *>(d);
55770 +    _tail = _end = const_cast<unsigned char *>(d + length);
55771 +  }
55772 +}
55773 +
55774 +inline void
55775 +Packet::change_headroom_and_length(uint32_t headroom, uint32_t length)
55776 +{
55777 +  if (headroom + length <= buffer_length()) {
55778 +    _data = _head + headroom;
55779 +    _tail = _data + length;
55780 +  }
55781 +}
55782 +#endif
55783 +
55784 +inline const IP6Address &
55785 +Packet::dst_ip6_anno() const
55786 +{
55787 +    return *reinterpret_cast<const IP6Address *>(anno()->addr.ch);
55788 +}
55789 +
55790 +inline void
55791 +Packet::set_dst_ip6_anno(const IP6Address &a)
55792 +{
55793 +    memcpy(anno()->addr.ch, &a, 16);
55794 +}
55795 +
55796 +inline IPAddress 
55797 +Packet::dst_ip_anno() const
55798 +{
55799 +    return IPAddress(anno()->addr.ip4);
55800 +}
55801 +
55802 +inline void 
55803 +Packet::set_dst_ip_anno(IPAddress a)
55804 +{ 
55805 +    anno()->addr.ip4 = a.addr(); 
55806 +}
55807 +
55808 +inline void
55809 +Packet::set_mac_header(const unsigned char *h)
55810 +{
55811 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55812 +    skb()->mac_header = const_cast<unsigned char *>(h);
55813 +#else                          /* User-space and BSD kernel module */
55814 +    _mac = const_cast<unsigned char *>(h);
55815 +#endif
55816 +}
55817 +
55818 +inline void
55819 +Packet::set_mac_header(const unsigned char *h, uint32_t len)
55820 +{
55821 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55822 +    skb()->mac_header = const_cast<unsigned char *>(h);
55823 +    skb()->network_header = const_cast<unsigned char *>(h) + len;
55824 +#else                          /* User-space and BSD kernel module */
55825 +    _mac = const_cast<unsigned char *>(h);
55826 +    _nh = const_cast<unsigned char *>(h) + len;
55827 +#endif
55828 +}
55829 +
55830 +inline void
55831 +Packet::set_ether_header(const click_ether *h)
55832 +{
55833 +    set_mac_header(reinterpret_cast<const unsigned char *>(h), 14);
55834 +}
55835 +
55836 +inline WritablePacket *
55837 +Packet::push_mac_header(uint32_t nbytes)
55838 +{
55839 +    WritablePacket *q;
55840 +    if (headroom() >= nbytes && !shared()) {
55841 +       q = (WritablePacket *)this;
55842 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55843 +       __skb_push(q->skb(), nbytes);
55844 +#else                          /* User-space and BSD kernel module */
55845 +       q->_data -= nbytes;
55846 +# if CLICK_BSDMODULE
55847 +       q->m()->m_data -= nbytes;
55848 +       q->m()->m_len += nbytes;
55849 +       q->m()->m_pkthdr.len += nbytes;
55850 +# endif
55851 +#endif
55852 +    } else if ((q = expensive_push(nbytes)))
55853 +       /* nada */;
55854 +    else
55855 +       return 0;
55856 +    q->set_mac_header(q->data(), nbytes);
55857 +    return q;
55858 +}
55859 +
55860 +inline void
55861 +Packet::set_network_header(const unsigned char *h, uint32_t len)
55862 +{
55863 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55864 +    skb()->network_header = const_cast<unsigned char *>(h);
55865 +    skb()->transport_header = const_cast<unsigned char *>(h) + len;
55866 +#else                          /* User-space and BSD kernel module */
55867 +    _nh = const_cast<unsigned char *>(h);
55868 +    _h = const_cast<unsigned char *>(h) + len;
55869 +#endif
55870 +}
55871 +
55872 +inline void
55873 +Packet::set_network_header_length(uint32_t len)
55874 +{
55875 +#if CLICK_LINUXMODULE  /* Linux kernel module */
55876 +    skb()->transport_header = skb()->network_header + len;
55877 +#else                          /* User-space and BSD kernel module */
55878 +    _h = _nh + len;
55879 +#endif
55880 +}
55881 +
55882 +inline void
55883 +Packet::set_ip_header(const click_ip *iph, uint32_t len)
55884 +{
55885 +    set_network_header(reinterpret_cast<const unsigned char *>(iph), len);
55886 +}
55887 +
55888 +inline void
55889 +Packet::set_ip6_header(const click_ip6 *ip6h, uint32_t len)
55890 +{
55891 +    set_network_header(reinterpret_cast<const unsigned char *>(ip6h), len);
55892 +}
55893 +
55894 +inline void
55895 +Packet::set_ip6_header(const click_ip6 *ip6h)
55896 +{
55897 +    set_ip6_header(ip6h, 40);
55898 +}
55899 +
55900 +inline int
55901 +Packet::mac_header_offset() const
55902 +{
55903 +    return mac_header() - data();
55904 +}
55905 +
55906 +inline uint32_t
55907 +Packet::mac_header_length() const
55908 +{
55909 +    return network_header() - mac_header();
55910 +}
55911 +
55912 +inline int
55913 +Packet::network_header_offset() const
55914 +{
55915 +    return network_header() - data();
55916 +}
55917 +
55918 +inline uint32_t
55919 +Packet::network_header_length() const
55920 +{
55921 +    return transport_header() - network_header();
55922 +}
55923 +
55924 +inline int
55925 +Packet::ip_header_offset() const
55926 +{
55927 +    return network_header_offset();
55928 +}
55929 +
55930 +inline uint32_t
55931 +Packet::ip_header_length() const
55932 +{
55933 +    return network_header_length();
55934 +}
55935 +
55936 +inline int
55937 +Packet::ip6_header_offset() const
55938 +{
55939 +    return network_header_offset();
55940 +}
55941 +
55942 +inline uint32_t
55943 +Packet::ip6_header_length() const
55944 +{
55945 +    return network_header_length();
55946 +}
55947 +
55948 +inline int
55949 +Packet::transport_header_offset() const
55950 +{
55951 +    return transport_header() - data();
55952 +}
55953 +
55954 +inline void
55955 +Packet::clear_annotations()
55956 +{
55957 +  memset(anno(), '\0', sizeof(Anno));
55958 +  set_packet_type_anno(HOST);
55959 +  set_device_anno(0);
55960 +  set_timestamp_anno(Timestamp());
55961 +  set_mac_header(0);
55962 +  set_network_header(0, 0);
55963 +  set_next(0);
55964 +}
55965 +
55966 +inline void
55967 +Packet::copy_annotations(const Packet *p)
55968 +{
55969 +  *anno() = *p->anno();
55970 +  set_packet_type_anno(p->packet_type_anno());
55971 +  set_device_anno(p->device_anno());
55972 +  set_timestamp_anno(p->timestamp_anno());
55973 +}
55974 +
55975 +inline void
55976 +Packet::shift_header_annotations(int32_t shift)
55977 +{
55978 +#if CLICK_USERLEVEL || CLICK_BSDMODULE
55979 +  _mac += (_mac ? shift : 0);
55980 +  _nh += (_nh ? shift : 0);
55981 +  _h += (_h ? shift : 0);
55982 +#else
55983 +  struct sk_buff *mskb = skb();
55984 +  mskb->mac_header += (mskb->mac_header ? shift : 0);
55985 +  mskb->network_header += (mskb->network_header ? shift : 0);
55986 +  mskb->transport_header += (mskb->transport_header ? shift : 0);
55987 +#endif
55988 +}
55989 +
55990 +
55991 +inline unsigned char *
55992 +WritablePacket::data() const
55993 +{
55994 +    return const_cast<unsigned char *>(Packet::data());
55995 +}
55996 +
55997 +inline unsigned char *
55998 +WritablePacket::end_data() const
55999 +{
56000 +    return const_cast<unsigned char *>(Packet::end_data());
56001 +}
56002 +
56003 +inline unsigned char *
56004 +WritablePacket::buffer() const
56005 +{
56006 +    return const_cast<unsigned char *>(Packet::buffer());
56007 +}
56008 +
56009 +inline unsigned char *
56010 +WritablePacket::end_buffer() const
56011 +{
56012 +    return const_cast<unsigned char *>(Packet::end_buffer());
56013 +}
56014 +
56015 +inline unsigned char *
56016 +WritablePacket::buffer_data() const
56017 +{
56018 +    return const_cast<unsigned char *>(Packet::buffer());
56019 +}
56020 +
56021 +inline unsigned char *
56022 +WritablePacket::mac_header() const
56023 +{
56024 +    return const_cast<unsigned char *>(Packet::mac_header());
56025 +}
56026 +
56027 +inline unsigned char *
56028 +WritablePacket::network_header() const
56029 +{
56030 +    return const_cast<unsigned char *>(Packet::network_header());
56031 +}
56032 +
56033 +inline unsigned char *
56034 +WritablePacket::transport_header() const
56035 +{
56036 +    return const_cast<unsigned char *>(Packet::transport_header());
56037 +}
56038 +
56039 +inline click_ether *
56040 +WritablePacket::ether_header() const
56041 +{
56042 +    return const_cast<click_ether *>(Packet::ether_header());
56043 +}
56044 +
56045 +inline click_ip *
56046 +WritablePacket::ip_header() const
56047 +{
56048 +    return const_cast<click_ip *>(Packet::ip_header());
56049 +}
56050 +
56051 +inline click_ip6 *
56052 +WritablePacket::ip6_header() const
56053 +{
56054 +    return const_cast<click_ip6 *>(Packet::ip6_header());
56055 +}
56056 +
56057 +inline click_icmp *
56058 +WritablePacket::icmp_header() const
56059 +{
56060 +    return const_cast<click_icmp *>(Packet::icmp_header());
56061 +}
56062 +
56063 +inline click_tcp *
56064 +WritablePacket::tcp_header() const
56065 +{
56066 +    return const_cast<click_tcp *>(Packet::tcp_header());
56067 +}
56068 +
56069 +inline click_udp *
56070 +WritablePacket::udp_header() const
56071 +{
56072 +    return const_cast<click_udp *>(Packet::udp_header());
56073 +}
56074 +
56075 +CLICK_ENDDECLS
56076 +#endif
56077 diff -Nurb click-1.6.0/inst/include/click/packet_anno.hh click-1.6.0-27/inst/include/click/packet_anno.hh
56078 --- click-1.6.0/inst/include/click/packet_anno.hh       1969-12-31 19:00:00.000000000 -0500
56079 +++ click-1.6.0-27/inst/include/click/packet_anno.hh    2009-02-05 10:20:41.000000000 -0500
56080 @@ -0,0 +1,61 @@
56081 +#ifndef CLICK_PACKET_ANNO_HH
56082 +#define CLICK_PACKET_ANNO_HH
56083 +
56084 +// byte 0
56085 +#define PAINT_ANNO(p)                  ((p)->user_anno_c(0))
56086 +#define SET_PAINT_ANNO(p, v)           ((p)->set_user_anno_c(0, (v)))
56087 +#define PAINT_ANNO_OFFSET              0
56088 +#define PAINT_ANNO_LENGTH              1
56089 +
56090 +// byte 1
56091 +#define ICMP_PARAMPROB_ANNO(p)         ((p)->user_anno_c(1))
56092 +#define SET_ICMP_PARAMPROB_ANNO(p, v)  ((p)->set_user_anno_c(1, (v)))
56093 +
56094 +// byte 3
56095 +#define FIX_IP_SRC_ANNO(p)             ((p)->user_anno_c(3))
56096 +#define SET_FIX_IP_SRC_ANNO(p, v)      ((p)->set_user_anno_c(3, (v)))
56097 +
56098 +// bytes 4-7
56099 +#define AGGREGATE_ANNO(p)              ((p)->user_anno_u(1))
56100 +#define SET_AGGREGATE_ANNO(p, v)       ((p)->set_user_anno_u(1, (v)))
56101 +
56102 +#define FWD_RATE_ANNO(p)               ((p)->user_anno_i(1))
56103 +#define SET_FWD_RATE_ANNO(p, v)                ((p)->set_user_anno_i(1, (v)))
56104 +
56105 +#define MISC_IP_ANNO(p)                 ((p)->user_anno_u(1))
56106 +#define SET_MISC_IP_ANNO(p, v)         ((p)->set_user_anno_i(1, (v).addr()))
56107 +
56108 +// bytes 8-11
56109 +#define EXTRA_PACKETS_ANNO(p)          ((p)->user_anno_u(2))
56110 +#define SET_EXTRA_PACKETS_ANNO(p, v)   ((p)->set_user_anno_u(2, (v)))
56111 +
56112 +#define REV_RATE_ANNO(p)               ((p)->user_anno_i(2))
56113 +#define SET_REV_RATE_ANNO(p, v)                ((p)->set_user_anno_i(2, (v)))
56114 +
56115 +// byte 10
56116 +#define SEND_ERR_ANNO(p)                ((p)->user_anno_c(10))
56117 +#define SET_SEND_ERR_ANNO(p, v)         ((p)->set_user_anno_c(10, (v)))
56118 +
56119 +// byte 11
56120 +#define GRID_ROUTE_CB_ANNO(p)           ((p)->user_anno_c(11))
56121 +#define SET_GRID_ROUTE_CB_ANNO(p, v)    ((p)->set_user_anno_c(11, (v)))
56122 +
56123 +// bytes 12-15
56124 +#define EXTRA_LENGTH_ANNO(p)           ((p)->user_anno_u(3))
56125 +#define SET_EXTRA_LENGTH_ANNO(p, v)    ((p)->set_user_anno_u(3, (v)))
56126 +
56127 +// bytes 16-23
56128 +#define PACKET_NUMBER_ANNO(p, n)       ((p)->user_anno_u(4 + (n)))
56129 +#define SET_PACKET_NUMBER_ANNO(p, n, v)        ((p)->set_user_anno_u(4 + (n), (v)))
56130 +
56131 +// bytes 16-23
56132 +#define FIRST_TIMESTAMP_ANNO(p)                (*((Timestamp*) ((p)->all_user_anno_u() + 4)))
56133 +#define SET_FIRST_TIMESTAMP_ANNO(p, v) (*((Timestamp*) ((p)->all_user_anno_u() + 4)) = (v))
56134 +
56135 +// bytes 16-23
56136 +#define IPSEC_SPI_ANNO(p)              ((p)->user_anno_u(4))
56137 +#define SET_IPSEC_SPI_ANNO(p, v)       ((p)->set_user_anno_u(4, (v)))
56138 +#define IPSEC_SA_DATA_REFERENCE_ANNO(p)        ((p)->user_anno_u(5))
56139 +#define SET_IPSEC_SA_DATA_REFERENCE_ANNO(p, v) ((p)->set_user_anno_u(5, (v)))
56140 +
56141 +#endif
56142 diff -Nurb click-1.6.0/inst/include/click/pair.hh click-1.6.0-27/inst/include/click/pair.hh
56143 --- click-1.6.0/inst/include/click/pair.hh      1969-12-31 19:00:00.000000000 -0500
56144 +++ click-1.6.0-27/inst/include/click/pair.hh   2009-02-05 10:20:41.000000000 -0500
56145 @@ -0,0 +1,56 @@
56146 +// -*- c-basic-offset: 4 -*-
56147 +#ifndef CLICK_PAIR_HH
56148 +#define CLICK_PAIR_HH
56149 +#include <click/hashcode.hh>
56150 +CLICK_DECLS
56151 +
56152 +template <class T, class U>
56153 +struct Pair {
56154 +    T first;
56155 +    U second;
56156 +    Pair()                             : first(), second() { }
56157 +    Pair(const T &t, const U &u)       : first(t), second(u) { }
56158 +    typedef size_t (Pair<T, U>::*unspecified_bool_type)() const;
56159 +    inline operator unspecified_bool_type() const;
56160 +    inline size_t hashcode() const;
56161 +};
56162 +
56163 +template <class T, class U>
56164 +inline Pair<T, U>::operator unspecified_bool_type() const
56165 +{
56166 +    return first || second ? &Pair<T, U>::hashcode : 0;
56167 +}
56168 +
56169 +template <class T, class U>
56170 +inline bool operator==(const Pair<T, U> &a, const Pair<T, U> &b)
56171 +{
56172 +    return a.first == b.first && a.second == b.second;
56173 +}
56174 +
56175 +template <class T, class U>
56176 +inline bool operator!=(const Pair<T, U> &a, const Pair<T, U> &b)
56177 +{
56178 +    return a.first != b.first || a.second != b.second;
56179 +}
56180 +
56181 +template <class T, class U>
56182 +inline bool operator<(const Pair<T, U> &a, const Pair<T, U> &b)
56183 +{
56184 +    return a.first < b.first
56185 +       || (!(b.first < a.first) && a.second < b.second);
56186 +}
56187 +
56188 +template <class T, class U>
56189 +inline size_t Pair<T, U>::hashcode() const
56190 +{
56191 +    return (CLICK_NAME(hashcode)(first) << 13) ^ CLICK_NAME(hashcode)(second);
56192 +}
56193 +
56194 +template <class T, class U>
56195 +inline Pair<T, U> make_pair(const T &t, const U &u)
56196 +{
56197 +    return Pair<T, U>(t, u);
56198 +}
56199 +
56200 +CLICK_ENDDECLS
56201 +#endif
56202 diff -Nurb click-1.6.0/inst/include/click/pathvars.h click-1.6.0-27/inst/include/click/pathvars.h
56203 --- click-1.6.0/inst/include/click/pathvars.h   1969-12-31 19:00:00.000000000 -0500
56204 +++ click-1.6.0-27/inst/include/click/pathvars.h        2009-02-05 10:20:41.000000000 -0500
56205 @@ -0,0 +1,39 @@
56206 +/* include/click/pathvars.h.  Generated from pathvars.h.in by configure.  */
56207 +/* Process this file with configure to produce pathvars.h. -*- mode: c -*- */
56208 +#ifndef CLICK_PATHVARS_H
56209 +#define CLICK_PATHVARS_H
56210 +
56211 +/* Directory for binaries. */
56212 +#define CLICK_BINDIR "/d/click/click-1.6.0-27/inst/bin"
56213 +
56214 +/* Directory for packages and kernel module. */
56215 +#define CLICK_LIBDIR "/d/click/click-1.6.0-27/inst/lib"
56216 +
56217 +/* Directory for shared files. */
56218 +#define CLICK_DATADIR "/d/click/click-1.6.0-27/inst/share/click"
56219 +
56220 +/* FreeBSD kernel include directory. */
56221 +#define FREEBSD_INCLUDEDIR "/usr/include"
56222 +
56223 +/* Define if the BSD kernel module driver was compiled. */
56224 +/* #undef HAVE_BSDMODULE_DRIVER */
56225 +
56226 +/* Define if the Click kernel module should provide clickfs. */
56227 +#define HAVE_CLICKFS 1
56228 +
56229 +/* Define if the expat library is available. */
56230 +#define HAVE_EXPAT 1
56231 +
56232 +/* Define if the Click linuxmodule is compiled for a 2.6 kernel. */
56233 +#define HAVE_LINUXMODULE_2_6 1
56234 +
56235 +/* Define if the Linux kernel module driver was compiled. */
56236 +#define HAVE_LINUXMODULE_DRIVER 1
56237 +
56238 +/* Define if the user-level driver was compiled. */
56239 +#define HAVE_USERLEVEL_DRIVER 1
56240 +
56241 +/* Directory containing Linux sources. */
56242 +#define LINUX_SRCDIR "/d/kernels/linux-2.6.27.10-clickport"
56243 +
56244 +#endif
56245 diff -Nurb click-1.6.0/inst/include/click/perfctr-i586.hh click-1.6.0-27/inst/include/click/perfctr-i586.hh
56246 --- click-1.6.0/inst/include/click/perfctr-i586.hh      1969-12-31 19:00:00.000000000 -0500
56247 +++ click-1.6.0-27/inst/include/click/perfctr-i586.hh   2009-02-05 10:20:41.000000000 -0500
56248 @@ -0,0 +1,33 @@
56249 +#ifndef CLICK_PERFCTR_HH
56250 +#define CLICK_PERFCTR_HH
56251 +#ifdef __KERNEL__
56252 +#include <click/glue.hh>
56253 +#include <asm/msr.h>
56254 +#endif
56255 +
56256 +#define DCU_MISS_OUTSTANDING   0x48
56257 +#define INST_RETIRED           0xC0
56258 +#define IFU_FETCH              0x80
56259 +#define IFU_FETCH_MISS         0x81
56260 +#define IFU_MEM_STALL          0x86
56261 +#define L2_LINES_IN            0x24
56262 +#define L2_LINES_OUT           0x26
56263 +#define L2_IFETCH              0x28 | (0xF<<8)
56264 +#define L2_LD                  0x29 | (0xF<<8)
56265 +#define L2_LINES_OUTM          0x27
56266 +#define L2_RQSTS               0x2E | (0xF<<8)
56267 +#define BUS_LOCK_CLOCKS         0x63
56268 +#define BUS_TRAN_RFO            0x66
56269 +#define BUS_TRAN_INVAL         0x69
56270 +#define BUS_TRAN_MEM           0x6F
56271 +
56272 +#define MSR_OS (1<<17)
56273 +#define MSR_OCCURRENCE (1<<18)
56274 +#define MSR_ENABLE (1<<22)
56275 +#define MSR_FLAGS0 (MSR_OS|MSR_OCCURRENCE|MSR_ENABLE)
56276 +#define MSR_FLAGS1 (MSR_OS|MSR_OCCURRENCE)
56277 +
56278 +#define MSR_EVNTSEL0 0x186
56279 +#define MSR_EVNTSEL1 0x187
56280 +
56281 +#endif
56282 diff -Nurb click-1.6.0/inst/include/click/router.hh click-1.6.0-27/inst/include/click/router.hh
56283 --- click-1.6.0/inst/include/click/router.hh    1969-12-31 19:00:00.000000000 -0500
56284 +++ click-1.6.0-27/inst/include/click/router.hh 2009-02-05 10:20:41.000000000 -0500
56285 @@ -0,0 +1,699 @@
56286 +// -*- c-basic-offset: 4; related-file-name: "../../lib/router.cc" -*-
56287 +#ifndef CLICK_ROUTER_HH
56288 +#define CLICK_ROUTER_HH
56289 +#include <click/element.hh>
56290 +#include <click/timer.hh>
56291 +#include <click/sync.hh>
56292 +#include <click/task.hh>
56293 +#include <click/standard/threadsched.hh>
56294 +#if CLICK_NS
56295 +# include <click/simclick.h>
56296 +#endif
56297 +CLICK_DECLS
56298 +class Master;
56299 +class ElementFilter;
56300 +class RouterThread;
56301 +class HashMap_ArenaFactory;
56302 +class NotifierSignal;
56303 +class ThreadSched;
56304 +class Handler;
56305 +class NameInfo;
56306 +
56307 +class Router { public:
56308 +
56309 +    /** @name Public Member Functions */
56310 +    //@{
56311 +    // MASTER
56312 +    inline Master* master() const;
56313 +
56314 +    // STATUS
56315 +    inline bool initialized() const;
56316 +    inline bool handlers_ready() const;
56317 +    inline bool running() const;
56318 +
56319 +    // RUNCOUNT AND RUNCLASS
56320 +    enum { STOP_RUNCOUNT = -2147483647 - 1 };
56321 +    inline int32_t runcount() const;
56322 +    void adjust_runcount(int32_t delta);
56323 +    void set_runcount(int32_t rc);
56324 +    inline void please_stop_driver();
56325 +
56326 +    // ELEMENTS
56327 +    inline const Vector<Element*>& elements() const;
56328 +    inline int nelements() const;
56329 +    // eindex -1 returns root_element(), other out-of-range indexes return 0
56330 +    inline Element* element(int eindex) const;
56331 +    inline Element* root_element() const;
56332 +    static Element* element(const Router *router, int eindex);
56333 +  
56334 +    Element* find(const String& name, ErrorHandler* errh = 0) const;
56335 +    Element* find(const String& name, String context, ErrorHandler* errh = 0) const;
56336 +    Element* find(const String& name, Element* context, ErrorHandler* errh = 0) const;
56337 +
56338 +    int downstream_elements(Element* e, int port, ElementFilter* filter, Vector<Element*>& result);
56339 +    int upstream_elements(Element* e, int port, ElementFilter* filter, Vector<Element*>& result);
56340 +  
56341 +    const String& ename(int eindex) const;
56342 +    const String& elandmark(int eindex) const;
56343 +    const String& econfiguration(int eindex) const;
56344 +    void set_econfiguration(int eindex, const String& conf);
56345 +  
56346 +    // HANDLERS
56347 +    enum { FIRST_GLOBAL_HANDLER = 0x40000000 };
56348 +    static int hindex(const Element* e, const String& hname);
56349 +    static void element_hindexes(const Element* e, Vector<int>& result);
56350 +
56351 +    // 'const Handler*' results last until that element/handlername modified
56352 +    static const Handler* handler(const Router* router, int hindex);
56353 +    static const Handler* handler(const Element* e, const String& hname);
56354 +
56355 +    static void add_read_handler(const Element* e, const String& hname, ReadHandlerHook hook, void* thunk);
56356 +    static void add_write_handler(const Element* e, const String& hname, WriteHandlerHook hook, void* thunk);
56357 +    static void set_handler(const Element* e, const String& hname, int mask, HandlerHook hook, void* thunk1 = 0, void* thunk2 = 0);
56358 +    static int change_handler_flags(const Element* e, const String& hname, uint32_t clear_flags, uint32_t set_flags);
56359 +
56360 +    // ATTACHMENTS AND REQUIREMENTS
56361 +    void* attachment(const String& aname) const;
56362 +    void*& force_attachment(const String& aname);
56363 +    void* set_attachment(const String& aname, void* value);
56364 +    
56365 +    ErrorHandler* chatter_channel(const String& channel_name) const;
56366 +    HashMap_ArenaFactory* arena_factory() const;
56367 +
56368 +    inline ThreadSched* thread_sched() const;
56369 +    inline void set_thread_sched(ThreadSched* scheduler);
56370 +    inline int initial_home_thread_id(Task* task, bool scheduled) const;
56371 +
56372 +    inline NameInfo* name_info() const;
56373 +    NameInfo* force_name_info();
56374 +
56375 +    // UNPARSING
56376 +    inline const String& configuration_string() const;
56377 +    void unparse(StringAccum& sa, const String& indent = String()) const;
56378 +    void unparse_requirements(StringAccum& sa, const String& indent = String()) const;
56379 +    void unparse_classes(StringAccum& sa, const String& indent = String()) const;
56380 +    void unparse_declarations(StringAccum& sa, const String& indent = String()) const;
56381 +    void unparse_connections(StringAccum& sa, const String& indent = String()) const;
56382 +
56383 +    String element_ports_string(int eindex) const;
56384 +    //@}
56385 +  
56386 +    // INITIALIZATION
56387 +    /** @name Internal Functions */
56388 +    //@{
56389 +    Router(const String& configuration, Master* master);
56390 +    ~Router();
56391 +
56392 +    static void static_initialize();
56393 +    static void static_cleanup();
56394 +
56395 +    inline void use();
56396 +    void unuse();
56397 +
56398 +    inline const Vector<String>& requirements() const;
56399 +    void add_requirement(const String& requirement);
56400 +    int add_element(Element* e, const String& name, const String& conf, const String& landmark);
56401 +    int add_connection(int from_idx, int from_port, int to_idx, int to_port);
56402 +#if CLICK_LINUXMODULE
56403 +    int add_module_ref(struct module* module);
56404 +#endif
56405 +
56406 +    inline Router* hotswap_router() const;
56407 +    void set_hotswap_router(Router* router);
56408 +
56409 +    int initialize(ErrorHandler* errh);
56410 +    void activate(bool foreground, ErrorHandler* errh);
56411 +    inline void activate(ErrorHandler* errh);
56412 +
56413 +    int new_notifier_signal(NotifierSignal& signal);
56414 +    //@}
56415 +
56416 +    /** @cond never */
56417 +    // Needs to be public for Lexer, etc., but not useful outside
56418 +    struct Hookup {
56419 +       int idx;
56420 +       int port;
56421 +       Hookup()                                : idx(-1) { }
56422 +       Hookup(int i, int p)                    : idx(i), port(p) { }
56423 +    };
56424 +    /** @endcond never */
56425 +      
56426 +#if CLICK_NS
56427 +    simclick_node_t *simnode() const;
56428 +    int sim_get_ifid(const char* ifname);
56429 +    int sim_listen(int ifid, int element);
56430 +    int sim_if_ready(int ifid);
56431 +    int sim_write(int ifid, int ptype, const unsigned char *, int len,
56432 +                 simclick_simpacketinfo *pinfo);
56433 +    int sim_incoming_packet(int ifid, int ptype, const unsigned char *,
56434 +                           int len, simclick_simpacketinfo* pinfo);
56435 +    void sim_trace(const char* event);
56436 +    int sim_get_node_id();
56437 +    int sim_get_next_pkt_id();
56438 +
56439 +  protected:
56440 +    Vector<Vector<int> *> _listenvecs;
56441 +    Vector<int>* sim_listenvec(int ifid);
56442 +#endif
56443 +  
56444 +  private:
56445 +
56446 +    enum {
56447 +       ROUTER_NEW, ROUTER_PRECONFIGURE, ROUTER_PREINITIALIZE,
56448 +       ROUTER_LIVE, ROUTER_DEAD                // order is important
56449 +    };
56450 +    enum {
56451 +       RUNNING_DEAD = -2, RUNNING_INACTIVE = -1, RUNNING_PREPARING = 0,
56452 +       RUNNING_BACKGROUND = 1, RUNNING_ACTIVE = 2
56453 +    };
56454 +
56455 +    Master* _master;
56456 +    
56457 +    atomic_uint32_t _runcount;
56458 +
56459 +    atomic_uint32_t _refcount;
56460 +  
56461 +    Vector<Element*> _elements;
56462 +    Vector<String> _element_names;
56463 +    Vector<String> _element_configurations;
56464 +    Vector<String> _element_landmarks;
56465 +    Vector<int> _element_configure_order;
56466 +
56467 +    Vector<Hookup> _hookup_from;
56468 +    Vector<Hookup> _hookup_to;
56469 +
56470 +    /** @cond never */
56471 +    struct Gport {
56472 +       Vector<int> e2g;
56473 +       Vector<int> g2e;
56474 +       int size() const                        { return g2e.size(); }
56475 +    };
56476 +    /** @endcond never */
56477 +    Gport _gports[2];
56478 +  
56479 +    Vector<int> _hookup_gports[2];
56480 +
56481 +    Vector<String> _requirements;
56482 +
56483 +    volatile int _state;
56484 +    bool _have_connections : 1;
56485 +    volatile int _running;
56486 +  
56487 +    Vector<int> _ehandler_first_by_element;
56488 +    Vector<int> _ehandler_to_handler;
56489 +    Vector<int> _ehandler_next;
56490 +
56491 +    Vector<int> _handler_first_by_name;
56492 +
56493 +    enum { HANDLER_BUFSIZ = 256 };
56494 +    Handler** _handler_bufs;
56495 +    int _nhandlers_bufs;
56496 +    int _free_handler;
56497 +
56498 +    Vector<String> _attachment_names;
56499 +    Vector<void*> _attachments;
56500 +  
56501 +    Element* _root_element;
56502 +    String _configuration;
56503 +
56504 +    enum { NOTIFIER_SIGNALS_CAPACITY = 4096 };
56505 +    atomic_uint32_t* _notifier_signals;
56506 +    int _n_notifier_signals;
56507 +    HashMap_ArenaFactory* _arena_factory;
56508 +    Router* _hotswap_router;
56509 +    ThreadSched* _thread_sched;
56510 +    mutable NameInfo* _name_info;
56511 +
56512 +    Router* _next_router;
56513 +
56514 +#if CLICK_LINUXMODULE
56515 +    Vector<struct module*> _modules;
56516 +#endif
56517 +    
56518 +    Router(const Router&);
56519 +    Router& operator=(const Router&);
56520 +  
56521 +    void remove_hookup(int);
56522 +    void hookup_error(const Hookup&, bool, const char*, ErrorHandler*);
56523 +    int check_hookup_elements(ErrorHandler*);
56524 +    int check_hookup_range(ErrorHandler*);
56525 +    int check_hookup_completeness(ErrorHandler*);
56526 +  
56527 +    int processing_error(const Hookup&, const Hookup&, bool, int, ErrorHandler*);
56528 +    int check_push_and_pull(ErrorHandler*);
56529 +    
56530 +    void make_gports();
56531 +    int ngports(bool isout) const      { return _gports[isout].g2e.size(); }
56532 +    inline int gport(bool isoutput, const Hookup&) const;
56533 +    inline Hookup gport_hookup(bool isoutput, int) const;
56534 +    void gport_list_elements(bool, const Bitvector&, Vector<Element*>&) const;
56535 +    void make_hookup_gports();
56536 +  
56537 +    void set_connections();
56538 +  
56539 +    String context_message(int element_no, const char*) const;
56540 +    int element_lerror(ErrorHandler*, Element*, const char*, ...) const;
56541 +
56542 +    // private handler methods
56543 +    void initialize_handlers(bool, bool);
56544 +    inline Handler* xhandler(int) const;
56545 +    int find_ehandler(int, const String&, bool allow_star) const;
56546 +    static inline Handler fetch_handler(const Element*, const String&);
56547 +    void store_local_handler(int, const Handler&);
56548 +    static void store_global_handler(const Handler&);
56549 +    static inline void store_handler(const Element*, const Handler&);
56550 +
56551 +    int global_port_flow(bool forward, Element* first_element, int first_port, ElementFilter* stop_filter, Bitvector& results);
56552 +
56553 +    // global handlers
56554 +    static String router_read_handler(Element*, void*);
56555 +
56556 +    /** @cond never */
56557 +    friend class Master;
56558 +    friend class Task;
56559 +    friend int Element::set_nports(int, int);
56560 +    /** @endcond never */
56561 +  
56562 +};
56563 +
56564 +
56565 +class Handler { public:
56566 +
56567 +    enum Flags {
56568 +       OP_READ = 0x001, OP_WRITE = 0x002,
56569 +       READ_PARAM = 0x004, ONE_HOOK = 0x008,
56570 +       SPECIAL_FLAGS = OP_READ | OP_WRITE | READ_PARAM | ONE_HOOK,
56571 +       EXCLUSIVE = 0x010, RAW = 0x020,
56572 +       DRIVER_FLAG_0 = 0x040, DRIVER_FLAG_1 = 0x080,
56573 +       DRIVER_FLAG_2 = 0x100, DRIVER_FLAG_3 = 0x200,
56574 +       USER_FLAG_SHIFT = 10, USER_FLAG_0 = 1 << USER_FLAG_SHIFT
56575 +    };
56576 +
56577 +    inline const String &name() const;
56578 +    inline uint32_t flags() const;
56579 +    inline void *thunk1() const;
56580 +    inline void *thunk2() const;
56581 +
56582 +    inline bool readable() const;
56583 +    inline bool read_param() const;
56584 +    inline bool read_visible() const;
56585 +    inline bool writable() const;
56586 +    inline bool write_visible() const;
56587 +    inline bool visible() const;
56588 +    inline bool exclusive() const;
56589 +    inline bool raw() const;
56590 +
56591 +    inline String call_read(Element *e, ErrorHandler *errh = 0) const;
56592 +    String call_read(Element *e, const String &param, bool raw,
56593 +                    ErrorHandler *errh) const;
56594 +    int call_write(const String &value, Element *e, bool raw,
56595 +                  ErrorHandler *errh) const;
56596 +  
56597 +    String unparse_name(Element *e) const;
56598 +    static String unparse_name(Element *e, const String &hname);
56599 +
56600 +    static inline const Handler *blank_handler();
56601 +    
56602 +  private:
56603 +
56604 +    String _name;
56605 +    union {
56606 +       HandlerHook h;
56607 +       struct {
56608 +           ReadHandlerHook r;
56609 +           WriteHandlerHook w;
56610 +       } rw;
56611 +    } _hook;
56612 +    void *_thunk1;
56613 +    void *_thunk2;
56614 +    uint32_t _flags;
56615 +    int _use_count;
56616 +    int _next_by_name;
56617 +
56618 +    static const Handler *the_blank_handler;
56619 +    
56620 +    Handler(const String & = String());
56621 +
56622 +    bool compatible(const Handler &) const;
56623 +  
56624 +    friend class Router;
56625 +  
56626 +};
56627 +
56628 +/* The largest size a write handler is allowed to have. */
56629 +#define LARGEST_HANDLER_WRITE 65536
56630 +
56631 +
56632 +inline bool
56633 +operator==(const Router::Hookup& a, const Router::Hookup& b)
56634 +{
56635 +    return a.idx == b.idx && a.port == b.port;
56636 +}
56637 +
56638 +inline bool
56639 +operator!=(const Router::Hookup& a, const Router::Hookup& b)
56640 +{
56641 +    return a.idx != b.idx || a.port != b.port;
56642 +}
56643 +
56644 +/** @brief  Increment the router's reference count.
56645 + *
56646 + *  Routers are reference counted objects.  A Router is created with one
56647 + *  reference, which is held by its Master object.  Normally the Router and
56648 + *  all its elements will be deleted when the Master drops this reference, but
56649 + *  you can preserve the Router for longer by adding a reference yourself. */
56650 +inline void
56651 +Router::use()
56652 +{
56653 +    _refcount++;
56654 +}
56655 +
56656 +/** @brief  Return true iff the router is currently running.
56657 + *
56658 + *  A running router has been successfully initialized (so running() implies
56659 + *  initialized()), and has not stopped yet. */
56660 +inline bool
56661 +Router::running() const
56662 +{
56663 +    return _running > 0;
56664 +}
56665 +
56666 +/** @brief  Return true iff the router has been successfully initialized. */
56667 +inline bool
56668 +Router::initialized() const
56669 +{
56670 +    return _state == ROUTER_LIVE;
56671 +}
56672 +
56673 +/** @brief  Return true iff the router's handlers have been initialized.
56674 + *
56675 + *  handlers_ready() returns false until each element's
56676 + *  Element::add_handlers() method has been called.  This happens after
56677 + *  Element::configure(), but before Element::initialize(). */
56678 +inline bool
56679 +Router::handlers_ready() const
56680 +{
56681 +    return _state > ROUTER_PRECONFIGURE;
56682 +}
56683 +
56684 +/** @brief  Returns a vector containing all the router's elements.
56685 + *  @invariant  elements()[i] == element(i) for all i in range. */
56686 +inline const Vector<Element*>&
56687 +Router::elements() const
56688 +{
56689 +    return _elements;
56690 +}
56691 +
56692 +/** @brief  Returns the number of elements in the router. */
56693 +inline int
56694 +Router::nelements() const
56695 +{
56696 +    return _elements.size();
56697 +}
56698 +
56699 +/** @brief  Returns the element with index @a eindex.
56700 + *  @param  eindex  element index, or -1 for root_element()
56701 + *  @invariant  If eindex(i) isn't null, then eindex(i)->@link Element::eindex eindex@endlink() == i.
56702 + *
56703 + *  This function returns the element with index @a eindex.  If @a eindex ==
56704 + *  -1, returns root_element().  If @a eindex is otherwise out of range,
56705 + *  returns null. */
56706 +inline Element*
56707 +Router::element(int eindex) const
56708 +{
56709 +    return element(this, eindex);
56710 +}
56711 +
56712 +/** @brief  Returns this router's root element.
56713 + *
56714 + *  Every router has a root Element.  This element has Element::eindex -1 and
56715 + *  name "".  It is not configured or initialized, and doesn't appear in the
56716 + *  configuration; it exists only for convenience, when other Click code needs
56717 + *  to refer to some arbitrary element at the top level of the compound
56718 + *  element hierarchy. */
56719 +inline Element*
56720 +Router::root_element() const
56721 +{
56722 +    return _root_element;
56723 +}
56724 +
56725 +inline const Vector<String>&
56726 +Router::requirements() const
56727 +{
56728 +    return _requirements;
56729 +}
56730 +
56731 +inline ThreadSched*
56732 +Router::thread_sched() const
56733 +{
56734 +    return _thread_sched;
56735 +}
56736 +
56737 +inline void
56738 +Router::set_thread_sched(ThreadSched* ts)
56739 +{
56740 +    _thread_sched = ts;
56741 +}
56742 +
56743 +inline int
56744 +Router::initial_home_thread_id(Task* t, bool scheduled) const
56745 +{
56746 +    if (!_thread_sched)
56747 +       return ThreadSched::THREAD_UNKNOWN;
56748 +    else
56749 +       return _thread_sched->initial_home_thread_id(t, scheduled);
56750 +}
56751 +
56752 +inline NameInfo*
56753 +Router::name_info() const
56754 +{
56755 +    return _name_info;
56756 +}
56757 +
56758 +/** @brief  Returns the Master object for this router. */
56759 +inline Master*
56760 +Router::master() const
56761 +{
56762 +    return _master;
56763 +}
56764 +
56765 +/** @brief  Return the router's runcount.
56766 + *
56767 + *  The runcount is an integer that determines whether the router is running.
56768 + *  A running router has positive runcount.  Decrementing the router's runcount
56769 + *  to zero or below will cause the router to stop, although elements like
56770 + *  DriverManager can intercept the stop request and continue processing.
56771 + *
56772 + *  Elements request that the router stop its processing by calling
56773 + *  adjust_runcount() or please_stop_driver(). */
56774 +inline int32_t
56775 +Router::runcount() const
56776 +{
56777 +    return _runcount.value();
56778 +}
56779 +
56780 +/** @brief  Request a driver stop by adjusting the runcount by -1.
56781 + *  @note   Equivalent to adjust_runcount(-1). */
56782 +inline void
56783 +Router::please_stop_driver()
56784 +{
56785 +    adjust_runcount(-1);
56786 +}
56787 +
56788 +/** @brief  Returns the router's initial configuration string.
56789 + *  @return The configuration string specified to the constructor. */
56790 +inline const String&
56791 +Router::configuration_string() const
56792 +{
56793 +    return _configuration;
56794 +}
56795 +
56796 +inline void
56797 +Router::activate(ErrorHandler* errh)
56798 +{
56799 +    activate(true, errh);
56800 +}
56801 +
56802 +/** @brief  Finds an element named @a name.
56803 + *  @param  name     element name
56804 + *  @param  errh     optional error handler
56805 + *
56806 + *  Returns the unique element named @a name, if any.  If no element named @a
56807 + *  name is found, reports an error to @a errh and returns null.  The error is
56808 + *  "<tt>no element named 'name'</tt>".  If @a errh is null, no error is
56809 + *  reported.
56810 + *
56811 + *  This function is equivalent to find(const String&, String, ErrorHandler*)
56812 + *  with a context argument of the empty string. */
56813 +inline Element *
56814 +Router::find(const String& name, ErrorHandler *errh) const
56815 +{
56816 +    return find(name, "", errh);
56817 +}
56818 +
56819 +inline HashMap_ArenaFactory*
56820 +Router::arena_factory() const
56821 +{
56822 +    return _arena_factory;
56823 +}
56824 +
56825 +/** @brief Returns the currently-installed router this router will eventually
56826 + * replace.
56827 + *
56828 + * This function is only meaningful during a router's initialization.  If this
56829 + * router was installed with the hotswap option, then hotswap_router() will
56830 + * return the currently-installed router that this router will eventually
56831 + * replace (assuming error-free initialization).  Otherwise, hotswap_router()
56832 + * will return 0.
56833 + */
56834 +inline Router*
56835 +Router::hotswap_router() const
56836 +{
56837 +    return _hotswap_router;
56838 +}
56839 +
56840 +inline
56841 +Handler::Handler(const String &name)
56842 +    : _name(name), _thunk1(0), _thunk2(0), _flags(0), _use_count(0),
56843 +      _next_by_name(-1)
56844 +{
56845 +    _hook.rw.r = 0;
56846 +    _hook.rw.w = 0;
56847 +}
56848 +
56849 +inline bool
56850 +Handler::compatible(const Handler& o) const
56851 +{
56852 +    return (_hook.rw.r == o._hook.rw.r && _hook.rw.w == o._hook.rw.w
56853 +           && _thunk1 == o._thunk1 && _thunk2 == o._thunk2
56854 +           && _flags == o._flags);
56855 +}
56856 +
56857 +/** @brief Returns this handler's name. */
56858 +inline const String&
56859 +Handler::name() const
56860 +{
56861 +    return _name;
56862 +}
56863 +
56864 +/** @brief Returns this handler's flags.
56865 +
56866 +    The result is a bitwise-or of flags from the Flags enumeration type. */
56867 +inline uint32_t
56868 +Handler::flags() const
56869 +{
56870 +    return _flags;
56871 +}
56872 +
56873 +/** @brief Returns this handler's first callback data. */
56874 +inline void*
56875 +Handler::thunk1() const
56876 +{
56877 +    return _thunk1;
56878 +}
56879 +
56880 +/** @brief Returns this handler's second callback data. */
56881 +inline void*
56882 +Handler::thunk2() const
56883 +{
56884 +    return _thunk2;
56885 +}
56886 +
56887 +/** @brief Returns true iff this is a valid read handler. */
56888 +inline bool
56889 +Handler::readable() const
56890 +{
56891 +    return _flags & OP_READ;
56892 +}
56893 +
56894 +/** @brief Returns true iff this is a valid read handler that may accept
56895 +    parameters. */
56896 +inline bool
56897 +Handler::read_param() const
56898 +{
56899 +    return _flags & READ_PARAM;
56900 +}
56901 +
56902 +/** @brief Returns true iff this is a valid visible read handler.
56903 +
56904 +    Only visible handlers may be called from outside the router
56905 +    configuration. */
56906 +inline bool
56907 +Handler::read_visible() const
56908 +{
56909 +    return _flags & OP_READ;
56910 +}
56911 +
56912 +/** @brief Returns true iff this is a valid write handler. */
56913 +inline bool
56914 +Handler::writable() const
56915 +{
56916 +    return _flags & OP_WRITE;
56917 +}
56918 +
56919 +/** @brief Returns true iff this is a valid visible write handler.
56920 +
56921 +    Only visible handlers may be called from outside the router
56922 +    configuration. */
56923 +inline bool
56924 +Handler::write_visible() const
56925 +{
56926 +    return _flags & OP_WRITE;
56927 +}
56928 +
56929 +/** @brief Returns true iff this handler is visible. */
56930 +inline bool
56931 +Handler::visible() const
56932 +{
56933 +    return _flags & (OP_READ | OP_WRITE);
56934 +}
56935 +
56936 +/** @brief Returns true iff this handler is exclusive.
56937 +
56938 +    Exclusive means mutually exclusive with all other router processing.  In
56939 +    the Linux kernel module driver, reading or writing an exclusive handler
56940 +    using the Click filesystem will first lock all router threads and
56941 +    handlers. */
56942 +inline bool
56943 +Handler::exclusive() const
56944 +{
56945 +    return _flags & EXCLUSIVE;
56946 +}
56947 +
56948 +/** @brief Returns true iff quotes should be removed when calling this
56949 +    handler.
56950 +
56951 +    A raw handler expects and returns raw text.  Click will unquote quoted
56952 +    text before passing it to a raw handler, and (in the Linux kernel module)
56953 +    will not add a courtesy newline to the end of a raw handler's value. */
56954 +inline bool
56955 +Handler::raw() const
56956 +{
56957 +    return _flags & RAW;
56958 +}
56959 +
56960 +/** @brief Call a read handler without parameters.
56961 +    @param e element on which to call the handler
56962 +    @param errh error handler
56963 +
56964 +    The element must be nonnull; to call a global handler, pass the relevant
56965 +    router's Router::root_element().  @a errh may be null, in which case
56966 +    errors are ignored. */
56967 +inline String
56968 +Handler::call_read(Element* e, ErrorHandler* errh) const
56969 +{
56970 +    return call_read(e, String(), false, errh);
56971 +}
56972 +
56973 +/** @brief Returns a handler incapable of doing anything.
56974 + *
56975 + *  The returned handler returns false for readable() and writable()
56976 + *  and has flags() of zero. */
56977 +inline const Handler *
56978 +Handler::blank_handler()
56979 +{
56980 +    return the_blank_handler;
56981 +}
56982 +
56983 +CLICK_ENDDECLS
56984 +#endif
56985 diff -Nurb click-1.6.0/inst/include/click/routerthread.hh click-1.6.0-27/inst/include/click/routerthread.hh
56986 --- click-1.6.0/inst/include/click/routerthread.hh      1969-12-31 19:00:00.000000000 -0500
56987 +++ click-1.6.0-27/inst/include/click/routerthread.hh   2009-02-05 10:20:41.000000000 -0500
56988 @@ -0,0 +1,328 @@
56989 +// -*- c-basic-offset: 4; related-file-name: "../../lib/routerthread.cc" -*-
56990 +#ifndef CLICK_ROUTERTHREAD_HH
56991 +#define CLICK_ROUTERTHREAD_HH
56992 +#include <click/sync.hh>
56993 +#include <click/vector.hh>
56994 +#if CLICK_LINUXMODULE
56995 +# include <click/cxxprotect.h>
56996 +CLICK_CXX_PROTECT
56997 +# include <linux/sched.h>
56998 +CLICK_CXX_UNPROTECT
56999 +# include <click/cxxunprotect.h>
57000 +#endif
57001 +#if CLICK_BSDMODULE
57002 +# include <click/cxxprotect.h>
57003 +CLICK_CXX_PROTECT
57004 +# include <sys/systm.h>
57005 +CLICK_CXX_UNPROTECT
57006 +# include <click/cxxunprotect.h>
57007 +#endif
57008 +
57009 +#define CLICK_DEBUG_SCHEDULING 0
57010 +
57011 +// NB: user must #include <click/task.hh> before <click/routerthread.hh>.
57012 +// We cannot #include <click/task.hh> ourselves because of circular #include
57013 +// dependency.
57014 +CLICK_DECLS
57015 +
57016 +class RouterThread
57017 +#ifndef HAVE_TASK_HEAP
57018 +    : private Task
57019 +#endif
57020 +{ public:
57021 +
57022 +    enum { THREAD_QUIESCENT = -1, THREAD_STRONG_UNSCHEDULE = -2,
57023 +          THREAD_UNKNOWN = -1000 };
57024 +    
57025 +    inline int thread_id() const;
57026 +
57027 +    // Task list functions
57028 +    inline bool active() const;
57029 +    inline Task *task_begin() const;
57030 +    inline Task *task_next(Task *task) const;
57031 +    inline Task *task_end() const;
57032 +    
57033 +    inline void lock_tasks();
57034 +    inline bool attempt_lock_tasks();
57035 +    inline void unlock_tasks();
57036 +
57037 +    inline Master* master() const;
57038 +    void driver();
57039 +    void driver_once();
57040 +
57041 +    void unschedule_router_tasks(Router*);
57042 +
57043 +#ifdef HAVE_ADAPTIVE_SCHEDULER
57044 +    // min_cpu_share() and max_cpu_share() are expressed on a scale with
57045 +    // Task::MAX_UTILIZATION == 100%.
57046 +    unsigned min_cpu_share() const     { return _min_click_share; }
57047 +    unsigned max_cpu_share() const     { return _max_click_share; }
57048 +    unsigned cur_cpu_share() const     { return _cur_click_share; }
57049 +    void set_cpu_share(unsigned min_share, unsigned max_share);
57050 +#endif
57051 +
57052 +#if CLICK_LINUXMODULE || CLICK_BSDMODULE
57053 +    bool greedy() const                        { return _greedy; }
57054 +    void set_greedy(bool g)            { _greedy = g; }
57055 +#endif
57056 +    
57057 +    inline void wake();
57058 +
57059 +#if CLICK_DEBUG_SCHEDULING
57060 +    enum { S_RUNNING, S_PAUSED, S_TIMER, S_BLOCKED };
57061 +    int thread_state() const           { return _thread_state; }
57062 +    static String thread_state_name(int);
57063 +    uint32_t driver_epoch() const      { return _driver_epoch; }
57064 +    uint32_t driver_task_epoch() const { return _driver_task_epoch; }
57065 +    timeval task_epoch_time(uint32_t epoch) const;
57066 +# if CLICK_LINUXMODULE
57067 +    struct task_struct *sleeper() const        { return _linux_task; }
57068 +# endif
57069 +#endif
57070 +
57071 +    unsigned _tasks_per_iter;
57072 +    unsigned _iters_per_timers;
57073 +    unsigned _iters_per_os;
57074 +
57075 +  private:
57076 +
57077 +#ifdef HAVE_TASK_HEAP
57078 +    Vector<Task*> _task_heap;
57079 +    int _task_heap_hole;
57080 +    unsigned _pass;
57081 +#endif
57082 +    
57083 +    Master *_master;
57084 +    int _id;
57085 +
57086 +#if CLICK_LINUXMODULE
57087 +    struct task_struct *_linux_task;
57088 +    spinlock_t _lock;
57089 +    atomic_uint32_t _task_lock_waiting;
57090 +#endif
57091 +    
57092 +    uint32_t _any_pending;
57093 +
57094 +#if CLICK_LINUXMODULE
57095 +    bool _greedy;
57096 +#endif
57097 +    
57098 +#if CLICK_BSDMODULE
57099 +    // XXX FreeBSD
57100 +    u_int64_t _old_tsc; /* MARKO - temp. */
57101 +    void *_sleep_ident;
57102 +    int _oticks;
57103 +    bool _greedy;
57104 +#endif
57105 +
57106 +#ifdef HAVE_ADAPTIVE_SCHEDULER
57107 +    enum { C_CLICK, C_KERNEL, NCLIENTS };
57108 +    struct Client {                    // top-level stride clients
57109 +       unsigned pass;
57110 +       unsigned stride;
57111 +       int tickets;
57112 +       Client() : pass(0), tickets(0)  { }
57113 +    };
57114 +    Client _clients[NCLIENTS];
57115 +    unsigned _global_pass;             // global pass
57116 +    unsigned _max_click_share;         // maximum allowed Click share of CPU
57117 +    unsigned _min_click_share;         // minimum allowed Click share of CPU
57118 +    unsigned _cur_click_share;         // current Click share
57119 +#endif
57120 +
57121 +#if CLICK_DEBUG_SCHEDULING
57122 +    int _thread_state;
57123 +    uint32_t _driver_epoch;
57124 +    uint32_t _driver_task_epoch;
57125 +    enum { TASK_EPOCH_BUFSIZ = 32 };
57126 +    uint32_t _task_epoch_first;
57127 +    timeval _task_epoch_time[TASK_EPOCH_BUFSIZ];
57128 +#endif
57129 +    
57130 +    // called by Master
57131 +    RouterThread(Master *, int);
57132 +    ~RouterThread();
57133 +
57134 +    // task requests
57135 +    inline void add_pending();
57136 +
57137 +    // task running functions
57138 +    inline void driver_lock_tasks();
57139 +    inline void driver_unlock_tasks();
57140 +    inline void run_tasks(int ntasks);
57141 +    inline void run_os();
57142 +#ifdef HAVE_ADAPTIVE_SCHEDULER
57143 +    void client_set_tickets(int client, int tickets);
57144 +    inline void client_update_pass(int client, const struct timeval &before, const struct timeval &after);
57145 +    inline void check_restride(struct timeval &before, const struct timeval &now, int &restride_iter);
57146 +#endif
57147 +#ifdef HAVE_TASK_HEAP
57148 +    void task_reheapify_from(int pos, Task*);
57149 +#endif
57150 +    
57151 +    friend class Task;
57152 +    friend class Master;
57153 +
57154 +};
57155 +
57156 +
57157 +/** @brief Returns this thread's ID.
57158 + *
57159 + * The result is >= 0 for true threads, and < 0 for threads that never run any
57160 + * of their associated Tasks.
57161 + */
57162 +inline int
57163 +RouterThread::thread_id() const
57164 +{
57165 +    return _id;
57166 +}
57167 +
57168 +/** @brief Returns this thread's associated Master. */
57169 +inline Master*
57170 +RouterThread::master() const
57171 +{
57172 +    return _master;
57173 +}
57174 +
57175 +/** @brief Returns whether any tasks are scheduled.
57176 + *
57177 + * Returns false iff no tasks are scheduled and no events are pending.  Since
57178 + * not all events actually matter (for example, a Task might have been
57179 + * scheduled and then subsequently unscheduled), active() may temporarily
57180 + * return true even when no real events are outstanding.
57181 + */
57182 +inline bool
57183 +RouterThread::active() const
57184 +{
57185 +#ifdef HAVE_TASK_HEAP
57186 +    return _task_heap.size() != 0 || _any_pending;
57187 +#else
57188 +    return ((const Task *)_next != this) || _any_pending;
57189 +#endif
57190 +}
57191 +
57192 +/** @brief Returns the beginning of the scheduled task list.
57193 + *
57194 + * Each RouterThread maintains a list of all currently-scheduled tasks.
57195 + * Elements may traverse this list with the task_begin(), task_next(), and
57196 + * task_end() functions, using iterator-like code such as:
57197 + *
57198 + * @code
57199 + * thread->lock_tasks();
57200 + * for (Task *t = thread->task_begin();
57201 + *      t != thread->task_end();
57202 + *      t = thread->task_next(t)) {
57203 + *     // ... do something with t...
57204 + * }
57205 + * thread->unlock_tasks();
57206 + * @endcode
57207 + *
57208 + * The thread's task lock must be held during the traversal, as shown above.
57209 + *
57210 + * The return value may not be a real task.  Test it against task_end() before
57211 + * use.
57212 + *
57213 + * @sa task_next, task_end, lock_tasks, unlock_tasks
57214 + */
57215 +inline Task *
57216 +RouterThread::task_begin() const
57217 +{
57218 +#ifdef HAVE_TASK_HEAP
57219 +    int p = _task_heap_hole;
57220 +    return (p < _task_heap.size() ? _task_heap[p] : 0);
57221 +#else
57222 +    return _next;
57223 +#endif
57224 +}
57225 +
57226 +/** @brief Returns the task following @a task in the scheduled task list.
57227 + * @param task the current task
57228 + *
57229 + * The return value may not be a real task.  Test it against task_end() before
57230 + * use.  However, the @a task argument must be a real task; do not attempt to
57231 + * call task_next(task_end()).
57232 + *
57233 + * @sa task_begin for usage, task_end
57234 + */
57235 +inline Task *
57236 +RouterThread::task_next(Task *task) const
57237 +{
57238 +#ifdef HAVE_TASK_HEAP
57239 +    int p = task->_schedpos + 1;
57240 +    return (p < _task_heap.size() ? _task_heap[p] : 0);
57241 +#else
57242 +    return task->_next;
57243 +#endif
57244 +}
57245 +
57246 +/** @brief Returns the end of the scheduled task list.
57247 + *
57248 + * The return value is not a real task
57249 + *
57250 + * @sa task_begin for usage, task_next
57251 + */
57252 +inline Task *
57253 +RouterThread::task_end() const
57254 +{
57255 +#ifdef HAVE_TASK_HEAP
57256 +    return 0;
57257 +#else
57258 +    return (Task *) this;
57259 +#endif
57260 +}
57261 +
57262 +inline void
57263 +RouterThread::lock_tasks()
57264 +{
57265 +#if CLICK_LINUXMODULE
57266 +    if (unlikely(current != _linux_task)) {
57267 +       _task_lock_waiting++;
57268 +       spin_lock(&_lock);
57269 +       _task_lock_waiting--;
57270 +    }
57271 +#endif
57272 +}
57273 +
57274 +inline bool
57275 +RouterThread::attempt_lock_tasks()
57276 +{
57277 +#if CLICK_LINUXMODULE
57278 +    if (likely(current == _linux_task))
57279 +       return true;
57280 +    return spin_trylock(&_lock);
57281 +#else
57282 +    return true;
57283 +#endif
57284 +}
57285 +
57286 +inline void
57287 +RouterThread::unlock_tasks()
57288 +{
57289 +#if CLICK_LINUXMODULE
57290 +    if (unlikely(current != _linux_task))
57291 +       spin_unlock(&_lock);
57292 +#endif
57293 +}
57294 +
57295 +inline void
57296 +RouterThread::wake()
57297 +{
57298 +#if CLICK_LINUXMODULE
57299 +    if (_linux_task)
57300 +       wake_up_process(_linux_task);
57301 +#endif
57302 +#if CLICK_BSDMODULE && !BSD_NETISRSCHED
57303 +    if (_sleep_ident)
57304 +       wakeup_one(&_sleep_ident);
57305 +#endif
57306 +}
57307 +
57308 +inline void
57309 +RouterThread::add_pending()
57310 +{
57311 +    _any_pending = 1;
57312 +    wake();
57313 +}
57314 +
57315 +CLICK_ENDDECLS
57316 +#endif
57317 diff -Nurb click-1.6.0/inst/include/click/simclick.h click-1.6.0-27/inst/include/click/simclick.h
57318 --- click-1.6.0/inst/include/click/simclick.h   1969-12-31 19:00:00.000000000 -0500
57319 +++ click-1.6.0-27/inst/include/click/simclick.h        2009-02-05 10:20:41.000000000 -0500
57320 @@ -0,0 +1,114 @@
57321 +#ifndef SIMCLICK_H
57322 +#define SIMCLICK_H
57323 +/*
57324 + * simclick.h
57325 + *
57326 + * API for sending packets to Click. Mostly intended for use
57327 + * by a network simulator which wants to use Click to do routing.
57328 + * 
57329 + */
57330 +
57331 +#ifdef __cplusplus
57332 +extern "C" {
57333 +#endif
57334 +
57335 +/*
57336 + * Packet types used - generally going to be ethernet, but could
57337 + * possibly be something else I suppose...
57338 + */
57339 +#define SIMCLICK_PTYPE_UNKNOWN 0
57340 +#define SIMCLICK_PTYPE_ETHER 1
57341 +#define SIMCLICK_PTYPE_IP 2
57342 +
57343 +/*
57344 + * Not a whole lot to this. We have to create a click router object
57345 + * and also send packets and trigger events.
57346 + */
57347 +
57348 +/*
57349 + * This contains per packet data we need to preserve when the packet gets
57350 + * dragged through click. Heavily biased towards ns-2 right now.
57351 + */
57352 +typedef struct {
57353 +    int id;                    /* Simulator ID number for the packet */
57354 +    int fid;                   /* Simulator flow ID number for the packet */
57355 +    int simtype;               /* Original simulator packet type - useful
57356 +                                * for morphing between raw and simulator
57357 +                                * packet types */
57358 +} simclick_simpacketinfo;
57359 +
57360 +
57361 +/*
57362 + * Opaque handles for the sim and click instances
57363 + */
57364 +typedef struct simclick_node {
57365 +    void *clickinfo;
57366 +    struct timeval curtime;
57367 +} simclick_node_t;
57368 +
57369 +int simclick_click_create(simclick_node_t *sim, const char *router_file);
57370 +
57371 +int simclick_click_send(simclick_node_t *sim,
57372 +                       int ifid,int type,const unsigned char* data,int len,
57373 +                       simclick_simpacketinfo* pinfo);
57374 +int simclick_sim_send(simclick_node_t *sim,
57375 +                     int ifid,int type, const unsigned char* data,int len,
57376 +                     simclick_simpacketinfo*);
57377 +
57378 +void simclick_click_run(simclick_node_t *sim);
57379 +
57380 +void simclick_click_kill(simclick_node_t *sim);
57381 +
57382 +/*
57383 + * simclick_click_read_handler will allocate a buffer of adequate length
57384 + * to receive the handler information. This buffer must be freed
57385 + * by the caller. If a non-null value for the "memalloc" parameter
57386 + * is passed in, simclick_click_read_handler will use that function
57387 + * to allocate the memory. If there's a null value there, "malloc" will
57388 + * be used by default. The "memparam" parameter is a caller-specified
57389 + * value which will be passed back to the memory allocation function.
57390 + */
57391 +typedef void* (*SIMCLICK_MEM_ALLOC)(size_t,void*);
57392 +char* simclick_click_read_handler(simclick_node_t *sim,
57393 +                                 const char* elementname,
57394 +                                 const char* handlername,
57395 +                                 SIMCLICK_MEM_ALLOC memalloc,
57396 +                                 void* memparam);
57397 +
57398 +int simclick_click_write_handler(simclick_node_t *sim,
57399 +                                const char* elemname, const char* handlername,
57400 +                                const char* writestring);
57401 +
57402 +/*
57403 + * We also provide a gettimeofday substitute which utilizes the 
57404 + * state info passed to us by the simulator.
57405 + */
57406 +int simclick_gettimeofday(struct timeval* tv);
57407 +
57408 +/*
57409 + * The simulated system also has to provide a few services to click,
57410 + * notably some way of injecting packets back into the system,
57411 + * mapping interface names to id numbers, and arranging for click
57412 + * to execute at a specified time in the future.
57413 + * We implement 
57414 + */
57415 +#define SIMCLICK_VERSION               0  // none
57416 +#define SIMCLICK_SUPPORTS              1  // int call
57417 +#define SIMCLICK_IFID_FROM_NAME                2  // const char *ifname
57418 +#define SIMCLICK_IPADDR_FROM_NAME      3  // const char *ifname, char *buf, int len
57419 +#define SIMCLICK_MACADDR_FROM_NAME     4  // const char *ifname, char *buf, int len
57420 +#define SIMCLICK_SCHEDULE              5  // struct timeval *when
57421 +#define SIMCLICK_GET_NODE_NAME         6  // char *buf, int len
57422 +#define SIMCLICK_IF_READY              7  // int ifid
57423 +#define SIMCLICK_TRACE                 8  // const char *event
57424 +#define SIMCLICK_GET_NODE_ID           9  // none
57425 +#define SIMCLICK_GET_NEXT_PKT_ID       10 // none
57426 +#define SIMCLICK_CHANGE_CHANNEL                11 // int ifid, int channelid
57427 +
57428 +int simclick_sim_command(simclick_node_t *sim, int cmd, ...);
57429 +int simclick_click_command(simclick_node_t *sim, int cmd, ...);
57430 +
57431 +#ifdef __cplusplus
57432 +}
57433 +#endif
57434 +#endif
57435 diff -Nurb click-1.6.0/inst/include/click/skbmgr.hh click-1.6.0-27/inst/include/click/skbmgr.hh
57436 --- click-1.6.0/inst/include/click/skbmgr.hh    1969-12-31 19:00:00.000000000 -0500
57437 +++ click-1.6.0-27/inst/include/click/skbmgr.hh 2009-02-05 10:20:41.000000000 -0500
57438 @@ -0,0 +1,16 @@
57439 +// -*- c-basic-offset: 2; related-file-name: "../../linuxmodule/skbmgr.cc" -*-
57440 +#ifndef CLICK_SKBMGR_HH
57441 +#define CLICK_SKBMGR_HH
57442 +CLICK_DECLS
57443 +
57444 +void skbmgr_init();
57445 +void skbmgr_cleanup();
57446 +
57447 +/* allocate skbs. Number of skbs allocated is stored in the want variable */
57448 +struct sk_buff *skbmgr_allocate_skbs(unsigned headroom, unsigned size, int *want);
57449 +
57450 +/* recycle skb back into pool */
57451 +void skbmgr_recycle_skbs(struct sk_buff *);
57452 +
57453 +CLICK_ENDDECLS
57454 +#endif
57455 diff -Nurb click-1.6.0/inst/include/click/standard/addressinfo.hh click-1.6.0-27/inst/include/click/standard/addressinfo.hh
57456 --- click-1.6.0/inst/include/click/standard/addressinfo.hh      1969-12-31 19:00:00.000000000 -0500
57457 +++ click-1.6.0-27/inst/include/click/standard/addressinfo.hh   2009-02-05 10:20:41.000000000 -0500
57458 @@ -0,0 +1,109 @@
57459 +// -*- c-basic-offset: 2; related-file-name: "../../../elements/standard/addressinfo.cc" -*-
57460 +#ifndef CLICK_ADDRESSINFO_HH
57461 +#define CLICK_ADDRESSINFO_HH
57462 +#include <click/element.hh>
57463 +#include <click/hashmap.hh>
57464 +#ifdef HAVE_IP6
57465 +# include <click/ip6address.hh>
57466 +#endif
57467 +CLICK_DECLS
57468 +
57469 +/*
57470 +=c
57471 +
57472 +AddressInfo(NAME ADDRESS [ADDRESS...], ...)
57473 +
57474 +=s information
57475 +
57476 +specifies address information
57477 +
57478 +=io
57479 +
57480 +None
57481 +
57482 +=d
57483 +
57484 +Lets you use mnemonic names for IPv4 and IPv6 addresses, IPv4 and IPv6
57485 +address prefixes, and Ethernet addresses. Each argument has the form `NAME
57486 +ADDRESS [ADDRESS...]', which associates the given ADDRESSes with NAME. For
57487 +example, if a configuration contains this AddressInfo element,
57488 +
57489 +   AddressInfo(mauer 10.0.0.1, mazu 10.0.0.10);
57490 +
57491 +then other configuration strings can use C<mauer> and C<mazu> as mnemonics
57492 +for the IP addresses 10.0.0.1 and 10.0.0.10, respectively.
57493 +
57494 +The mnemonic names introduced by AddressInfo elements are local with
57495 +respect to compound elements. That is, names created inside a compound
57496 +element apply only within that compound element and its subelements. For
57497 +example:
57498 +
57499 +   AddressInfo(mauer 10.0.0.1);
57500 +   compound :: {
57501 +     AddressInfo(mazu 10.0.0.10);
57502 +     ... -> IPEncap(6, mauer, mazu) -> ...  // OK
57503 +   };
57504 +   ... -> IPEncap(6, mauer, mazu) -> ...    // error: `mazu' undefined
57505 +
57506 +Any name can be simultaneously associated with an IP address, an IP network
57507 +address, and an Ethernet address. The kind of address that is returned is
57508 +generally determined from context. For example:
57509 +
57510 +   AddressInfo(mauer 10.0.0.1/8 00:50:BA:85:84:A9);
57511 +   ... -> IPEncap(6, mauer, ...)                  // as IP address
57512 +       -> EtherEncap(0x0800, mauer, ...) -> ...   // as Ethernet address
57513 +   ... -> ARPResponder(mauer) -> ...              // as IP prefix AND Ethernet address!
57514 +
57515 +An optional suffix makes the context unambiguous. C<NAME> is an ambiguous
57516 +reference to some address, but C<NAME:ip> is always an IPv4 address,
57517 +C<NAME:ipnet> is always an IPv4 network address (IPv4 address prefix),
57518 +C<NAME:ip6> is always an IPv6 address, C<NAME:ip6net> is always an IPv6
57519 +network address, and C<NAME:eth> is always an Ethernet address.
57520 +
57521 +=head1 DEFAULT ADDRESSES
57522 +
57523 +If you do not define an address for a given name, AddressInfo will use the
57524 +default, if any.  Defaults are as follows:
57525 +
57526 +=over 2
57527 +
57528 +=item *
57529 +
57530 +If DEVNAME is the name of an Ethernet device, then C<DEVNAME:eth> defaults to
57531 +DEVNAME's Ethernet address.  (At userlevel, this works only on BSD and Linux.)
57532 +
57533 +=item *
57534 +
57535 +C<DEVNAME:ip> defaults to the first primary IPv4 address associated with the
57536 +device DEVNAME.
57537 +
57538 +=back
57539 +
57540 +These defaults are not available on all platforms.
57541 +
57542 +=a
57543 +
57544 +PortInfo */
57545 +
57546 +class AddressInfo : public Element { public:
57547 +  
57548 +  AddressInfo();
57549 +  ~AddressInfo();
57550 +  
57551 +  const char *class_name() const       { return "AddressInfo"; }
57552 +  
57553 +  int configure_phase() const          { return CONFIGURE_PHASE_FIRST; }
57554 +  int configure(Vector<String> &, ErrorHandler *);
57555 +
57556 +  static bool query_ip(String, unsigned char *, Element *);
57557 +  static bool query_ip_prefix(String, unsigned char *, unsigned char *, Element *);
57558 +#ifdef HAVE_IP6
57559 +  static bool query_ip6(String, unsigned char *, Element *);
57560 +  static bool query_ip6_prefix(String, unsigned char *, int *, Element *);
57561 +#endif
57562 +  static bool query_ethernet(String, unsigned char *, Element *);
57563 +
57564 +};
57565 +
57566 +CLICK_ENDDECLS
57567 +#endif
57568 diff -Nurb click-1.6.0/inst/include/click/standard/alignmentinfo.hh click-1.6.0-27/inst/include/click/standard/alignmentinfo.hh
57569 --- click-1.6.0/inst/include/click/standard/alignmentinfo.hh    1969-12-31 19:00:00.000000000 -0500
57570 +++ click-1.6.0-27/inst/include/click/standard/alignmentinfo.hh 2009-02-05 10:20:41.000000000 -0500
57571 @@ -0,0 +1,49 @@
57572 +// -*- c-basic-offset: 2; related-file-name: "../../../elements/standard/alignmentinfo.cc" -*-
57573 +#ifndef CLICK_ALIGNMENTINFO_HH
57574 +#define CLICK_ALIGNMENTINFO_HH
57575 +#include <click/element.hh>
57576 +CLICK_DECLS
57577 +
57578 +/*
57579 + * =c
57580 + * AlignmentInfo(ELEMENT [MODULUS OFFSET ...], ...)
57581 + * =s information
57582 + * specifies alignment information
57583 + * =io
57584 + * None
57585 + * =d
57586 + * Provides information about the packet alignment specified elements can
57587 + * expect. Each configuration argument has the form
57588 + * `ELEMENT [MODULUS0 OFFSET0 MODULUS1 OFFSET1 ...]',
57589 + * where there are zero or more MODULUS-OFFSET pairs.
57590 + * All packets arriving at ELEMENT's
57591 + * I<n>th input will start `OFFSETI<n>' bytes
57592 + * off from a `MODULUSI<n>'-byte boundary.
57593 + * =n
57594 + * This element is inserted automatically by click-align(1).
57595 + * =a Align, click-align(1)
57596 + */
57597 +
57598 +class AlignmentInfo : public Element { public:
57599 +
57600 +  AlignmentInfo();
57601 +  ~AlignmentInfo();
57602 +  
57603 +  const char *class_name() const       { return "AlignmentInfo"; }
57604 +  int configure_phase() const          { return CONFIGURE_PHASE_INFO; }
57605 +  int configure(Vector<String> &, ErrorHandler *);
57606 +
57607 +  bool query1(Element *, int port, int &chunk, int &offset) const;
57608 +  static bool query(Element *, int port, int &chunk, int &offset);
57609 +
57610 + private:
57611 +  
57612 +  Vector<int> _elem_offset;
57613 +  Vector<int> _elem_icount;
57614 +  Vector<int> _chunks;
57615 +  Vector<int> _offsets;
57616 +  
57617 +};
57618 +
57619 +CLICK_ENDDECLS
57620 +#endif
57621 diff -Nurb click-1.6.0/inst/include/click/standard/errorelement.hh click-1.6.0-27/inst/include/click/standard/errorelement.hh
57622 --- click-1.6.0/inst/include/click/standard/errorelement.hh     1969-12-31 19:00:00.000000000 -0500
57623 +++ click-1.6.0-27/inst/include/click/standard/errorelement.hh  2009-02-05 10:20:41.000000000 -0500
57624 @@ -0,0 +1,36 @@
57625 +// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/errorelement.cc" -*-
57626 +#ifndef CLICK_ERRORELEMENT_HH
57627 +#define CLICK_ERRORELEMENT_HH
57628 +#include <click/element.hh>
57629 +CLICK_DECLS
57630 +
57631 +/*
57632 + * =c
57633 + * Error(...)
57634 + * =s debugging
57635 + * always fails
57636 + * =d
57637 + * The Error element always fails to initialize. It has any number of inputs
57638 + * and outputs, and accepts any configuration string without complaint. It is
57639 + * useful to prevent a router from initializing while avoiding
57640 + * spurious error messages about bad configuration strings or connections.
57641 + * =a Message
57642 + */
57643 +
57644 +class ErrorElement : public Element { public:
57645 +  
57646 +    ErrorElement();
57647 +    ~ErrorElement();
57648 +  
57649 +    const char *class_name() const             { return "Error"; }
57650 +    const char *port_count() const             { return "-/-"; }
57651 +    const char *processing() const             { return AGNOSTIC; }
57652 +    const char *flow_code() const              { return "x/y"; }
57653 +  
57654 +    int configure(Vector<String> &, ErrorHandler *);
57655 +    int initialize(ErrorHandler *);
57656 +  
57657 +};
57658 +
57659 +CLICK_ENDDECLS
57660 +#endif
57661 diff -Nurb click-1.6.0/inst/include/click/standard/portinfo.hh click-1.6.0-27/inst/include/click/standard/portinfo.hh
57662 --- click-1.6.0/inst/include/click/standard/portinfo.hh 1969-12-31 19:00:00.000000000 -0500
57663 +++ click-1.6.0-27/inst/include/click/standard/portinfo.hh      2009-02-05 10:20:41.000000000 -0500
57664 @@ -0,0 +1,73 @@
57665 +// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/portinfo.cc" -*-
57666 +#ifndef CLICK_PORTINFO_HH
57667 +#define CLICK_PORTINFO_HH
57668 +#include <click/element.hh>
57669 +#include <click/hashmap.hh>
57670 +CLICK_DECLS
57671 +
57672 +/*
57673 +=c
57674 +
57675 +PortInfo(NAME PORT[/PROTOCOL], ...)
57676 +
57677 +=s information
57678 +
57679 +stores named TCP/UDP port information
57680 +
57681 +=io
57682 +
57683 +None
57684 +
57685 +=d
57686 +
57687 +Lets you use mnemonic names for TCP and UDP ports.  Each argument has the form
57688 +`NAME PORT[/PROTOCOL]', which associates the given PORT/PROTOCOL pair with the
57689 +NAME.  If PROTOCOL is left off, the NAME applies to both TCP and UDP.  For
57690 +example, in a configuration containing
57691 +
57692 +   PortInfo(ssh 22, http 80),
57693 +
57694 +configuration strings can use C<ssh> and C<http> as mnemonics for the port
57695 +numbers 22 and 80, respectively.
57696 +
57697 +PortInfo names are local with respect to compound elements.  That is, names
57698 +created inside a compound element apply only within that compound element and
57699 +its subelements.  For example:
57700 +
57701 +   PortInfo(src 10);
57702 +   compound :: {
57703 +     PortInfo(dst 100);
57704 +     ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ...  // OK
57705 +   };
57706 +   ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ...
57707 +                                         // error: `dst' undefined
57708 +
57709 +=n
57710 +
57711 +If you do not define a port for a given name, PortInfo will use the default,
57712 +if any.  At user level, PortInfo uses the L<getservbyname(3)> function to look
57713 +up ports by name.  In the kernel, there are no default ports.
57714 +
57715 +PortInfo will parse arguments containing more than one name, as `C<NAME
57716 +PORT/PROTOCOL NAME...>', and comments starting with `C<#>' are ignored.  Thus,
57717 +lines from F</etc/services> can be used verbatim as PortInfo configuration
57718 +arguments.
57719 +
57720 +=a
57721 +
57722 +AddressInfo */
57723 +
57724 +class PortInfo : public Element { public:
57725 +  
57726 +    PortInfo();
57727 +    ~PortInfo();
57728 +  
57729 +    const char *class_name() const     { return "PortInfo"; }
57730 +
57731 +    int configure_phase() const                { return CONFIGURE_PHASE_FIRST; }
57732 +    int configure(Vector<String> &, ErrorHandler *);
57733 +  
57734 +};
57735 +
57736 +CLICK_ENDDECLS
57737 +#endif
57738 diff -Nurb click-1.6.0/inst/include/click/standard/scheduleinfo.hh click-1.6.0-27/inst/include/click/standard/scheduleinfo.hh
57739 --- click-1.6.0/inst/include/click/standard/scheduleinfo.hh     1969-12-31 19:00:00.000000000 -0500
57740 +++ click-1.6.0-27/inst/include/click/standard/scheduleinfo.hh  2009-02-05 10:20:41.000000000 -0500
57741 @@ -0,0 +1,105 @@
57742 +// -*- c-basic-offset: 4; related-file-name: "../../../elements/standard/scheduleinfo.cc" -*-
57743 +#ifndef CLICK_SCHEDULEINFO_HH
57744 +#define CLICK_SCHEDULEINFO_HH
57745 +#include <click/element.hh>
57746 +CLICK_DECLS
57747 +
57748 +/*
57749 +=c
57750 +
57751 +ScheduleInfo(ELEMENT PARAM, ...)
57752 +
57753 +=s information
57754 +
57755 +specifies scheduling parameters
57756 +
57757 +=io
57758 +
57759 +None
57760 +
57761 +=d
57762 +
57763 +Provides scheduling parameters for specified elements. Each configuration
57764 +argument has the form `ELEMENT PARAM', meaning that the element
57765 +named ELEMENT has scheduling parameter PARAM. Scheduling
57766 +parameters are real numbers that set how often one element should be
57767 +scheduled in relation to another. For example,
57768 +if elements A and B have
57769 +scheduling parameters 2 and 0.5, respectively, then A will be scheduled
57770 +2/0.5 = 4 times as often as B. The default scheduling parameter is 1.
57771 +
57772 +ScheduleInfo elements inside a compound element can specify scheduling
57773 +parameters for that compound's components.
57774 +Outer ScheduleInfo elements
57775 +can specify a ``scheduling parameter'' for the compound
57776 +element as a whole. This ``scheduling parameter'' is really a scaling
57777 +factor affecting the compound's components. For example, consider this
57778 +configuration,
57779 +
57780 +   elementclass Compound {
57781 +     i :: InfiniteSource -> output;
57782 +     ScheduleInfo(i 0.5);
57783 +   }
57784 +   c :: Compound -> Discard;
57785 +   ScheduleInfo(c 4);
57786 +
57787 +which is the same as the following configuration, after compound elements
57788 +are expanded.
57789 +
57790 +   c/i :: InfiniteSource -> Discard@3 :: Discard;
57791 +   c/ScheduleInfo@2 :: ScheduleInfo(i 0.5);
57792 +   ScheduleInfo@4 :: ScheduleInfo(c 4);
57793 +
57794 +The name of the first ScheduleInfo element starts with `c/', so it is
57795 +used to look up scheduling parameters for elements named `c/I<whatever>'.
57796 +V<>(This includes all components of the compound element `c'.) 
57797 +The second ScheduleInfo element, however, has no slash in its name,
57798 +so it is used to look up all scheduling parameters,
57799 +including scaling factors for compound elements.
57800 +The InfiniteSource's final scaling parameter will be 2:
57801 +the scaling factor 4 times the local scheduling parameter 0.5.
57802 +
57803 +An outer ScheduleInfo element can override local scheduling parameters.
57804 +For example, if the second ScheduleInfo element above was
57805 +
57806 +   ScheduleInfo@4 :: ScheduleInfo(c 4, c/i 10.5)
57807 +
57808 +then the InfiniteSource's final scaling parameter would be 10.5.
57809 +*/
57810 +
57811 +class ScheduleInfo : public Element { public:
57812 +
57813 +    enum { FRAC_BITS = 10 };
57814 +  
57815 +    ScheduleInfo();
57816 +    ~ScheduleInfo();
57817 +  
57818 +    const char* class_name() const     { return "ScheduleInfo"; }
57819 +  
57820 +    int configure_phase() const                { return CONFIGURE_PHASE_INFO; }
57821 +    int configure(Vector<String>&, ErrorHandler*);
57822 +
57823 +    bool query(const String&, int&) const;
57824 +    bool query_prefixes(const String&, int&, String&) const;
57825 +    static int query(Element*, ErrorHandler*);
57826 +    static void initialize_task(Element*, Task*, bool sched, ErrorHandler*);
57827 +    static void initialize_task(Element*, Task*, ErrorHandler*);
57828 +    static void join_scheduler(Element*, Task*, ErrorHandler*);
57829 +
57830 +};
57831 +
57832 +
57833 +inline void
57834 +ScheduleInfo::initialize_task(Element* e, Task* t, ErrorHandler* errh)
57835 +{
57836 +    initialize_task(e, t, true, errh);
57837 +}
57838 +
57839 +inline void
57840 +ScheduleInfo::join_scheduler(Element* e, Task* t, ErrorHandler* errh)
57841 +{
57842 +    initialize_task(e, t, true, errh);
57843 +}
57844 +
57845 +CLICK_ENDDECLS
57846 +#endif
57847 diff -Nurb click-1.6.0/inst/include/click/standard/storage.hh click-1.6.0-27/inst/include/click/standard/storage.hh
57848 --- click-1.6.0/inst/include/click/standard/storage.hh  1969-12-31 19:00:00.000000000 -0500
57849 +++ click-1.6.0-27/inst/include/click/standard/storage.hh       2009-02-05 10:20:41.000000000 -0500
57850 @@ -0,0 +1,49 @@
57851 +// -*- c-basic-offset: 4 -*-
57852 +#ifndef CLICK_STORAGE_HH
57853 +#define CLICK_STORAGE_HH
57854 +CLICK_DECLS
57855 +
57856 +class Storage { public:
57857 +
57858 +    Storage()                          : _head(0), _tail(0) { }
57859 +
57860 +    operator bool() const              { return _head != _tail; }
57861 +    bool empty() const                 { return _head == _tail; }
57862 +    int size() const;
57863 +    int size(int head, int tail) const;
57864 +    int capacity() const               { return _capacity; }
57865 +
57866 +    int head() const                   { return _head; }
57867 +    int tail() const                   { return _tail; }
57868 +    
57869 +    int next_i(int i) const            { return (i!=_capacity ? i+1 : 0); }
57870 +    int prev_i(int i) const            { return (i!=0 ? i-1 : _capacity); }
57871 +
57872 +    // to be used with care
57873 +    void set_capacity(int c)           { _capacity = c; }
57874 +    void set_head(int h)               { _head = h; }
57875 +    void set_tail(int t)               { _tail = t; }
57876 +  
57877 +  protected:
57878 +
57879 +    int _capacity;
57880 +    volatile int _head;
57881 +    volatile int _tail;
57882 +  
57883 +};
57884 +
57885 +inline int
57886 +Storage::size(int head, int tail) const
57887 +{
57888 +    int x = tail - head;
57889 +    return (x >= 0 ? x : _capacity + x + 1);
57890 +}
57891 +    
57892 +inline int
57893 +Storage::size() const
57894 +{
57895 +    return size(_head, _tail);
57896 +}
57897 +
57898 +CLICK_ENDDECLS
57899 +#endif
57900 diff -Nurb click-1.6.0/inst/include/click/standard/threadsched.hh click-1.6.0-27/inst/include/click/standard/threadsched.hh
57901 --- click-1.6.0/inst/include/click/standard/threadsched.hh      1969-12-31 19:00:00.000000000 -0500
57902 +++ click-1.6.0-27/inst/include/click/standard/threadsched.hh   2009-02-05 10:20:41.000000000 -0500
57903 @@ -0,0 +1,19 @@
57904 +// -*- c-basic-offset: 4 -*-
57905 +#ifndef CLICK_THREADSCHED_HH
57906 +#define CLICK_THREADSCHED_HH
57907 +CLICK_DECLS
57908 +
57909 +class ThreadSched { public:
57910 +
57911 +    enum { THREAD_QUIESCENT = -1, THREAD_STRONG_UNSCHEDULE = -2,
57912 +          THREAD_UNKNOWN = -1000 };
57913 +    
57914 +    ThreadSched()                      { }
57915 +    virtual ~ThreadSched()             { }
57916 +
57917 +    virtual int initial_home_thread_id(Task *, bool);
57918 +
57919 +};
57920 +
57921 +CLICK_ENDDECLS
57922 +#endif
57923 diff -Nurb click-1.6.0/inst/include/click/straccum.hh click-1.6.0-27/inst/include/click/straccum.hh
57924 --- click-1.6.0/inst/include/click/straccum.hh  1969-12-31 19:00:00.000000000 -0500
57925 +++ click-1.6.0-27/inst/include/click/straccum.hh       2009-02-05 10:20:41.000000000 -0500
57926 @@ -0,0 +1,518 @@
57927 +// -*- c-basic-offset: 4; related-file-name: "../../lib/straccum.cc" -*-
57928 +#ifndef CLICK_STRACCUM_HH
57929 +#define CLICK_STRACCUM_HH
57930 +#include <click/glue.hh>
57931 +#include <click/string.hh>
57932 +#ifdef CLICK_LINUXMODULE
57933 +# include <asm/string.h>
57934 +#elif defined(CLICK_BSDMODULE)
57935 +# include <sys/systm.h>
57936 +#else  /* User-space */
57937 +# include <string.h>
57938 +#endif
57939 +CLICK_DECLS
57940 +
57941 +/** @file <click/straccum.hh>
57942 +    @brief Click's StringAccum class, used to construct Strings efficiently from pieces.
57943 +*/
57944 +
57945 +class StringAccum { public:
57946 +
57947 +    /** @brief Create an empty StringAccum (with length 0). */
57948 +    StringAccum()
57949 +       : _s(0), _len(0), _cap(0) {
57950 +    }
57951 +    
57952 +    explicit inline StringAccum(int);
57953 +
57954 +    /** @brief Destroy a StringAccum, freeing its memory. */
57955 +    ~StringAccum() {
57956 +       if (_cap >= 0)
57957 +           CLICK_LFREE(_s, _cap);
57958 +    }
57959 +
57960 +    /** @brief Return the contents of the StringAccum.
57961 +       @return The StringAccum's contents.
57962 +
57963 +       The return value is null if the StringAccum is empty or out-of-memory.
57964 +       The returned data() value points to writable memory (unless the
57965 +       StringAccum itself is const). */
57966 +    inline const char *data() const {
57967 +       return reinterpret_cast<const char *>(_s);
57968 +    }
57969 +
57970 +    /** @overload */
57971 +    inline char *data() {
57972 +       return reinterpret_cast<char *>(_s);
57973 +    }
57974 +    
57975 +    /** @brief Return the length of the StringAccum. */
57976 +    int length() const {
57977 +       return _len;
57978 +    }
57979 +
57980 +    /** @brief Return the StringAccum's current capacity.
57981 +       
57982 +       The capacity is the maximum length the StringAccum can hold without
57983 +       incurring a memory allocation.  Returns -1 for out-of-memory
57984 +       StringAccums. */
57985 +    int capacity() const {
57986 +       return _cap;
57987 +    }
57988 +    
57989 +    typedef int (StringAccum::*unspecified_bool_type)() const;
57990 +
57991 +    /** @brief Return true iff the StringAccum contains characters.
57992 +
57993 +        Returns false for empty and out-of-memory StringAccums. */
57994 +    operator unspecified_bool_type() const {
57995 +       return _len != 0 ? &StringAccum::capacity : 0;
57996 +    }
57997 +
57998 +    /** @brief Returns true iff the StringAccum does not contain characters.
57999 +
58000 +       Returns true for empty and out-of-memory StringAccums. */
58001 +    bool operator!() const {
58002 +       return _len == 0;
58003 +    }
58004 +
58005 +    /** @brief Returns true iff the StringAccum is out-of-memory. */
58006 +    bool out_of_memory() const {
58007 +       return _cap < 0;
58008 +    }
58009 +  
58010 +    const char *c_str();
58011 +
58012 +    /** @brief Returns the <a>i</a>th character in the string.
58013 +       @param  i  character index.
58014 +
58015 +       @pre 0 <= @a i < length() */
58016 +    char operator[](int i) const {
58017 +       assert(i>=0 && i<_len);
58018 +       return static_cast<char>(_s[i]);
58019 +    }
58020 +    
58021 +    /** @brief Returns a reference to the <a>i</a>th character in the string.
58022 +       @param  i  character index.
58023 +
58024 +       @pre 0 <= @a i < length() */
58025 +    char &operator[](int i) {
58026 +       assert(i>=0 && i<_len);
58027 +       return reinterpret_cast<char &>(_s[i]);
58028 +    }
58029 +
58030 +    /** @brief Returns the last character in the string.
58031 +       @pre length() > 0 */
58032 +    char back() const {
58033 +       assert(_len > 0);
58034 +       return static_cast<char>(_s[_len - 1]);
58035 +    }
58036 +
58037 +    /** @brief Returns a reference to the last character in the string.
58038 +       @pre length() > 0 */
58039 +    char &back() {
58040 +       assert(_len > 0);
58041 +       return reinterpret_cast<char &>(_s[_len - 1]);
58042 +    }
58043 +
58044 +    inline void clear();
58045 +  
58046 +    inline char *reserve(int n);
58047 +    void set_length(int len);
58048 +    void adjust_length(int delta);
58049 +    inline char *extend(int nadjust, int nreserve = 0);
58050 +    void pop_back(int n = 1);
58051 +  
58052 +    inline void append(char c);
58053 +    inline void append(unsigned char c);
58054 +    void append_fill(int c, int len);
58055 +    
58056 +    inline void append(const char *suffix, int len);
58057 +    inline void append(const unsigned char *suffix, int len);
58058 +    inline void append(const char *begin, const char *end);
58059 +
58060 +    void append_numeric(String::uint_large_t num, int base = 10, bool uppercase = true);
58061 +    void append_numeric(String::int_large_t num, int base = 10, bool uppercase = true);
58062 +
58063 +    StringAccum &snprintf(int n, const char *format, ...);
58064 +  
58065 +    String take_string();
58066 +
58067 +    void swap(StringAccum &o);
58068 +
58069 +    // see also operator<< declarations below
58070 +  
58071 +    void forward(int delta) CLICK_DEPRECATED;
58072 +
58073 +  private:
58074 +  
58075 +    unsigned char *_s;
58076 +    int _len;
58077 +    int _cap;
58078 +  
58079 +    void make_out_of_memory();
58080 +    inline void safe_append(const char *, int);
58081 +    bool grow(int);
58082 +
58083 +    StringAccum(const StringAccum &);
58084 +    StringAccum &operator=(const StringAccum &);
58085 +
58086 +    friend StringAccum &operator<<(StringAccum &, const char *);
58087 +  
58088 +};
58089 +
58090 +inline StringAccum &operator<<(StringAccum &, char);
58091 +inline StringAccum &operator<<(StringAccum &, unsigned char);
58092 +inline StringAccum &operator<<(StringAccum &, const char *);
58093 +inline StringAccum &operator<<(StringAccum &, const String &);
58094 +inline StringAccum &operator<<(StringAccum &, const StringAccum &);
58095 +#ifdef HAVE_PERMSTRING
58096 +inline StringAccum &operator<<(StringAccum &, PermString);
58097 +#endif
58098 +
58099 +inline StringAccum &operator<<(StringAccum &, bool);
58100 +inline StringAccum &operator<<(StringAccum &, short);
58101 +inline StringAccum &operator<<(StringAccum &, unsigned short);
58102 +inline StringAccum &operator<<(StringAccum &, int);
58103 +inline StringAccum &operator<<(StringAccum &, unsigned);
58104 +StringAccum &operator<<(StringAccum &, long);
58105 +StringAccum &operator<<(StringAccum &, unsigned long);
58106 +#if HAVE_LONG_LONG
58107 +inline StringAccum &operator<<(StringAccum &, long long);
58108 +inline StringAccum &operator<<(StringAccum &, unsigned long long);
58109 +#endif
58110 +#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG
58111 +inline StringAccum &operator<<(StringAccum &, int64_t);
58112 +inline StringAccum &operator<<(StringAccum &, uint64_t);
58113 +#endif
58114 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
58115 +StringAccum &operator<<(StringAccum &, double);
58116 +#endif
58117 +
58118 +StringAccum &operator<<(StringAccum &, void *);
58119 +
58120 +
58121 +/** @brief Create a StringAccum with room for at least @a capacity characters.
58122 +    @param  capacity  initial capacity.
58123 +
58124 +    If @a capacity <= 0, the StringAccum is created empty.  If @a capacity is
58125 +    too large (so that @a capacity bytes of memory can't be allocated), the
58126 +    StringAccum is created as out-of-memory. */
58127 +inline
58128 +StringAccum::StringAccum(int capacity)
58129 +    : _len(0)
58130 +{
58131 +    assert(capacity >= 0);
58132 +    if (capacity) {
58133 +       _s = (unsigned char *) CLICK_LALLOC(capacity);
58134 +       _cap = (_s ? capacity : -1);
58135 +    } else {
58136 +       _s = 0;
58137 +       _cap = 0;
58138 +    }
58139 +}
58140 +
58141 +/** @brief Reserve space for at least @a n characters.
58142 +    @param  n  number of characters to reserve.
58143 +    @return  a pointer to at least @a n characters, or null if allocation fails.
58144 +    @pre  @a n >= 0
58145 +
58146 +    reserve() does not change the string's length(), only its capacity().  In
58147 +    a frequent usage pattern, code calls reserve(), passing an upper bound on
58148 +    the characters that could be written by a series of operations.  After
58149 +    writing into the returned buffer, adjust_length() is called to account for
58150 +    the number of characters actually written. */
58151 +inline char *
58152 +StringAccum::reserve(int n)
58153 +{
58154 +    assert(n >= 0);
58155 +    if (_len + n <= _cap || grow(_len + n))
58156 +       return (char *)(_s + _len);
58157 +    else
58158 +       return 0;
58159 +}
58160 +
58161 +/** @brief Adjust the StringAccum's length.
58162 +    @param  delta  length adjustment
58163 +    @pre  If @a delta > 0, then length() + @a delta <= capacity().
58164 +          If @a delta < 0, then length() + delta >= 0.
58165 +
58166 +    The StringAccum's length after adjust_length(@a delta) equals its old
58167 +    length plus @a delta.  Generally adjust_length() is used after a call to
58168 +    reserve().
58169 +    @sa set_length */
58170 +inline void
58171 +StringAccum::adjust_length(int delta) {
58172 +    assert(_len + delta >= 0 && _len + delta <= _cap);
58173 +    _len += delta;
58174 +}
58175 +
58176 +/** @brief Adjust the StringAccum's length (deprecated).
58177 +    @param  delta  length adjustment.
58178 +    @deprecated  Use adjust_length() instead. */
58179 +inline void
58180 +StringAccum::forward(int delta)
58181 +{
58182 +    adjust_length(delta);
58183 +}
58184 +
58185 +/** @brief Reserve space and adjust length in one operation.
58186 +    @param  nadjust   number of characters to reserve and adjust length.
58187 +    @param  nreserve  additional characters to reserve.
58188 +    @pre  @a nadjust >= 0 and @a nreserve >= 0
58189 +
58190 +    This operation combines the effects of reserve(@a nadjust + @a nreserve)
58191 +    and adjust_length(@a nadjust).  Returns the result of the reserve() call. */
58192 +inline char *
58193 +StringAccum::extend(int nadjust, int nreserve)
58194 +{
58195 +    assert(nadjust >= 0 && nreserve >= 0);
58196 +    char *c = reserve(nadjust + nreserve);
58197 +    if (c)
58198 +       _len += nadjust;
58199 +    return c;
58200 +}
58201 +
58202 +/** @brief Remove characters from the end of the StringAccum.
58203 +    @param  n  number of characters to remove.
58204 +    @pre @a n >= 0
58205 +
58206 +    Same as adjust_length(-@a n). */
58207 +inline void
58208 +StringAccum::pop_back(int n) {
58209 +    assert(n >= 0 && _len >= n);
58210 +    _len -= n;
58211 +}
58212 +
58213 +/** @brief Sets the StringAccum's length to @a len.
58214 +    @param  len  new length in characters.
58215 +    @pre  0 <= @a len <= capacity()
58216 +    @sa adjust_length */
58217 +inline void
58218 +StringAccum::set_length(int len) {
58219 +    assert(len >= 0 && _len <= _cap);
58220 +    _len = len;
58221 +}
58222 +
58223 +/** @brief Extend the StringAccum by character @a c.
58224 +    @param  c  character to extend */
58225 +inline void
58226 +StringAccum::append(char c)
58227 +{
58228 +    if (_len < _cap || grow(_len))
58229 +       _s[_len++] = c;
58230 +}
58231 +
58232 +/** @overload */
58233 +inline void
58234 +StringAccum::append(unsigned char c)
58235 +{
58236 +    append(static_cast<char>(c));
58237 +}
58238 +
58239 +inline void
58240 +StringAccum::safe_append(const char *s, int len)
58241 +{
58242 +    if (char *x = extend(len))
58243 +       memcpy(x, s, len);
58244 +}
58245 +
58246 +/** @brief Append the first @a len characters of @a suffix to this StringAccum.
58247 +    @param  suffix  data to append
58248 +    @param  len     length of data
58249 +
58250 +    If @a len < 0, treats @a suffix as a null-terminated C string. */
58251 +inline void
58252 +StringAccum::append(const char *suffix, int len)
58253 +{
58254 +    if (len < 0)
58255 +       len = strlen(suffix);
58256 +    if (len == 0 && suffix == String::out_of_memory_data())
58257 +       make_out_of_memory();
58258 +    safe_append(suffix, len);
58259 +}
58260 +
58261 +/** @overload */
58262 +inline void
58263 +StringAccum::append(const unsigned char *suffix, int len)
58264 +{
58265 +    append(reinterpret_cast<const char *>(suffix), len);
58266 +}
58267 +
58268 +/** @brief Append the data from @a begin to @a end to the end of this StringAccum.
58269 +
58270 +    Does nothing if @a begin >= @a end. */
58271 +inline void
58272 +StringAccum::append(const char *begin, const char *end)
58273 +{
58274 +    if (begin < end)
58275 +       safe_append(begin, end - begin);
58276 +    else if (begin == String::out_of_memory_data())
58277 +       make_out_of_memory();
58278 +}
58279 +
58280 +/** @brief Clear the StringAccum's comments.
58281 +
58282 +    All characters in the StringAccum are erased.  This operation also resets
58283 +    the StringAccum's out-of-memory status. */
58284 +inline void
58285 +StringAccum::clear()
58286 +{
58287 +    if (_cap < 0)
58288 +       _cap = 0, _s = 0;
58289 +    _len = 0;
58290 +}
58291 +
58292 +/** @relates StringAccum
58293 +    @brief Append character @a c to StringAccum @a sa.
58294 +    @return @a sa
58295 +    @note Same as @a sa.append(@a c). */
58296 +inline StringAccum &
58297 +operator<<(StringAccum &sa, char c)
58298 +{
58299 +    sa.append(c);
58300 +    return sa;
58301 +}
58302 +
58303 +/** @relates StringAccum
58304 +    @brief Append character @a c to StringAccum @a sa.
58305 +    @return @a sa
58306 +    @note Same as @a sa.append(@a c). */
58307 +inline StringAccum &
58308 +operator<<(StringAccum &sa, unsigned char c)
58309 +{
58310 +    sa.append(c);
58311 +    return sa;
58312 +}
58313 +
58314 +/** @relates StringAccum
58315 +    @brief Append null-terminated C string @a cstr to StringAccum @a sa.
58316 +    @return @a sa
58317 +    @note Same as @a sa.append(@a cstr, -1). */
58318 +inline StringAccum &
58319 +operator<<(StringAccum &sa, const char *cstr)
58320 +{
58321 +    sa.append(cstr, -1);
58322 +    return sa;
58323 +}
58324 +
58325 +/** @relates StringAccum
58326 +    @brief Append "true" or "false" to @a sa, depending on @a b.
58327 +    @return @a sa */
58328 +inline StringAccum &
58329 +operator<<(StringAccum &sa, bool b)
58330 +{
58331 +    return sa << (b ? "true" : "false");
58332 +}
58333 +
58334 +/** @relates StringAccum
58335 +    @brief Append decimal representation of @a i to @a sa.
58336 +    @return @a sa */
58337 +inline StringAccum &
58338 +operator<<(StringAccum &sa, short i)
58339 +{
58340 +    return sa << static_cast<long>(i);
58341 +}
58342 +
58343 +/** @relates StringAccum
58344 +    @brief Append decimal representation of @a u to @a sa.
58345 +    @return @a sa */
58346 +inline StringAccum &
58347 +operator<<(StringAccum &sa, unsigned short u)
58348 +{
58349 +    return sa << static_cast<unsigned long>(u);
58350 +}
58351 +
58352 +/** @relates StringAccum
58353 +    @brief Append decimal representation of @a i to @a sa.
58354 +    @return @a sa */
58355 +inline StringAccum &
58356 +operator<<(StringAccum &sa, int i)
58357 +{
58358 +    return sa << static_cast<long>(i);
58359 +}
58360 +
58361 +/** @relates StringAccum
58362 +    @brief Append decimal representation of @a u to @a sa.
58363 +    @return @a sa */
58364 +inline StringAccum &
58365 +operator<<(StringAccum &sa, unsigned u)
58366 +{
58367 +    return sa << static_cast<unsigned long>(u);
58368 +}
58369 +
58370 +#if HAVE_LONG_LONG
58371 +/** @relates StringAccum
58372 +    @brief Append decimal representation of @a q to @a sa.
58373 +    @return @a sa */
58374 +inline StringAccum &
58375 +operator<<(StringAccum &sa, long long q)
58376 +{
58377 +    sa.append_numeric(static_cast<String::int_large_t>(q));
58378 +    return sa;
58379 +}
58380 +
58381 +/** @relates StringAccum
58382 +    @brief Append decimal representation of @a q to @a sa.
58383 +    @return @a sa */
58384 +inline StringAccum &
58385 +operator<<(StringAccum &sa, unsigned long long q)
58386 +{
58387 +    sa.append_numeric(static_cast<String::uint_large_t>(q));
58388 +    return sa;
58389 +}
58390 +#endif
58391 +
58392 +#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG
58393 +/** @relates StringAccum
58394 +    @brief Append decimal representation of @a q to @a sa.
58395 +    @return @a sa */
58396 +inline StringAccum &
58397 +operator<<(StringAccum &sa, int64_t q)
58398 +{
58399 +    sa.append_numeric(static_cast<String::int_large_t>(q));
58400 +    return sa;
58401 +}
58402 +
58403 +/** @relates StringAccum
58404 +    @brief Append decimal representation of @a q to @a sa.
58405 +    @return @a sa */
58406 +inline StringAccum &
58407 +operator<<(StringAccum &sa, uint64_t q)
58408 +{
58409 +    sa.append_numeric(static_cast<String::uint_large_t>(q));
58410 +    return sa;
58411 +}
58412 +#endif
58413 +
58414 +/** @relates StringAccum
58415 +    @brief Append the contents of @a str to @a sa.
58416 +    @return @a sa */
58417 +StringAccum &
58418 +operator<<(StringAccum &sa, const String &str)
58419 +{
58420 +    sa.append(str.data(), str.length());
58421 +    return sa;
58422 +}
58423 +
58424 +#ifdef HAVE_PERMSTRING
58425 +inline StringAccum &
58426 +operator<<(StringAccum &sa, PermString s)
58427 +{
58428 +    sa.safe_append(s.c_str(), s.length());
58429 +    return sa;
58430 +}
58431 +#endif
58432 +
58433 +/** @relates StringAccum
58434 +    @brief Append the contents of @a sb to @a sa.
58435 +    @return @a sa */
58436 +inline StringAccum &
58437 +operator<<(StringAccum &sa, const StringAccum &sb)
58438 +{
58439 +    sa.append(sb.data(), sb.length());
58440 +    return sa;
58441 +}
58442 +
58443 +CLICK_ENDDECLS
58444 +#endif
58445 diff -Nurb click-1.6.0/inst/include/click/string.hh click-1.6.0-27/inst/include/click/string.hh
58446 --- click-1.6.0/inst/include/click/string.hh    1969-12-31 19:00:00.000000000 -0500
58447 +++ click-1.6.0-27/inst/include/click/string.hh 2009-02-05 10:20:41.000000000 -0500
58448 @@ -0,0 +1,718 @@
58449 +// -*- c-basic-offset: 2; related-file-name: "../../lib/string.cc" -*-
58450 +#ifndef CLICK_STRING_HH
58451 +#define CLICK_STRING_HH
58452 +#ifdef HAVE_PERMSTRING
58453 +# include "permstr.hh"
58454 +#endif
58455 +#include <click/algorithm.hh>
58456 +#include <click/atomic.hh>
58457 +CLICK_DECLS
58458 +
58459 +class String { public:
58460 +  
58461 +  // Call static_initialize() before any function which might deal with
58462 +  // Strings, and declare a String::Initializer in any file in which you
58463 +  // declare static global Strings.
58464 +  static void static_initialize();
58465 +  static void static_cleanup();
58466 +  struct Initializer { Initializer(); };
58467 +
58468 +  inline String();
58469 +  inline String(const String &str);
58470 +  inline String(const char *cstr);
58471 +  inline String(const char *s, int len);
58472 +  inline String(const char *begin, const char *end);
58473 +  explicit inline String(bool b);
58474 +  explicit inline String(char c);
58475 +  explicit inline String(unsigned char c);
58476 +  explicit String(int i);
58477 +  explicit String(unsigned u);
58478 +  explicit String(long i);
58479 +  explicit String(unsigned long u);
58480 +#if HAVE_LONG_LONG
58481 +  explicit String(long long q);
58482 +  explicit String(unsigned long long q);
58483 +#endif
58484 +#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG
58485 +  explicit String(int64_t q);
58486 +  explicit String(uint64_t q);
58487 +#endif
58488 +#ifdef CLICK_USERLEVEL
58489 +  explicit String(double d);
58490 +#endif
58491 +  inline ~String();
58492 +  
58493 +  static inline const String &empty_string();
58494 +  static String garbage_string(int len);       // len garbage characters
58495 +  static String stable_string(const char *s, int len = -1); // stable read-only mem.
58496 +  static inline String stable_string(const char *begin, const char *end);
58497 +
58498 +#if HAVE_INT64_TYPES && (!HAVE_LONG_LONG || SIZEOF_LONG_LONG <= 8)
58499 +  typedef int64_t int_large_t;
58500 +  typedef uint64_t uint_large_t;
58501 +#elif HAVE_LONG_LONG
58502 +  typedef long long int_large_t;
58503 +  typedef unsigned long long uint_large_t;
58504 +#else
58505 +  typedef long int_large_t;
58506 +  typedef unsigned long uint_large_t;
58507 +#endif
58508 +  
58509 +  static String numeric_string(int_large_t num, int base = 10, bool uppercase = true);
58510 +  static String numeric_string(uint_large_t num, int base = 10, bool uppercase = true);
58511 +  
58512 +  inline int length() const;
58513 +  inline const char *data() const;
58514 +  
58515 +  typedef const char *const_iterator;
58516 +  typedef const_iterator iterator;
58517 +  inline const_iterator begin() const;
58518 +  inline const_iterator end() const;
58519 +
58520 +  typedef int (String::*unspecified_bool_type)() const;
58521 +  inline operator unspecified_bool_type() const;
58522 +  
58523 +  inline char operator[](int i) const;
58524 +  inline char at(int i) const;
58525 +  inline char front() const;
58526 +  inline char back() const;
58527 +  
58528 +  const char *c_str() const;           // pointer returned is semi-transient
58529 +
58530 +  size_t hashcode() const;
58531 +  
58532 +  bool equals(const char *s, int len) const;
58533 +  // bool operator==(const String &, const String &);
58534 +  // bool operator==(const String &, const char *);
58535 +  // bool operator==(const char *, const String &);
58536 +  // bool operator!=(const String &, const String &);
58537 +  // bool operator!=(const String &, const char *);
58538 +  // bool operator!=(const char *, const String &);
58539 +
58540 +  static inline int compare(const String &a, const String &b);
58541 +  inline int compare(const String &str) const;
58542 +  int compare(const char *s, int len) const;
58543 +  // bool operator<(const String &, const String &);
58544 +  // bool operator<=(const String &, const String &);
58545 +  // bool operator>(const String &, const String &);
58546 +  // bool operator>=(const String &, const String &);
58547 +
58548 +  inline String substring(const char *begin, const char *end) const;
58549 +  String substring(int pos, int len) const;
58550 +  inline String substring(int pos) const;
58551 +  
58552 +  int find_left(char c, int start = 0) const;
58553 +  int find_left(const String &s, int start = 0) const;
58554 +  int find_right(char c, int start = 0x7FFFFFFF) const;
58555 +  
58556 +  String lower() const;                        // lowercase
58557 +  String upper() const;                        // uppercase
58558 +  String printable() const;            // quote non-ASCII characters
58559 +  String trim_space() const;           // trim space from right
58560 +  String quoted_hex() const;           // hex enclosed in '\<...>'
58561 +  
58562 +  inline String &operator=(const String &str);
58563 +  inline String &operator=(const char *cstr);
58564 +
58565 +  void append(const char *s, int len);
58566 +  inline void append(const char *begin, const char *end);
58567 +  void append_fill(int c, int len);
58568 +  char *append_garbage(int len);
58569 +  inline String &operator+=(const String &str);
58570 +  inline String &operator+=(const char *cstr);
58571 +  inline String &operator+=(char c);
58572 +
58573 +  // String operator+(String, const String &);
58574 +  // String operator+(String, const char *);
58575 +  // String operator+(const char *, const String &);
58576 +  // String operator+(String, PermString);
58577 +  // String operator+(PermString, const String &);
58578 +  // String operator+(PermString, const char *);
58579 +  // String operator+(const char *, PermString);
58580 +  // String operator+(PermString, PermString);
58581 +  // String operator+(String, char);
58582 +
58583 +  inline bool data_shared() const;
58584 +  char *mutable_data();
58585 +  char *mutable_c_str();
58586 +
58587 +  inline bool out_of_memory() const;
58588 +  static inline const String &out_of_memory_string();
58589 +  static inline const char *out_of_memory_data();
58590 +    
58591 + private:
58592 +
58593 +  /** @cond never */
58594 +  struct Memo {
58595 +    atomic_uint32_t _refcount;
58596 +    uint32_t _capacity;
58597 +    atomic_uint32_t _dirty;
58598 +    char *_real_data;
58599 +    
58600 +    Memo();
58601 +    Memo(char *, int, int);
58602 +    Memo(int, int);
58603 +    ~Memo();
58604 +  };
58605 +  /** @endcond never */
58606 +    
58607 +  mutable const char *_data;   // mutable for c_str()
58608 +  mutable int _length;
58609 +  mutable Memo *_memo;
58610 +  
58611 +  inline String(const char *, int, Memo *);
58612 +  
58613 +  inline void assign(const String &) const;
58614 +  void assign(const char *, int);
58615 +  inline void deref() const;
58616 +  void make_out_of_memory();
58617 +  
58618 +  static Memo *null_memo;
58619 +  static Memo *permanent_memo;
58620 +  static Memo *oom_memo;
58621 +  static String *null_string_p;
58622 +  static String *oom_string_p;
58623 +  static const char oom_string_data;
58624 +  
58625 +  static String claim_string(char *, int, int); // claim memory
58626 +
58627 +  friend class String::Initializer;
58628 +  friend class StringAccum;
58629 +  
58630 +};
58631 +
58632 +
58633 +inline
58634 +String::String(const char *data, int length, Memo *memo)
58635 +  : _data(data), _length(length), _memo(memo)
58636 +{
58637 +  _memo->_refcount++;
58638 +}
58639 +
58640 +inline void
58641 +String::assign(const String &str) const
58642 +{
58643 +  _data = str._data;
58644 +  _length = str._length;
58645 +  _memo = str._memo;
58646 +  _memo->_refcount++;
58647 +}
58648 +
58649 +inline void
58650 +String::deref() const
58651 +{
58652 +  if (_memo->_refcount.dec_and_test())
58653 +    delete _memo;
58654 +}
58655 +
58656 +/** @brief Create an empty String (with length 0). */
58657 +inline
58658 +String::String()
58659 +  : _data(null_memo->_real_data), _length(0), _memo(null_memo)
58660 +{
58661 +  _memo->_refcount++;
58662 +}
58663 +
58664 +/** @brief Create a String containing a copy of the C string @a cstr.
58665 + * @param cstr a null-terminated C string.
58666 + * @return A String containing the characters of @a cstr, up to but not
58667 + * including the terminating null character.
58668 + *
58669 + * If @a cstr equals String::out_of_memory_data(), returns an
58670 + * out-of-memory string.
58671 + */
58672 +inline
58673 +String::String(const char *cstr)
58674 +{
58675 +  assign(cstr, -1);
58676 +}
58677 +
58678 +/** @brief Create a String containing a copy of the first @a len characters of
58679 + * string @a s.
58680 + * @param s a string.
58681 + * @param len number of characters to take from @a cc.  If @a len @< 0, then
58682 + * takes @c strlen(@a s) characters.
58683 + * @return A String containing @a len characters of @a s.
58684 + *
58685 + * If @a s equals String::out_of_memory_data(), returns an
58686 + * out-of-memory string.
58687 + */
58688 +inline
58689 +String::String(const char *s, int len)
58690 +{
58691 +  assign(s, len);
58692 +}
58693 +
58694 +/** @brief Create a String containing a copy of the characters from @a begin
58695 + * to @a end.
58696 + * @param begin first character in string (begin iterator).
58697 + * @param end pointer one past last character in string (end iterator).
58698 + * @return A String containing the characters from @a begin to @a end.
58699 + *
58700 + * Returns a null string if @a begin @> @a end. 
58701 + * If @a begin equals String::out_of_memory_data(), returns an
58702 + * out-of-memory string.
58703 + */
58704 +inline
58705 +String::String(const char *begin, const char *end)
58706 +{
58707 +  assign(begin, (end > begin ? end - begin : 0));
58708 +}
58709 +
58710 +/** @brief Create a String equal to "true" or "false" depending on the
58711 + * value of @a b.
58712 + * @param b a boolean variable.
58713 + */
58714 +inline
58715 +String::String(bool b)
58716 +  : _data(b ? "true" : "false"), _length(b ? 4 : 5), _memo(permanent_memo)
58717 +{
58718 +  _memo->_refcount++;
58719 +}
58720 +
58721 +/** @brief Create a String containing the single character @a c.
58722 + * @param c a character.
58723 + */
58724 +inline
58725 +String::String(char c)
58726 +{
58727 +  assign(&c, 1);
58728 +}
58729 +
58730 +/** @brief Create a String containing the single character @a c.
58731 + * @param c an unsigned character.
58732 + */
58733 +inline
58734 +String::String(unsigned char c)
58735 +{
58736 +  assign(reinterpret_cast<char *>(&c), 1);
58737 +}
58738 +
58739 +/** @brief Create a String containing a copy of the String @a str.
58740 + * @param str a String.
58741 + */
58742 +inline
58743 +String::String(const String &str)
58744 +{
58745 +  assign(str);
58746 +}
58747 +
58748 +/** @brief Destroy a String, freeing memory if necessary. */
58749 +inline
58750 +String::~String()
58751 +{
58752 +  deref();
58753 +}
58754 +
58755 +/** @brief Return the string's length. */
58756 +inline int
58757 +String::length() const
58758 +{
58759 +  return _length;
58760 +}
58761 +
58762 +/** @brief Return a pointer to the string's data.
58763 + *
58764 + * Only the first length() characters are valid, and the string data might not
58765 + * be null-terminated. */
58766 +inline const char *
58767 +String::data() const
58768 +{
58769 +  return _data;
58770 +}
58771 +
58772 +/** @brief Return an iterator for the first character in the string.
58773 + *
58774 + * String iterators are simply pointers into string data, so they are quite
58775 + * efficient.  @sa String::data */
58776 +inline String::const_iterator
58777 +String::begin() const
58778 +{
58779 +  return _data;
58780 +}
58781 +
58782 +/** @brief Return an iterator for the end of the string.
58783 + *
58784 + * The return value points one character beyond the last character in the
58785 + * string. */
58786 +inline String::const_iterator
58787 +String::end() const
58788 +{
58789 +  return _data + _length;
58790 +}
58791 +
58792 +/** @brief Returns true iff the string is nonempty. */
58793 +inline
58794 +String::operator unspecified_bool_type() const
58795 +{
58796 +  return _length != 0 ? &String::length : 0;
58797 +}
58798 +  
58799 +/** @brief Returns the @a i th character in the string.
58800 + *
58801 + * Does not check bounds.
58802 + * @sa String::at */
58803 +inline char
58804 +String::operator[](int i) const
58805 +{
58806 +  return _data[i];
58807 +}
58808 +
58809 +/** @brief Returns the @a i th character in the string.
58810 + *
58811 + * Checks bounds: an assertion will fail if @a i is less than 0 or not less
58812 + * than length().
58813 + * @sa String::operator[]
58814 + */
58815 +inline char
58816 +String::at(int i) const
58817 +{
58818 +  assert(i >= 0 && i < _length);
58819 +  return _data[i];
58820 +}
58821 +
58822 +/** @brief Returns the first character in the string.
58823 + *
58824 + * Does not do check bounds.  Same as (*this)[0]. */
58825 +inline char
58826 +String::front() const
58827 +{
58828 +  return _data[0];
58829 +}
58830 +
58831 +/** @brief Returns the last character in the string.
58832 + *
58833 + * Does not check bounds.  Same as (*this)[length() - 1]. */
58834 +inline char
58835 +String::back() const
58836 +{
58837 +  return _data[_length - 1];
58838 +}
58839 +
58840 +/** @brief Return true iff the String's data is shared or immutable. */
58841 +inline bool
58842 +String::data_shared() const
58843 +{
58844 +  return !_memo->_capacity || _memo->_refcount != 1;
58845 +}
58846 +
58847 +/** @brief Return an empty String.
58848 + *
58849 + * Returns a global constant, so it's quicker than String::String().
58850 + */
58851 +inline const String &
58852 +String::empty_string()
58853 +{
58854 +  return *null_string_p;
58855 +}
58856 +
58857 +/** @brief Return a String that directly references the character data in
58858 + * [@a begin, @a end).
58859 + * @param begin pointer to the first character in the character data.
58860 + * @param end pointer one beyond the last character in the character data.
58861 + *
58862 + * This function is suitable for static constant strings whose data is known
58863 + * to stay around forever, such as C string constants.  Returns a null string
58864 + * if @a begin @> @a end.
58865 + */
58866 +inline String
58867 +String::stable_string(const char *begin, const char *end)
58868 +{
58869 +    if (begin < end)
58870 +       return String::stable_string(begin, end - begin);
58871 +    else
58872 +       return String();
58873 +}
58874 +
58875 +/** @brief Return a substring of the current string starting at @a begin and
58876 + * ending before @a end.
58877 + * @param begin pointer to the first character in the desired substring.
58878 + * @param end pointer one beyond the last character in the desired substring.
58879 + *
58880 + * Returns a null string if @a begin @> @a end, or if @a begin or @a end is
58881 + * out of range (i.e., either less than this->begin() or greater than
58882 + * this->end()).
58883 + */
58884 +inline String
58885 +String::substring(const char *begin, const char *end) const
58886 +{
58887 +    if (begin < end && begin >= _data && end <= _data + _length)
58888 +       return String(begin, end - begin, _memo);
58889 +    else
58890 +       return String();
58891 +}
58892 +
58893 +/** @brief Return the suffix of the current string starting at index @a pos.
58894 + *
58895 + * Same as String::substring(@a pos, INT_MAX).
58896 + */
58897 +inline String
58898 +String::substring(int pos) const
58899 +{
58900 +  return substring(pos, _length);
58901 +}
58902 +
58903 +/** @brief Compare two strings.
58904 + * @param a first string to compare
58905 + * @param b second string to compare
58906 + *
58907 + * Returns 0 if @a a == @a b, negative if @a a @< @a b in lexicographic
58908 + * order, and positive if @a a @> @a b in lexicographic order.
58909 + */
58910 +inline int
58911 +String::compare(const String &a, const String &b)
58912 +{
58913 +  return a.compare(b);
58914 +}
58915 +
58916 +/** @brief Compare this string with string @a str.
58917 + *
58918 + * Same as String::compare(*this, @a str).
58919 + * @sa String::compare(const String &a, const String &b) */
58920 +inline int
58921 +String::compare(const String &str) const
58922 +{
58923 +  return compare(str._data, str._length);
58924 +}
58925 +
58926 +/** @relates String
58927 + * @brief Compares two strings for equality.
58928 + *
58929 + * Returns true iff the two operands have the same lengths and the same
58930 + * characters in the same order.  At most one of the operands can be a
58931 + * null-terminated C string.
58932 + * @sa String::compare
58933 + */
58934 +inline bool
58935 +operator==(const String &a, const String &b)
58936 +{
58937 +  return a.equals(b.data(), b.length());
58938 +}
58939 +
58940 +/** @relates String */
58941 +inline bool
58942 +operator==(const char *a, const String &b)
58943 +{
58944 +  return b.equals(a, -1);
58945 +}
58946 +
58947 +/** @relates String */
58948 +inline bool
58949 +operator==(const String &a, const char *b)
58950 +{
58951 +  return a.equals(b, -1);
58952 +}
58953 +
58954 +/** @relates String
58955 + * @brief Compare two Strings for inequality.
58956 + *
58957 + * Returns true iff !(@a a == @a b).  At most one of the operands can be a
58958 + * null-terminated C string. */
58959 +inline bool
58960 +operator!=(const String &a, const String &b)
58961 +{
58962 +  return !a.equals(b.data(), b.length());
58963 +}
58964 +
58965 +/** @relates String */
58966 +inline bool
58967 +operator!=(const char *a, const String &b)
58968 +{
58969 +  return !b.equals(a, -1);
58970 +}
58971 +
58972 +/** @relates String */
58973 +inline bool
58974 +operator!=(const String &a, const char *b)
58975 +{
58976 +  return !a.equals(b, -1);
58977 +}
58978 +
58979 +/** @relates String
58980 + * @brief Compare two Strings.
58981 + *
58982 + * Returns true iff @a a @< @a b in lexicographic order.
58983 + * @sa String::compare
58984 + */
58985 +inline bool
58986 +operator<(const String &a, const String &b)
58987 +{
58988 +  return a.compare(b.data(), b.length()) < 0;
58989 +}
58990 +
58991 +/** @relates String
58992 + * @brief Compare two Strings.
58993 + *
58994 + * Returns true iff @a a @<= @a b in lexicographic order.
58995 + * @sa String::compare
58996 + */
58997 +inline bool
58998 +operator<=(const String &a, const String &b)
58999 +{
59000 +  return a.compare(b.data(), b.length()) <= 0;
59001 +}
59002 +
59003 +/** @relates String
59004 + * @brief Compare two Strings.
59005 + *
59006 + * Returns true iff @a a @> @a b in lexicographic order.
59007 + * @sa String::compare
59008 + */
59009 +inline bool
59010 +operator>(const String &a, const String &b)
59011 +{
59012 +  return a.compare(b.data(), b.length()) > 0;
59013 +}
59014 +
59015 +/** @relates String
59016 + * @brief Compare two Strings.
59017 + *
59018 + * Returns true iff @a a @>= @a b in lexicographic order.
59019 + * @sa String::compare
59020 + */
59021 +inline bool
59022 +operator>=(const String &a, const String &b)
59023 +{
59024 +  return a.compare(b.data(), b.length()) >= 0;
59025 +}
59026 +
59027 +/** @brief Makes this string a copy of @a str. */
59028 +inline String &
59029 +String::operator=(const String &str)
59030 +{
59031 +  if (&str != this) {
59032 +    deref();
59033 +    assign(str);
59034 +  }
59035 +  return *this;
59036 +}
59037 +
59038 +/** @brief Make this string a copy of the C string @a cstr. */
59039 +inline String &
59040 +String::operator=(const char *cstr)
59041 +{
59042 +  deref();
59043 +  assign(cstr, -1);
59044 +  return *this;
59045 +}
59046 +
59047 +/** @brief Appends the data from @a begin to @a end to the end of this string.
59048 + *
59049 + * Does nothing if @a begin @>= @a end. */
59050 +inline void
59051 +String::append(const char *begin, const char *end)
59052 +{
59053 +  if (begin < end)
59054 +    append(begin, end - begin);
59055 +}
59056 +
59057 +/** @brief Append a copy of @a str to the end of this string.
59058 + *
59059 + * Returns the result. */
59060 +inline String &
59061 +String::operator+=(const String &str)
59062 +{
59063 +  append(str._data, str._length);
59064 +  return *this;
59065 +}
59066 +
59067 +/** @brief Append a copy of the C string @a cstr to the end of this string.
59068 + *
59069 + * Returns the result. */
59070 +inline String &
59071 +String::operator+=(const char *cstr)
59072 +{
59073 +  append(cstr, -1);
59074 +  return *this;
59075 +}
59076 +
59077 +/** @brief Append the character @a c to the end of this string.
59078 + *
59079 + * Returns the result. */
59080 +inline String &
59081 +String::operator+=(char c)
59082 +{
59083 +  append(&c, 1);
59084 +  return *this;
59085 +}
59086 +
59087 +/** @relates String
59088 + * @brief Concatenate the operands and return the result.
59089 + *
59090 + * At most one of the two operands can be a null-terminated C string. */
59091 +inline String
59092 +operator+(String a, const String &b)
59093 +{
59094 +  a += b;
59095 +  return a;
59096 +}
59097 +
59098 +/** @relates String */
59099 +inline String
59100 +operator+(String a, const char *b)
59101 +{
59102 +  a.append(b, -1);
59103 +  return a;
59104 +}
59105 +
59106 +/** @relates String */
59107 +inline String
59108 +operator+(const char *a, const String &b)
59109 +{
59110 +  String s1(a);
59111 +  s1 += b;
59112 +  return s1;
59113 +}
59114 +
59115 +/** @relates String
59116 + * @brief Concatenate the operands and return the result.
59117 + *
59118 + * The second operand is a single character. */
59119 +inline String
59120 +operator+(String a, char b)
59121 +{
59122 +  a.append(&b, 1);
59123 +  return a;
59124 +}
59125 +
59126 +/** @brief Returns true iff this is an out-of-memory string. */
59127 +inline bool
59128 +String::out_of_memory() const
59129 +{
59130 +  return _data == &oom_string_data;
59131 +}
59132 +
59133 +/** @brief Return a reference to an out-of-memory String. */
59134 +inline const String &
59135 +String::out_of_memory_string()
59136 +{
59137 +  return *oom_string_p;
59138 +}
59139 +
59140 +/** @brief Return the data pointer used for out-of-memory strings.
59141 + *
59142 + * The returned value may be dereferenced; it points to a null character. 
59143 + */
59144 +inline const char *
59145 +String::out_of_memory_data()
59146 +{
59147 +  return &oom_string_data;
59148 +}
59149 +
59150 +// find methods
59151 +
59152 +inline const char *rfind(const char *begin, const char *end, char c)
59153 +{
59154 +  for (const char *bb = end - 1; bb >= begin; bb--)
59155 +    if (*bb == c)
59156 +      return bb;
59157 +  return end;
59158 +}
59159 +
59160 +inline const char *find(const String &s, char c)
59161 +{
59162 +  return find(s.begin(), s.end(), c);
59163 +}
59164 +
59165 +CLICK_ENDDECLS
59166 +#endif
59167 diff -Nurb click-1.6.0/inst/include/click/sync.hh click-1.6.0-27/inst/include/click/sync.hh
59168 --- click-1.6.0/inst/include/click/sync.hh      1969-12-31 19:00:00.000000000 -0500
59169 +++ click-1.6.0-27/inst/include/click/sync.hh   2009-02-05 10:20:41.000000000 -0500
59170 @@ -0,0 +1,467 @@
59171 +// -*- c-basic-offset: 4 -*-
59172 +#ifndef CLICK_SYNC_HH
59173 +#define CLICK_SYNC_HH
59174 +#include <click/glue.hh>
59175 +#include <click/atomic.hh>
59176 +#if CLICK_LINUXMODULE && defined(__SMP__)
59177 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
59178 +#  include <linux/threads.h>
59179 +# else
59180 +#  include <linux/tasks.h>
59181 +# endif
59182 +# include <linux/sched.h>
59183 +# define my_cpu click_current_processor()
59184 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
59185 +#  define num_possible_cpus()  smp_num_cpus
59186 +# endif
59187 +#endif
59188 +CLICK_DECLS
59189 +
59190 +// loop-in-cache spinlock implementation: 8 bytes. if the size of this class
59191 +// changes, change size of padding in ReadWriteLock below.
59192 +
59193 +/** @file <click/sync.hh>
59194 + * @brief Classes for synchronizing among multiple CPUs, particularly in the
59195 + * Linux kernel.
59196 + */
59197 +
59198 +/** @class Spinlock
59199 + * @brief A spinlock for SMP Click threads.
59200 + *
59201 + * The Spinlock class abstracts a spinlock, or polling mutex, in SMP Click.
59202 + * This is a type of mutual-exclusion lock in which acquiring the lock is a
59203 + * polling operation (basically a "while (lock.acquired()) do nothing;" loop).
59204 + * Spinlocks can be used to synchronize access to shared data among multiple
59205 + * Click SMP threads.  Spinlocks should not be held for long periods of time:
59206 + * use them for quick updates and such.
59207 + *
59208 + * Spinlock operations do nothing unless Click was compiled with SMP support
59209 + * (with --enable-multithread).  Therefore, Spinlock should not be used to,
59210 + * for example, synchronize handlers with main element threads.  See also
59211 + * SpinlockIRQ.
59212 + *
59213 + * The main Spinlock operations are acquire(), which acquires the lock, and
59214 + * release(), which releases the lock.  attempt() acquires the lock only if it
59215 + * can be acquired instantaneously.
59216 + *
59217 + * It is OK for a thread to acquire a lock it has already acquired, but you
59218 + * must release it as many times as you have acquired it.
59219 + */
59220 +class Spinlock { public:
59221 +
59222 +    inline Spinlock();
59223 +#if CLICK_LINUXMODULE && defined(__SMP__)
59224 +    inline ~Spinlock();
59225 +#endif
59226 +  
59227 +    inline void acquire();
59228 +    inline void release();
59229 +    inline bool attempt();
59230 +    inline bool nested() const;
59231 +
59232 +#if CLICK_LINUXMODULE && defined(__SMP__)
59233 +  private:
59234 +    volatile unsigned short _lock;
59235 +    unsigned short _depth;
59236 +    int _owner;
59237 +#endif
59238 +  
59239 +};
59240 +
59241 +/** @brief Create a Spinlock. */
59242 +inline
59243 +Spinlock::Spinlock()
59244 +#if CLICK_LINUXMODULE && defined(__SMP__)
59245 +    : _lock(0), _depth(0), _owner(-1)
59246 +#endif
59247 +{
59248 +#if CLICK_LINUXMODULE && defined(__SMP__)
59249 +# if !defined(__i386__) && !defined(__x86_64__)
59250 +#  error "no multithread support for non i386 click"
59251 +# endif
59252 +#endif
59253 +} 
59254 +
59255 +#if CLICK_LINUXMODULE && defined(__SMP__)
59256 +inline
59257 +Spinlock::~Spinlock()
59258 +{
59259 +    if (_lock != 0) 
59260 +       click_chatter("warning: freeing unreleased lock");
59261 +}
59262 +#endif
59263 +
59264 +/** @brief Acquires the Spinlock.
59265 + *
59266 + * On return, this thread has acquired the lock.  The function will spin
59267 + * indefinitely until the lock is acquired.  It is OK to acquire a lock you
59268 + * have already acquired, but you must release it as many times as you have
59269 + * acquired it.
59270 + */
59271 +inline void
59272 +Spinlock::acquire()
59273 +{
59274 +#if CLICK_LINUXMODULE && defined(__SMP__)
59275 +    if (_owner == my_cpu) {
59276 +       _depth++;
59277 +       return;
59278 +    }
59279 +  
59280 +    register unsigned short content = 1;
59281 +  test_and_set:
59282 +    asm volatile ("xchgw %0,%1"
59283 +                 : "=r" (content), "=m" (_lock)
59284 +                 : "0" (content), "m" (_lock));
59285 +    if (content != 0) {
59286 +       while(_lock != 0)
59287 +           asm volatile ("" : : : "memory");  
59288 +       goto test_and_set;
59289 +    }
59290 +
59291 +    _owner = my_cpu;
59292 +    _depth++;
59293 +#endif
59294 +}
59295 +
59296 +/** @brief Attempts to acquire the Spinlock.
59297 + * @return True iff the Spinlock was acquired.
59298 + *
59299 + * This function will acquire the lock and return true only if the Spinlock
59300 + * can be acquired right away, without retries.
59301 + */
59302 +inline bool
59303 +Spinlock::attempt()
59304 +{
59305 +#if CLICK_LINUXMODULE && defined(__SMP__)
59306 +    if (_owner == my_cpu) {
59307 +       _depth++;
59308 +       return true;
59309 +    }
59310 +  
59311 +    register unsigned short content = 1;
59312 +    asm volatile ("xchgw %0,%1"
59313 +                 : "=r" (content), "=m" (_lock)
59314 +                 : "0" (content), "m" (_lock));
59315 +    if (content != 0)
59316 +       return false;
59317 +    else {
59318 +       _owner = my_cpu;
59319 +       _depth++;
59320 +       return true;
59321 +    }
59322 +#else
59323 +    return true;
59324 +#endif
59325 +}
59326 +
59327 +/** @brief Releases the Spinlock.
59328 + *
59329 + * The Spinlock must have been previously acquired by either Spinlock::acquire
59330 + * or Spinlock::attempt.
59331 + */
59332 +inline void
59333 +Spinlock::release()
59334 +{
59335 +#if CLICK_LINUXMODULE && defined(__SMP__)
59336 +    if (_owner != my_cpu)
59337 +       click_chatter("releasing someone else's lock");
59338 +    if (_depth > 0) 
59339 +       _depth--;
59340 +    else
59341 +       click_chatter("lock already freed");
59342 +    if (_depth == 0) {
59343 +       _owner = -1;
59344 +       _lock = 0;
59345 +    }
59346 +#endif
59347 +}
59348 +
59349 +/** @brief Returns true iff the Spinlock has been acquired more than once by
59350 + * the current thread.
59351 + */
59352 +inline bool
59353 +Spinlock::nested() const
59354 +{
59355 +#if CLICK_LINUXMODULE && defined(__SMP__)
59356 +    return _depth > 1;
59357 +#else
59358 +    return false;
59359 +#endif
59360 +}
59361 +
59362 +
59363 +/** @class SpinlockIRQ
59364 + * @brief A spinlock that disables interrupts.
59365 + *
59366 + * The SpinlockIRQ class abstracts a spinlock, or polling mutex, that also
59367 + * turns off interrupts.  Spinlocks are a type of mutual-exclusion lock in
59368 + * which acquiring the lock is a polling operation (basically a "while
59369 + * (lock.acquired()) do nothing;" loop).  The SpinlockIRQ variant can be used
59370 + * to protect Click data structures from interrupts and from other threads.
59371 + * Very few objects in Click need this protection; the Click Master object,
59372 + * which protects the task list, uses it, but that's hidden from users.
59373 + * Spinlocks should not be held for long periods of time: use them for quick
59374 + * updates and such.
59375 + *
59376 + * In the Linux kernel, SpinlockIRQ is equivalent to a combination of
59377 + * local_irq_save and the spinlock_t type.
59378 + *
59379 + * The SpinlockIRQ operations are acquire(), which acquires the lock, and
59380 + * release(), which releases the lock.
59381 + *
59382 + * It is NOT OK for a SpinlockIRQ thread to acquire a lock it has already
59383 + * acquired.
59384 + */
59385 +class SpinlockIRQ { public:
59386 +
59387 +    inline SpinlockIRQ();
59388 +
59389 +#if CLICK_LINUXMODULE
59390 +    typedef unsigned long flags_t;
59391 +#else
59392 +    typedef int flags_t;
59393 +#endif
59394 +    
59395 +    inline flags_t acquire();
59396 +    inline void release(flags_t);
59397 +
59398 +#if CLICK_LINUXMODULE
59399 +  private:
59400 +    spinlock_t _lock;
59401 +#endif
59402 +  
59403 +};
59404 +
59405 +/** @brief Creates a SpinlockIRQ. */
59406 +inline
59407 +SpinlockIRQ::SpinlockIRQ()
59408 +{
59409 +#if CLICK_LINUXMODULE
59410 +    spin_lock_init(&_lock);
59411 +#endif
59412 +} 
59413 +
59414 +/** @brief Acquires the SpinlockIRQ.
59415 + * @return The current state of the interrupt flags.
59416 + */
59417 +inline SpinlockIRQ::flags_t
59418 +SpinlockIRQ::acquire()
59419 +{
59420 +#if CLICK_LINUXMODULE
59421 +    flags_t flags;
59422 +    spin_lock_irqsave(&_lock, flags);
59423 +    return flags;
59424 +#else
59425 +    return 0;
59426 +#endif
59427 +}
59428 +
59429 +/** @brief Releases the SpinlockIRQ.
59430 + * @param flags The value returned by SpinlockIRQ::acquire().
59431 + */
59432 +inline void
59433 +SpinlockIRQ::release(flags_t flags)
59434 +{
59435 +#if CLICK_LINUXMODULE
59436 +    spin_unlock_irqrestore(&_lock, flags);
59437 +#else
59438 +    (void) flags;
59439 +#endif
59440 +}
59441 +
59442 +
59443 +// read-write lock
59444 +//
59445 +// on read: acquire local read lock
59446 +// on write: acquire every read lock
59447 +//
59448 +// alternatively, we could use a read counter and a write lock. we don't do
59449 +// that because we'd like to avoid a cache miss for read acquires. this makes
59450 +// reads very fast, and writes more expensive
59451 +
59452 +/** @class ReadWriteLock
59453 + * @brief A read/write lock.
59454 + *
59455 + * The ReadWriteLock class abstracts a read/write lock in SMP Click.  Multiple
59456 + * SMP Click threads can hold read locks simultaneously, but if any thread
59457 + * holds a write lock, then no other thread holds any kind of lock.  The
59458 + * read/write lock is implemented with Spinlock objects, so acquiring a lock
59459 + * is a polling operation.  ReadWriteLocks can be used to synchronize access
59460 + * to shared data among multiple Click SMP threads.  ReadWriteLocks should not
59461 + * be held for long periods of time: use them for quick updates and such.
59462 + *
59463 + * ReadWriteLock operations do nothing unless Click was compiled with SMP
59464 + * support (with --enable-multithread).  Therefore, ReadWriteLock should not
59465 + * be used to, for example, synchronize handlers with main element threads.
59466 + *
59467 + * The main ReadWriteLock operations are acquire_read() and acquire_write(),
59468 + * which acquire the lock for reading or writing, respectively, and
59469 + * release_read() and release_write(), which similarly release the lock.
59470 + * attempt_read() and attempt_write() acquire the lock only if it can be
59471 + * acquired instantaneously.
59472 + *
59473 + * It is OK for a thread to acquire a lock it has already acquired, but you
59474 + * must release it as many times as you have acquired it.
59475 + *
59476 + * ReadWriteLock objects are relatively large in terms of memory usage; don't
59477 + * create too many of them.
59478 + */
59479 +class ReadWriteLock { public:
59480 +
59481 +    inline ReadWriteLock();
59482 +#if CLICK_LINUXMODULE && defined(__SMP__)
59483 +    inline ~ReadWriteLock();
59484 +#endif
59485 +
59486 +    inline void acquire_read();
59487 +    inline bool attempt_read();
59488 +    inline void release_read();
59489 +    inline void acquire_write();
59490 +    inline bool attempt_write();
59491 +    inline void release_write();
59492 +
59493 +#if CLICK_LINUXMODULE && defined(__SMP__)
59494 +  private:
59495 +    // allocate 32 bytes (size of a cache line) for every member
59496 +    struct lock_t {
59497 +       Spinlock _lock;
59498 +       unsigned char reserved[24];
59499 +    } *_l;
59500 +#endif
59501 +    
59502 +};
59503 +
59504 +/** @brief Creates a ReadWriteLock. */
59505 +inline
59506 +ReadWriteLock::ReadWriteLock()
59507 +{
59508 +#if CLICK_LINUXMODULE && defined(__SMP__)
59509 +    _l = new lock_t[num_possible_cpus()];
59510 +#endif
59511 +}
59512 +
59513 +#if CLICK_LINUXMODULE && defined(__SMP__)
59514 +inline
59515 +ReadWriteLock::~ReadWriteLock()
59516 +{
59517 +    delete[] _l;
59518 +}
59519 +#endif
59520 +
59521 +/** @brief Acquires the ReadWriteLock for reading.
59522 + *
59523 + * On return, this thread has acquired the lock for reading.  The function
59524 + * will spin indefinitely until the lock is acquired.  It is OK to acquire a
59525 + * lock you have already acquired, but you must release it as many times as
59526 + * you have acquired it.
59527 + *
59528 + * @sa Spinlock::acquire
59529 + */
59530 +inline void
59531 +ReadWriteLock::acquire_read()
59532 +{
59533 +#if CLICK_LINUXMODULE && defined(__SMP__)
59534 +    assert(my_cpu >= 0);
59535 +    _l[my_cpu]._lock.acquire();
59536 +#endif
59537 +}
59538 +
59539 +/** @brief Attempts to acquire the ReadWriteLock for reading.
59540 + * @return True iff the ReadWriteLock was acquired.
59541 + *
59542 + * This function will acquire the lock for reading and return true only if the
59543 + * ReadWriteLock can be acquired right away, without retries.
59544 + */
59545 +inline bool
59546 +ReadWriteLock::attempt_read()
59547 +{
59548 +#if CLICK_LINUXMODULE && defined(__SMP__)
59549 +    assert(my_cpu >= 0);
59550 +    return _l[my_cpu]._lock.attempt();
59551 +#else
59552 +    return true;
59553 +#endif
59554 +}
59555 +
59556 +/** @brief Releases the ReadWriteLock for reading.
59557 + *
59558 + * The ReadWriteLock must have been previously acquired by either
59559 + * ReadWriteLock::acquire_read or ReadWriteLock::attempt_read.  Do not call
59560 + * release_read() on a lock that was acquired for writing.
59561 + */
59562 +inline void
59563 +ReadWriteLock::release_read()
59564 +{
59565 +#if CLICK_LINUXMODULE && defined(__SMP__)
59566 +    assert(my_cpu >= 0);
59567 +    _l[my_cpu]._lock.release();
59568 +#endif
59569 +}
59570 +
59571 +/** @brief Acquires the ReadWriteLock for writing.
59572 + *
59573 + * On return, this thread has acquired the lock for writing.  The function
59574 + * will spin indefinitely until the lock is acquired.  It is OK to acquire a
59575 + * lock you have already acquired, but you must release it as many times as
59576 + * you have acquired it.
59577 + *
59578 + * @sa ReadWriteLock::acquire_read
59579 + */
59580 +inline void
59581 +ReadWriteLock::acquire_write()
59582 +{
59583 +#if CLICK_LINUXMODULE && defined(__SMP__)
59584 +    for (unsigned i = 0; i < num_possible_cpus(); i++)
59585 +       _l[i]._lock.acquire();
59586 +#endif
59587 +}
59588 +
59589 +/** @brief Attempts to acquire the ReadWriteLock for writing.
59590 + * @return True iff the ReadWriteLock was acquired.
59591 + *
59592 + * This function will acquire the lock for writing and return true only if the
59593 + * ReadWriteLock can be acquired right away, without retries.  Note, however,
59594 + * that acquiring a ReadWriteLock requires as many operations as there are
59595 + * CPUs.
59596 + *
59597 + * @sa ReadWriteLock::attempt_read
59598 + */
59599 +inline bool
59600 +ReadWriteLock::attempt_write()
59601 +{
59602 +#if CLICK_LINUXMODULE && defined(__SMP__)
59603 +    bool all = true;
59604 +    unsigned i;
59605 +    for (i = 0; i < num_possible_cpus(); i++)
59606 +       if (!(_l[i]._lock.attempt())) {
59607 +           all = false;
59608 +           break;
59609 +       }
59610 +    if (!all)
59611 +       for (unsigned j = 0; j < i; j++)
59612 +           _l[j]._lock.release();
59613 +    return all;
59614 +#else
59615 +    return true;
59616 +#endif
59617 +}
59618 +
59619 +/** @brief Releases the ReadWriteLock for writing.
59620 + *
59621 + * The ReadWriteLock must have been previously acquired by either
59622 + * ReadWriteLock::acquire_write or ReadWriteLock::attempt_write.  Do not call
59623 + * release_write() on a lock that was acquired for reading.
59624 + *
59625 + * @sa ReadWriteLock::release_read
59626 + */
59627 +inline void
59628 +ReadWriteLock::release_write()
59629 +{
59630 +#if CLICK_LINUXMODULE && defined(__SMP__)
59631 +    for (unsigned i = 0; i < num_possible_cpus(); i++)
59632 +       _l[i]._lock.release();
59633 +#endif
59634 +}
59635 +
59636 +CLICK_ENDDECLS
59637 +#endif
59638 diff -Nurb click-1.6.0/inst/include/click/task.hh click-1.6.0-27/inst/include/click/task.hh
59639 --- click-1.6.0/inst/include/click/task.hh      1969-12-31 19:00:00.000000000 -0500
59640 +++ click-1.6.0-27/inst/include/click/task.hh   2009-02-05 10:20:41.000000000 -0500
59641 @@ -0,0 +1,582 @@
59642 +// -*- c-basic-offset: 4; related-file-name: "../../lib/task.cc" -*-
59643 +#ifndef CLICK_TASK_HH
59644 +#define CLICK_TASK_HH
59645 +#include <click/element.hh>
59646 +#include <click/sync.hh>
59647 +#if __MTCLICK__
59648 +# include <click/atomic.hh>
59649 +# include <click/ewma.hh>
59650 +#endif
59651 +CLICK_DECLS
59652 +
59653 +#if CLICK_BSDMODULE
59654 +extern "C" {
59655 + #include <sys/lock.h>
59656 + #include <sys/mutex.h>
59657 +}
59658 +#else
59659 +#define GIANT_REQUIRED
59660 +#endif
59661 +
59662 +#define PASS_GT(a, b)  ((int)(a - b) > 0)
59663 +
59664 +typedef bool (*TaskHook)(Task *, void *);
59665 +class RouterThread;
59666 +class TaskList;
59667 +class Master;
59668 +
59669 +class Task { public:
59670 +
59671 +#ifdef HAVE_STRIDE_SCHED
59672 +    enum { STRIDE1 = 1U<<16, MAX_STRIDE = 1U<<31 };
59673 +    enum { MAX_TICKETS = 1<<15, DEFAULT_TICKETS = 1<<10 };
59674 +#endif
59675 +#ifdef HAVE_ADAPTIVE_SCHEDULER
59676 +    enum { MAX_UTILIZATION = 1000 };
59677 +#endif
59678 +
59679 +    inline Task(TaskHook hook, void *thunk);
59680 +    inline Task(Element *e);           // call element->run_task()
59681 +    ~Task();
59682 +
59683 +    inline TaskHook hook() const;
59684 +    inline void *thunk() const;
59685 +    inline Element *element() const;
59686 +
59687 +    inline bool scheduled() const;
59688 +
59689 +    void unschedule();
59690 +    inline void reschedule();
59691 +
59692 +    void strong_unschedule();
59693 +    void strong_reschedule();
59694 +
59695 +#ifdef HAVE_TASK_HEAP
59696 +    void fast_reschedule();
59697 +#else
59698 +    inline void fast_reschedule();
59699 +#endif
59700 +
59701 +    inline int home_thread_id() const;
59702 +    void move_thread(int thread_id);
59703
59704 +#ifdef HAVE_STRIDE_SCHED
59705 +    inline int tickets() const;
59706 +    inline void set_tickets(int n);
59707 +    inline void adjust_tickets(int delta);
59708 +#endif
59709 +
59710 +    inline bool initialized() const;
59711 +    void initialize(Router *, bool scheduled);
59712 +    void initialize(Element *, bool scheduled);
59713 +    inline RouterThread *thread() const;
59714 +    Master *master() const;
59715 +
59716 +    inline void call_hook();
59717 +
59718 +#ifdef HAVE_ADAPTIVE_SCHEDULER
59719 +    inline unsigned runs() const;
59720 +    inline unsigned work_done() const;
59721 +    inline unsigned utilization() const;
59722 +    inline void clear_runs();
59723 +#endif
59724 +#if __MTCLICK__
59725 +    inline int cycles() const;
59726 +    inline unsigned cycle_runs() const;
59727 +    inline void update_cycles(unsigned c);
59728 +#endif
59729 +
59730 +  private:
59731 +
59732 +    /* if gcc keeps this ordering, we may get some cache locality on a 16 or 32
59733 +     * byte cache line: the first three fields are used in list traversal */
59734 +
59735 +#ifdef HAVE_TASK_HEAP
59736 +    int _schedpos;
59737 +#else
59738 +    Task* _prev;
59739 +    Task* _next;
59740 +#endif
59741 +    unsigned _should_be_scheduled;
59742 +    
59743 +#ifdef HAVE_STRIDE_SCHED
59744 +    unsigned _pass;
59745 +    unsigned _stride;
59746 +    int _tickets;
59747 +#endif
59748 +  
59749 +    TaskHook _hook;
59750 +    void* _thunk;
59751 +  
59752 +#ifdef HAVE_ADAPTIVE_SCHEDULER
59753 +    unsigned _runs;
59754 +    unsigned _work_done;
59755 +#endif
59756 +#if __MTCLICK__
59757 +    DirectEWMA _cycles;
59758 +    unsigned _cycle_runs;
59759 +#endif
59760 +
59761 +    RouterThread* _thread;
59762 +    int _home_thread_id;
59763 +  
59764 +    Router* _router;
59765 +
59766 +    volatile uintptr_t _pending_nextptr;
59767 +
59768 +    Task(const Task&);
59769 +    Task& operator=(const Task&);
59770 +    void cleanup();
59771 +    
59772 +    void add_pending();
59773 +    void process_pending(RouterThread*);
59774 +    inline void fast_schedule();
59775 +    void true_reschedule();
59776 +    inline void lock_tasks();
59777 +    inline bool attempt_lock_tasks();
59778 +
59779 +    static bool error_hook(Task*, void*);
59780 +
59781 +    inline void fast_unschedule(bool should_be_scheduled);
59782 +
59783 +    static inline Task *pending_to_task(uintptr_t);
59784 +    inline Task *pending_to_task() const;
59785 +    
59786 +    friend class RouterThread;
59787 +    friend class Master;
59788 +  
59789 +};
59790 +
59791 +
59792 +// need RouterThread's definition for inline functions
59793 +CLICK_ENDDECLS
59794 +#include <click/routerthread.hh>
59795 +CLICK_DECLS
59796 +
59797 +
59798 +/** @brief Construct a task that calls @a hook with @a thunk argument.
59799 + *
59800 + * @param hook task hook
59801 + * @param thunk user data for task hook
59802 + *
59803 + * Constructs a task that, when fired, calls the @a hook function like so:
59804 + *
59805 + * @code
59806 + * bool work_done = hook(task, thunk);
59807 + * @endcode
59808 + *
59809 + * where @a task is a pointer to this task.  The @a hook should return true if
59810 + * the task accomplished some meaningful work, and false if it did not.  For
59811 + * example, a task that polls a network driver for packets should return true
59812 + * if it emits at least one packet, and false if no packets were available.
59813 + */
59814 +inline
59815 +Task::Task(TaskHook hook, void* thunk)
59816 +#ifdef HAVE_TASK_HEAP
59817 +    : _schedpos(-1),
59818 +#else
59819 +    : _prev(0), _next(0),
59820 +#endif
59821 +      _should_be_scheduled(false),
59822 +#ifdef HAVE_STRIDE_SCHED
59823 +      _pass(0), _stride(0), _tickets(-1),
59824 +#endif
59825 +      _hook(hook), _thunk(thunk),
59826 +#ifdef HAVE_ADAPTIVE_SCHEDULER
59827 +      _runs(0), _work_done(0),
59828 +#endif
59829 +#if __MTCLICK__
59830 +      _cycle_runs(0),
59831 +#endif
59832 +      _thread(0), _home_thread_id(-1),
59833 +      _router(0), _pending_nextptr(0)
59834 +{
59835 +}
59836 +
59837 +/** @brief Construct a task that calls @a e ->@link Element::run_task(Task *)
59838 + * run_task()@endlink.
59839 + *
59840 + * @param e element to call
59841 + *
59842 + * Constructs a task that, when fired, calls the element @a e's @link
59843 + * Element::run_task(Task *) run_task()@endlink method, passing this Task
59844 + * as an argument.
59845 + *
59846 + * @sa Task(TaskHook, void *)
59847 + */
59848 +inline
59849 +Task::Task(Element* e)
59850 +#ifdef HAVE_TASK_HEAP
59851 +    : _schedpos(-1),
59852 +#else
59853 +    : _prev(0), _next(0),
59854 +#endif
59855 +      _should_be_scheduled(false),
59856 +#ifdef HAVE_STRIDE_SCHED
59857 +      _pass(0), _stride(0), _tickets(-1),
59858 +#endif
59859 +      _hook(0), _thunk(e),
59860 +#ifdef HAVE_ADAPTIVE_SCHEDULER
59861 +      _runs(0), _work_done(0),
59862 +#endif
59863 +#if __MTCLICK__
59864 +      _cycle_runs(0),
59865 +#endif
59866 +      _thread(0), _home_thread_id(-1),
59867 +      _router(0), _pending_nextptr(0)
59868 +{
59869 +}
59870 +
59871 +/** @brief Returns true iff the task has been initialize()d. */
59872 +inline bool
59873 +Task::initialized() const
59874 +{
59875 +    return _router != 0;
59876 +}
59877 +
59878 +/** @brief Returns true iff the task is currently scheduled to run.
59879 + *
59880 + * This function will return false for a task in reschedule-pending state,
59881 + * where the task will soon be rescheduled but isn't right now due to locking
59882 + * issues.
59883 + */
59884 +inline bool
59885 +Task::scheduled() const
59886 +{
59887 +#if HAVE_TASK_HEAP
59888 +    return _schedpos >= 0;
59889 +#else
59890 +    return _prev != 0;
59891 +#endif
59892 +}
59893 +
59894 +/** @brief Returns the task's hook function.
59895 + *
59896 + * Returns null if the task was constructed with the Task(Element *)
59897 + * constructor.
59898 + */
59899 +inline TaskHook
59900 +Task::hook() const
59901 +{
59902 +    return _hook;
59903 +}
59904 +
59905 +/** @brief Returns the task's thunk (the user data passed to its hook).
59906 + */
59907 +inline void *
59908 +Task::thunk() const
59909 +{
59910 +    return _thunk;
59911 +}
59912 +
59913 +/** @brief Returns the task's associated element, if any.
59914 + *
59915 + * Only works if the task was constructed with the Task(Element *)
59916 + * constructor.
59917 + */
59918 +inline Element *
59919 +Task::element()        const
59920 +{ 
59921 +    return _hook ? 0 : reinterpret_cast<Element*>(_thunk); 
59922 +}
59923 +
59924 +/** @brief Returns the task's home thread ID.
59925 + *
59926 + * This is the @link RouterThread::thread_id() thread_id()@endlink of the
59927 + * thread on which this Task would run if it were scheduled.  This need not
59928 + * equal the ID of the current thread(), since changes in home_thread_id()
59929 + * aren't always implemented immediately (because of locking issues).
59930 + */
59931 +inline int
59932 +Task::home_thread_id() const
59933 +{
59934 +    return _home_thread_id;
59935 +}
59936 +
59937 +/** @brief Returns the thread on which this element is currently scheduled, or
59938 + * would be scheduled.
59939 + *
59940 + * Usually, task->thread()->@link RouterThread::thread_id()
59941 + * thread_id()@endlink == task->home_thread_id().  They can differ, however,
59942 + * if move_thread() was called but the task hasn't yet been moved to
59943 + * the new thread, or if the task was strongly unscheduled with
59944 + * strong_unschedule().  (In this last case, task->thread()->@link
59945 + * RouterThread::thread_id() thread_id()@endlink ==
59946 + * RouterThread::THREAD_STRONG_UNSCHEDULE.)
59947 + */
59948 +inline RouterThread *
59949 +Task::thread() const
59950 +{
59951 +    return _thread;
59952 +}
59953 +
59954 +inline void
59955 +Task::fast_unschedule(bool should_be_scheduled)
59956 +{
59957 +#if CLICK_LINUXMODULE
59958 +    assert(!in_interrupt());
59959 +#endif
59960 +#if CLICK_BSDMODULE
59961 +    GIANT_REQUIRED;
59962 +#endif
59963 +    if (scheduled()) {
59964 +#ifdef HAVE_TASK_HEAP
59965 +       Task* back = _thread->_task_heap.back();
59966 +       _thread->_task_heap.pop_back();
59967 +       if (_thread->_task_heap.size() > 0)
59968 +           _thread->task_reheapify_from(_schedpos, back);
59969 +       _schedpos = -1;
59970 +#else
59971 +       _next->_prev = _prev;
59972 +       _prev->_next = _next;
59973 +       _next = _prev = 0;
59974 +#endif
59975 +    }
59976 +    _should_be_scheduled = should_be_scheduled;
59977 +}
59978 +
59979 +#ifdef HAVE_STRIDE_SCHED
59980 +
59981 +/** @brief Returns the task's number of tickets.
59982 + *
59983 + * Tasks with larger numbers of tickets are scheduled more often.  Tasks are
59984 + * initialized with tickets() == DEFAULT_TICKETS.
59985 + *
59986 + * @sa set_tickets, adjust_tickets
59987 + */
59988 +inline int
59989 +Task::tickets() const
59990 +{
59991 +    return _tickets;
59992 +}
59993 +
59994 +/** @brief Sets the task's number of tickets.
59995 + * @param n the ticket count
59996 + *
59997 + * The ticket count @a n is pinned in the range [1, MAX_TICKETS].
59998 + *
59999 + * @sa tickets, adjust_tickets
60000 + */
60001 +inline void 
60002 +Task::set_tickets(int n)
60003 +{
60004 +    if (n > MAX_TICKETS)
60005 +       n = MAX_TICKETS;
60006 +    else if (n < 1)
60007 +       n = 1;
60008 +    _tickets = n;
60009 +    _stride = STRIDE1 / n;
60010 +    assert(_stride < MAX_STRIDE);
60011 +}
60012 +
60013 +/** @brief Add @a delta to the Task's ticket count.
60014 + * @param delta adjustment to the ticket count
60015 + *
60016 + * The ticket count cannot be adjusted below 1 or above MAX_TICKETS.
60017 + *
60018 + * @sa set_tickets
60019 + */
60020 +inline void 
60021 +Task::adjust_tickets(int delta)
60022 +{
60023 +    set_tickets(_tickets + delta);
60024 +}
60025 +
60026 +# ifndef HAVE_TASK_HEAP
60027 +/** @brief Reschedules the task.  The task's current thread must be currently
60028 + * locked.
60029 + *
60030 + * This accomplishes the same function as reschedule(), but does a faster job
60031 + * because it assumes the task's thread lock is held.  Generally, this can be
60032 + * guaranteed only from within a task's run_task() hook function.
60033 + */
60034 +inline void
60035 +Task::fast_reschedule()
60036 +{
60037 +    assert(_thread);
60038 +#  if CLICK_LINUXMODULE
60039 +    // tasks never run at interrupt time in Linux
60040 +    assert(!in_interrupt());
60041 +#  endif
60042 +#  if CLICK_BSDMODULE
60043 +    GIANT_REQUIRED;
60044 +#  endif
60045 +
60046 +    if (!scheduled()) {
60047 +       // increase pass
60048 +       _pass += _stride;
60049 +
60050 +#  if 0
60051 +       // look for 'n' immediately before where we should be scheduled
60052 +       Task* n = _thread->_prev;
60053 +       while (n != _thread && PASS_GT(n->_pass, _pass))
60054 +           n = n->_prev;
60055 +
60056 +       // schedule after 'n'
60057 +       _next = n->_next;
60058 +       _prev = n;
60059 +       n->_next = this;
60060 +       _next->_prev = this;
60061 +#  else
60062 +       // look for 'n' immediately after where we should be scheduled
60063 +       Task* n = _thread->_next;
60064 +#   ifdef CLICK_BSDMODULE /* XXX MARKO a race occured here when not spl'ed */
60065 +       while (n->_next != NULL && n != _thread && !PASS_GT(n->_pass, _pass))
60066 +#   else
60067 +       while (n != _thread && !PASS_GT(n->_pass, _pass))
60068 +#   endif
60069 +           n = n->_next;
60070 +    
60071 +       // schedule before 'n'
60072 +       _prev = n->_prev;
60073 +       _next = n;
60074 +       _prev->_next = this;
60075 +       n->_prev = this;
60076 +#  endif
60077 +    }
60078 +}
60079 +# endif /* !HAVE_TASK_HEAP */
60080 +
60081 +inline void
60082 +Task::fast_schedule()
60083 +{
60084 +    GIANT_REQUIRED;
60085 +    assert(_tickets >= 1);
60086 +    _pass = _thread->_pass;
60087 +    fast_reschedule();
60088 +}
60089 +
60090 +#else /* !HAVE_STRIDE_SCHED */
60091 +
60092 +inline void
60093 +Task::fast_reschedule()
60094 +{
60095 +    assert(_thread);
60096 +#if CLICK_LINUXMODULE
60097 +    // tasks never run at interrupt time
60098 +    assert(!in_interrupt());
60099 +#endif
60100 +#if CLICK_BSDMODULE
60101 +    // assert(!intr_nesting_level);
60102 +    GIANT_REQUIRED;
60103 +#endif
60104 +    if (!scheduled()) {
60105 +       _prev = _thread->_prev;
60106 +       _next = _thread;
60107 +       _thread->_prev = this;
60108 +       _thread->_next = this;
60109 +    }
60110 +}
60111 +
60112 +inline void
60113 +Task::fast_schedule()
60114 +{
60115 +    fast_reschedule();
60116 +}
60117 +
60118 +#endif /* HAVE_STRIDE_SCHED */
60119 +
60120 +
60121 +/** @brief Reschedules the task.
60122 + *
60123 + * The task is rescheduled on its home thread.  The task will eventually run
60124 + * (unless the home thread is quiescent).  Due to locking issues, the task may
60125 + * not be scheduled right away -- scheduled() may not immediately return true.
60126 + *
60127 + * @sa unschedule, strong_reschedule
60128 + */
60129 +inline void
60130 +Task::reschedule()
60131 +{
60132 +    GIANT_REQUIRED;
60133 +    if (!scheduled())
60134 +       true_reschedule();
60135 +}
60136 +
60137 +
60138 +/** @brief Call the task's hook.
60139 + *
60140 + * This function is generally called by the RouterThread implementation; there
60141 + * should be no need to call it yourself.
60142 + */
60143 +inline void
60144 +Task::call_hook()
60145 +{
60146 +#if __MTCLICK__
60147 +    _cycle_runs++;
60148 +#endif
60149 +#ifdef HAVE_ADAPTIVE_SCHEDULER
60150 +    _runs++;
60151 +    if (!_hook)
60152 +       _work_done += ((Element*)_thunk)->run_task(this);
60153 +    else
60154 +       _work_done += _hook(this, _thunk);
60155 +#else
60156 +    if (!_hook)
60157 +       (void) ((Element*)_thunk)->run_task(this);
60158 +    else
60159 +       (void) _hook(this, _thunk);
60160 +#endif
60161 +}
60162 +
60163 +#ifdef HAVE_ADAPTIVE_SCHEDULER
60164 +inline unsigned
60165 +Task::runs() const
60166 +{
60167 +    return _runs;
60168 +}
60169 +
60170 +inline unsigned
60171 +Task::work_done() const
60172 +{
60173 +    return _work_done;
60174 +}
60175 +
60176 +inline unsigned
60177 +Task::utilization() const
60178 +{
60179 +    return (_runs ? (MAX_UTILIZATION * _work_done) / _runs : 0);
60180 +}
60181 +
60182 +inline void
60183 +Task::clear_runs()
60184 +{
60185 +    _runs = _work_done = 0;
60186 +}
60187 +#endif
60188 +
60189 +#if __MTCLICK__
60190 +inline int
60191 +Task::cycles() const
60192 +{
60193 +    return _cycles.unscaled_average();
60194 +}
60195 +
60196 +inline unsigned
60197 +Task::cycle_runs() const
60198 +{
60199 +    return _cycle_runs;
60200 +}
60201 +
60202 +inline void
60203 +Task::update_cycles(unsigned c) 
60204 +{
60205 +    _cycles.update(c);
60206 +    _cycle_runs = 0;
60207 +}
60208 +#endif
60209 +
60210 +inline Task *
60211 +Task::pending_to_task(uintptr_t ptr)
60212 +{
60213 +    return reinterpret_cast<Task *>(ptr & ~(uintptr_t) 3);
60214 +}
60215 +
60216 +inline Task *
60217 +Task::pending_to_task() const
60218 +{
60219 +    return pending_to_task(_pending_nextptr);
60220 +}
60221 +
60222 +CLICK_ENDDECLS
60223 +#endif
60224 diff -Nurb click-1.6.0/inst/include/click/timer.hh click-1.6.0-27/inst/include/click/timer.hh
60225 --- click-1.6.0/inst/include/click/timer.hh     1969-12-31 19:00:00.000000000 -0500
60226 +++ click-1.6.0-27/inst/include/click/timer.hh  2009-02-05 10:20:41.000000000 -0500
60227 @@ -0,0 +1,243 @@
60228 +// -*- c-basic-offset: 4; related-file-name: "../../lib/timer.cc" -*-
60229 +#ifndef CLICK_TIMER_HH
60230 +#define CLICK_TIMER_HH
60231 +#include <click/sync.hh>
60232 +#include <click/glue.hh>
60233 +#include <click/element.hh>
60234 +#include <click/timestamp.hh>
60235 +CLICK_DECLS
60236 +class Element;
60237 +class Router;
60238 +class Timer;
60239 +class Task;
60240 +
60241 +typedef void (*TimerHook)(Timer *, void *);
60242 +
60243 +class Timer { public:
60244 +
60245 +    Timer();
60246 +    Timer(TimerHook hook, void *thunk);
60247 +    Timer(Element *element);           // call element->run_timer()
60248 +    Timer(Task *task);                 // call task->reschedule()
60249 +    inline ~Timer();
60250 +
60251 +    void set_hook(TimerHook hook, void *thunk);
60252 +    void set_hook(Element *element);
60253 +    void set_hook(Task *task);
60254 +    
60255 +    inline bool initialized() const;
60256 +    inline bool scheduled() const;
60257 +    inline const Timestamp &expiry() const;
60258 +  
60259 +    inline void initialize(Router*);
60260 +    inline void initialize(Element*);
60261 +
60262 +    void schedule_at(const Timestamp &when);
60263 +    inline void reschedule_at(const Timestamp &when); // synonym
60264 +
60265 +    inline void schedule_now();
60266 +    void schedule_after(const Timestamp &delta);
60267 +    inline void schedule_after_sec(uint32_t delta_sec);
60268 +    inline void schedule_after_msec(uint32_t delta_msec);
60269 +    inline void reschedule_after(const Timestamp &delta);
60270 +    inline void reschedule_after_sec(uint32_t delta_sec);
60271 +    inline void reschedule_after_msec(uint32_t delta_msec);
60272 +
60273 +    void unschedule();
60274 +
60275 +    inline void schedule_after_s(uint32_t delta_sec) CLICK_DEPRECATED;
60276 +    inline void schedule_after_ms(uint32_t delta_sec) CLICK_DEPRECATED;
60277 +    inline void reschedule_after_s(uint32_t delta_sec) CLICK_DEPRECATED;
60278 +    inline void reschedule_after_ms(uint32_t delta_sec) CLICK_DEPRECATED;
60279 +    
60280 +  private:
60281 +  
60282 +    int _schedpos;
60283 +    Timestamp _expiry;
60284 +    TimerHook _hook;
60285 +    void *_thunk;
60286 +    Router *_router;
60287 +
60288 +    Timer(const Timer &);
60289 +    Timer &operator=(const Timer &);
60290 +
60291 +    friend class Master;
60292 +  
60293 +};
60294 +
60295 +/** @brief Destroy a Timer, unscheduling it first if necessary. */
60296 +inline
60297 +Timer::~Timer()
60298 +{
60299 +    if (scheduled())
60300 +       unschedule();
60301 +}
60302 +
60303 +/** @brief Returns true iff the Timer has been initialized. */
60304 +inline bool
60305 +Timer::initialized() const
60306 +{
60307 +    return _router != 0;
60308 +}
60309 +
60310 +/** @brief Returns true iff the Timer is currently scheduled. */
60311 +inline bool
60312 +Timer::scheduled() const
60313 +{
60314 +    return _schedpos >= 0;
60315 +}
60316 +
60317 +/** @brief Returns the Timer's current expiration time.
60318 + *
60319 + * The expiration time is the absolute time at which the timer is next
60320 + * scheduled to fire.  If the timer is not currently scheduled, then expiry()
60321 + * returns the last assigned expiration time. */
60322 +inline const Timestamp &
60323 +Timer::expiry() const
60324 +{
60325 +    return _expiry;
60326 +}
60327 +
60328 +/** @brief Initialize the timer.
60329 + *
60330 + * @param router the containing router
60331 + *
60332 + * Before a timer can be used, it must be attached to a containing router.
60333 + * When that router is destroyed, the timer is automatically unscheduled.
60334 + */
60335 +inline void
60336 +Timer::initialize(Router *router)
60337 +{
60338 +    assert(!initialized());
60339 +    _router = router;
60340 +}
60341 +
60342 +/** @brief Initialize the timer.
60343 + *
60344 + * @param element identifies the containing router
60345 + *
60346 + * @sa initialize(Router *router)
60347 + */
60348 +inline void
60349 +Timer::initialize(Element *element)
60350 +{
60351 +    initialize(element->router());
60352 +}
60353 +
60354 +/** @brief Schedule the timer to fire at @a when.
60355 + *
60356 + * @param when expiration time
60357 + *
60358 + * This element is a synonym for schedule_at(). */
60359 +inline void
60360 +Timer::reschedule_at(const Timestamp &when)
60361 +{
60362 +    schedule_at(when);
60363 +}
60364 +
60365 +/** @brief Shedule the timer to fire immediately.
60366 + *
60367 + * Equivalent to schedule_at(Timestamp::now()). */
60368 +inline void
60369 +Timer::schedule_now()
60370 +{
60371 +    schedule_at(Timestamp::now());
60372 +}
60373 +
60374 +/** @brief Schedule the timer to fire after @a delta_sec seconds.
60375 + *
60376 + * @param delta_sec interval until expiration time, in seconds
60377 + *
60378 + * @sa schedule_after, reschedule_after_sec */
60379 +inline void
60380 +Timer::schedule_after_sec(uint32_t delta_sec)
60381 +{
60382 +    schedule_after(Timestamp(delta_sec, 0));
60383 +}
60384 +
60385 +/** @brief Schedule the timer to fire after @a delta_msec milliseconds.
60386 + *
60387 + * @param delta_msec interval until expiration time, in milliseconds
60388 + *
60389 + * @sa schedule_after, reschedule_after_msec */
60390 +inline void
60391 +Timer::schedule_after_msec(uint32_t delta_msec)
60392 +{
60393 +    schedule_after(Timestamp::make_msec(delta_msec));
60394 +}
60395 +
60396 +/** @brief Schedule the timer to fire @a delta time after its previous expiry.
60397 + *
60398 + * @param delta interval until expiration time
60399 + *
60400 + * @sa schedule_after */
60401 +inline void
60402 +Timer::reschedule_after(const Timestamp &delta)
60403 +{
60404 +    schedule_at(_expiry + delta);
60405 +}
60406 +
60407 +/** @brief Schedule the timer to fire @a delta_sec seconds after its previous
60408 + * expiry.
60409 + *
60410 + * @param delta_sec interval until expiration time, in seconds
60411 + *
60412 + * @sa schedule_after_sec */
60413 +inline void
60414 +Timer::reschedule_after_sec(uint32_t delta_sec)
60415 +{
60416 +    schedule_at(Timestamp(_expiry.sec() + delta_sec, _expiry.subsec()));
60417 +}
60418 +
60419 +/** @brief Schedule the timer to fire @a delta_msec milliseconds after its
60420 + * previous expiry.
60421 + *
60422 + * @param delta_msec interval until expiration time, in milliseconds
60423 + *
60424 + * @sa schedule_after_msec */
60425 +inline void
60426 +Timer::reschedule_after_msec(uint32_t delta_msec)
60427 +{
60428 +    schedule_at(_expiry + Timestamp::make_msec(delta_msec));
60429 +}
60430 +
60431 +/** @brief Schedule the timer to fire after @a delta_sec seconds (deprecated).
60432 + *
60433 + * @deprecated Use schedule_after_sec() instead. */
60434 +inline void
60435 +Timer::schedule_after_s(uint32_t delta_sec)
60436 +{
60437 +    schedule_after_sec(delta_sec);
60438 +}
60439 +
60440 +/** @brief Schedule the timer to fire after @a delta_msec milliseconds (deprecated).
60441 + *
60442 + * @deprecated Use schedule_after_msec() instead. */
60443 +inline void
60444 +Timer::schedule_after_ms(uint32_t delta_msec)
60445 +{
60446 +    schedule_after_msec(delta_msec);
60447 +}
60448 +
60449 +/** @brief Schedule the timer to fire @a delta_sec seconds after its previous
60450 + * expiry time (deprecated).
60451 + *
60452 + * @deprecated Use reschedule_after_sec() instead. */
60453 +inline void
60454 +Timer::reschedule_after_s(uint32_t delta_sec)
60455 +{
60456 +    reschedule_after_sec(delta_sec);
60457 +}
60458 +
60459 +/** @brief Schedule the timer to fire @a delta_msec milliseconds after its
60460 + * previous expiry time (deprecated).
60461 + *
60462 + * @deprecated Use reschedule_after_msec() instead. */
60463 +inline void
60464 +Timer::reschedule_after_ms(uint32_t delta_msec)
60465 +{
60466 +    reschedule_after_msec(delta_msec);
60467 +}
60468 +
60469 +CLICK_ENDDECLS
60470 +#endif
60471 diff -Nurb click-1.6.0/inst/include/click/timestamp.hh click-1.6.0-27/inst/include/click/timestamp.hh
60472 --- click-1.6.0/inst/include/click/timestamp.hh 1969-12-31 19:00:00.000000000 -0500
60473 +++ click-1.6.0-27/inst/include/click/timestamp.hh      2009-02-05 10:20:41.000000000 -0500
60474 @@ -0,0 +1,699 @@
60475 +// -*- c-basic-offset: 4; related-file-name: "../../lib/timestamp.cc" -*-
60476 +#ifndef CLICK_TIMESTAMP_HH
60477 +#define CLICK_TIMESTAMP_HH
60478 +#include <click/glue.hh>
60479 +CLICK_DECLS
60480 +class String;
60481 +#if !HAVE_NANOTIMESTAMP && SIZEOF_STRUCT_TIMEVAL == 8
60482 +# define TIMESTAMP_PUNS_TIMEVAL 1
60483 +#endif
60484 +#if HAVE_STRUCT_TIMESPEC && HAVE_NANOTIMESTAMP && SIZEOF_STRUCT_TIMESPEC == 8
60485 +# define TIMESTAMP_PUNS_TIMESPEC 1
60486 +#endif
60487 +#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE
60488 +# include <math.h>
60489 +#endif
60490 +
60491 +#if HAVE_NANOTIMESTAMP
60492 +# define PRITIMESTAMP "%d.%09d"
60493 +#else
60494 +# define PRITIMESTAMP "%d.%06d"
60495 +#endif
60496 +
60497 +class Timestamp { public:
60498 +
60499 +#if HAVE_NANOTIMESTAMP
60500 +    enum {
60501 +       NSUBSEC = 1000000000    /**< Number of subseconds in a second.  Can be
60502 +                                    1000000 or 1000000000, depending on how
60503 +                                    Click is compiled. */
60504 +    };
60505 +#else
60506 +    enum {
60507 +       NSUBSEC = 1000000
60508 +    };
60509 +#endif
60510 +
60511 +    inline Timestamp();
60512 +    inline Timestamp(int32_t sec, uint32_t subsec);
60513 +    inline Timestamp(const struct timeval &tv);
60514 +#if HAVE_STRUCT_TIMESPEC
60515 +    inline Timestamp(const struct timespec &ts);
60516 +#endif
60517 +#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE
60518 +    inline Timestamp(double);
60519 +#endif
60520 +
60521 +    typedef int32_t (Timestamp::*unspecified_bool_type)() const;
60522 +    inline operator unspecified_bool_type() const;
60523 +    
60524 +    inline int32_t sec() const;
60525 +    inline uint32_t subsec() const;
60526 +    
60527 +    inline uint32_t msec() const;
60528 +    inline uint32_t usec() const;
60529 +    inline uint32_t nsec() const;
60530 +    
60531 +    inline int32_t msec1() const;
60532 +    inline int32_t usec1() const;
60533 +    inline int32_t nsec1() const;
60534 +
60535 +#if TIMESTAMP_PUNS_TIMEVAL
60536 +    inline const struct timeval &timeval() const;
60537 +#else
60538 +    inline struct timeval timeval() const;
60539 +#endif
60540 +#if HAVE_STRUCT_TIMESPEC
60541 +# if TIMESTAMP_PUNS_TIMESPEC
60542 +    inline const struct timespec &timespec() const;
60543 +# else
60544 +    inline struct timespec timespec() const;
60545 +# endif
60546 +#endif
60547 +#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE
60548 +    inline double doubleval() const;
60549 +#endif
60550 +    
60551 +    static inline Timestamp make_msec(uint32_t msec);
60552 +    static inline Timestamp make_usec(int32_t sec, uint32_t usec);
60553 +    static inline Timestamp make_usec(uint32_t usec);
60554 +    static inline Timestamp make_nsec(int32_t sec, uint32_t nsec);
60555 +    
60556 +    static inline Timestamp epsilon();
60557 +    static inline Timestamp now();
60558 +
60559 +    inline void set(int32_t sec, uint32_t subsec);
60560 +    inline void set_sec(int32_t sec);
60561 +    inline void set_subsec(uint32_t subsec);
60562 +    inline void set_usec(int32_t sec, uint32_t usec);
60563 +    inline void set_nsec(int32_t sec, uint32_t nsec);
60564 +
60565 +    inline void set_now();
60566 +#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE
60567 +    int set_timeval_ioctl(int fd, int ioctl_selector);
60568 +#endif
60569 +
60570 +    void add_fix();
60571 +    void sub_fix();
60572 +
60573 +    String unparse() const;
60574 +
60575 +    inline static uint32_t msec_to_subsec(uint32_t msec);
60576 +    inline static uint32_t usec_to_subsec(uint32_t usec);
60577 +    inline static uint32_t nsec_to_subsec(uint32_t nsec);
60578 +    inline static uint32_t subsec_to_msec(uint32_t subsec);
60579 +    inline static uint32_t subsec_to_usec(uint32_t subsec);
60580 +    inline static uint32_t subsec_to_nsec(uint32_t subsec);
60581 +    
60582 +    int32_t _sec;
60583 +    int32_t _subsec;
60584 +    
60585 +};
60586 +
60587 +
60588 +/** @brief Convert milliseconds to subseconds.
60589 + @param msec number of milliseconds
60590 +
60591 + Converts its parameter to a number of subseconds (that is, either
60592 + microseconds or nanoseconds, depending on configuration options and driver
60593 + choice).
60594 +
60595 + @sa usec_to_subsec(), nsec_to_subsec(), subsec_to_msec(), subsec_to_usec(),
60596 + subsec_to_nsec() */
60597 +inline uint32_t
60598 +Timestamp::msec_to_subsec(uint32_t msec)
60599 +{
60600 +#if HAVE_NANOTIMESTAMP
60601 +    return msec * 1000000;
60602 +#else
60603 +    return msec * 1000;
60604 +#endif
60605 +}
60606 +
60607 +/** @brief Convert microseconds to subseconds.
60608 + @param usec number of microseconds
60609 + @sa msec_to_subsec() */
60610 +inline uint32_t
60611 +Timestamp::usec_to_subsec(uint32_t usec)
60612 +{
60613 +#if HAVE_NANOTIMESTAMP
60614 +    return usec * 1000;
60615 +#else
60616 +    return usec;
60617 +#endif
60618 +}
60619 +
60620 +/** @brief Convert nanoseconds to subseconds.
60621 + @param nsec number of nanoseconds
60622 + @sa msec_to_subsec() */
60623 +inline uint32_t
60624 +Timestamp::nsec_to_subsec(uint32_t nsec)
60625 +{
60626 +#if HAVE_NANOTIMESTAMP
60627 +    return nsec;
60628 +#else
60629 +    return (nsec + 500) / 1000;
60630 +#endif
60631 +}
60632 +
60633 +/** @brief Convert subseconds to milliseconds.
60634 + @param subsec number of subseconds
60635 + @sa msec_to_subsec() */
60636 +inline uint32_t
60637 +Timestamp::subsec_to_msec(uint32_t subsec)
60638 +{
60639 +#if HAVE_NANOTIMESTAMP
60640 +    return subsec / 1000000;
60641 +#else
60642 +    return subsec / 1000;
60643 +#endif
60644 +}
60645 +
60646 +/** @brief Convert subseconds to microseconds.
60647 + @param subsec number of subseconds
60648 + @sa msec_to_subsec() */
60649 +inline uint32_t
60650 +Timestamp::subsec_to_usec(uint32_t subsec)
60651 +{
60652 +#if HAVE_NANOTIMESTAMP
60653 +    return subsec / 1000;
60654 +#else
60655 +    return subsec;
60656 +#endif
60657 +}
60658 +
60659 +/** @brief Convert subseconds to nanoseconds.
60660 + @param subsec number of subseconds
60661 + @sa msec_to_subsec() */
60662 +inline uint32_t
60663 +Timestamp::subsec_to_nsec(uint32_t subsec)
60664 +{
60665 +#if HAVE_NANOTIMESTAMP
60666 +    return subsec;
60667 +#else
60668 +    return subsec * 1000;
60669 +#endif
60670 +}
60671 +
60672 +
60673 +/** @brief Create a zero-valued Timestamp. */
60674 +inline
60675 +Timestamp::Timestamp()
60676 +    : _sec(0), _subsec(0)
60677 +{
60678 +}
60679 +
60680 +/** @brief Create a Timestamp measuring @a sec seconds plus @a subsec subseconds.
60681 +    @param sec number of seconds
60682 +    @param subsec number of subseconds
60683
60684 +    The @a subsec parameter must be between 0 and NSUBSEC - 1; errors are not
60685 +    necessarily checked. */
60686 +inline
60687 +Timestamp::Timestamp(int32_t sec, uint32_t subsec)
60688 +    : _sec(sec), _subsec(subsec)
60689 +{
60690 +}
60691 +
60692 +/** @brief Create a Timestamp measuring @a tv.
60693 +    @param tv timeval structure */
60694 +inline
60695 +Timestamp::Timestamp(const struct timeval& tv)
60696 +    : _sec(tv.tv_sec), _subsec(usec_to_subsec(tv.tv_usec))
60697 +{
60698 +}
60699 +
60700 +#if HAVE_STRUCT_TIMESPEC
60701 +/** @brief Create a Timestamp measuring @a ts.
60702 +    @param ts timespec structure */
60703 +inline
60704 +Timestamp::Timestamp(const struct timespec& ts)
60705 +    : _sec(ts.tv_sec), _subsec(nsec_to_subsec(ts.tv_nsec))
60706 +{
60707 +}
60708 +#endif
60709 +
60710 +/** @brief Returns true iff this timestamp is not zero-valued. */
60711 +inline
60712 +Timestamp::operator unspecified_bool_type() const
60713 +{
60714 +    return _sec || _subsec ? &Timestamp::sec : 0;
60715 +}
60716 +
60717 +/** @brief Sets this timestamp to the current time.
60718 +
60719 + The current time is measured in seconds since January 1, 1970 GMT.
60720 + @sa now() */
60721 +inline void
60722 +Timestamp::set_now()
60723 +{
60724 +#if TIMESTAMP_PUNS_TIMEVAL
60725 +    click_gettimeofday((struct timeval*) this);
60726 +#else
60727 +    struct timeval tv;
60728 +    click_gettimeofday(&tv);
60729 +    _sec = tv.tv_sec;
60730 +    _subsec = usec_to_subsec(tv.tv_usec);
60731 +#endif
60732 +}
60733 +
60734 +/** @brief Return a timestamp representing the current time.
60735 +
60736 + The current time is measured in seconds since January 1, 1970 GMT.
60737 + @sa set_now() */
60738 +inline Timestamp
60739 +Timestamp::now()
60740 +{
60741 +    Timestamp t;
60742 +    t.set_now();
60743 +    return t;
60744 +}
60745 +
60746 +/** @brief Returns the smallest nonzero timestamp.
60747 +
60748 + Same as Timestamp(0, 1). */
60749 +inline Timestamp
60750 +Timestamp::epsilon()
60751 +{
60752 +    return Timestamp(0, 1);
60753 +}
60754 +
60755 +/** @brief Returns a timestamp representing an interval of @a msec
60756 +    milliseconds.
60757 +    @param msec number of milliseconds (may be greater than 1000) */
60758 +inline Timestamp
60759 +Timestamp::make_msec(uint32_t msec)
60760 +{
60761 +    return Timestamp(msec / 1000, msec_to_subsec(msec % 1000));
60762 +}
60763 +
60764 +/** @brief Returns a timestamp representing @a sec seconds plus @a usec
60765 +    microseconds.
60766 +    @param sec number of seconds
60767 +    @param usec number of microseconds (less than 1000000) */
60768 +inline Timestamp
60769 +Timestamp::make_usec(int32_t sec, uint32_t usec)
60770 +{
60771 +    return Timestamp(sec, usec_to_subsec(usec));
60772 +}
60773 +
60774 +/** @brief Returns a timestamp representing an interval of @a usec
60775 +    microseconds.
60776 +    @param usec number of microseconds (may be greater than 1000000) */
60777 +inline Timestamp
60778 +Timestamp::make_usec(uint32_t usec)
60779 +{
60780 +    return Timestamp(usec / 1000000, usec_to_subsec(usec % 1000000));
60781 +}
60782 +
60783 +/** @brief Returns a timestamp representing @a sec seconds plus @a nsec
60784 +    nanoseconds.
60785 +    @param sec number of seconds
60786 +    @param nsec number of nanoseconds (less than 1000000000) */
60787 +inline Timestamp
60788 +Timestamp::make_nsec(int32_t sec, uint32_t nsec)
60789 +{
60790 +    return Timestamp(sec, nsec_to_subsec(nsec));
60791 +}
60792 +
60793 +/** @brief Sets this timestamp's components.
60794 +    @param sec number of seconds
60795 +    @param subsec number of subseconds */
60796 +inline void
60797 +Timestamp::set(int32_t sec, uint32_t subsec)
60798 +{
60799 +    _sec = sec;
60800 +    _subsec = subsec;
60801 +}
60802 +
60803 +/** @brief Sets this timestamp's seconds component.
60804 +    @param sec number of seconds
60805 +    
60806 +    The subseconds component is left unchanged. */
60807 +inline void
60808 +Timestamp::set_sec(int32_t sec)
60809 +{
60810 +    _sec = sec;
60811 +}
60812 +
60813 +/** @brief Sets this timestamp's subseconds component.
60814 +    @param subsec number of subseconds
60815 +    
60816 +    The seconds component is left unchanged. */
60817 +inline void
60818 +Timestamp::set_subsec(uint32_t subsec)
60819 +{
60820 +    _subsec = subsec;
60821 +}
60822 +
60823 +/** @brief Sets this timestamp to a seconds-and-microseconds value.
60824 +    @param sec number of seconds
60825 +    @param usec number of microseconds (must be less than 1000000)
60826 +    @sa make_usec() */
60827 +inline void
60828 +Timestamp::set_usec(int32_t sec, uint32_t usec)
60829 +{
60830 +    _sec = sec;
60831 +    _subsec = usec_to_subsec(usec);
60832 +}
60833 +
60834 +/** @brief Sets this timestamp to a seconds-and-nanoseconds value.
60835 +    @param sec number of seconds
60836 +    @param nsec number of nanoseconds (must be less than 1000000000)
60837 +    @sa make_nsec() */
60838 +inline void
60839 +Timestamp::set_nsec(int32_t sec, uint32_t nsec)
60840 +{
60841 +    _sec = sec;
60842 +    _subsec = nsec_to_subsec(nsec);
60843 +}
60844 +
60845 +/** @brief Returns this timestamp's seconds component. */
60846 +inline int32_t
60847 +Timestamp::sec() const
60848 +{
60849 +    return _sec;
60850 +}
60851 +
60852 +/** @brief Returns this timestamp's subseconds component. */
60853 +inline uint32_t
60854 +Timestamp::subsec() const
60855 +{
60856 +    return _subsec;
60857 +}
60858 +
60859 +/** @brief Returns this timestamp's subseconds component, converted to
60860 +    milliseconds. */
60861 +inline uint32_t
60862 +Timestamp::msec() const
60863 +{
60864 +    return subsec_to_msec(_subsec);
60865 +}
60866 +
60867 +/** @brief Returns this timestamp's subseconds component, converted to
60868 +    microseconds. */
60869 +inline uint32_t
60870 +Timestamp::usec() const
60871 +{
60872 +    return subsec_to_usec(_subsec);
60873 +}
60874 +
60875 +/** @brief Returns this timestamp's subseconds component, converted to
60876 +    nanoseconds. */
60877 +inline uint32_t
60878 +Timestamp::nsec() const
60879 +{
60880 +    return subsec_to_nsec(_subsec);
60881 +}
60882 +
60883 +/** @brief Returns this timestamp's interval length, converted to
60884 +    milliseconds.
60885 +
60886 +    Will overflow on intervals of more than 2147483.647 seconds. */
60887 +inline int32_t
60888 +Timestamp::msec1() const
60889 +{
60890 +    return _sec * 1000 + subsec_to_msec(_subsec);
60891 +}
60892 +
60893 +/** @brief Returns this timestamp's interval length, converted to
60894 +    microseconds.
60895 +
60896 +    Will overflow on intervals of more than 2147.483647 seconds. */
60897 +inline int32_t
60898 +Timestamp::usec1() const
60899 +{
60900 +    return _sec * 1000000 + subsec_to_usec(_subsec);
60901 +}
60902 +
60903 +/** @brief Returns this timestamp's interval length, converted to
60904 +    nanoseconds.
60905 +
60906 +    Will overflow on intervals of more than 2.147483647 seconds. */
60907 +inline int32_t
60908 +Timestamp::nsec1() const
60909 +{
60910 +    return _sec * 1000000000 + subsec_to_nsec(_subsec);
60911 +}
60912 +
60913 +#if TIMESTAMP_PUNS_TIMEVAL
60914 +inline const struct timeval &
60915 +Timestamp::timeval() const
60916 +{
60917 +    return *(const struct timeval*) this;
60918 +}
60919 +#else
60920 +/** @brief Returns a struct timeval with the same value as this timestamp.
60921 +
60922 +    If Timestamp and struct timeval have the same size and representation,
60923 +    then this operation returns a "const struct timeval &" whose address is
60924 +    the same as this Timestamp. */
60925 +inline struct timeval
60926 +Timestamp::timeval() const
60927 +{
60928 +    struct timeval tv;
60929 +    tv.tv_sec = _sec;
60930 +    tv.tv_usec = usec();
60931 +    return tv;
60932 +}
60933 +#endif
60934 +
60935 +#if HAVE_STRUCT_TIMESPEC
60936 +# if TIMESTAMP_PUNS_TIMESPEC
60937 +inline const struct timespec &
60938 +Timestamp::timespec() const
60939 +{
60940 +    return *(const struct timespec*) this;
60941 +}
60942 +# else
60943 +/** @brief Returns a struct timespec with the same value as this timestamp.
60944 +
60945 +    If Timestamp and struct timespec have the same size and representation,
60946 +    then this operation returns a "const struct timespec &" whose address is
60947 +    the same as this Timestamp. */
60948 +inline struct timespec
60949 +Timestamp::timespec() const
60950 +{
60951 +    struct timespec tv;
60952 +    tv.tv_sec = _sec;
60953 +    tv.tv_nsec = nsec();
60954 +    return tv;
60955 +}
60956 +# endif
60957 +#endif
60958 +
60959 +/** @relates Timestamp
60960 +    @brief Compares two timestamps for equality.
60961 +
60962 +    Returns true iff the two operands have the same seconds and subseconds
60963 +    components. */
60964 +inline bool
60965 +operator==(const Timestamp &a, const Timestamp &b)
60966 +{
60967 +    return a.sec() == b.sec() && a.subsec() == b.subsec();
60968 +}
60969 +
60970 +/** @relates Timestamp
60971 +    @brief Compares two timestamps for inequality.
60972 +
60973 +    Returns true iff !(@a a == @a b). */
60974 +inline bool
60975 +operator!=(const Timestamp &a, const Timestamp &b)
60976 +{
60977 +    return !(a == b);
60978 +}
60979 +
60980 +/** @relates Timestamp
60981 +    @brief Compares two timestamps.
60982 +
60983 +    Returns true iff @a a represents a shorter interval than @a b, or
60984 +    considered as absolute time, @a a happened before @a b.  */
60985 +inline bool
60986 +operator<(const Timestamp &a, const Timestamp &b)
60987 +{
60988 +    return a.sec() < b.sec() || (a.sec() == b.sec() && a.subsec() < b.subsec());
60989 +}
60990 +
60991 +/** @relates Timestamp
60992 +    @brief Compares two timestamps.
60993 +
60994 +    Returns true iff @a a measures an interval no larger than @a b, or
60995 +    considered as absolute time, @a a happened at or before @a b.  */
60996 +inline bool
60997 +operator<=(const Timestamp &a, const Timestamp &b)
60998 +{
60999 +    return !(b < a);
61000 +}
61001 +
61002 +/** @relates Timestamp
61003 +    @brief Compares two timestamps.
61004 +
61005 +    Returns true iff @a a measures an interval no shorter than @a b, or
61006 +    considered as absolute time, @a a happened at or after @a b.  */
61007 +inline bool
61008 +operator>=(const Timestamp &a, const Timestamp &b)
61009 +{
61010 +    return !(a < b);
61011 +}
61012 +
61013 +/** @relates Timestamp
61014 +    @brief Compares two timestamps.
61015 +
61016 +    Returns true iff @a a measures a longer interval than @a b, or considered
61017 +    as absolute time, @a a happened after @a b.  */
61018 +inline bool
61019 +operator>(const Timestamp &a, const Timestamp &b)
61020 +{
61021 +    return b < a;
61022 +}
61023 +
61024 +inline void
61025 +Timestamp::add_fix()
61026 +{
61027 +    if (_subsec >= NSUBSEC)
61028 +       _sec++, _subsec -= NSUBSEC;
61029 +}
61030 +
61031 +inline void
61032 +Timestamp::sub_fix()
61033 +{
61034 +    if (_subsec < 0)
61035 +       _sec--, _subsec += NSUBSEC;
61036 +}
61037 +
61038 +/** @brief Adds @a b to @a a.
61039 +
61040 +    Returns the result (the new value of @a a). */
61041 +inline Timestamp &
61042 +operator+=(Timestamp &a, const Timestamp &b)
61043 +{
61044 +    a._sec += b._sec;
61045 +    a._subsec += b._subsec;
61046 +    a.add_fix();
61047 +    return a;
61048 +}
61049 +
61050 +/** @brief Subtracts @a b from @a a.
61051 +
61052 +    Returns the result (the new value of @a a). */
61053 +inline Timestamp &
61054 +operator-=(Timestamp &a, const Timestamp &b)
61055 +{
61056 +    a._sec -= b._sec;
61057 +    a._subsec -= b._subsec;
61058 +    a.sub_fix();
61059 +    return a;
61060 +}
61061 +
61062 +/** @brief Adds the two operands and returns the result. */
61063 +inline Timestamp
61064 +operator+(Timestamp a, const Timestamp &b)
61065 +{
61066 +    a += b;
61067 +    return a;
61068 +}
61069 +
61070 +/** @brief Subtracts @a b from @a a and returns the result. */
61071 +inline Timestamp
61072 +operator-(Timestamp a, const Timestamp &b)
61073 +{
61074 +    a -= b;
61075 +    return a;
61076 +}
61077 +
61078 +/** @brief Negates @a a and returns the result. */
61079 +inline Timestamp
61080 +operator-(const Timestamp &a)
61081 +{
61082 +    if (a._subsec)
61083 +       return Timestamp(-a._sec - 1, Timestamp::NSUBSEC - a._subsec);
61084 +    else
61085 +       return Timestamp(-a._sec, 0);
61086 +}
61087 +
61088 +#if !CLICK_LINUXMODULE && !CLICK_BSDMODULE
61089 +/** @brief Returns this timestamp's value, converted to a real number. */
61090 +inline double
61091 +Timestamp::doubleval() const
61092 +{
61093 +    return _sec + (_subsec / (double) NSUBSEC);
61094 +}
61095 +
61096 +/** @brief Create a timestamp measuring @a d seconds. */
61097 +inline
61098 +Timestamp::Timestamp(double d)
61099 +{
61100 +    double dfloor = floor(d);
61101 +    _sec = (int32_t) dfloor;
61102 +    _subsec = (uint32_t) ((d - dfloor) * NSUBSEC + 0.5);
61103 +    add_fix();
61104 +}
61105 +
61106 +/** @brief Scales @a a by a factor of @a b and returns the result. */
61107 +inline Timestamp
61108 +operator*(const Timestamp &a, double b)
61109 +{
61110 +    return Timestamp(a.doubleval() * b);
61111 +}
61112 +
61113 +inline Timestamp
61114 +operator*(const Timestamp &a, int b)
61115 +{
61116 +    return Timestamp(a.doubleval() * b);
61117 +}
61118 +
61119 +inline Timestamp
61120 +operator*(const Timestamp &a, unsigned b)
61121 +{
61122 +    return Timestamp(a.doubleval() * b);
61123 +}
61124 +
61125 +inline Timestamp
61126 +operator*(double a, const Timestamp &b)
61127 +{
61128 +    return Timestamp(b.doubleval() * a);
61129 +}
61130 +
61131 +inline Timestamp
61132 +operator*(int a, const Timestamp &b)
61133 +{
61134 +    return Timestamp(b.doubleval() * a);
61135 +}
61136 +
61137 +inline Timestamp
61138 +operator*(unsigned a, const Timestamp &b)
61139 +{
61140 +    return Timestamp(b.doubleval() * a);
61141 +}
61142 +
61143 +/** @brief Scales @a a down by a factor of @a b and returns the result. */
61144 +inline Timestamp
61145 +operator/(const Timestamp &a, double b)
61146 +{
61147 +    return Timestamp(a.doubleval() / b);
61148 +}
61149 +
61150 +inline Timestamp
61151 +operator/(const Timestamp &a, int b)
61152 +{
61153 +    return Timestamp(a.doubleval() / b);
61154 +}
61155 +
61156 +inline Timestamp
61157 +operator/(const Timestamp &a, unsigned b)
61158 +{
61159 +    return Timestamp(a.doubleval() / b);
61160 +}
61161 +
61162 +/** @brief Divides @a a by @a b and returns the result. */
61163 +inline double
61164 +operator/(const Timestamp &a, const Timestamp &b)
61165 +{
61166 +    return a.doubleval() / b.doubleval();
61167 +}
61168 +# endif /* !CLICK_LINUXMODULE && !CLICK_BSDMODULE */
61169 +
61170 +StringAccum& operator<<(StringAccum&, const Timestamp&);
61171 +
61172 +CLICK_ENDDECLS
61173 +#endif
61174 diff -Nurb click-1.6.0/inst/include/click/userutils.hh click-1.6.0-27/inst/include/click/userutils.hh
61175 --- click-1.6.0/inst/include/click/userutils.hh 1969-12-31 19:00:00.000000000 -0500
61176 +++ click-1.6.0-27/inst/include/click/userutils.hh      2009-02-05 10:20:41.000000000 -0500
61177 @@ -0,0 +1,51 @@
61178 +// -*- c-basic-offset: 2; related-file-name: "../../lib/userutils.cc" -*-
61179 +#ifndef CLICK_USERUTILS_HH
61180 +#define CLICK_USERUTILS_HH
61181 +#include <click/archive.hh>
61182 +#include <stdio.h>
61183 +CLICK_DECLS
61184 +class ErrorHandler;
61185 +
61186 +bool glob_match(const String &string, const String &pattern);
61187 +
61188 +String percent_substitute(const String &string, int format1, ...);
61189 +
61190 +int click_strcmp(const String &a, const String &b);
61191 +
61192 +const char *filename_landmark(const char *, bool file_is_expr = false);
61193 +
61194 +String file_string(FILE *, ErrorHandler * = 0);
61195 +String file_string(String, ErrorHandler * = 0);
61196 +
61197 +String unique_tmpnam(const String &, ErrorHandler * = 0);
61198 +void remove_file_on_exit(const String &);
61199 +bool path_allows_default_path(String path);
61200 +String click_mktmpdir(ErrorHandler * = 0);
61201 +
61202 +const char *clickpath();
61203 +void set_clickpath(const char *);
61204 +
61205 +String clickpath_find_file(const String& filename, const char *subdir,
61206 +                          String default_path, ErrorHandler * = 0);
61207 +void clickpath_expand_path(const char* subdir, const String& default_path, Vector<String>&);
61208 +
61209 +void parse_tabbed_lines(const String &, Vector<String> *, ...);
61210 +
61211 +ArchiveElement init_archive_element(const String &, int);
61212 +
61213 +String shell_quote(const String &, bool quote_tilde = false);
61214 +String shell_command_output_string(String command_line, const String &command_stdin, ErrorHandler *);
61215 +
61216 +bool compressed_data(const unsigned char *, int);
61217 +FILE *open_uncompress_pipe(const String &filename, const unsigned char *, int, ErrorHandler *);
61218 +
61219 +int compressed_filename(const String &filename);
61220 +FILE *open_compress_pipe(const String &filename, ErrorHandler *);
61221 +
61222 +#if HAVE_DYNAMIC_LINKING
61223 +int clickdl_load_package(String, ErrorHandler *);
61224 +void clickdl_load_requirement(String, const Vector<ArchiveElement> *archive, ErrorHandler *);
61225 +#endif
61226 +
61227 +CLICK_ENDDECLS
61228 +#endif
61229 diff -Nurb click-1.6.0/inst/include/click/variableenv.hh click-1.6.0-27/inst/include/click/variableenv.hh
61230 --- click-1.6.0/inst/include/click/variableenv.hh       1969-12-31 19:00:00.000000000 -0500
61231 +++ click-1.6.0-27/inst/include/click/variableenv.hh    2009-02-05 10:20:41.000000000 -0500
61232 @@ -0,0 +1,49 @@
61233 +// -*- c-basic-offset: 4; related-file-name: "../../lib/variableenv.cc" -*-
61234 +#ifndef CLICK_VARIABLEENVIRONMENT_HH
61235 +#define CLICK_VARIABLEENVIRONMENT_HH
61236 +#include <click/string.hh>
61237 +#include <click/vector.hh>
61238 +CLICK_DECLS
61239 +class StringAccum;
61240 +
61241 +class VariableExpander { public:
61242 +
61243 +    VariableExpander()                 { }
61244 +    virtual ~VariableExpander()                { }
61245 +
61246 +    virtual bool expand(const String &var, int vartype, int quote, StringAccum &) = 0;
61247 +
61248 +};
61249 +
61250 +class VariableEnvironment : public VariableExpander { public:
61251 +  
61252 +    VariableEnvironment(VariableEnvironment *parent);
61253 +
61254 +    int depth() const                  { return _depth; }
61255 +    int size() const                   { return _names.size(); }
61256 +
61257 +    const String &name(int i) const    { return _names[i]; }
61258 +    const Vector<String> &values() const       { return _values; }
61259 +    const String &value(int i) const   { return _values[i]; }
61260 +    const String &value(const String &name, bool &found) const;
61261 +
61262 +    void clear()                       { _names.clear(); _values.clear(); }
61263 +    
61264 +    VariableEnvironment *parent_of(int depth);
61265 +    bool define(const String &name, const String &value, bool override);
61266 +    bool expand(const String &var, int vartype, int quote, StringAccum &);
61267 +
61268 +  private:
61269 +
61270 +    Vector<String> _names;
61271 +    Vector<String> _values;
61272 +    int _depth;
61273 +    VariableEnvironment *_parent;
61274 +
61275 +};
61276 +
61277 +String cp_expand(const String &, VariableExpander &, bool expand_quote = false);
61278 +String cp_expand_in_quotes(const String &, int quote);
61279 +
61280 +CLICK_ENDDECLS
61281 +#endif
61282 diff -Nurb click-1.6.0/inst/include/click/vector.cc click-1.6.0-27/inst/include/click/vector.cc
61283 --- click-1.6.0/inst/include/click/vector.cc    1969-12-31 19:00:00.000000000 -0500
61284 +++ click-1.6.0-27/inst/include/click/vector.cc 2009-02-05 10:20:41.000000000 -0500
61285 @@ -0,0 +1,149 @@
61286 +/*
61287 + * vector.{cc,hh} -- simple array template class
61288 + * Eddie Kohler
61289 + *
61290 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
61291 + * Copyright (c) 2006 Regents of the University of California
61292 + *
61293 + * Permission is hereby granted, free of charge, to any person obtaining a
61294 + * copy of this software and associated documentation files (the "Software"),
61295 + * to deal in the Software without restriction, subject to the conditions
61296 + * listed in the Click LICENSE file. These conditions include: you must
61297 + * preserve this copyright notice, and you cannot mention the copyright
61298 + * holders in advertising related to the Software without their permission.
61299 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
61300 + * notice is a summary of the Click LICENSE file; the license in that file is
61301 + * legally binding.
61302 + */
61303 +
61304 +#ifndef CLICK_VECTOR_CC
61305 +#define CLICK_VECTOR_CC
61306 +
61307 +CLICK_ENDDECLS
61308 +#include <click/glue.hh>
61309 +#include <click/vector.hh>
61310 +CLICK_DECLS
61311 +
61312 +template <class T>
61313 +Vector<T>::Vector(const Vector<T> &o)
61314 +  : _l(0), _n(0), _capacity(0)
61315 +{
61316 +  *this = o;
61317 +}
61318 +
61319 +template <class T>
61320 +Vector<T>::~Vector()
61321 +{
61322 +  for (size_type i = 0; i < _n; i++)
61323 +    _l[i].~T();
61324 +  delete[] (unsigned char *)_l;
61325 +}
61326 +
61327 +template <class T> Vector<T> &
61328 +Vector<T>::operator=(const Vector<T> &o)
61329 +{
61330 +  if (&o != this) {
61331 +    for (size_type i = 0; i < _n; i++)
61332 +      _l[i].~T();
61333 +    _n = 0;
61334 +    if (reserve(o._n)) {
61335 +      _n = o._n;
61336 +      for (size_type i = 0; i < _n; i++)
61337 +        new(velt(i)) T(o._l[i]);
61338 +    }
61339 +  }
61340 +  return *this;
61341 +}
61342 +
61343 +template <class T> Vector<T> &
61344 +Vector<T>::assign(size_type n, const T &e)
61345 +{
61346 +  resize(0, e);
61347 +  resize(n, e);
61348 +  return *this;
61349 +}
61350 +
61351 +template <class T> typename Vector<T>::iterator
61352 +Vector<T>::insert(iterator i, const T& e)
61353 +{
61354 +  assert(i >= begin() && i <= end());
61355 +  size_type pos = i - begin();
61356 +  if (_n < _capacity || reserve(RESERVE_GROW)) {
61357 +    for (iterator j = end() - 1; j >= begin() + pos; j--) {
61358 +      new((void*) (j+1)) T(*j);
61359 +      j->~T();
61360 +    }
61361 +    new(velt(pos)) T(e);
61362 +    _n++;
61363 +  }
61364 +  return begin() + pos;
61365 +}
61366 +
61367 +template <class T> typename Vector<T>::iterator
61368 +Vector<T>::erase(iterator a, iterator b)
61369 +{
61370 +  if (b > a) {
61371 +    assert(a >= begin() && b <= end());
61372 +    iterator i = a, j = b;
61373 +    for (; j < end(); i++, j++) {
61374 +      i->~T();
61375 +      new((void*) i) T(*j);
61376 +    }
61377 +    for (; i < end(); i++)
61378 +      i->~T();
61379 +    _n -= b - a;
61380 +    return a;
61381 +  } else
61382 +    return b;
61383 +}
61384 +
61385 +template <class T> bool
61386 +Vector<T>::reserve(size_type want)
61387 +{
61388 +  if (want < 0)
61389 +    want = (_capacity > 0 ? _capacity * 2 : 4);
61390 +  if (want <= _capacity)
61391 +    return true;
61392 +  
61393 +  T *new_l = (T *)new unsigned char[sizeof(T) * want];
61394 +  if (!new_l)
61395 +    return false;
61396 +  
61397 +  for (size_type i = 0; i < _n; i++) {
61398 +    new(velt(new_l, i)) T(_l[i]);
61399 +    _l[i].~T();
61400 +  }
61401 +  delete[] (unsigned char *)_l;
61402 +  
61403 +  _l = new_l;
61404 +  _capacity = want;
61405 +  return true;
61406 +}
61407 +
61408 +template <class T> void
61409 +Vector<T>::resize(size_type nn, const T &e)
61410 +{
61411 +  if (nn <= _capacity || reserve(nn)) {
61412 +    for (size_type i = nn; i < _n; i++)
61413 +      _l[i].~T();
61414 +    for (size_type i = _n; i < nn; i++)
61415 +      new(velt(i)) T(e);
61416 +    _n = nn;
61417 +  }
61418 +}
61419 +
61420 +template <class T> void
61421 +Vector<T>::swap(Vector<T> &o)
61422 +{
61423 +  T *l = _l;
61424 +  size_type n = _n;
61425 +  size_type cap = _capacity;
61426 +  _l = o._l;
61427 +  _n = o._n;
61428 +  _capacity = o._capacity;
61429 +  o._l = l;
61430 +  o._n = n;
61431 +  o._capacity = cap;
61432 +}
61433 +
61434 +#endif
61435 diff -Nurb click-1.6.0/inst/include/click/vector.hh click-1.6.0-27/inst/include/click/vector.hh
61436 --- click-1.6.0/inst/include/click/vector.hh    1969-12-31 19:00:00.000000000 -0500
61437 +++ click-1.6.0-27/inst/include/click/vector.hh 2009-02-05 10:20:41.000000000 -0500
61438 @@ -0,0 +1,284 @@
61439 +#ifndef CLICK_VECTOR_HH
61440 +#define CLICK_VECTOR_HH
61441 +#include <click/algorithm.hh>
61442 +CLICK_DECLS
61443 +
61444 +template <class T>
61445 +class Vector { public:
61446 +
61447 +  typedef T value_type;
61448 +  typedef T& reference;
61449 +  typedef const T& const_reference;
61450 +  typedef T* pointer;
61451 +  typedef const T* const_pointer;
61452 +  
61453 +  typedef int size_type;
61454 +  enum { RESERVE_GROW = (size_type) -1 };
61455 +  
61456 +  typedef T* iterator;
61457 +  typedef const T* const_iterator;
61458 +  
61459 +  explicit Vector()            : _l(0), _n(0), _capacity(0) { }
61460 +  explicit Vector(size_type n, const T &e) : _l(0), _n(0), _capacity(0) { resize(n, e); }
61461 +  // template <class In> ...
61462 +  Vector(const Vector<T> &);
61463 +  ~Vector();
61464 +
61465 +  Vector<T>& operator=(const Vector<T>&);
61466 +  Vector<T>& assign(size_type n, const T& e = T());
61467 +  // template <class In> ...
61468 +  
61469 +  // iterators
61470 +  iterator begin()                     { return _l; }
61471 +  const_iterator begin() const         { return _l; }
61472 +  iterator end()                       { return _l + _n; }
61473 +  const_iterator end() const           { return _l + _n; }
61474 +
61475 +  // capacity
61476 +  size_type size() const               { return _n; }
61477 +  void resize(size_type nn, const T& e = T());
61478 +  size_type capacity() const           { return _capacity; }
61479 +  bool empty() const                   { return _n == 0; }
61480 +  bool reserve(size_type);
61481 +
61482 +  // element access
61483 +  T& operator[](size_type i)           { assert(i>=0 && i<_n); return _l[i]; }
61484 +  const T& operator[](size_type i) const{ assert(i>=0 && i<_n); return _l[i]; }
61485 +  T& at(size_type i)                   { return operator[](i); }
61486 +  const T& at(size_type i) const       { return operator[](i); }
61487 +  T& front()                           { return operator[](0); }
61488 +  const T& front() const               { return operator[](0); }
61489 +  T& back()                            { return operator[](_n - 1); }
61490 +  const T& back() const                        { return operator[](_n - 1); }
61491 +  T& at_u(size_type i)                 { return _l[i]; }
61492 +  const T& at_u(size_type i) const     { return _l[i]; }
61493 +
61494 +  // modifiers
61495 +  inline void push_back(const T&);
61496 +  inline void pop_back();
61497 +  inline void push_front(const T&);
61498 +  inline void pop_front();
61499 +  iterator insert(iterator, const T&);
61500 +  inline iterator erase(iterator);
61501 +  iterator erase(iterator, iterator);
61502 +  void swap(Vector<T> &);
61503 +  void clear()                         { erase(begin(), end()); }
61504 +  
61505 + private:
61506 +  
61507 +  T *_l;
61508 +  size_type _n;
61509 +  size_type _capacity;
61510 +
61511 +  void *velt(size_type i) const                { return (void*)&_l[i]; }
61512 +  static void *velt(T* l, size_type i) { return (void*)&l[i]; }
61513 +
61514 +};
61515 +
61516 +template <class T> inline void
61517 +Vector<T>::push_back(const T& e)
61518 +{
61519 +  if (_n < _capacity || reserve(RESERVE_GROW)) {
61520 +    new(velt(_n)) T(e);
61521 +    _n++;
61522 +  }
61523 +}
61524 +
61525 +template <class T> inline void
61526 +Vector<T>::pop_back()
61527 +{
61528 +  assert(_n > 0);
61529 +  --_n;
61530 +  _l[_n].~T();
61531 +}
61532 +
61533 +template <class T> inline typename Vector<T>::iterator
61534 +Vector<T>::erase(iterator i)
61535 +{
61536 +  return (i < end() ? erase(i, i + 1) : i);
61537 +}
61538 +
61539 +template <class T> inline void
61540 +Vector<T>::push_front(const T& e)
61541 +{
61542 +  insert(begin(), e);
61543 +}
61544 +
61545 +template <class T> inline void
61546 +Vector<T>::pop_front()
61547 +{
61548 +  erase(begin());
61549 +}
61550 +
61551 +
61552 +template <>
61553 +class Vector<void*> { public:
61554 +
61555 +  typedef void* value_type;
61556 +  typedef void*& reference;
61557 +  typedef void* const& const_reference;
61558 +  typedef void** pointer;
61559 +  typedef void* const* const_pointer;
61560 +
61561 +  typedef int size_type;
61562 +  enum { RESERVE_GROW = (size_type) -1 };
61563 +  
61564 +  typedef void** iterator;
61565 +  typedef void* const* const_iterator;
61566 +
61567 +  explicit Vector()                    : _l(0), _n(0), _capacity(0) { }
61568 +  explicit Vector(size_type n, void* e)        : _l(0), _n(0), _capacity(0) { resize(n, e); }
61569 +  Vector(const Vector<void*> &);
61570 +  ~Vector();
61571 +  
61572 +  Vector<void*> &operator=(const Vector<void*> &);
61573 +  Vector<void*> &assign(size_type n, void* e = 0);
61574 +  
61575 +  // iterators
61576 +  iterator begin()                     { return _l; }
61577 +  const_iterator begin() const         { return _l; }
61578 +  iterator end()                       { return _l + _n; }
61579 +  const_iterator end() const           { return _l + _n; }
61580 +
61581 +  // capacity
61582 +  size_type size() const               { return _n; }
61583 +  void resize(size_type nn, void* e = 0);
61584 +  size_type capacity() const           { return _capacity; }
61585 +  bool empty() const                   { return _n == 0; }
61586 +  bool reserve(size_type);
61587 +
61588 +  // element access
61589 +  void*& operator[](size_type i)       { assert(i>=0 && i<_n); return _l[i]; }
61590 +  void* operator[](size_type i) const  { assert(i>=0 && i<_n); return _l[i]; }
61591 +  void*& at(size_type i)               { return operator[](i); }
61592 +  void* at(size_type i) const          { return operator[](i); }
61593 +  void*& front()                       { return operator[](0); }
61594 +  void* front() const                  { return operator[](0); }
61595 +  void*& back()                                { return operator[](_n - 1); }
61596 +  void* back() const                   { return operator[](_n - 1); }
61597 +  void*& at_u(size_type i)             { return _l[i]; }
61598 +  void* at_u(size_type i) const                { return _l[i]; }
61599 +
61600 +  // modifiers
61601 +  inline void push_back(void*);
61602 +  inline void pop_back();
61603 +  inline void push_front(void*);
61604 +  inline void pop_front();
61605 +  iterator insert(iterator, void*);
61606 +  inline iterator erase(iterator);
61607 +  iterator erase(iterator, iterator);
61608 +  void swap(Vector<void*> &);
61609 +  void clear()                         { _n = 0; }
61610 +
61611 + private:
61612 +  
61613 +  void **_l;
61614 +  size_type _n;
61615 +  size_type _capacity;
61616 +
61617 +};
61618 +
61619 +inline void
61620 +Vector<void*>::push_back(void *e)
61621 +{
61622 +  if (_n < _capacity || reserve(RESERVE_GROW)) {
61623 +    _l[_n] = e;
61624 +    _n++;
61625 +  }
61626 +}
61627 +
61628 +inline void
61629 +Vector<void*>::pop_back()
61630 +{
61631 +  assert(_n > 0);
61632 +  --_n;
61633 +}
61634 +
61635 +inline Vector<void*>::iterator 
61636 +Vector<void*>::erase(Vector<void*>::iterator e)
61637 +{
61638 +  return (e < end() ? erase(e, e + 1) : e);
61639 +}
61640 +
61641 +inline void
61642 +Vector<void*>::push_front(void *e)
61643 +{
61644 +  insert(begin(), e);
61645 +}
61646 +
61647 +inline void
61648 +Vector<void*>::pop_front()
61649 +{
61650 +  erase(begin());
61651 +}
61652 +
61653 +
61654 +template <class T>
61655 +class Vector<T*>: private Vector<void*> {
61656 +  
61657 +  typedef Vector<void*> Base;
61658 +  
61659 + public:
61660 +
61661 +  typedef T* value_type;
61662 +  typedef T*& reference;
61663 +  typedef T* const& const_reference;
61664 +  typedef T** pointer;
61665 +  typedef T* const* const_pointer;
61666 +
61667 +  typedef int size_type;
61668 +  enum { RESERVE_GROW = Base::RESERVE_GROW };
61669 +  
61670 +  typedef T** iterator;
61671 +  typedef T* const* const_iterator;
61672 +  
61673 +  explicit Vector()                    : Base() { }
61674 +  explicit Vector(size_type n, T* e)   : Base(n, (void *)e) { }
61675 +  Vector(const Vector<T *> &o)         : Base(o) { }
61676 +  ~Vector()                            { }
61677 +
61678 +  Vector<T *> &operator=(const Vector<T *> &o)
61679 +               { Base::operator=(o); return *this; }
61680 +  Vector<T *> &assign(size_type n, T *e = 0)
61681 +               { Base::assign(n, (void *)e); return *this; }
61682 +  
61683 +  // iterators
61684 +  const_iterator begin() const { return (const_iterator)(Base::begin()); }
61685 +  iterator begin()             { return (iterator)(Base::begin()); }
61686 +  const_iterator end() const   { return (const_iterator)(Base::end()); }
61687 +  iterator end()               { return (iterator)(Base::end()); }
61688 +
61689 +  // capacity
61690 +  size_type size() const       { return Base::size(); }
61691 +  void resize(size_type n, T *e = 0) { Base::resize(n, (void *)e); }
61692 +  size_type capacity() const   { return Base::capacity(); }
61693 +  bool empty() const           { return Base::empty(); }
61694 +  bool reserve(size_type n)    { return Base::reserve(n); }
61695 +
61696 +  // element access
61697 +  T*& operator[](size_type i)  { return (T*&)(Base::at(i)); }
61698 +  T* operator[](size_type i) const { return (T*)(Base::operator[](i)); }
61699 +  T*& at(size_type i)          { return (T*&)(Base::operator[](i)); }
61700 +  T* at(size_type i) const     { return (T*)(Base::at(i)); }
61701 +  T*& front()                  { return (T*&)(Base::front()); }
61702 +  T* front() const             { return (T*)(Base::front()); }
61703 +  T*& back()                   { return (T*&)(Base::back()); }
61704 +  T* back() const              { return (T*)(Base::back()); }
61705 +  T*& at_u(size_type i)                { return (T*&)(Base::at_u(i)); }
61706 +  T* at_u(size_type i) const   { return (T*)(Base::at_u(i)); }
61707 +  
61708 +  // modifiers
61709 +  void push_back(T* e)         { Base::push_back((void*)e); }
61710 +  void pop_back()              { Base::pop_back(); }
61711 +  void push_front(T *e)                { Base::push_front((void*)e); }
61712 +  void pop_front()             { Base::pop_front(); }
61713 +  iterator insert(iterator i, T* e) { return (iterator)Base::insert((void**)i, (void*)e); }
61714 +  iterator erase(iterator i)   { return (iterator)Base::erase((void**)i); }
61715 +  iterator erase(iterator i, iterator j) { return (iterator)Base::erase((void**)i, (void**)j); }
61716 +  void swap(Vector<T *> &o)    { Base::swap(o); }
61717 +  void clear()                 { Base::clear(); }
61718 +    
61719 +};
61720 +
61721 +CLICK_ENDDECLS
61722 +#endif
61723 diff -Nurb click-1.6.0/inst/include/clicknet/dhcp.h click-1.6.0-27/inst/include/clicknet/dhcp.h
61724 --- click-1.6.0/inst/include/clicknet/dhcp.h    1969-12-31 19:00:00.000000000 -0500
61725 +++ click-1.6.0-27/inst/include/clicknet/dhcp.h 2009-02-05 10:20:41.000000000 -0500
61726 @@ -0,0 +1,130 @@
61727 +#ifndef CLICKNET_DHCP_H
61728 +#define CLICKNET_DHCP_H
61729 +
61730 +CLICK_SIZE_PACKED_STRUCTURE(
61731 +struct click_dhcp {,
61732 +       uint8_t  op;           /* message type */
61733 +       uint8_t  htype;        /* hardware address type */
61734 +       uint8_t  hlen;         /* hardware address length */
61735 +       uint8_t  hops;         /* should be zero in client's message */
61736 +       uint32_t xid;          /* transaction id */
61737 +       uint16_t secs;         /* elapsed time in sec. from trying to boot */
61738 +       uint16_t flags;
61739 +       uint32_t ciaddr;       /* (previously allocated) client IP address */
61740 +       uint32_t yiaddr;       /* 'your' client IP address */
61741 +       uint32_t siaddr;       /* should be zero in client's messages */
61742 +       uint32_t giaddr;       /* should be zero in client's messages */
61743 +       uint8_t  chaddr[16];   /* client's hardware address */
61744 +       uint8_t  sname[64];    /* server host name, null terminated string */
61745 +       uint8_t  file[128];    /* boot file name, null terminated string */
61746 +       uint32_t magic;        /* magic cookie */
61747 +       uint8_t  options[312]; /* message options */
61748 +});
61749 +
61750 +
61751 +#define ETH_10MB       1 /* htype */
61752 +#define ETH_10MB_LEN   6 /* hlen */
61753 +
61754 +/* DHCP message OP code */
61755 +#define DHCP_BOOTREQUEST       1
61756 +#define DHCP_BOOTREPLY         2
61757 +
61758 +/* DHCP Client State*/
61759 +enum dhcp_client_state {
61760 +       DHCP_CLIENT_INIT_STATE = 1,
61761 +       DHCP_CLIENT_SELECTING_STATE,
61762 +       DHCP_CLIENT_REQUESTING_STATE,
61763 +       DHCP_CLIENT_INIT_REBOOT,
61764 +       DHCP_CLIENT_REBOOTING,
61765 +       DHCP_CLIENT_BOUND,
61766 +       DHCP_CLIENT_RENEWING,
61767 +       DHCP_CLIENT_REBINDING
61768 +};
61769 +
61770 +
61771 +/* DHCP message type */
61772 +#define DHCP_DISCOVER           1
61773 +#define DHCP_OFFER              2
61774 +#define DHCP_REQUEST            3
61775 +#define DHCP_DECLINE            4
61776 +#define DHCP_ACK                5
61777 +#define DHCP_NACK               6
61778 +#define DHCP_RELEASE            7
61779 +#define DHCP_INFORM             8
61780 +
61781 +#define DHCP_MAGIC 0x63538263
61782 +
61783 +
61784 +
61785 +/* DHCP Option codes: */
61786 +#define DHO_PAD                                0
61787 +#define DHO_SUBNET_MASK                        1
61788 +#define DHO_TIME_OFFSET                        2
61789 +#define DHO_ROUTERS                    3
61790 +#define DHO_TIME_SERVERS               4
61791 +#define DHO_NAME_SERVERS               5
61792 +#define DHO_DOMAIN_NAME_SERVERS                6
61793 +#define DHO_LOG_SERVERS                        7
61794 +#define DHO_COOKIE_SERVERS             8
61795 +#define DHO_LPR_SERVERS                        9
61796 +#define DHO_IMPRESS_SERVERS            10
61797 +#define DHO_RESOURCE_LOCATION_SERVERS  11
61798 +#define DHO_HOST_NAME                  12
61799 +#define DHO_BOOT_SIZE                  13
61800 +#define DHO_MERIT_DUMP                 14
61801 +#define DHO_DOMAIN_NAME                        15
61802 +#define DHO_SWAP_SERVER                        16
61803 +#define DHO_ROOT_PATH                  17
61804 +#define DHO_EXTENSIONS_PATH            18
61805 +#define DHO_IP_FORWARDING              19
61806 +#define DHO_NON_LOCAL_SOURCE_ROUTING   20
61807 +#define DHO_POLICY_FILTER              21
61808 +#define DHO_MAX_DGRAM_REASSEMBLY       22
61809 +#define DHO_DEFAULT_IP_TTL             23
61810 +#define DHO_PATH_MTU_AGING_TIMEOUT     24
61811 +#define DHO_PATH_MTU_PLATEAU_TABLE     25
61812 +#define DHO_INTERFACE_MTU              26
61813 +#define DHO_ALL_SUBNETS_LOCAL          27
61814 +#define DHO_BROADCAST_ADDRESS          28
61815 +#define DHO_PERFORM_MASK_DISCOVERY     29
61816 +#define DHO_MASK_SUPPLIER              30
61817 +#define DHO_ROUTER_DISCOVERY           31
61818 +#define DHO_ROUTER_SOLICITATION_ADDRESS        32
61819 +#define DHO_STATIC_ROUTES              33
61820 +#define DHO_TRAILER_ENCAPSULATION      34
61821 +#define DHO_ARP_CACHE_TIMEOUT          35
61822 +#define DHO_IEEE802_3_ENCAPSULATION    36
61823 +#define DHO_DEFAULT_TCP_TTL            37
61824 +#define DHO_TCP_KEEPALIVE_INTERVAL     38
61825 +#define DHO_TCP_KEEPALIVE_GARBAGE      39
61826 +#define DHO_NIS_DOMAIN                 40
61827 +#define DHO_NIS_SERVERS                        41
61828 +#define DHO_NTP_SERVERS                        42
61829 +#define DHO_VENDOR_ENCAPSULATED_OPTIONS        43
61830 +#define DHO_NETBIOS_NAME_SERVERS       44
61831 +#define DHO_NETBIOS_DD_SERVER          45
61832 +#define DHO_NETBIOS_NODE_TYPE          46
61833 +#define DHO_NETBIOS_SCOPE              47
61834 +#define DHO_FONT_SERVERS               48
61835 +#define DHO_X_DISPLAY_MANAGER          49
61836 +#define DHO_DHCP_REQUESTED_ADDRESS     50
61837 +#define DHO_DHCP_LEASE_TIME            51
61838 +#define DHO_DHCP_OPTION_OVERLOAD       52
61839 +#define DHO_DHCP_MESSAGE_TYPE          53
61840 +#define DHO_DHCP_SERVER_IDENTIFIER     54
61841 +#define DHO_DHCP_PARAMETER_REQUEST_LIST        55
61842 +#define DHO_DHCP_MESSAGE               56
61843 +#define DHO_DHCP_MAX_MESSAGE_SIZE      57
61844 +#define DHO_DHCP_RENEWAL_TIME          58
61845 +#define DHO_DHCP_REBINDING_TIME                59
61846 +#define DHO_VENDOR_CLASS_IDENTIFIER    60
61847 +#define DHO_DHCP_CLIENT_IDENTIFIER     61
61848 +#define DHO_NWIP_DOMAIN_NAME           62
61849 +#define DHO_NWIP_SUBOPTIONS            63
61850 +#define DHO_USER_CLASS                 77
61851 +#define DHO_FQDN                       81
61852 +#define DHO_DHCP_AGENT_OPTIONS         82
61853 +#define DHO_SUBNET_SELECTION           118 /* RFC3011! */
61854 +#define DHO_END                                255
61855 +
61856 +#endif /* CLICKNET_DHCP_H */
61857 diff -Nurb click-1.6.0/inst/include/clicknet/ether.h click-1.6.0-27/inst/include/clicknet/ether.h
61858 --- click-1.6.0/inst/include/clicknet/ether.h   1969-12-31 19:00:00.000000000 -0500
61859 +++ click-1.6.0-27/inst/include/clicknet/ether.h        2009-02-05 10:20:41.000000000 -0500
61860 @@ -0,0 +1,118 @@
61861 +/* -*- mode: c; c-basic-offset: 4 -*- */
61862 +#ifndef CLICKNET_ETHER_H
61863 +#define CLICKNET_ETHER_H
61864 +
61865 +/*
61866 + * <clicknet/ether.h> -- Ethernet and ARP headers, based on one of the BSDs.
61867 + *
61868 + * Relevant RFCs include:
61869 + *   RFC826    Ethernet Address Resolution Protocol: or, Converting Network
61870 + *             Protocol Addresses to 48.bit Ethernet Address for Transmission
61871 + *             on Ethernet Hardware
61872 + *   RFC894    Standard for the transmission of IP datagrams over Ethernet
61873 + *             networks
61874 + * Also see the relevant IEEE 802 standards.
61875 + */
61876 +
61877 +CLICK_SIZE_PACKED_STRUCTURE(
61878 +struct click_ether {,
61879 +    uint8_t    ether_dhost[6];         /* 0-5   Ethernet destination address */
61880 +    uint8_t    ether_shost[6];         /* 6-11  Ethernet source address      */
61881 +    uint16_t   ether_type;             /* 12-13 Ethernet protocol            */
61882 +});
61883 +
61884 +#define ETHERTYPE_IP           0x0800
61885 +#define ETHERTYPE_ARP          0x0806
61886 +#define ETHERTYPE_TRAIL                0x1000
61887 +#define ETHERTYPE_8021Q                0x8100
61888 +#define ETHERTYPE_IP6          0x86DD
61889 +#define ETHERTYPE_GRID         0x7fff  /* wvlan_cs driver won't transmit frames with high bit of protocol number set */
61890 +
61891 +struct click_arp {             /* Offsets relative to ARP (Ethernet) header */
61892 +    uint16_t   ar_hrd;         /* 0-1 (14-15)  hardware address format      */
61893 +#define ARPHRD_ETHER    1      /*                Ethernet 10Mbps            */
61894 +#define ARPHRD_IEEE802 6       /*                token ring                 */
61895 +#define ARPHRD_ARCNET  7       /*                Arcnet                     */
61896 +#define ARPHRD_FRELAY  15      /*                frame relay                */
61897 +#define ARPHRD_STRIP   23      /*                Ricochet Starmode Radio    */
61898 +#define ARPHRD_IEEE1394        24      /*                IEEE 1394 (FireWire)       */
61899 +#define ARPHRD_80211    801    /*                IEEE 802.11 (wifi)         */
61900 +    uint16_t   ar_pro;         /* 2-3 (16-17)  protocol address format      */
61901 +    uint8_t    ar_hln;         /* 4   (18)     hardware address length      */
61902 +    uint8_t    ar_pln;         /* 5   (19)     protocol address length      */
61903 +    uint16_t   ar_op;          /* 6-7 (20-21)  opcode (command)             */
61904 +#define ARPOP_REQUEST   1      /*                ARP request                */
61905 +#define ARPOP_REPLY    2       /*                ARP reply                  */
61906 +#define ARPOP_REVREQUEST 3     /*                reverse request: hw->proto */
61907 +#define ARPOP_REVREPLY 4       /*                reverse reply              */
61908 +#define ARPOP_INVREQUEST 8     /*                peer identification req    */
61909 +#define ARPOP_INVREPLY 9       /*                peer identification reply  */
61910 +};
61911 +
61912 +struct click_ether_arp {
61913 +    struct click_arp ea_hdr;   /* 0-7   (14-21)  fixed-size ARP header      */
61914 +    uint8_t    arp_sha[6];     /* 8-13  (22-27)  sender hardware address    */
61915 +    uint8_t    arp_spa[4];     /* 14-17 (28-31)  sender protocol address    */
61916 +    uint8_t    arp_tha[6];     /* 18-23 (32-37)  target hardware address    */
61917 +    uint8_t    arp_tpa[4];     /* 24-27 (38-41)  target protocol address    */
61918 +};
61919 +
61920 +
61921 +/* Ethernet with VLAN (802.1q) */
61922 +
61923 +CLICK_SIZE_PACKED_STRUCTURE(
61924 +struct click_ether_vlan {,
61925 +    uint8_t     ether_dhost[6];                /* 0-5   Ethernet source address      */
61926 +    uint8_t     ether_shost[6];                /* 6-11  Ethernet destination address */
61927 +    uint16_t    ether_vlan_proto;      /* 12-13 == ETHERTYPE_8021Q           */
61928 +    uint16_t    ether_vlan_tci;                /* 14-15 tag control information      */
61929 +    uint16_t    ether_vlan_encap_proto;        /* 16-17 Ethernet protocol            */
61930 +});
61931 +
61932 +
61933 +#define ND_SOL 0x0087       /* Neighborhood Solicitation Message Type */
61934 +#define ND_ADV 0x0088       /* Neighborhood Advertisement Message Type */
61935 +
61936 +/* define structure of Neighborhood Solicitation Message */
61937 +struct click_nd_sol {
61938 +    uint8_t type;
61939 +    uint8_t code;
61940 +    uint16_t checksum;
61941 +    uint32_t reserved;
61942 +    uint8_t nd_tpa[16];
61943 +    uint8_t option_type;   /*option type: 1 (source link-layer add) */
61944 +    uint8_t option_length; /*option length: 1 (in units of 8 octets) */
61945 +    uint8_t nd_sha[6];    /*source link-layer address */
61946 +};
61947 +
61948 +/* define structure of Neighborhood Advertisement Message -reply to multicast neighborhood solitation message */
61949 +struct click_nd_adv {
61950 +    uint8_t type;
61951 +    uint8_t code;
61952 +    uint16_t checksum;
61953 +    uint8_t flags; /* bit 1: sender_is_router
61954 +                      bit 2: solicited
61955 +                     bit 3: override
61956 +                     all other bits should be zero */
61957 +    uint8_t reserved[3];
61958 +    uint8_t nd_tpa[16];
61959 +    uint8_t option_type;    /* option type: 2 (target link-layer add) */
61960 +    uint8_t option_length;  /* option length: 1 (in units of 8 octets) */
61961 +    uint8_t nd_tha[6];     /* source link-layer address */
61962 +};
61963 +
61964 +
61965 +/* define structure of Neighborhood Advertisement Message - reply to unicast neighborhood solitation message */
61966 +struct click_nd_adv2 {
61967 +    uint8_t type;
61968 +    uint8_t code;
61969 +    uint16_t checksum;
61970 +    uint8_t flags; /* bit 1: sender_is_router
61971 +                     bit 2: solicited
61972 +                     bit 3: override
61973 +                     all other bits should be zero */
61974 +    uint8_t reserved[3];
61975 +    uint8_t nd_tpa[16];
61976 +};
61977 +
61978 +#endif
61979 diff -Nurb click-1.6.0/inst/include/clicknet/fddi.h click-1.6.0-27/inst/include/clicknet/fddi.h
61980 --- click-1.6.0/inst/include/clicknet/fddi.h    1969-12-31 19:00:00.000000000 -0500
61981 +++ click-1.6.0-27/inst/include/clicknet/fddi.h 2009-02-05 10:20:41.000000000 -0500
61982 @@ -0,0 +1,47 @@
61983 +/* -*- mode: c; c-basic-offset: 4 -*- */
61984 +#ifndef CLICKNET_FDDI_H
61985 +#define CLICKNET_FDDI_H
61986 +
61987 +/*
61988 + * <clicknet/fddi.h> -- our own definitions of FDDI headers
61989 + * based on a file from Linux
61990 + */
61991 +
61992 +CLICK_SIZE_PACKED_STRUCTURE(
61993 +struct click_fddi {,
61994 +    uint8_t    fc;
61995 +    uint8_t    daddr[6];
61996 +    uint8_t    saddr[6];
61997 +});
61998 +
61999 +CLICK_SIZE_PACKED_STRUCTURE(
62000 +struct click_fddi_8022_1 {,
62001 +    struct click_fddi h;
62002 +    uint8_t    dsap;
62003 +    uint8_t    ssap;
62004 +    uint8_t    ctrl;
62005 +});
62006 +
62007 +CLICK_SIZE_PACKED_STRUCTURE(
62008 +struct click_fddi_8022_2 {,
62009 +    struct click_fddi h;
62010 +    uint8_t    dsap;
62011 +    uint8_t    ssap;
62012 +    uint8_t    ctrl1;
62013 +    uint8_t    ctrl2;
62014 +});
62015 +
62016 +CLICK_PACKED_STRUCTURE(
62017 +struct click_fddi_snap {,
62018 +    struct click_fddi h;
62019 +    uint8_t    dsap;
62020 +    uint8_t    ssap;
62021 +    uint8_t    ctrl;
62022 +    uint8_t    oui[3];
62023 +    uint16_t   ether_type;
62024 +});
62025 +
62026 +#define        FDDI_FC_LLC_ASYNC       0x50
62027 +#define        FDDI_FC_LLCMASK         0xF0            /* length/class/format bits */
62028 +
62029 +#endif
62030 diff -Nurb click-1.6.0/inst/include/clicknet/icmp.h click-1.6.0-27/inst/include/clicknet/icmp.h
62031 --- click-1.6.0/inst/include/clicknet/icmp.h    1969-12-31 19:00:00.000000000 -0500
62032 +++ click-1.6.0-27/inst/include/clicknet/icmp.h 2009-02-05 10:20:41.000000000 -0500
62033 @@ -0,0 +1,124 @@
62034 +/* -*- c-basic-offset: 4 -*- */
62035 +#ifndef CLICKNET_ICMP_H
62036 +#define CLICKNET_ICMP_H
62037 +#include <clicknet/ip.h>
62038 +
62039 +/*
62040 + * <clicknet/icmp.h> -- ICMP packet definitions, based on FreeBSD.
62041 + *
62042 + * Relevant RFCs include:
62043 + *   RFC792    Internet Control Message Protocol
62044 + *   RFC1122   Requirements for Internet Hosts - Communication Layers
62045 + *   RFC1123   Requirements for Internet Hosts - Application and Support
62046 + *   RFC1812   Requirements for IP Version 4 Routers
62047 + */
62048 +
62049 +/* most icmp request types: ICMP_UNREACH, ICMP_SOURCEQUENCH, ICMP_TIMXCEED */
62050 +struct click_icmp {
62051 +    uint8_t    icmp_type;              /* 0     ICMP type (see below)       */
62052 +    uint8_t    icmp_code;              /* 1     ICMP code (see below)       */
62053 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62054 +    uint32_t   padding;                /* 4-7   should be zero              */
62055 +    /* followed by original IP header and initial portion of data */
62056 +};
62057 +
62058 +/* header for types with sequence numbers: ICMP_ECHO, ICMP_ECHOREPLY,
62059 +   ICMP_INFOREQ, ICMP_INFOREQREPLY */
62060 +struct click_icmp_sequenced {
62061 +    uint8_t    icmp_type;              /* 0     ICMP type (see below)       */
62062 +    uint8_t    icmp_code;              /* 1     ICMP code (see below)       */
62063 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62064 +    uint16_t   icmp_identifier;        /* 4-5   flow identifier             */
62065 +    uint16_t   icmp_sequence;          /* 6-7   sequence number in flow     */
62066 +};
62067 +
62068 +/* ICMP_PARAMPROB header */
62069 +struct click_icmp_paramprob {
62070 +    uint8_t    icmp_type;              /* 0     ICMP type (see below)       */
62071 +    uint8_t    icmp_code;              /* 1     ICMP code (see below)       */
62072 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62073 +    uint8_t    icmp_pointer;           /* 4     parameter pointer           */
62074 +    uint8_t    padding[3];             /* 5-7   should be zero              */
62075 +    /* followed by original IP header and initial portion of data */
62076 +};
62077 +
62078 +/* Redirect header: ICMP_REDIRECT */
62079 +struct click_icmp_redirect {
62080 +    uint8_t    icmp_type;              /* 0     ICMP_REDIRECT (see below)   */
62081 +    uint8_t    icmp_code;              /* 1     ICMP code (see below)       */
62082 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62083 +    struct in_addr icmp_gateway;       /* 4-7   address of gateway          */
62084 +    /* followed by original IP header and initial portion of data */
62085 +};
62086 +
62087 +/* Timestamp and TimestampReply header: ICMP_TSTAMP and ICMP_TSTAMPREPLY */
62088 +struct click_icmp_tstamp { 
62089 +    uint8_t    icmp_type;              /* 0     ICMP type (see below)       */
62090 +    uint8_t    icmp_code;              /* 1     ICMP code (see below)       */
62091 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62092 +    uint16_t   icmp_identifier;        /* 4-5   flow identifier             */
62093 +    uint16_t   icmp_sequence;          /* 6-7   sequence number in flow     */
62094 +    uint32_t   icmp_originate;         /* 8-11  originate timestamp         */
62095 +    uint32_t   icmp_receive;           /* 12-15 receive timestamp           */
62096 +    uint32_t   icmp_transmit;          /* 16-19 transmit timestamp          */
62097 +};
62098 +
62099 +/* Path MTU Discovery header: ICMP_UNREACH_NEEDFRAG */
62100 +struct click_icmp_needfrag { 
62101 +    uint8_t    icmp_type;              /* 0     ICMP_UNREACH (see below)    */
62102 +    uint8_t    icmp_code;              /* 1     ICMP_UNREACH_NEEDFRAG       */
62103 +    uint16_t   icmp_cksum;             /* 2-3   checksum                    */
62104 +    uint16_t   padding;                /* 4-5   should be zero              */
62105 +    uint16_t   icmp_nextmtu;           /* 6-7   Next-Hop MTU                */
62106 +    /* followed by original IP header and initial portion of data */
62107 +};
62108 +
62109 +#define click_icmp_unreach     click_icmp
62110 +#define click_icmp_sourcequench        click_icmp
62111 +#define click_icmp_timxceed    click_icmp
62112 +#define click_icmp_echo                click_icmp_sequenced
62113 +
62114 +
62115 +/* ICMP type definitions and (indented) code definitions */
62116 +#define        ICMP_ECHOREPLY          0               /* echo reply                */
62117 +#define        ICMP_UNREACH            3               /* dest unreachable, codes:  */
62118 +#define          ICMP_UNREACH_NET              0       /*   bad net                 */
62119 +#define          ICMP_UNREACH_HOST             1       /*   bad host                */
62120 +#define          ICMP_UNREACH_PROTOCOL         2       /*   bad protocol            */
62121 +#define          ICMP_UNREACH_PORT             3       /*   bad port                */
62122 +#define          ICMP_UNREACH_NEEDFRAG         4       /*   IP_DF caused drop       */
62123 +#define          ICMP_UNREACH_SRCFAIL          5       /*   src route failed        */
62124 +#define          ICMP_UNREACH_NET_UNKNOWN      6       /*   unknown net             */
62125 +#define          ICMP_UNREACH_HOST_UNKNOWN     7       /*   unknown host            */
62126 +#define          ICMP_UNREACH_ISOLATED         8       /*   src host isolated       */
62127 +#define          ICMP_UNREACH_NET_PROHIB       9       /*   net prohibited access   */
62128 +#define          ICMP_UNREACH_HOST_PROHIB      10      /*   host prohibited access  */
62129 +#define          ICMP_UNREACH_TOSNET           11      /*   bad tos for net         */
62130 +#define          ICMP_UNREACH_TOSHOST          12      /*   bad tos for host        */
62131 +#define          ICMP_UNREACH_FILTER_PROHIB    13      /*   admin prohib            */
62132 +#define          ICMP_UNREACH_HOST_PRECEDENCE  14      /*   host prec violation     */
62133 +#define          ICMP_UNREACH_PRECEDENCE_CUTOFF 15     /*   prec cutoff             */
62134 +#define        ICMP_SOURCEQUENCH       4               /* packet lost, slow down    */
62135 +#define        ICMP_REDIRECT           5               /* shorter route, codes:     */
62136 +#define          ICMP_REDIRECT_NET             0       /*   for network             */
62137 +#define          ICMP_REDIRECT_HOST            1       /*   for host                */
62138 +#define          ICMP_REDIRECT_TOSNET          2       /*   for tos and net         */
62139 +#define          ICMP_REDIRECT_TOSHOST         3       /*   for tos and host        */
62140 +#define        ICMP_ECHO               8               /* echo service              */
62141 +#define        ICMP_ROUTERADVERT       9               /* router advertisement      */
62142 +#define        ICMP_ROUTERSOLICIT      10              /* router solicitation       */
62143 +#define        ICMP_TIMXCEED           11              /* time exceeded, code:      */
62144 +#define          ICMP_TIMXCEED_TRANSIT         0       /*   ttl==0 in transit       */
62145 +#define          ICMP_TIMXCEED_REASSEMBLY      1       /*   ttl==0 in reassembly    */
62146 +#define        ICMP_PARAMPROB          12              /* ip header bad             */
62147 +#define          ICMP_PARAMPROB_ERRATPTR       0       /*   error at param ptr      */
62148 +#define          ICMP_PARAMPROB_OPTABSENT      1       /*   req. opt. absent        */
62149 +#define          ICMP_PARAMPROB_LENGTH         2       /*   bad length              */
62150 +#define        ICMP_TSTAMP             13              /* timestamp request         */
62151 +#define        ICMP_TSTAMPREPLY        14              /* timestamp reply           */
62152 +#define        ICMP_IREQ               15              /* information request       */
62153 +#define        ICMP_IREQREPLY          16              /* information reply         */
62154 +#define        ICMP_MASKREQ            17              /* address mask request      */
62155 +#define        ICMP_MASKREQREPLY       18              /* address mask reply        */
62156 +
62157 +#endif
62158 diff -Nurb click-1.6.0/inst/include/clicknet/icmp6.h click-1.6.0-27/inst/include/clicknet/icmp6.h
62159 --- click-1.6.0/inst/include/clicknet/icmp6.h   1969-12-31 19:00:00.000000000 -0500
62160 +++ click-1.6.0-27/inst/include/clicknet/icmp6.h        2009-02-05 10:20:41.000000000 -0500
62161 @@ -0,0 +1,114 @@
62162 +/* -*- c-basic-offset: 4 -*- */
62163 +#ifndef CLICKNET_ICMP6_H
62164 +#define CLICKNET_ICMP6_H
62165 +#include <clicknet/ip6.h>
62166 +
62167 +/*
62168 + * <clicknet/icmp6.h> -- our own definitions for ICMP6 packets
62169 + * Based on RFC 1885
62170 + */
62171 +
62172 +/* types for ICMP6 packets */
62173 +#define ICMP6_UNREACH          1
62174 +#define ICMP6_PKTTOOBIG                2
62175 +#define ICMP6_TIMXCEED         3
62176 +#define ICMP6_PARAMPROB                4
62177 +
62178 +#define ICMP6_ECHO             128
62179 +#define ICMP6_ECHOREPLY                129
62180 +#define ICMP6_MEMBERSHIPQUERY  130
62181 +#define ICMP6_MEMBERSHIPREPORT 131
62182 +#define ICMP6_MEMBERSHIPREDUCTION 132
62183 +
62184 +#define ICMP6_REDIRECT         137
62185 +
62186 +/* codes for spefic types of ICMP6 packets */
62187 +/* ICMP6 Error Message - Type: 1 */
62188 +#define ICMP6_UNREACH_NOROUTE  0
62189 +#define ICMP6_UNREACH_ADMIN    1
62190 +#define ICMP6_UNREACH_NOTNEIGHBOR 2
62191 +#define ICMP6_UNREACH_ADDR     3
62192 +#define ICMP6_UNREACH_NOPORT   4
62193 +
62194 +/* ICMP6 Time Exceeded Message - Type: 3 */
62195 +#define ICMP6_TIMXCEED_TRANSIT 0
62196 +#define ICMP6_TIMXCEED_REASSEMBLY 1
62197 +
62198 +/* ICMP6 Parameter Problem Message - Type: 4 */
62199 +#define ICMP6_PARAMPROB_HEADER 0
62200 +#define ICMP6_PARAMPROB_NEXTHEADER 1
62201 +#define ICMP6_PARAMPROB_OPTION 2
62202 +
62203 +/* remove possible definitions for symbols */
62204 +#undef icmp6_identifier
62205 +#undef icmp6_sequence
62206 +#undef icmp6_pointer
62207 +#undef icmp6_maxdelay
62208 +
62209 +
62210 +/* most ICMP6 request types */
62211 +struct click_icmp6 { 
62212 +    uint8_t icmp6_type;                /* one of the ICMP6_TYPE_*'s above */
62213 +    uint8_t icmp6_code;                /* one of the ICMP6_CODE_*'s above */
62214 +    uint16_t icmp6_cksum;              /* 16 1's comp csum */
62215 +    uint32_t padding;                  /* should be zero */
62216 +    /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/
62217 +};
62218 +
62219 +/* packet too big header */
62220 +struct click_icmp6_pkttoobig {
62221 +    uint8_t icmp6_type;                /* one of the ICMP6_TYPE_*'s above */
62222 +    uint8_t icmp6_code;                /* one of the ICMP6_CODE_*'s above */
62223 +    uint16_t icmp6_cksum;              /* 16 1's comp csum */
62224 +    uint32_t icmp6_mtusize;                    /* maximum packet size */
62225 +  /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/
62226 +};
62227 +
62228 +/* parameter problem header */
62229 +struct click_icmp6_paramprob {
62230 +    uint8_t icmp6_type;                /* one of the ICMP_TYPE_*'s above */
62231 +    uint8_t icmp6_code;                /* one of the ICMP6_CODE_*'s above */
62232 +    uint16_t icmp6_cksum;              /* 16 1's comp csum */
62233 +    uint32_t icmp6_pointer;            /* which octect in orig. IP6 pkt was a problem */
62234 +  /* followed by as much of invoking packet as will fit without the ICMPv6 packet exceeding 576 octets*/
62235 +};
62236 +
62237 +
62238 +/* struct for things with sequence numbers - echo request & echo reply msgs*/
62239 +struct click_icmp6_sequenced {
62240 +    uint8_t icmp6_type;                /* one of the ICMP6_TYPE_*'s above */
62241 +    uint8_t icmp6_code;                /* one of the ICMP6_CODE_*'s above */
62242 +    uint16_t icmp6_cksum;              /* 16 1's comp csum */
62243 +    uint16_t icmp6_identifier;
62244 +    uint16_t icmp6_sequence;
62245 +    /* Followed by: */
62246 +    /* Echo Request: zero or more octets of arbitary data */
62247 +    /* Echo Reply: the data fromm the invoking Echo Request msg */
62248 +};
62249 +
62250 +/* struct for group membership messages */
62251 +struct click_icmp6_membership {
62252 +    uint8_t icmp6_type;                /* one of the ICMP6_TYPE_*'s above */
62253 +    uint8_t icmp6_code;                /* one of the ICMP6_CODE_*'s above */
62254 +    uint16_t icmp6_cksum;              /* 16 1's comp csum */
62255 +    uint16_t icmp6_maxdelay;   /* maximum response delay, in milliseconds */
62256 +    uint16_t padding;
62257 +    /* followed by multicast address */
62258 +};
62259 +
62260 +/* struct for redirect messages */
62261 +struct click_icmp6_redirect {
62262 +    uint8_t icmp6_type;
62263 +    uint8_t icmp6_code;  
62264 +    uint16_t icmp6_cksum;
62265 +    uint32_t padding;
62266 +    struct click_in6_addr icmp6_target;
62267 +    struct click_in6_addr icmp6_dst;
62268 +};
62269 +
62270 +/* different struct names for each type of packet */
62271 +#define click_icmp6_unreach    click_icmp6
62272 +#define click_icmp6_timxceed   click_icmp6
62273 +#define click_icmp6_echo       click_icmp6_sequenced
62274 +
62275 +#endif
62276 diff -Nurb click-1.6.0/inst/include/clicknet/ip.h click-1.6.0-27/inst/include/clicknet/ip.h
62277 --- click-1.6.0/inst/include/clicknet/ip.h      1969-12-31 19:00:00.000000000 -0500
62278 +++ click-1.6.0-27/inst/include/clicknet/ip.h   2009-02-05 10:20:41.000000000 -0500
62279 @@ -0,0 +1,157 @@
62280 +/* -*- mode: c; c-basic-offset: 4 -*- */
62281 +#ifndef CLICKNET_IP_H
62282 +#define CLICKNET_IP_H
62283 +/* get struct in_addr */
62284 +#include <click/cxxprotect.h>
62285 +CLICK_CXX_PROTECT
62286 +#if CLICK_LINUXMODULE
62287 +#include <linux/autoconf.h>
62288 +# include <net/checksum.h>
62289 +# include <linux/in.h>
62290 +#else
62291 +# include <sys/types.h>
62292 +# include <netinet/in.h>
62293 +#endif
62294 +
62295 +/*
62296 + * <clicknet/ip.h> -- IP header definitions, based on one of the BSDs.
62297 + *
62298 + * Relevant RFCs include:
62299 + *   RFC791    Internet Protocol
62300 + *   RFC3168   The Addition of Explicit Congestion Notification (ECN) to IP
62301 + */
62302 +
62303 +struct click_ip {
62304 +#if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
62305 +    unsigned   ip_v : 4;               /* 0     version == 4                */
62306 +    unsigned   ip_hl : 4;              /*       header length               */
62307 +#elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
62308 +    unsigned   ip_hl : 4;              /* 0     header length               */
62309 +    unsigned   ip_v : 4;               /*       version == 4                */
62310 +#else
62311 +#   error "unknown byte order"
62312 +#endif
62313 +    uint8_t    ip_tos;                 /* 1     type of service             */
62314 +#define IP_DSCPMASK    0xFC            /*         diffserv code point       */
62315 +#define IP_ECNMASK     0x03            /*         ECN code point            */
62316 +#define   IP_ECN_NOT_ECT  0x00         /*         not ECN capable transport */
62317 +#define   IP_ECN_ECT1    0x01          /*         ECN capable transport     */
62318 +#define   IP_ECN_ECT2    0x02          /*         ECN capable transport     */
62319 +#define   IP_ECN_CE      0x03          /*         ECN congestion exp'd      */
62320 +    uint16_t   ip_len;                 /* 2-3   total length                */
62321 +    uint16_t   ip_id;                  /* 4-5   identification              */
62322 +    uint16_t   ip_off;                 /* 6-7   fragment offset field       */
62323 +#define        IP_RF           0x8000          /*         reserved fragment flag    */
62324 +#define        IP_DF           0x4000          /*         don't fragment flag       */
62325 +#define        IP_MF           0x2000          /*         more fragments flag       */
62326 +#define        IP_OFFMASK      0X1FFF          /*         mask for fragmenting bits */
62327 +    uint8_t    ip_ttl;                 /* 8     time to live                */
62328 +    uint8_t    ip_p;                   /* 9     protocol                    */
62329 +    uint16_t   ip_sum;                 /* 10-11 checksum                    */
62330 +    struct in_addr ip_src;             /* 12-15 source address              */
62331 +    struct in_addr ip_dst;             /* 16-19 destination address         */
62332 +};
62333 +
62334 +/* ip_protocol */
62335 +#define IP_PROTO_ICMP          1
62336 +#define IP_PROTO_IGMP          2
62337 +#define IP_PROTO_GGP           3
62338 +#define IP_PROTO_IPIP          4
62339 +#define IP_PROTO_ST            5
62340 +#define IP_PROTO_TCP           6
62341 +#define IP_PROTO_UCL           7
62342 +#define IP_PROTO_EGP           8
62343 +#define IP_PROTO_IGP           9
62344 +#define IP_PROTO_BBN           10
62345 +#define IP_PROTO_NVPII         11
62346 +#define IP_PROTO_PUP           12
62347 +#define IP_PROTO_ARGUS         13
62348 +#define IP_PROTO_EMCON         14
62349 +#define IP_PROTO_XNET          15
62350 +#define IP_PROTO_CHAOS         16
62351 +#define IP_PROTO_UDP           17
62352 +#define IP_PROTO_MUX           18
62353 +#define IP_PROTO_DCN           19
62354 +#define IP_PROTO_HMP           20
62355 +#define IP_PROTO_PRM           21
62356 +#define IP_PROTO_XNS           22
62357 +#define IP_PROTO_TRUNK1                23
62358 +#define IP_PROTO_TRUNK2                24
62359 +#define IP_PROTO_LEAF1         25
62360 +#define IP_PROTO_LEAF2         26
62361 +#define IP_PROTO_RDP           27
62362 +#define IP_PROTO_IRTP          28
62363 +#define IP_PROTO_ISOTP4                29
62364 +#define IP_PROTO_NETBLT                30
62365 +#define IP_PROTO_MFENSP                31
62366 +#define IP_PROTO_MERIT         32
62367 +#define IP_PROTO_DCCP          33
62368 +#define IP_PROTO_ICMP6          58
62369 +#define IP_PROTO_CFTP          62
62370 +#define IP_PROTO_SATNET                64
62371 +#define IP_PROTO_MITSUBNET     65
62372 +#define IP_PROTO_RVD           66
62373 +#define IP_PROTO_IPPC          67
62374 +#define IP_PROTO_SATMON                69
62375 +#define IP_PROTO_IPCV          71
62376 +#define IP_PROTO_BRSATMON      76
62377 +#define IP_PROTO_WBMON         78
62378 +#define IP_PROTO_WBEXPAK       79
62379 +#define IP_PROTO_SCTP          132
62380 +
62381 +#define IP_PROTO_NONE          257
62382 +#define IP_PROTO_TRANSP                258
62383 +#define IP_PROTO_TCP_OR_UDP    256
62384 +#define IP_PROTO_PAYLOAD       259
62385 +
62386 +#define        IPOPT_EOL               0       /* end of option list */
62387 +#define        IPOPT_NOP               1       /* no operation */
62388 +#define IPOPT_RR               7       /* record packet route */
62389 +#define IPOPT_TS               68      /* timestamp */
62390 +#define IPOPT_SECURITY         130     /* provide s,c,h,tcc */
62391 +#define IPOPT_LSRR             131     /* loose source route */
62392 +#define IPOPT_SATID            136     /* satnet id */
62393 +#define IPOPT_SSRR             137     /* strict source route */
62394 +#define IPOPT_RA               148     /* router alert */
62395 +
62396 +#define IP_ISFRAG(iph)   (((iph)->ip_off & htons(IP_MF | IP_OFFMASK)) != 0)
62397 +#define IP_FIRSTFRAG(iph) (((iph)->ip_off & htons(IP_OFFMASK)) == 0)
62398 +
62399 +
62400 +/* checksum functions */
62401 +
62402 +#if !CLICK_LINUXMODULE
62403 +uint16_t click_in_cksum(const unsigned char *addr, int len);
62404 +uint16_t click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len);
62405 +#else
62406 +# define click_in_cksum(addr, len) \
62407 +               ip_compute_csum((unsigned char *)(addr), (len))
62408 +# define click_in_cksum_pseudohdr_raw(csum, src, dst, proto, transport_len) \
62409 +               csum_tcpudp_magic((src), (dst), (transport_len), (proto), ~(csum) & 0xFFFF)
62410 +#endif
62411 +uint16_t click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len);
62412 +
62413 +/* use if you're not sure whether there are source routing options */
62414 +static inline uint16_t
62415 +click_in_cksum_pseudohdr(uint32_t csum, const struct click_ip *iph,
62416 +                        int transport_len)
62417 +{
62418 +    if (iph->ip_hl == 5)
62419 +       return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, transport_len);
62420 +    else
62421 +       return click_in_cksum_pseudohdr_hard(csum, iph, transport_len);
62422 +}
62423 +
62424 +static inline void
62425 +click_update_in_cksum(uint16_t *csum, uint16_t old_hw, uint16_t new_hw)
62426 +{
62427 +    /* incrementally update IP checksum according to RFC1624:
62428 +       new_sum = ~(~old_sum + ~old_halfword + new_halfword) */
62429 +    uint32_t sum = (~*csum & 0xFFFF) + (~old_hw & 0xFFFF) + new_hw;
62430 +    sum = (sum & 0xFFFF) + (sum >> 16);
62431 +    *csum = ~(sum + (sum >> 16));
62432 +}
62433 +
62434 +CLICK_CXX_UNPROTECT
62435 +#include <click/cxxunprotect.h>
62436 +#endif
62437 diff -Nurb click-1.6.0/inst/include/clicknet/ip6.h click-1.6.0-27/inst/include/clicknet/ip6.h
62438 --- click-1.6.0/inst/include/clicknet/ip6.h     1969-12-31 19:00:00.000000000 -0500
62439 +++ click-1.6.0-27/inst/include/clicknet/ip6.h  2009-02-05 10:20:41.000000000 -0500
62440 @@ -0,0 +1,85 @@
62441 +/* -*- mode: c; c-basic-offset: 4 -*- */
62442 +#ifndef CLICKNET_IP6_H
62443 +#define CLICKNET_IP6_H
62444 +#include <clicknet/ip.h>
62445 +#undef s6_addr
62446 +#undef s6_addr16
62447 +#undef s6_addr32
62448 +#undef s6_addr64
62449 +
62450 +/*
62451 + * <clicknet/ip6.h> -- our own definitions of IP6 headers
62452 + * based on RFC 2460
62453 + */
62454 +
62455 +/* IPv6 address , same as from /usr/include/netinet/in.h  */
62456 +struct click_in6_addr {
62457 +    union {
62458 +       uint8_t         u6_addr8[16];
62459 +       uint16_t        u6_addr16[8];
62460 +       uint32_t        u6_addr32[4];
62461 +#ifdef HAVE_INT64_TYPES
62462 +       uint64_t        u6_addr64[2];
62463 +#endif
62464 +    } in6_u;
62465 +#define s6_addr in6_u.u6_addr8
62466 +#define s6_addr16 in6_u.u6_addr16
62467 +#define s6_addr32 in6_u.u6_addr32
62468 +#define s6_addr64 in6_u.u6_addr64
62469 +};
62470 +
62471 +struct click_ip6 {
62472 +    union {
62473 +       uint32_t ip6_un1_flow;          /* 0-3   version, class, flow label */
62474 +       struct {
62475 +#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
62476 +           unsigned ip6_un2_tc : 4;    /* 0     top of traffic class */
62477 +           unsigned ip6_un2_v : 4;     /*       version == 6 */
62478 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
62479 +           unsigned ip6_un2_v : 4;     /* 0     version == 6 */
62480 +           unsigned ip6_un2_tc : 4;    /*       top of traffic class */
62481 +#else
62482 +# error "unknown endianness!"
62483 +#endif
62484 +           uint8_t ip6_un2_flow[3];
62485 +       } ip6_un2_vfc;
62486 +    } ip6_flun;
62487 +#define ip6_v                          ip6_flun.ip6_un2_vfc.ip6_un2_v
62488 +#define ip6_tc                         ip6_flun.ip6_un2_vfc.ip6_un2_tc
62489 +#define ip6_flow                       ip6_flun.ip6_un1_flow
62490 +    uint16_t ip6_plen;                 /* 4-5   payload length */
62491 +    uint8_t ip6_nxt;                   /* 6     next header */
62492 +    uint8_t ip6_hlim;                  /* 7     hop limit  */
62493 +    struct click_in6_addr ip6_src;     /* 8-23  source address */
62494 +    struct click_in6_addr ip6_dst;     /* 24-39 dest address */
62495 +};
62496 +
62497 +#define IP6_FLOW_MASK                  0x000FFFFFU
62498 +#define IP6_FLOW_SHIFT                 0
62499 +#define IP6_CLASS_MASK                 0x0FF00000U
62500 +#define IP6_CLASS_SHIFT                        20
62501 +#define IP6_DSCP_MASK                  0x0FC00000U
62502 +#define IP6_DSCP_SHIFT                 22
62503 +#define IP6_V_MASK                     0xF0000000U
62504 +#define IP6_V_SHIFT                    28
62505 +
62506 +CLICK_DECLS
62507 +
62508 +uint16_t in6_fast_cksum(const struct click_in6_addr *saddr,
62509 +                       const struct click_in6_addr *daddr,
62510 +                       uint16_t len,
62511 +                       uint8_t proto,
62512 +                       uint16_t ori_csum,
62513 +                       const unsigned char *addr,
62514 +                       uint16_t len2);
62515 +
62516 +uint16_t in6_cksum(const struct click_in6_addr *saddr,
62517 +                  const struct click_in6_addr *daddr,
62518 +                  uint16_t len,
62519 +                  uint8_t proto,
62520 +                  uint16_t ori_csum,
62521 +                  unsigned char *addr,
62522 +                  uint16_t len2);
62523 +
62524 +CLICK_ENDDECLS
62525 +#endif
62526 diff -Nurb click-1.6.0/inst/include/clicknet/llc.h click-1.6.0-27/inst/include/clicknet/llc.h
62527 --- click-1.6.0/inst/include/clicknet/llc.h     1969-12-31 19:00:00.000000000 -0500
62528 +++ click-1.6.0-27/inst/include/clicknet/llc.h  2009-02-05 10:20:41.000000000 -0500
62529 @@ -0,0 +1,153 @@
62530 +/*
62531 + * <clicknet/llc.h> - contains the definitions for llc frames.
62532 + * It was originally taken from freebsd and modified for click use.
62533 + * John Bicket
62534 + */
62535 +
62536 +/*
62537 + * Copyright (c) 1988, 1993
62538 + *     The Regents of the University of California.  All rights reserved.
62539 + *
62540 + * Redistribution and use in source and binary forms, with or without
62541 + * modification, are permitted provided that the following conditions
62542 + * are met:
62543 + * 1. Redistributions of source code must retain the above copyright
62544 + *    notice, this list of conditions and the following disclaimer.
62545 + * 2. Redistributions in binary form must reproduce the above copyright
62546 + *    notice, this list of conditions and the following disclaimer in the
62547 + *    documentation and/or other materials provided with the distribution.
62548 + * 3. All advertising materials mentioning features or use of this software
62549 + *    must display the following acknowledgement:
62550 + *     This product includes software developed by the University of
62551 + *     California, Berkeley and its contributors.
62552 + * 4. Neither the name of the University nor the names of its contributors
62553 + *    may be used to endorse or promote products derived from this software
62554 + *    without specific prior written permission.
62555 + *
62556 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
62557 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
62558 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
62559 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
62560 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
62561 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
62562 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
62563 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
62564 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
62565 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
62566 + * SUCH DAMAGE.
62567 + *
62568 + *      @(#)if_llc.h   8.1 (Berkeley) 6/10/93
62569 + * $FreeBSD: src/sys/net/if_llc.h,v 1.7 1999/08/28 00:48:18 peter Exp $
62570 + */
62571 +
62572 +#ifndef CLICKNET_LLC_H
62573 +#define CLICKNET_LLC_H
62574 +
62575 +/*
62576 + * IEEE 802.2 Link Level Control headers, for use in conjunction with
62577 + * 802.{3,4,5} media access control methods.
62578 + *
62579 + * Headers here do not use bit fields due to shortcomings in many
62580 + * compilers.
62581 + */
62582 +
62583 +struct click_llc {
62584 +       uint8_t llc_dsap;
62585 +       uint8_t llc_ssap;
62586 +       union {
62587 +           struct {
62588 +               uint8_t control;
62589 +               uint8_t format_id;
62590 +               uint8_t _class;
62591 +               uint8_t window_x2;
62592 +           } type_u;
62593 +           struct {
62594 +               uint8_t num_snd_x2;
62595 +               uint8_t num_rcv_x2;
62596 +           } type_i;
62597 +           struct {
62598 +               uint8_t control;
62599 +               uint8_t num_rcv_x2;
62600 +           } type_s;
62601 +           struct {
62602 +               uint8_t control;
62603 +               struct frmrinfo {
62604 +                       uint8_t rej_pdu_0;
62605 +                       uint8_t rej_pdu_1;
62606 +                       uint8_t frmr_control;
62607 +                       uint8_t frmr_control_ext;
62608 +                       uint8_t frmr_cause;
62609 +               } frmrinfo;
62610 +           } type_frmr;
62611 +           struct {
62612 +               uint8_t control;
62613 +               uint8_t org_code[3];
62614 +               uint16_t ether_type;
62615 +           } type_snap;
62616 +           struct {
62617 +               uint8_t control;
62618 +               uint8_t control_ext;
62619 +           } type_raw;
62620 +       } llc_un;
62621 +};
62622 +
62623 +#define llc_control            llc_un.type_u.control
62624 +#define        llc_control_ext        llc_un.type_raw.control_ext
62625 +#define llc_fid                llc_un.type_u.format_id
62626 +#define llc_class              llc_un.type_u._class
62627 +#define llc_window             llc_un.type_u.window_x2
62628 +#define llc_frmrinfo           llc_un.type_frmr.frmrinfo
62629 +#define llc_frmr_pdu0          llc_un.type_frmr.frmrinfo.rej_pdu0
62630 +#define llc_frmr_pdu1          llc_un.type_frmr.frmrinfo.rej_pdu1
62631 +#define llc_frmr_control       llc_un.type_frmr.frmrinfo.frmr_control
62632 +#define llc_frmr_control_ext   llc_un.type_frmr.frmrinfo.frmr_control_ext
62633 +#define llc_frmr_cause         llc_un.type_frmr.frmrinfo.frmr_control_ext
62634 +
62635 +/*
62636 + * Don't use sizeof(struct llc_un) for LLC header sizes
62637 + */
62638 +#define LLC_ISFRAMELEN 4
62639 +#define LLC_UFRAMELEN  3
62640 +#define LLC_FRMRLEN    7
62641 +
62642 +/*
62643 + * Unnumbered LLC format commands
62644 + */
62645 +#define LLC_UI         0x3
62646 +#define LLC_UI_P       0x13
62647 +#define LLC_DISC       0x43
62648 +#define        LLC_DISC_P      0x53
62649 +#define LLC_UA         0x63
62650 +#define LLC_UA_P       0x73
62651 +#define LLC_TEST       0xe3
62652 +#define LLC_TEST_P     0xf3
62653 +#define LLC_FRMR       0x87
62654 +#define        LLC_FRMR_P      0x97
62655 +#define LLC_DM         0x0f
62656 +#define        LLC_DM_P        0x1f
62657 +#define LLC_XID                0xaf
62658 +#define LLC_XID_P      0xbf
62659 +#define LLC_SABME      0x6f
62660 +#define LLC_SABME_P    0x7f
62661 +
62662 +/*
62663 + * Supervisory LLC commands
62664 + */
62665 +#define        LLC_RR          0x01
62666 +#define        LLC_RNR         0x05
62667 +#define        LLC_REJ         0x09
62668 +
62669 +/*
62670 + * Info format - dummy only
62671 + */
62672 +#define        LLC_INFO        0x00
62673 +
62674 +/*
62675 + * ISO PDTR 10178 contains among others
62676 + */
62677 +#define LLC_IP_LSAP    0x06
62678 +#define LLC_X25_LSAP   0x7e
62679 +#define LLC_SNAP_LSAP  0xaa
62680 +#define LLC_ISO_LSAP   0xfe
62681 +
62682 +#endif
62683 diff -Nurb click-1.6.0/inst/include/clicknet/ppp.h click-1.6.0-27/inst/include/clicknet/ppp.h
62684 --- click-1.6.0/inst/include/clicknet/ppp.h     1969-12-31 19:00:00.000000000 -0500
62685 +++ click-1.6.0-27/inst/include/clicknet/ppp.h  2009-02-05 10:20:41.000000000 -0500
62686 @@ -0,0 +1,69 @@
62687 +#ifndef CLICKNET_PPP_H
62688 +#define CLICKNET_PPP_H
62689 +
62690 +/*
62691 + * <clicknet/ppp.h> -- our own definition of the PPP header, borrowed from
62692 + * tcpdump
62693 + *
62694 + * Copyright 1989 by Carnegie Mellon.
62695 + *
62696 + * Permission to use, copy, modify, and distribute this program for any
62697 + * purpose and without fee is hereby granted, provided that this copyright
62698 + * and permission notice appear on all copies and supporting documentation,
62699 + * the name of Carnegie Mellon not be used in advertising or publicity
62700 + * pertaining to distribution of the program without specific prior
62701 + * permission, and notice be given in supporting documentation that copying
62702 + * and distribution is by permission of Carnegie Mellon and Stanford
62703 + * University.  Carnegie Mellon makes no representations about the
62704 + * suitability of this software for any purpose.  It is provided "as is"
62705 + * without express or implied warranty.
62706 + */
62707 +
62708 +#define PPP_ADDRESS    0xff    /* The address byte value */
62709 +#define PPP_CONTROL    0x03    /* The control byte value */
62710 +
62711 +/* Protocol numbers */
62712 +#define PPP_IP         0x0021  /* Raw IP */
62713 +#define PPP_OSI                0x0023  /* OSI Network Layer */
62714 +#define PPP_NS         0x0025  /* Xerox NS IDP */
62715 +#define PPP_DECNET     0x0027  /* DECnet Phase IV */
62716 +#define PPP_APPLE      0x0029  /* Appletalk */
62717 +#define PPP_IPX                0x002b  /* Novell IPX */
62718 +#define PPP_VJC                0x002d  /* Van Jacobson Compressed TCP/IP */
62719 +#define PPP_VJNC       0x002f  /* Van Jacobson Uncompressed TCP/IP */
62720 +#define PPP_BRPDU      0x0031  /* Bridging PDU */
62721 +#define PPP_STII       0x0033  /* Stream Protocol (ST-II) */
62722 +#define PPP_VINES      0x0035  /* Banyan Vines */
62723 +#define PPP_IPV6       0x0057  /* IPv6 */
62724 +#define        PPP_COMP        0x00fd  /* Compressed Datagram */
62725 +
62726 +#define PPP_HELLO      0x0201  /* 802.1d Hello Packets */
62727 +#define PPP_LUXCOM     0x0231  /* Luxcom */
62728 +#define PPP_SNS                0x0233  /* Sigma Network Systems */
62729 +#define PPP_MPLS_UCAST  0x0281  /* rfc 3032 */
62730 +#define PPP_MPLS_MCAST  0x0283  /* rfc 3022 */
62731 +
62732 +#define PPP_IPCP       0x8021  /* IP Control Protocol */
62733 +#define PPP_OSICP      0x8023  /* OSI Network Layer Control Protocol */
62734 +#define PPP_NSCP       0x8025  /* Xerox NS IDP Control Protocol */
62735 +#define PPP_DECNETCP   0x8027  /* DECnet Control Protocol */
62736 +#define PPP_APPLECP    0x8029  /* Appletalk Control Protocol */
62737 +#define PPP_IPXCP      0x802b  /* Novell IPX Control Protocol */
62738 +#define PPP_STIICP     0x8033  /* Strean Protocol Control Protocol */
62739 +#define PPP_VINESCP    0x8035  /* Banyan Vines Control Protocol */
62740 +#define PPP_IPV6CP     0x8057  /* IPv6 Control Protocol */
62741 +#define PPP_CCP                0x80fd  /* Compress Control Protocol */
62742 +#define PPP_MPLSCP      0x8281  /* rfc 3022 */
62743 +
62744 +#define PPP_LCP                0xc021  /* Link Control Protocol */
62745 +#define PPP_PAP                0xc023  /* Password Authentication Protocol */
62746 +#define PPP_LQM                0xc025  /* Link Quality Monitoring */
62747 +#define PPP_SPAP        0xc027
62748 +#define PPP_CHAP       0xc223  /* Challenge Handshake Authentication Protocol */
62749 +#define PPP_BACP       0xc02b  /* Bandwidth Allocation Control Protocol */
62750 +#define PPP_BAP                0xc02d  /* BAP */
62751 +#define PPP_MP         0xc03d  /* Multi-Link */
62752 +#define PPP_SPAP_OLD    0xc123
62753 +#define PPP_EAP         0xc227
62754 +
62755 +#endif
62756 diff -Nurb click-1.6.0/inst/include/clicknet/radiotap.h click-1.6.0-27/inst/include/clicknet/radiotap.h
62757 --- click-1.6.0/inst/include/clicknet/radiotap.h        1969-12-31 19:00:00.000000000 -0500
62758 +++ click-1.6.0-27/inst/include/clicknet/radiotap.h     2009-02-05 10:20:41.000000000 -0500
62759 @@ -0,0 +1,243 @@
62760 +/* $FreeBSD: src/sys/net80211/ieee80211_radiotap.h,v 1.5 2005/01/22 20:12:05 sam Exp $ */
62761 +/* $NetBSD: ieee80211_radiotap.h,v 1.10 2005/01/04 00:34:58 dyoung Exp $ */
62762 +
62763 +/*-
62764 + * Copyright (c) 2003, 2004 David Young.  All rights reserved.
62765 + *
62766 + * Redistribution and use in source and binary forms, with or without
62767 + * modification, are permitted provided that the following conditions
62768 + * are met:
62769 + * 1. Redistributions of source code must retain the above copyright
62770 + *    notice, this list of conditions and the following disclaimer.
62771 + * 2. Redistributions in binary form must reproduce the above copyright
62772 + *    notice, this list of conditions and the following disclaimer in the
62773 + *    documentation and/or other materials provided with the distribution.
62774 + * 3. The name of David Young may not be used to endorse or promote
62775 + *    products derived from this software without specific prior
62776 + *    written permission.
62777 + *
62778 + * THIS SOFTWARE IS PROVIDED BY DAVID YOUNG ``AS IS'' AND ANY
62779 + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
62780 + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
62781 + * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DAVID
62782 + * YOUNG BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
62783 + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
62784 + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
62785 + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
62786 + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
62787 + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
62788 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
62789 + * OF SUCH DAMAGE.
62790 + */
62791 +#ifndef _NET_IF_IEEE80211RADIOTAP_H_
62792 +#define _NET_IF_IEEE80211RADIOTAP_H_
62793 +
62794 +/* A generic radio capture format is desirable. There is one for
62795 + * Linux, but it is neither rigidly defined (there were not even
62796 + * units given for some fields) nor easily extensible.
62797 + *
62798 + * I suggest the following extensible radio capture format. It is
62799 + * based on a bitmap indicating which fields are present.
62800 + *
62801 + * I am trying to describe precisely what the application programmer
62802 + * should expect in the following, and for that reason I tell the
62803 + * units and origin of each measurement (where it applies), or else I
62804 + * use sufficiently weaselly language ("is a monotonically nondecreasing
62805 + * function of...") that I cannot set false expectations for lawyerly
62806 + * readers.
62807 + */
62808 +#if defined(__KERNEL__) || defined(_KERNEL)
62809 +#ifndef DLT_IEEE802_11_RADIO
62810 +#define        DLT_IEEE802_11_RADIO    127     /* 802.11 plus WLAN header */
62811 +#endif
62812 +#endif /* defined(__KERNEL__) || defined(_KERNEL) */
62813 +
62814 +/* XXX tcpdump/libpcap do not tolerate variable-length headers,
62815 + * yet, so we pad every radiotap header to 64 bytes. Ugh.
62816 + */
62817 +#define IEEE80211_RADIOTAP_HDRLEN      64
62818 +
62819 +/* The radio capture header precedes the 802.11 header. */
62820 +struct ieee80211_radiotap_header {
62821 +       u_int8_t        it_version;     /* Version 0. Only increases
62822 +                                        * for drastic changes,
62823 +                                        * introduction of compatible
62824 +                                        * new fields does not count.
62825 +                                        */
62826 +       u_int8_t        it_pad;
62827 +       u_int16_t       it_len;         /* length of the whole
62828 +                                        * header in bytes, including
62829 +                                        * it_version, it_pad,
62830 +                                        * it_len, and data fields.
62831 +                                        */
62832 +       u_int32_t       it_present;     /* A bitmap telling which
62833 +                                        * fields are present. Set bit 31
62834 +                                        * (0x80000000) to extend the
62835 +                                        * bitmap by another 32 bits.
62836 +                                        * Additional extensions are made
62837 +                                        * by setting bit 31.
62838 +                                        */
62839 +} __attribute__((__packed__));
62840 +
62841 +/* Name                                 Data type       Units
62842 + * ----                                 ---------       -----
62843 + *
62844 + * IEEE80211_RADIOTAP_TSFT              u_int64_t       microseconds
62845 + *
62846 + *      Value in microseconds of the MAC's 64-bit 802.11 Time
62847 + *      Synchronization Function timer when the first bit of the
62848 + *      MPDU arrived at the MAC. For received frames, only.
62849 + *
62850 + * IEEE80211_RADIOTAP_CHANNEL           2 x u_int16_t   MHz, bitmap
62851 + *
62852 + *      Tx/Rx frequency in MHz, followed by flags (see below).
62853 + *
62854 + * IEEE80211_RADIOTAP_FHSS              u_int16_t       see below
62855 + *
62856 + *      For frequency-hopping radios, the hop set (first byte)
62857 + *      and pattern (second byte).
62858 + *
62859 + * IEEE80211_RADIOTAP_RATE              u_int8_t        500kb/s
62860 + *
62861 + *      Tx/Rx data rate
62862 + *
62863 + * IEEE80211_RADIOTAP_DBM_ANTSIGNAL     int8_t          decibels from
62864 + *                                                      one milliwatt (dBm)
62865 + *
62866 + *      RF signal power at the antenna, decibel difference from
62867 + *      one milliwatt.
62868 + *
62869 + * IEEE80211_RADIOTAP_DBM_ANTNOISE      int8_t          decibels from
62870 + *                                                      one milliwatt (dBm)
62871 + *
62872 + *      RF noise power at the antenna, decibel difference from one
62873 + *      milliwatt.
62874 + *
62875 + * IEEE80211_RADIOTAP_DB_ANTSIGNAL      u_int8_t        decibel (dB)
62876 + *
62877 + *      RF signal power at the antenna, decibel difference from an
62878 + *      arbitrary, fixed reference.
62879 + *
62880 + * IEEE80211_RADIOTAP_DB_ANTNOISE       u_int8_t        decibel (dB)
62881 + *
62882 + *      RF noise power at the antenna, decibel difference from an
62883 + *      arbitrary, fixed reference point.
62884 + *
62885 + * IEEE80211_RADIOTAP_LOCK_QUALITY      u_int16_t       unitless
62886 + *
62887 + *      Quality of Barker code lock. Unitless. Monotonically
62888 + *      nondecreasing with "better" lock strength. Called "Signal
62889 + *      Quality" in datasheets.  (Is there a standard way to measure
62890 + *      this?)
62891 + *
62892 + * IEEE80211_RADIOTAP_TX_ATTENUATION    u_int16_t       unitless
62893 + *
62894 + *      Transmit power expressed as unitless distance from max
62895 + *      power set at factory calibration.  0 is max power.
62896 + *      Monotonically nondecreasing with lower power levels.
62897 + *
62898 + * IEEE80211_RADIOTAP_DB_TX_ATTENUATION u_int16_t       decibels (dB)
62899 + *
62900 + *      Transmit power expressed as decibel distance from max power
62901 + *      set at factory calibration.  0 is max power.  Monotonically
62902 + *      nondecreasing with lower power levels.
62903 + *
62904 + * IEEE80211_RADIOTAP_DBM_TX_POWER      int8_t          decibels from
62905 + *                                                      one milliwatt (dBm)
62906 + *
62907 + *      Transmit power expressed as dBm (decibels from a 1 milliwatt
62908 + *      reference). This is the absolute power level measured at
62909 + *      the antenna port.
62910 + *
62911 + * IEEE80211_RADIOTAP_FLAGS             u_int8_t        bitmap
62912 + *
62913 + *      Properties of transmitted and received frames. See flags
62914 + *      defined below.
62915 + *
62916 + * IEEE80211_RADIOTAP_ANTENNA           u_int8_t        antenna index
62917 + *
62918 + *      Unitless indication of the Rx/Tx antenna for this packet.
62919 + *      The first antenna is antenna 0.
62920 + *
62921 + * IEEE80211_RADIOTAP_RX_FLAGS          u_int16_t       bitmap
62922 + *
62923 + *     Properties of received frames. See flags defined below.
62924 + *
62925 + * IEEE80211_RADIOTAP_TX_FLAGS          u_int16_t       bitmap
62926 + *
62927 + *     Properties of transmitted frames. See flags defined below.
62928 + *
62929 + * IEEE80211_RADIOTAP_RTS_RETRIES       u_int8_t        data
62930 + *
62931 + *     Number of rts retries a transmitted frame used.
62932 + * 
62933 + * IEEE80211_RADIOTAP_DATA_RETRIES      u_int8_t        data
62934 + *
62935 + *     Number of unicast retries a transmitted frame used.
62936 + * 
62937 + */
62938 +enum ieee80211_radiotap_type {
62939 +       IEEE80211_RADIOTAP_TSFT = 0,
62940 +       IEEE80211_RADIOTAP_FLAGS = 1,
62941 +       IEEE80211_RADIOTAP_RATE = 2,
62942 +       IEEE80211_RADIOTAP_CHANNEL = 3,
62943 +       IEEE80211_RADIOTAP_FHSS = 4,
62944 +       IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5,
62945 +       IEEE80211_RADIOTAP_DBM_ANTNOISE = 6,
62946 +       IEEE80211_RADIOTAP_LOCK_QUALITY = 7,
62947 +       IEEE80211_RADIOTAP_TX_ATTENUATION = 8,
62948 +       IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9,
62949 +       IEEE80211_RADIOTAP_DBM_TX_POWER = 10,
62950 +       IEEE80211_RADIOTAP_ANTENNA = 11,
62951 +       IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12,
62952 +       IEEE80211_RADIOTAP_DB_ANTNOISE = 13,
62953 +       IEEE80211_RADIOTAP_RX_FLAGS = 14,
62954 +       IEEE80211_RADIOTAP_TX_FLAGS = 15,
62955 +       IEEE80211_RADIOTAP_RTS_RETRIES = 16,
62956 +       IEEE80211_RADIOTAP_DATA_RETRIES = 17,
62957 +       IEEE80211_RADIOTAP_EXT = 31
62958 +};
62959 +
62960 +#if !defined(__KERNEL__) && !defined(_KERNEL)
62961 +/* Channel flags. */
62962 +#define IEEE80211_CHAN_TURBO    0x0010  /* Turbo channel */
62963 +#define IEEE80211_CHAN_CCK      0x0020  /* CCK channel */
62964 +#define IEEE80211_CHAN_OFDM     0x0040  /* OFDM channel */
62965 +#define IEEE80211_CHAN_2GHZ     0x0080  /* 2 GHz spectrum channel. */
62966 +#define IEEE80211_CHAN_5GHZ     0x0100  /* 5 GHz spectrum channel */
62967 +#define IEEE80211_CHAN_PASSIVE  0x0200  /* Only passive scan allowed */
62968 +#define        IEEE80211_CHAN_DYN      0x0400  /* Dynamic CCK-OFDM channel */
62969 +#define        IEEE80211_CHAN_GFSK     0x0800  /* GFSK channel (FHSS PHY) */
62970 +#endif /* !defined(__KERNEL__) && !defined(_KERNEL) */
62971 +
62972 +/* For IEEE80211_RADIOTAP_FLAGS */
62973 +#define        IEEE80211_RADIOTAP_F_CFP        0x01    /* sent/received
62974 +                                                * during CFP
62975 +                                                */
62976 +#define        IEEE80211_RADIOTAP_F_SHORTPRE   0x02    /* sent/received
62977 +                                                * with short
62978 +                                                * preamble
62979 +                                                */
62980 +#define        IEEE80211_RADIOTAP_F_WEP        0x04    /* sent/received
62981 +                                                * with WEP encryption
62982 +                                                */
62983 +#define        IEEE80211_RADIOTAP_F_FRAG       0x08    /* sent/received
62984 +                                                * with fragmentation
62985 +                                                */
62986 +#define        IEEE80211_RADIOTAP_F_FCS        0x10    /* frame includes FCS */
62987 +#define        IEEE80211_RADIOTAP_F_DATAPAD    0x20    /* frame has padding between
62988 +                                                * 802.11 header and payload
62989 +                                                * (to 32-bit boundary)
62990 +                                                */
62991 +/* For IEEE80211_RADIOTAP_RX_FLAGS */
62992 +#define        IEEE80211_RADIOTAP_F_RX_BADFCS  0x0001  /* frame failed crc check */
62993 +
62994 +/* For IEEE80211_RADIOTAP_TX_FLAGS */
62995 +#define        IEEE80211_RADIOTAP_F_TX_FAIL    0x0001  /* failed due to excessive 
62996 +                                                * retries */
62997 +#define        IEEE80211_RADIOTAP_F_TX_CTS     0x0002  /* used cts 'protection' */
62998 +#define        IEEE80211_RADIOTAP_F_TX_RTS     0x0004  /* used rts/cts handshake */
62999 +
63000 +
63001 +
63002 +#endif /* _NET_IF_IEEE80211RADIOTAP_H_ */
63003 diff -Nurb click-1.6.0/inst/include/clicknet/rfc1483.h click-1.6.0-27/inst/include/clicknet/rfc1483.h
63004 --- click-1.6.0/inst/include/clicknet/rfc1483.h 1969-12-31 19:00:00.000000000 -0500
63005 +++ click-1.6.0-27/inst/include/clicknet/rfc1483.h      2009-02-05 10:20:41.000000000 -0500
63006 @@ -0,0 +1,20 @@
63007 +/* -*- mode: c; c-basic-offset: 4 -*- */
63008 +#ifndef CLICKNET_RFC1483_H
63009 +#define CLICKNET_RFC1483_H
63010 +
63011 +/*
63012 + * <clicknet/rfc1483.h>
63013 + */
63014 +
63015 +struct click_rfc1483 {
63016 +    uint8_t    dsap;
63017 +    uint8_t    ssap;
63018 +    uint8_t    ui;
63019 +    uint8_t    orgcode[3];
63020 +    uint16_t   ether_type;
63021 +};
63022 +
63023 +#define RFC1483_SNAP_IP_EXPECTED       "\xAA\xAA\x03\x00\x00\x00"
63024 +#define RFC1483_SNAP_IP_EXPECTED_LEN   6
63025 +
63026 +#endif
63027 diff -Nurb click-1.6.0/inst/include/clicknet/tcp.h click-1.6.0-27/inst/include/clicknet/tcp.h
63028 --- click-1.6.0/inst/include/clicknet/tcp.h     1969-12-31 19:00:00.000000000 -0500
63029 +++ click-1.6.0-27/inst/include/clicknet/tcp.h  2009-02-05 10:20:41.000000000 -0500
63030 @@ -0,0 +1,78 @@
63031 +/* -*- c-basic-offset: 4 -*- */
63032 +#ifndef CLICKNET_TCP_H
63033 +#define CLICKNET_TCP_H
63034 +
63035 +/*
63036 + * <clicknet/tcp.h> -- TCP header definitions, based on one of the BSDs.
63037 + *
63038 + * Relevant RFCs include:
63039 + *   RFC793    Transmission Control Protocol
63040 + *   RFC1323   TCP Extensions for High Performance
63041 + *   RFC2018   TCP Selective Acknowledgement Options
63042 + *   RFC2581   TCP Congestion Control
63043 + *   RFC2883   An Extension to the Selective Acknowledgement (SACK) Option
63044 + *             for TCP
63045 + *   RFC3168   The Addition of Explicit Congestion Notification (ECN) to IP
63046 + *   RFC3540   Robust Explicit Congestion Notification (ECN) Signaling with
63047 + *             Nonces
63048 + * among many others.  See "A Roadmap for TCP Specification Documents",
63049 + * currently an Internet-Draft.
63050 + */
63051 +
63052 +typedef        uint32_t tcp_seq_t;
63053 +
63054 +struct click_tcp {
63055 +    uint16_t   th_sport;               /* 0-1   source port                 */
63056 +    uint16_t   th_dport;               /* 2-3   destination port            */
63057 +    tcp_seq_t  th_seq;                 /* 4-7   sequence number             */
63058 +    tcp_seq_t  th_ack;                 /* 8-11  acknowledgement number      */
63059 +#if CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
63060 +    unsigned   th_flags2 : 4;          /* 12    more flags                  */
63061 +    unsigned   th_off : 4;             /*       data offset in words        */
63062 +#elif CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
63063 +    unsigned   th_off : 4;             /* 12    data offset in words        */
63064 +    unsigned   th_flags2 : 4;          /*       more flags                  */
63065 +#else
63066 +#   error "unknown byte order"
63067 +#endif
63068 +#define TH_NS          0x01            /*       in 'th_flags2'              */
63069 +    uint8_t    th_flags;               /* 13    flags                       */
63070 +#define        TH_FIN          0x01
63071 +#define        TH_SYN          0x02
63072 +#define        TH_RST          0x04
63073 +#define        TH_PUSH         0x08
63074 +#define        TH_ACK          0x10
63075 +#define        TH_URG          0x20
63076 +#define        TH_ECE          0x40
63077 +#define        TH_CWR          0x80
63078 +    uint16_t   th_win;                 /* 14-15 window                      */
63079 +    uint16_t   th_sum;                 /* 16-17 checksum                    */
63080 +    uint16_t   th_urp;                 /* 18-19 urgent pointer              */
63081 +};
63082 +
63083 +/*
63084 + * TCP sequence number comparisons
63085 + */
63086 +
63087 +#define SEQ_LT(x,y)    ((int)((x)-(y)) < 0)
63088 +#define SEQ_LEQ(x,y)   ((int)((x)-(y)) <= 0)
63089 +#define SEQ_GT(x,y)    ((int)((x)-(y)) > 0)
63090 +#define SEQ_GEQ(x,y)   ((int)((x)-(y)) >= 0)
63091 +
63092 +/*
63093 + * TCP options
63094 + */
63095 +
63096 +#define TCPOPT_EOL             0
63097 +#define TCPOPT_NOP             1
63098 +#define TCPOPT_MAXSEG          2
63099 +#define TCPOLEN_MAXSEG         4
63100 +#define TCPOPT_WSCALE          3
63101 +#define TCPOLEN_WSCALE         3
63102 +#define TCPOPT_SACK_PERMITTED  4
63103 +#define TCPOLEN_SACK_PERMITTED 2
63104 +#define TCPOPT_SACK            5
63105 +#define TCPOPT_TIMESTAMP       8
63106 +#define TCPOLEN_TIMESTAMP      10
63107 +
63108 +#endif
63109 diff -Nurb click-1.6.0/inst/include/clicknet/udp.h click-1.6.0-27/inst/include/clicknet/udp.h
63110 --- click-1.6.0/inst/include/clicknet/udp.h     1969-12-31 19:00:00.000000000 -0500
63111 +++ click-1.6.0-27/inst/include/clicknet/udp.h  2009-02-05 10:20:41.000000000 -0500
63112 @@ -0,0 +1,18 @@
63113 +#ifndef CLICKNET_UDP_H
63114 +#define CLICKNET_UDP_H
63115 +
63116 +/*
63117 + * <clicknet/udp.h> -- UDP header definitions, based on one of the BSDs.
63118 + *
63119 + * Relevant RFCs include:
63120 + *   RFC768    User Datagram Protocol
63121 + */
63122 +
63123 +struct click_udp {
63124 +    uint16_t   uh_sport;               /* 0-1   source port                 */
63125 +    uint16_t   uh_dport;               /* 2-3   destination port            */
63126 +    uint16_t   uh_ulen;                /* 4-5   UDP length                  */
63127 +    uint16_t   uh_sum;                 /* 6-7   checksum                    */
63128 +};
63129 +
63130 +#endif
63131 diff -Nurb click-1.6.0/inst/include/clicknet/wifi.h click-1.6.0-27/inst/include/clicknet/wifi.h
63132 --- click-1.6.0/inst/include/clicknet/wifi.h    1969-12-31 19:00:00.000000000 -0500
63133 +++ click-1.6.0-27/inst/include/clicknet/wifi.h 2009-02-05 10:20:41.000000000 -0500
63134 @@ -0,0 +1,410 @@
63135 +/*
63136 + * <clicknet/wifi.h> - contains the definitions for 802.11 frames. 
63137 + * It was originally taken from freebsd and modified for click use.
63138 + * John Bicket
63139 + */
63140 +
63141 +/*     $NetBSD: if_ieee80211.h,v 1.5 2000/07/21 04:47:40 onoe Exp $    */
63142 +/* $FreeBSD: src/sys/net/if_ieee80211.h,v 1.3.2.3 2001/07/04 00:12:38 brooks Exp $ */
63143 +
63144 +#ifndef _CLICKNET_WIFI_H_
63145 +#define _CLICKNET_WIFI_H_
63146 +
63147 +
63148 +#define WIFI_EXTRA_MAGIC  0x7492001
63149 +
63150 +enum {
63151 +  WIFI_EXTRA_TX                        = (1<<0), /* packet transmission */
63152 +  WIFI_EXTRA_TX_FAIL           = (1<<1), /* transmission failed */
63153 +  WIFI_EXTRA_TX_USED_ALT_RATE  = (1<<2), /* used alternate bitrate */
63154 +  WIFI_EXTRA_RX_ERR            = (1<<3), /* failed crc check */
63155 +  WIFI_EXTRA_RX_MORE           = (1<<4), /* first part of a fragmented skb */
63156 +  WIFI_EXTRA_NO_SEQ            = (1<<5),
63157 +  WIFI_EXTRA_NO_TXF            = (1<<6),
63158 +  WIFI_EXTRA_DO_RTS_CTS                = (1<<7),
63159 +  WIFI_EXTRA_DO_CTS            = (1<<8)
63160 +};
63161 +
63162 +
63163 +
63164 +CLICK_SIZE_PACKED_STRUCTURE(
63165 +struct click_wifi_extra {,
63166 +  uint32_t magic;
63167 +  uint32_t flags;
63168 +
63169 +  uint8_t rssi;
63170 +  uint8_t silence;
63171 +  uint8_t power;
63172 +  uint8_t pad;
63173 +
63174 +  uint8_t rate;                        /* bitrate in Mbps*2 */
63175 +  uint8_t rate1;               /* bitrate in Mbps*2 */
63176 +  uint8_t rate2;               /* bitrate in Mbps*2 */
63177 +  uint8_t rate3;               /* bitrate in Mbps*2 */
63178 +
63179 +  uint8_t max_tries;
63180 +  uint8_t max_tries1;
63181 +  uint8_t max_tries2;
63182 +  uint8_t max_tries3;
63183 +
63184 +  uint8_t virt_col;
63185 +  uint8_t retries;
63186 +  uint16_t len;
63187 +});
63188 +
63189 +
63190 +/*
63191 + * generic definitions for IEEE 802.11 frames
63192 + */
63193 +#define WIFI_ADDR_LEN 6
63194 +
63195 +CLICK_SIZE_PACKED_STRUCTURE(
63196 +struct click_wifi {,
63197 +       uint8_t         i_fc[2];
63198 +       uint8_t         i_dur[2];
63199 +       uint8_t         i_addr1[WIFI_ADDR_LEN];
63200 +       uint8_t         i_addr2[WIFI_ADDR_LEN];
63201 +       uint8_t         i_addr3[WIFI_ADDR_LEN];
63202 +       uint8_t         i_seq[2];
63203 +});
63204 +
63205 +#define        WIFI_FC0_VERSION_MASK           0x03
63206 +#define        WIFI_FC0_VERSION_0              0x00
63207 +#define        WIFI_FC0_TYPE_MASK              0x0c
63208 +#define        WIFI_FC0_TYPE_MGT               0x00
63209 +#define        WIFI_FC0_TYPE_CTL               0x04
63210 +#define        WIFI_FC0_TYPE_DATA              0x08
63211 +
63212 +#define        WIFI_FC0_SUBTYPE_MASK           0xf0
63213 +/* for TYPE_MGT */
63214 +#define        WIFI_FC0_SUBTYPE_ASSOC_REQ      0x00
63215 +#define        WIFI_FC0_SUBTYPE_ASSOC_RESP     0x10
63216 +#define        WIFI_FC0_SUBTYPE_REASSOC_REQ    0x20
63217 +#define        WIFI_FC0_SUBTYPE_REASSOC_RESP   0x30
63218 +#define        WIFI_FC0_SUBTYPE_PROBE_REQ      0x40
63219 +#define        WIFI_FC0_SUBTYPE_PROBE_RESP     0x50
63220 +#define        WIFI_FC0_SUBTYPE_BEACON         0x80
63221 +#define        WIFI_FC0_SUBTYPE_ATIM           0x90
63222 +#define        WIFI_FC0_SUBTYPE_DISASSOC       0xa0
63223 +#define        WIFI_FC0_SUBTYPE_AUTH           0xb0
63224 +#define        WIFI_FC0_SUBTYPE_DEAUTH         0xc0
63225 +/* for TYPE_CTL */
63226 +#define        WIFI_FC0_SUBTYPE_PS_POLL        0xa0
63227 +#define        WIFI_FC0_SUBTYPE_RTS            0xb0
63228 +#define        WIFI_FC0_SUBTYPE_CTS            0xc0
63229 +#define        WIFI_FC0_SUBTYPE_ACK            0xd0
63230 +#define        WIFI_FC0_SUBTYPE_CF_END         0xe0
63231 +#define        WIFI_FC0_SUBTYPE_CF_END_ACK     0xf0
63232 +/* for TYPE_DATA (bit combination) */
63233 +#define WIFI_FC0_SUBTYPE_DATA          0x00
63234 +#define        WIFI_FC0_SUBTYPE_CF_ACK         0x10
63235 +#define        WIFI_FC0_SUBTYPE_CF_POLL        0x20
63236 +#define        WIFI_FC0_SUBTYPE_CF_ACPL        0x30
63237 +#define        WIFI_FC0_SUBTYPE_NODATA         0x40
63238 +#define        WIFI_FC0_SUBTYPE_CFACK          0x50
63239 +#define        WIFI_FC0_SUBTYPE_CFPOLL         0x60
63240 +#define        WIFI_FC0_SUBTYPE_CF_ACK_CF_ACK  0x70
63241 +#define WIFI_FC0_SUBTYPE_QOS               0x80
63242 +#define WIFI_FC0_SUBTYPE_QOS_NULL          0xc0
63243 +
63244 +
63245 +#define        WIFI_FC1_DIR_MASK               0x03
63246 +#define        WIFI_FC1_DIR_NODS               0x00    /* STA->STA */
63247 +#define        WIFI_FC1_DIR_TODS               0x01    /* STA->AP  */
63248 +#define        WIFI_FC1_DIR_FROMDS             0x02    /* AP ->STA */
63249 +#define        WIFI_FC1_DIR_DSTODS             0x03    /* AP ->AP  */
63250 +
63251 +#define        WIFI_FC1_MORE_FRAG              0x04
63252 +#define        WIFI_FC1_RETRY                  0x08
63253 +#define        WIFI_FC1_PWR_MGT                0x10
63254 +#define        WIFI_FC1_MORE_DATA              0x20
63255 +#define        WIFI_FC1_WEP                    0x40
63256 +#define        WIFI_FC1_ORDER                  0x80
63257 +
63258 +#define        WIFI_NWID_LEN                   32
63259 +
63260 +/*
63261 + * BEACON management packets
63262 + *
63263 + *     octect timestamp[8]
63264 + *     octect beacon interval[2]
63265 + *     octect capability information[2]
63266 + *     information element
63267 + *             octect elemid
63268 + *             octect length
63269 + *             octect information[length]
63270 + */
63271 +typedef uint8_t *      wifi_mgt_beacon_t;
63272 +
63273 +#define WIFI_BEACON_INTERVAL(beacon) \
63274 +       (beacon[8] + (beacon[9] << 8))
63275 +#define WIFI_BEACON_CAPABILITY(beacon) \
63276 +       (beacon[10] + (beacon[11] << 8))
63277 +
63278 +#define        WIFI_CAPINFO_ESS                0x01
63279 +#define        WIFI_CAPINFO_IBSS               0x02
63280 +#define        WIFI_CAPINFO_CF_POLLABLE        0x04
63281 +#define        WIFI_CAPINFO_CF_POLLREQ         0x08
63282 +#define        WIFI_CAPINFO_PRIVACY            0x10
63283 +
63284 +
63285 +
63286 +#define WIFI_MAX_RETRIES 11
63287 +
63288 +#define WIFI_QOS_HAS_SEQ(wh) \
63289 +        (((wh)->i_fc[0] & \
63290 +          (WIFI_FC0_TYPE_MASK | WIFI_FC0_SUBTYPE_QOS)) == \
63291 +          (WIFI_FC0_TYPE_DATA | WIFI_FC0_SUBTYPE_QOS))
63292 +
63293 +
63294 +/*
63295 + * Management information elements
63296 + */
63297 +struct wifi_information {
63298 +       char    ssid[WIFI_NWID_LEN+1];
63299 +       struct rates {
63300 +               uint8_t         *p;
63301 +       } rates;
63302 +       struct fh {
63303 +               uint16_t        dwell;
63304 +               uint8_t         set;
63305 +               uint8_t         pattern;
63306 +               uint8_t         index;
63307 +       } fh;
63308 +       struct ds {
63309 +               uint8_t         channel;
63310 +       } ds;
63311 +       struct cf {
63312 +               uint8_t         count;
63313 +               uint8_t         period;
63314 +               uint8_t         maxdur[2];
63315 +               uint8_t         dur[2];
63316 +       } cf;
63317 +       struct tim {
63318 +               uint8_t         count;
63319 +               uint8_t         period;
63320 +               uint8_t         bitctl;
63321 +               /* uint8_t      pvt[251]; The driver never needs to use this */
63322 +       } tim;
63323 +       struct ibss {
63324 +               uint16_t        atim;
63325 +       } ibss;
63326 +       struct challenge {
63327 +               uint8_t         *p;
63328 +               uint8_t         len;
63329 +       } challenge;
63330 +};
63331 +
63332 +#define WIFI_RATES_MAXSIZE     15
63333 +#define WIFI_NWID_MAXSIZE      32
63334 +
63335 +enum {
63336 +  WIFI_ELEMID_SSID             = 0,
63337 +  WIFI_ELEMID_RATES            = 1,
63338 +  WIFI_ELEMID_FHPARMS          = 2,
63339 +  WIFI_ELEMID_DSPARMS          = 3,
63340 +  WIFI_ELEMID_CFPARMS          = 4,
63341 +  WIFI_ELEMID_TIM              = 5,
63342 +  WIFI_ELEMID_IBSSPARMS                = 6,
63343 +  WIFI_ELEMID_CHALLENGE                = 16,
63344 +  WIFI_ELEMID_ERP              = 42,
63345 +  WIFI_ELEMID_XRATES           = 50,
63346 +  WIFI_ELEMID_VENDOR           = 221
63347 +};
63348 +/*
63349 + * AUTH management packets
63350 + *
63351 + *     octect algo[2]
63352 + *     octect seq[2]
63353 + *     octect status[2]
63354 + *     octect chal.id
63355 + *     octect chal.length
63356 + *     octect chal.text[253]
63357 + */
63358 +typedef uint8_t *      wifi_mgt_auth_t;
63359 +
63360 +#define WIFI_AUTH_ALGORITHM(auth) \
63361 +    (auth[0] + (auth[1] << 8))
63362 +#define WIFI_AUTH_TRANSACTION(auth) \
63363 +    (auth[2] + (auth[3] << 8))
63364 +#define WIFI_AUTH_STATUS(auth) \
63365 +    (auth[4] + (auth[5] << 8))
63366 +
63367 +#define        WIFI_AUTH_ALG_OPEN              0x0000
63368 +#define        WIFI_AUTH_ALG_SHARED            0x0001
63369 +
63370 +#define WIFI_AUTH_OPEN_REQUEST         1
63371 +#define WIFI_AUTH_OPEN_RESPONSE                2
63372 +
63373 +#define WIFI_AUTH_SHARED_REQUEST       1
63374 +#define WIFI_AUTH_SHARED_CHALLENGE     2
63375 +#define WIFI_AUTH_SHARED_RESPONSE      3
63376 +#define WIFI_AUTH_SHARED_PASS          4
63377 +
63378 +/*
63379 + * Reason codes
63380 + *
63381 + * Unlisted codes are reserved
63382 + */
63383 +#define        WIFI_REASON_UNSPECIFIED         1
63384 +#define        WIFI_REASON_AUTH_EXPIRE         2
63385 +#define        WIFI_REASON_AUTH_LEAVE          3
63386 +#define        WIFI_REASON_ASSOC_EXPIRE        4
63387 +#define        WIFI_REASON_ASSOC_TOOMANY       5
63388 +#define        WIFI_REASON_NOT_AUTHED          6  
63389 +#define        WIFI_REASON_NOT_ASSOCED         7
63390 +#define        WIFI_REASON_ASSOC_LEAVE         8
63391 +#define        WIFI_REASON_ASSOC_NOT_AUTHED    9
63392 +
63393 +/*
63394 + * Status code
63395 + *
63396 + * Unlisted codes are reserved
63397 + */
63398 +#define WIFI_STATUS_SUCCESS            0x0000
63399 +#define        WIFI_STATUS_UNSPECIFIED         1
63400 +#define        WIFI_STATUS_CAPINFO             10
63401 +#define        WIFI_STATUS_NOT_ASSOCED         11
63402 +#define        WIFI_STATUS_OTHER               12
63403 +#define        WIFI_STATUS_ALG                 13
63404 +#define        WIFI_STATUS_SEQUENCE            14
63405 +#define        WIFI_STATUS_CHALLENGE           15
63406 +#define        WIFI_STATUS_TIMEOUT             16
63407 +#define        WIFI_STATUS_BASIC_RATES         18
63408 +#define WIFI_STATUS_TOO_MANY_STATIONS   22
63409 +#define        WIFI_STATUS_RATES               23
63410 +#define WIFI_STATUS_SHORTSLOT_REQUIRED  25
63411 +
63412 +
63413 +#define        WIFI_WEP_KEYLEN                 5       /* 40bit */
63414 +#define        WIFI_WEP_IVLEN                  3       /* 24bit */
63415 +#define        WIFI_WEP_KIDLEN                 1       /* 1 octet */
63416 +#define        WIFI_WEP_CRCLEN                 4       /* CRC-32 */
63417 +#define        WIFI_WEP_NKID                   4       /* number of key ids */
63418 +
63419 +#define WIFI_WEP_HEADERSIZE (WIFI_WEP_IVLEN + WIFI_WEP_KIDLEN)
63420 +
63421 +
63422 +#define WIFI_WEP_NOSUP -1
63423 +#define WIFI_WEP_OFF   0
63424 +#define WIFI_WEP_ON    1
63425 +#define WIFI_WEP_MIXED 2
63426 +
63427 +#define WIFI_AUTH_NONE 0
63428 +#define WIFI_AUTH_OPEN 1
63429 +#define WIFI_AUTH_SHARED       2
63430 +
63431 +#define WIFI_POWERSAVE_NOSUP   -1
63432 +#define WIFI_POWERSAVE_OFF             0
63433 +#define WIFI_POWERSAVE_CAM             1
63434 +#define WIFI_POWERSAVE_PSP             2
63435 +#define WIFI_POWERSAVE_PSP_CAM 3
63436 +#define WIFI_POWERSAVE_ON              WIFI_POWERSAVE_CAM
63437 +
63438 +#define        WIFI_RATE_BASIC                 0x80
63439 +#define        WIFI_RATE_VAL                   0x7f
63440 +
63441 +#define WIFI_RATE_SIZE             0x08
63442 +
63443 +#define WIFI_SEQ_FRAG_MASK                 0x000f
63444 +#define WIFI_SEQ_FRAG_SHIFT                0
63445 +#define WIFI_SEQ_SEQ_MASK                  0xfff0
63446 +#define WIFI_SEQ_SEQ_SHIFT                 4
63447 +
63448 +
63449 +/*
63450 + * 802.11 protocol crypto-related definitions.
63451 + */
63452 +#define        WIFI_KEYBUF_SIZE        16
63453 +#define        WIFI_MICBUF_SIZE        (8+8)   /* space for both tx+rx keys */
63454 +
63455 +
63456 +#ifndef MAX
63457 +#define MAX(a, b) ((a) > (b) ? (a) : (b))
63458 +#endif
63459 +#ifndef MIN
63460 +#define MIN(a, b) ((a) < (b) ? (a) : (b))
63461 +#endif
63462 +
63463 +
63464 +
63465 +/* ARPHRD_IEEE80211_PRISM uses a bloated version of Prism2 RX frame header
63466 + * (from linux-wlan-ng) */
63467 +
63468 +/*
63469 + * For packet capture, define the same physical layer packet header
63470 + * structure as used in the wlan-ng driver
63471 + */
63472 +enum {
63473 +  DIDmsg_lnxind_wlansniffrm               = 0x00000044,
63474 +  DIDmsg_lnxind_wlansniffrm_hosttime      = 0x00010044,
63475 +  DIDmsg_lnxind_wlansniffrm_mactime       = 0x00020044,
63476 +  DIDmsg_lnxind_wlansniffrm_channel       = 0x00030044,
63477 +  DIDmsg_lnxind_wlansniffrm_rssi          = 0x00040044,
63478 +  DIDmsg_lnxind_wlansniffrm_sq            = 0x00050044,
63479 +  DIDmsg_lnxind_wlansniffrm_signal        = 0x00060044,
63480 +  DIDmsg_lnxind_wlansniffrm_noise         = 0x00070044,
63481 +  DIDmsg_lnxind_wlansniffrm_rate          = 0x00080044,
63482 +  DIDmsg_lnxind_wlansniffrm_istx          = 0x00090044,
63483 +  DIDmsg_lnxind_wlansniffrm_frmlen        = 0x000A0044
63484 +};
63485 +enum {
63486 +        P80211ENUM_msgitem_status_no_value      = 0x00
63487 +};
63488 +enum {
63489 +        P80211ENUM_truth_false                  = 0x00
63490 +};
63491 +
63492 +
63493 +typedef struct {
63494 +  uint32_t did;
63495 +  uint16_t status;
63496 +  uint16_t len;
63497 +  uint32_t data;
63498 +} p80211item_uint32_t;
63499 +
63500 +typedef struct {
63501 +  uint32_t msgcode;
63502 +  uint32_t msglen;
63503 +#define WLAN_DEVNAMELEN_MAX 16
63504 +  uint8_t devname[WLAN_DEVNAMELEN_MAX];
63505 +  p80211item_uint32_t hosttime;
63506 +  p80211item_uint32_t mactime;
63507 +  p80211item_uint32_t channel;
63508 +  p80211item_uint32_t rssi;
63509 +  p80211item_uint32_t sq;
63510 +  p80211item_uint32_t signal;
63511 +  p80211item_uint32_t noise;
63512 +  p80211item_uint32_t rate;
63513 +  p80211item_uint32_t istx;
63514 +  p80211item_uint32_t frmlen;
63515 +} wlan_ng_prism2_header;
63516 +
63517 +
63518 +#define LWNG_CAP_DID_BASE   (4 | (1 << 6)) /* section 4, group 1 */
63519 +#define LWNG_CAPHDR_VERSION 0x80211001
63520 +
63521 +#define WIFI_SLOT_B 20
63522 +#define WIFI_DIFS_B 50
63523 +#define WIFI_SIFS_B 10
63524 +#define WIFI_ACK_B 304
63525 +#define WIFI_PLCP_HEADER_LONG_B 192
63526 +#define WIFI_PLCP_HEADER_SHORT_B 192
63527 +
63528 +#define WIFI_SLOT_A 9
63529 +#define WIFI_DIFS_A 28
63530 +#define WIFI_SIFS_A 9
63531 +#define WIFI_ACK_A 30
63532 +#define WIFI_PLCP_HEADER_A 20
63533 +
63534 +
63535 +#define is_b_rate(b) ((b == 2) || (b == 4) || (b == 11) || (b == 22))
63536 +
63537 +#define WIFI_CW_MIN 31
63538 +#define WIFI_CW_MAX 1023
63539 +
63540 +// 6-byte LLC header (last byte is terminating NUL)
63541 +#define WIFI_LLC_HEADER                ((const uint8_t *) "\xAA\xAA\x03\x00\x00")
63542 +#define WIFI_LLC_HEADER_LEN    6
63543 +
63544 +#endif /* !_CLICKNET_WIFI_H_ */
63545 diff -Nurb click-1.6.0/inst/include/clicktool/eclasst.hh click-1.6.0-27/inst/include/clicktool/eclasst.hh
63546 --- click-1.6.0/inst/include/clicktool/eclasst.hh       1969-12-31 19:00:00.000000000 -0500
63547 +++ click-1.6.0-27/inst/include/clicktool/eclasst.hh    2009-02-05 10:20:38.000000000 -0500
63548 @@ -0,0 +1,177 @@
63549 +// -*- c-basic-offset: 4 -*-
63550 +#ifndef CLICK_ECLASST_HH
63551 +#define CLICK_ECLASST_HH
63552 +#include <click/string.hh>
63553 +#include <stddef.h>
63554 +#include <click/vector.hh>
63555 +#include <click/hashmap.hh>
63556 +#include "etraits.hh"
63557 +class ErrorHandler;
63558 +class StringAccum;
63559 +class RouterT;
63560 +class ElementT;
63561 +class VariableEnvironment;
63562 +class ElementMap;
63563 +class SynonymElementClassT;
63564 +
63565 +class ElementClassT { public:
63566 +
63567 +    ElementClassT(const String &);
63568 +    virtual ~ElementClassT();
63569 +
63570 +    static void set_base_type_factory(ElementClassT *(*factory)(const String &));
63571 +    static ElementClassT *base_type(const String &);
63572 +    static ElementClassT *tunnel_type();
63573 +
63574 +    void use()                         { _use_count++; }
63575 +    void unuse()                       { if (--_use_count <= 0) delete this; }
63576 +
63577 +    const String &name() const         { return _name; }
63578 +    const char *printable_name_c_str();
63579 +    virtual String landmark() const    { return String(); }
63580 +
63581 +    // 'primitive' means 'not tunnel, not compound, not synonym'.
63582 +    virtual bool primitive() const     { return true; }
63583 +    bool tunnel() const                        { return this == tunnel_type(); }
63584 +    
63585 +    const ElementTraits &traits() const;
63586 +    virtual const ElementTraits *find_traits() const;
63587 +
63588 +    const String &port_count_code() const;
63589 +    const String &processing_code() const;
63590 +    const String &flow_code() const;
63591 +    bool requires(const String &) const;
63592 +    bool provides(const String &) const;
63593 +    const String &package() const;
63594 +    const String &documentation_name() const;
63595 +    String documentation_url() const;
63596 +
63597 +    // where was this type declared?
63598 +    virtual RouterT *declaration_scope() const;
63599 +    virtual ElementClassT *overload_type() const;
63600 +    
63601 +    virtual void collect_types(HashMap<ElementClassT *, int> &) const;
63602 +    virtual void collect_overloads(Vector<ElementClassT *> &) const;
63603 +
63604 +    static ElementT *expand_element(ElementT *, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
63605 +
63606 +    virtual ElementClassT *resolve(int ninputs, int noutputs, Vector<String> &args, ErrorHandler *, const String &landmark);
63607 +    virtual ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
63608 +
63609 +    enum UnparseKind { UNPARSE_NAMED, UNPARSE_ANONYMOUS, UNPARSE_OVERLOAD };
63610 +    virtual void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *stop);
63611 +    virtual String unparse_signature() const;
63612 +    static String unparse_signature(const String &name, const Vector<String> *formal_types, int nargs, int ninputs, int noutputs);
63613 +
63614 +    virtual void *cast(const char *)           { return 0; }
63615 +    virtual SynonymElementClassT *cast_synonym() { return 0; }
63616 +    virtual RouterT *cast_router()             { return 0; }
63617 +
63618 +  private:
63619 +
63620 +    String _name;
63621 +    int _use_count;
63622 +
63623 +    mutable int _traits_version;
63624 +    mutable const ElementTraits *_traits;
63625 +    
63626 +    static ElementClassT *the_tunnel_type;
63627 +    
63628 +    ElementClassT(const ElementClassT &);
63629 +    ElementClassT &operator=(const ElementClassT &);
63630 +
63631 +    ElementT *direct_expand_element(ElementT *, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
63632 +
63633 +};
63634 +
63635 +class SynonymElementClassT : public ElementClassT { public:
63636 +
63637 +    SynonymElementClassT(const String &, ElementClassT *, RouterT *);
63638 +
63639 +    ElementClassT *synonym_of() const  { return _eclass; }
63640 +
63641 +    ElementClassT *resolve(int, int, Vector<String> &, ErrorHandler *, const String &);
63642 +    ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
63643 +    
63644 +    void collect_types(HashMap<ElementClassT *, int> &) const;
63645 +    void collect_overloads(Vector<ElementClassT *> &) const;
63646 +
63647 +    void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *);
63648 +
63649 +    bool primitive() const             { return false; }
63650 +    const ElementTraits *find_traits() const;
63651 +    
63652 +    RouterT *declaration_scope() const;
63653 +    ElementClassT *overload_type() const { return _eclass; }
63654 +    
63655 +    SynonymElementClassT *cast_synonym() { return this; }
63656 +    RouterT *cast_router();
63657 +  
63658 +  private:
63659 +
63660 +    ElementClassT *_eclass;
63661 +    RouterT *_declaration_scope;
63662 +
63663 +};
63664 +
63665 +
63666 +extern int32_t default_element_map_version;
63667 +
63668 +inline ElementClassT *
63669 +ElementClassT::tunnel_type()
63670 +{
63671 +    assert(the_tunnel_type);
63672 +    return the_tunnel_type;
63673 +}
63674 +
63675 +inline const ElementTraits &
63676 +ElementClassT::traits() const
63677 +{
63678 +    if (_traits_version != default_element_map_version) {
63679 +       _traits_version = default_element_map_version;
63680 +       _traits = find_traits();
63681 +    }
63682 +    return *_traits;
63683 +}
63684 +
63685 +inline const String &
63686 +ElementClassT::documentation_name() const
63687 +{
63688 +    return traits().documentation_name;
63689 +}
63690 +
63691 +inline const String &
63692 +ElementClassT::port_count_code() const
63693 +{
63694 +    return traits().port_count_code;
63695 +}
63696 +
63697 +inline const String &
63698 +ElementClassT::processing_code() const
63699 +{
63700 +    return traits().processing_code;
63701 +}
63702 +
63703 +inline const String &
63704 +ElementClassT::flow_code() const
63705 +{
63706 +    return traits().flow_code;
63707 +}
63708 +
63709 +inline bool
63710 +ElementClassT::requires(const String &req) const
63711 +{
63712 +    return traits().requires(req);
63713 +}
63714 +
63715 +inline bool
63716 +ElementClassT::provides(const String &req) const
63717 +{
63718 +    return traits().provides(req);
63719 +}
63720 +
63721 +inline size_t hashcode(ElementClassT *e) {
63722 +    return CLICK_NAME(hashcode)(static_cast<void *>(e));
63723 +}
63724 +
63725 +#endif
63726 diff -Nurb click-1.6.0/inst/include/clicktool/elementmap.hh click-1.6.0-27/inst/include/clicktool/elementmap.hh
63727 --- click-1.6.0/inst/include/clicktool/elementmap.hh    1969-12-31 19:00:00.000000000 -0500
63728 +++ click-1.6.0-27/inst/include/clicktool/elementmap.hh 2009-02-05 10:20:38.000000000 -0500
63729 @@ -0,0 +1,181 @@
63730 +// -*- c-basic-offset: 4 -*-
63731 +#ifndef CLICK_ELEMENTMAP_HH
63732 +#define CLICK_ELEMENTMAP_HH
63733 +#include "etraits.hh"
63734 +
63735 +class ElementMap { public:
63736 +
63737 +    ElementMap();
63738 +    ElementMap(const String&, ErrorHandler* = 0);
63739 +    ~ElementMap();
63740 +
63741 +    static ElementMap* default_map()           { return the_element_map; }
63742 +    static void push_default(ElementMap*);
63743 +    static void pop_default();
63744 +    
63745 +    void use()                                 { _use_count++; }
63746 +    void unuse()                               { _use_count--; }
63747 +    
63748 +    int size() const                           { return _e.size(); }
63749 +    bool empty() const                         { return _e.size() == 1; }
63750 +
63751 +    const Traits& traits(const String&) const;
63752 +    const Traits& traits_at(int i) const       { return _e[i]; }
63753 +    bool has_traits(const String&) const;
63754 +    int traits_index(const String&) const;
63755 +
63756 +    bool provides_global(const String&) const;
63757 +
63758 +    int definition_index(int i) const          { return _e[i].def_index; }
63759 +    const String& source_directory(const Traits&) const;
63760 +    const String& package(const Traits&) const;
63761 +    const String& package(const String&) const;
63762 +    String documentation_url(const Traits&) const;
63763 +    
63764 +    class TraitsIterator;
63765 +    TraitsIterator begin_elements() const;
63766 +
63767 +    int add(const Traits&);
63768 +    void remove_at(int);
63769 +
63770 +    void parse(const String& data, ErrorHandler* = 0);
63771 +    void parse(const String& data, const String& package_name, ErrorHandler* = 0);
63772 +    void parse_xml(const String& data, const String& package_name, ErrorHandler*);
63773 +    bool parse_default_file(const String& default_path, ErrorHandler*);
63774 +    bool parse_requirement_files(RouterT*, const String& default_path, ErrorHandler*, String* not_found = 0);
63775 +    bool parse_all_files(RouterT*, const String& default_path, ErrorHandler*);
63776 +    static void report_file_not_found(String default_path, bool found_default, ErrorHandler*);
63777 +    String unparse(const String& package = String()) const;
63778 +    String unparse_nonxml() const;
63779 +
63780 +    int check_completeness(const RouterT*, ErrorHandler*) const;
63781 +    bool driver_indifferent(const RouterT*, int driver_mask = Driver::ALLMASK, ErrorHandler* = 0) const;
63782 +    bool driver_compatible(const RouterT*, int driver, ErrorHandler* = 0) const;
63783 +
63784 +    int driver_mask() const            { return _driver_mask; }
63785 +    void set_driver(int d)             { set_driver_mask(1 << d); }
63786 +    void set_driver_mask(int);
63787 +
63788 +  private:
63789 +
63790 +    struct Globals {
63791 +       String srcdir;
63792 +       String compile_flags;
63793 +       String package;
63794 +       String dochref;
63795 +    };
63796 +    
63797 +    Vector<Traits> _e;
63798 +    HashMap<String, int> _name_map;
63799 +
63800 +    Vector<Globals> _def;
63801 +
63802 +    int _use_count;
63803 +    int _driver_mask;
63804 +
63805 +    int get_driver_mask(const String&);
63806 +    int driver_elt_index(int) const;
63807 +
63808 +    void collect_indexes(const RouterT*, Vector<int>&, ErrorHandler*) const;
63809 +
63810 +    static ElementMap* the_element_map;
63811 +    static void bump_version();
63812 +    void incr_version() const;
63813 +
63814 +};
63815 +
63816 +extern int32_t default_element_map_version;
63817 +
63818 +
63819 +class ElementMap::TraitsIterator { public:
63820 +
63821 +    TraitsIterator(const ElementMap*, bool elements_only);
63822 +
63823 +    operator bool()                    { return _index < _emap->size(); }
63824 +    void operator++(int);
63825 +
63826 +    const ElementTraits& value() const { return _emap->traits_at(_index); }
63827 +    int traits_index() const           { return _index; }
63828 +
63829 +  private:
63830 +
63831 +    const ElementMap* _emap;
63832 +    int _index;
63833 +    bool _elements_only;
63834 +    
63835 +};
63836 +
63837 +
63838 +inline const Traits&
63839 +ElementMap::traits(const String& name) const
63840 +{
63841 +    int i = _name_map[name];
63842 +    if (!(_e[i].driver_mask & _driver_mask))
63843 +       i = driver_elt_index(i);
63844 +    return _e[i];
63845 +}
63846 +
63847 +inline bool
63848 +ElementMap::has_traits(const String& name) const
63849 +{
63850 +    int i = _name_map[name];
63851 +    if (!(_e[i].driver_mask & _driver_mask) && i > 0)
63852 +       i = driver_elt_index(i);
63853 +    return i > 0;
63854 +}
63855 +
63856 +inline int
63857 +ElementMap::traits_index(const String& name) const
63858 +{
63859 +    int i = _name_map[name];
63860 +    if (!(_e[i].driver_mask & _driver_mask) && i > 0)
63861 +       i = driver_elt_index(i);
63862 +    return i;
63863 +}
63864 +
63865 +inline const String&
63866 +ElementMap::source_directory(const ElementTraits& t) const
63867 +{
63868 +    return _def[t.def_index].srcdir;
63869 +}
63870 +
63871 +inline const String&
63872 +ElementMap::package(const ElementTraits& t) const
63873 +{
63874 +    return _def[t.def_index].package;
63875 +}
63876 +
63877 +inline const String&
63878 +ElementMap::package(const String& name) const
63879 +{
63880 +    return package(traits(name));
63881 +}
63882 +
63883 +inline void
63884 +ElementMap::bump_version()
63885 +{
63886 +    // ensure it stays positive
63887 +    default_element_map_version =
63888 +       (default_element_map_version + 1) & 0x7FFFFFFF;
63889 +}
63890 +
63891 +inline void
63892 +ElementMap::incr_version() const
63893 +{
63894 +    if (this == (const ElementMap *)the_element_map)
63895 +       bump_version();
63896 +}
63897 +
63898 +inline bool
63899 +ElementMap::provides_global(const String& req) const
63900 +{
63901 +    return _e[0].provides(req);
63902 +}
63903 +
63904 +inline ElementMap::TraitsIterator
63905 +ElementMap::begin_elements() const
63906 +{
63907 +    return TraitsIterator(this, true);
63908 +}
63909 +
63910 +#endif
63911 diff -Nurb click-1.6.0/inst/include/clicktool/elementt.hh click-1.6.0-27/inst/include/clicktool/elementt.hh
63912 --- click-1.6.0/inst/include/clicktool/elementt.hh      1969-12-31 19:00:00.000000000 -0500
63913 +++ click-1.6.0-27/inst/include/clicktool/elementt.hh   2009-02-05 10:20:38.000000000 -0500
63914 @@ -0,0 +1,208 @@
63915 +// -*- c-basic-offset: 4 -*-
63916 +#ifndef CLICK_ELEMENTT_HH
63917 +#define CLICK_ELEMENTT_HH
63918 +#include "eclasst.hh"
63919 +
63920 +struct ElementT {
63921 +    
63922 +    int flags;
63923 +
63924 +    ElementT();
63925 +    ElementT(const String &, ElementClassT *, const String &, const String & = String());
63926 +    ~ElementT();
63927 +
63928 +    RouterT *router() const            { return _owner; }
63929 +    int eindex() const                 { return _eindex; }
63930 +    
63931 +    bool live() const                  { return _type; }
63932 +    bool dead() const                  { return !_type; }
63933 +    void kill();
63934 +
63935 +    const String &name() const         { return _name; }
63936 +    const char *name_c_str() const     { return _name.c_str(); }
63937 +    bool anonymous() const             { return _name && _name[0] == ';'; }
63938 +    
63939 +    ElementClassT *type() const                { return _type; }
63940 +    String type_name() const           { return _type->name(); }
63941 +    const char *type_name_c_str() const        { return _type->printable_name_c_str(); }
63942 +    void set_type(ElementClassT *);
63943 +
63944 +    const String &config() const       { return _configuration; }
63945 +    const String &configuration() const        { return _configuration; }
63946 +    void set_config(const String &s)   { _configuration = s; }
63947 +    void set_configuration(const String &s) { _configuration = s; }
63948 +    String &config()                   { return _configuration; }
63949 +    String &configuration()            { return _configuration; }
63950 +    
63951 +    const String &landmark() const     { return _landmark; }
63952 +    void set_landmark(const String &s) { _landmark = s; }
63953 +    String &landmark()                 { return _landmark; }
63954 +    
63955 +    bool tunnel() const                { return _type==ElementClassT::tunnel_type(); }
63956 +    inline bool tunnel_connected() const;
63957 +    ElementT *tunnel_input() const     { return _tunnel_input; }
63958 +    ElementT *tunnel_output() const    { return _tunnel_output; }
63959 +
63960 +    int ninputs() const                        { return _ninputs; }
63961 +    int noutputs() const               { return _noutputs; }
63962 +    
63963 +    inline String declaration() const;
63964 +
63965 +    void *user_data() const            { return _user_data; }
63966 +    void set_user_data(void *v)                { _user_data = v; }
63967 +    void set_user_data(intptr_t v)     { _user_data = (void *)v; }
63968 +
63969 +    static bool name_ok(const String &, bool allow_anon_names = false);
63970 +    static void redeclaration_error(ErrorHandler *, const char *type, String name, const String &landmark, const String &old_landmark);
63971 +    
63972 +  private:
63973 +
63974 +    int _eindex;
63975 +    String _name;
63976 +    ElementClassT *_type;
63977 +    String _configuration;
63978 +    String _landmark;
63979 +    int _ninputs;
63980 +    int _noutputs;
63981 +    ElementT *_tunnel_input;
63982 +    ElementT *_tunnel_output;
63983 +    RouterT *_owner;
63984 +    void *_user_data;
63985 +
63986 +    ElementT(const ElementT &);
63987 +    ElementT &operator=(const ElementT &);
63988 +
63989 +    friend class RouterT;
63990 +    
63991 +};
63992 +
63993 +struct PortT {
63994 +  
63995 +    ElementT *element;
63996 +    int port;
63997 +
63998 +    PortT()                            : element(0), port(-1) { }
63999 +    PortT(ElementT *e, int p)          : element(e), port(p) { }
64000 +
64001 +    bool live() const                  { return element != 0; }
64002 +    bool dead() const                  { return element == 0; }
64003 +    RouterT *router() const            { return (element ? element->router() : 0); }
64004 +
64005 +    int eindex() const                 { return (element ? element->eindex() : -1); }
64006 +    
64007 +    int index_in(const Vector<PortT> &, int start = 0) const;
64008 +    int force_index_in(Vector<PortT> &, int start = 0) const;
64009 +
64010 +    String unparse_input() const;
64011 +    String unparse_output() const;
64012 +    
64013 +    static void sort(Vector<PortT> &);
64014 +
64015 +};
64016 +
64017 +class ConnectionT { public:
64018 +
64019 +    ConnectionT();
64020 +    ConnectionT(const PortT &, const PortT &, const String & = String());
64021 +    ConnectionT(const PortT &, const PortT &, const String &, int, int);
64022 +
64023 +    bool live() const                  { return _from.live(); }
64024 +    bool dead() const                  { return _from.dead(); }
64025 +    void kill()                                { _from.element = 0; }
64026 +    
64027 +    const PortT &from() const          { return _from; }
64028 +    const PortT &to() const            { return _to; }
64029 +    ElementT *from_element() const     { return _from.element; }
64030 +    int from_eindex() const            { return _from.eindex(); }
64031 +    int from_port() const              { return _from.port; }
64032 +    ElementT *to_element() const       { return _to.element; }
64033 +    int to_eindex() const              { return _to.eindex(); }
64034 +    int to_port() const                        { return _to.port; }
64035 +    const String &landmark() const     { return _landmark; }
64036 +
64037 +    int next_from() const              { return _next_from; }
64038 +    int next_to() const                        { return _next_to; }
64039 +    
64040 +    String unparse() const;
64041 +
64042 +  private:
64043 +
64044 +    PortT _from;
64045 +    PortT _to;
64046 +    String _landmark;
64047 +    int _next_from;
64048 +    int _next_to;
64049 +
64050 +    friend class RouterT;
64051 +    
64052 +};
64053 +
64054 +
64055 +inline void
64056 +ElementT::kill()
64057 +{
64058 +    if (_type)
64059 +       _type->unuse();
64060 +    _type = 0;
64061 +}
64062 +
64063 +inline void
64064 +ElementT::set_type(ElementClassT *t)
64065 +{
64066 +    assert(t);
64067 +    t->use();
64068 +    if (_type)
64069 +       _type->unuse();
64070 +    _type = t;
64071 +}
64072 +
64073 +inline String
64074 +ElementT::declaration() const
64075 +{
64076 +    assert(_type);
64077 +    return _name + " :: " + _type->name();
64078 +}
64079 +
64080 +inline bool
64081 +ElementT::tunnel_connected() const
64082 +{
64083 +    return _tunnel_input || _tunnel_output;
64084 +}
64085 +
64086 +inline bool
64087 +operator==(const PortT &h1, const PortT &h2)
64088 +{
64089 +    return h1.element == h2.element && h1.port == h2.port;
64090 +}
64091 +
64092 +inline bool
64093 +operator!=(const PortT &h1, const PortT &h2)
64094 +{
64095 +    return h1.element != h2.element || h1.port != h2.port;
64096 +}
64097 +
64098 +inline bool
64099 +operator<(const PortT &h1, const PortT &h2)
64100 +{
64101 +    return h1.eindex() < h2.eindex() || (h1.element == h2.element && h1.port < h2.port);
64102 +}
64103 +
64104 +inline bool
64105 +operator>(const PortT &h1, const PortT &h2)
64106 +{
64107 +    return h1.eindex() > h2.eindex() || (h1.element == h2.element && h1.port > h2.port);
64108 +}
64109 +
64110 +inline bool
64111 +operator<=(const PortT &h1, const PortT &h2)
64112 +{
64113 +    return h1.eindex() < h2.eindex() || (h1.element == h2.element && h1.port <= h2.port);
64114 +}
64115 +
64116 +inline bool
64117 +operator>=(const PortT &h1, const PortT &h2)
64118 +{
64119 +    return h1.eindex() > h2.eindex() || (h1.element == h2.element && h1.port >= h2.port);
64120 +}
64121 +
64122 +#endif
64123 diff -Nurb click-1.6.0/inst/include/clicktool/etraits.hh click-1.6.0-27/inst/include/clicktool/etraits.hh
64124 --- click-1.6.0/inst/include/clicktool/etraits.hh       1969-12-31 19:00:00.000000000 -0500
64125 +++ click-1.6.0-27/inst/include/clicktool/etraits.hh    2009-02-05 10:20:38.000000000 -0500
64126 @@ -0,0 +1,85 @@
64127 +// -*- c-basic-offset: 4 -*-
64128 +#ifndef CLICK_ETRAITS_HH
64129 +#define CLICK_ETRAITS_HH
64130 +#include <click/string.hh>
64131 +
64132 +struct Driver {
64133 +    enum {
64134 +       USERLEVEL = 0, LINUXMODULE = 1, BSDMODULE = 2, NSMODULE = 3,
64135 +       ALLMASK = 0xF, COUNT = 4
64136 +    };
64137 +    static const char *name(int);
64138 +    static const char *requirement(int);
64139 +    static int driver(const String&);
64140 +    static int driver_mask(const String&);
64141 +};
64142 +    
64143 +
64144 +struct ElementTraits {
64145 +    
64146 +    String name;
64147 +    String cxx;
64148 +    String documentation_name;
64149 +    String header_file;
64150 +    String source_file;
64151 +    String port_count_code;
64152 +    String processing_code;
64153 +    String flow_code;
64154 +    String flags;
64155 +    String methods;
64156 +    String requirements;
64157 +    String provisions;
64158 +    String libs;
64159 +    int def_index;
64160 +    int driver_mask;
64161 +    int name_next;
64162 +
64163 +    ElementTraits();
64164 +
64165 +    static const ElementTraits &null_traits()  { return the_null_traits; }
64166 +    
64167 +    bool allows_driver(int d) const    { return (driver_mask&(1<<d)) != 0; }
64168 +
64169 +    bool requires(const String &) const;
64170 +    bool provides(const String &) const;
64171 +    int flag_value(int) const;
64172 +    
64173 +    String *component(int);
64174 +    String *component(const String &);
64175 +
64176 +    void calculate_driver_mask();
64177 +
64178 +    enum {
64179 +       D_NONE,
64180 +       D_CLASS, D_CXX_CLASS, D_HEADER_FILE, D_PORT_COUNT, D_PROCESSING,
64181 +       D_FLOW_CODE, D_FLAGS, D_METHODS, D_REQUIREMENTS, D_PROVISIONS, D_LIBS,
64182 +       D_SOURCE_FILE, D_DOC_NAME,
64183 +       D_FIRST_DEFAULT = D_CLASS, D_LAST_DEFAULT = D_LIBS
64184 +    };
64185 +    static int parse_component(const String &);
64186 +    static ElementTraits make(int, ...);
64187 +
64188 +  private:
64189 +    
64190 +    static ElementTraits the_null_traits;
64191 +
64192 +    friend class ElementMap;
64193 +    
64194 +};
64195 +
64196 +typedef ElementTraits Traits;
64197 +
64198 +
64199 +inline
64200 +ElementTraits::ElementTraits()
64201 +    : def_index(0), driver_mask(Driver::ALLMASK), name_next(0)
64202 +{
64203 +}
64204 +
64205 +inline String *
64206 +ElementTraits::component(const String &s)
64207 +{
64208 +    return component(parse_component(s));
64209 +}
64210 +
64211 +#endif
64212 diff -Nurb click-1.6.0/inst/include/clicktool/lexert.hh click-1.6.0-27/inst/include/clicktool/lexert.hh
64213 --- click-1.6.0/inst/include/clicktool/lexert.hh        1969-12-31 19:00:00.000000000 -0500
64214 +++ click-1.6.0-27/inst/include/clicktool/lexert.hh     2009-02-05 10:20:38.000000000 -0500
64215 @@ -0,0 +1,145 @@
64216 +// -*- c-basic-offset: 4 -*-
64217 +#ifndef CLICK_LEXERT_HH
64218 +#define CLICK_LEXERT_HH
64219 +#include <click/error.hh>
64220 +#include <click/hashmap.hh>
64221 +#include <stdio.h>
64222 +class RouterT;
64223 +class ElementClassT;
64224 +class StringAccum;
64225 +class LexerTInfo;
64226 +class VariableEnvironment;
64227 +
64228 +enum {
64229 +    lexEOF = 0,
64230 +    lexIdent = 256,
64231 +    lexVariable,
64232 +    lexConfig,
64233 +    lexArrow,
64234 +    lex2Colon,
64235 +    lex2Bar,
64236 +    lex3Dot,
64237 +    lexTunnel,
64238 +    lexElementclass,
64239 +    lexRequire,
64240 +    lexDefine
64241 +};
64242 +
64243 +class Lexeme { public:
64244 +
64245 +    Lexeme()                           : _kind(lexEOF) { }
64246 +    Lexeme(int k, const String &s, const char *p) : _kind(k), _s(s), _pos(p) { }
64247 +    
64248 +    int kind() const                   { return _kind; }
64249 +    bool is(int k) const               { return _kind == k; }
64250 +    operator bool() const              { return _kind != lexEOF; }
64251 +    
64252 +    const String &string() const       { return _s; }
64253 +    String &string()                   { return _s; }
64254 +
64255 +    const char *pos1() const           { return _pos; }
64256 +    const char *pos2() const           { return _pos + _s.length(); }
64257 +  
64258 +  private:
64259 +  
64260 +    int _kind;
64261 +    String _s;
64262 +    const char *_pos;
64263 +
64264 +};
64265 +
64266 +class LexerT { public:
64267 +
64268 +    LexerT(ErrorHandler *, bool ignore_line_directives);
64269 +    virtual ~LexerT();
64270 +  
64271 +    void reset(const String &data, const String &filename = String());
64272 +    void clear();
64273 +    void set_lexinfo(LexerTInfo *);
64274 +    void ignore_line_directives(bool g)        { _ignore_line_directives = g; }
64275 +
64276 +    String remaining_text() const;
64277 +    void set_remaining_text(const String &);
64278 +  
64279 +    const Lexeme &lex();
64280 +    void unlex(const Lexeme &);
64281 +    Lexeme lex_config();
64282 +    String landmark() const;
64283 +  
64284 +    bool yport(int &port, const char *&pos1, const char *&pos2);
64285 +    bool yelement(int &element, bool comma_ok);
64286 +    void ydeclaration(const Lexeme &first_element = Lexeme());
64287 +    bool yconnection();
64288 +    void ycompound_arguments(RouterT *);
64289 +    void yelementclass(const char *pos1);
64290 +    void ytunnel();
64291 +    ElementClassT *ycompound(String, const char *decl_pos1, const char *name_pos1);
64292 +    void yrequire();
64293 +    void yvar();
64294 +    bool ystatement(bool nested = false);
64295 +
64296 +    RouterT *router() const            { return _router; }
64297 +    RouterT *finish(const VariableEnvironment &global_scope);
64298 +  
64299 +  protected:
64300 +  
64301 +    // lexer
64302 +    String _big_string;
64303 +  
64304 +    const char *_data;
64305 +    const char *_end;
64306 +    const char *_pos;
64307 +  
64308 +    String _filename;
64309 +    String _original_filename;
64310 +    unsigned _lineno;
64311 +    bool _ignore_line_directives;
64312 +    
64313 +    bool get_data();
64314 +    const char *skip_line(const char *);
64315 +    const char *skip_slash_star(const char *);
64316 +    const char *skip_backslash_angle(const char *);
64317 +    const char *skip_quote(const char *, char);
64318 +    const char *process_line_directive(const char *);
64319 +    Lexeme next_lexeme();
64320 +    static String lexeme_string(int);
64321 +  
64322 +    // parser
64323 +    enum { TCIRCLE_SIZE = 8 };
64324 +    Lexeme _tcircle[TCIRCLE_SIZE];
64325 +    int _tpos;
64326 +    int _tfull;
64327 +  
64328 +    // router
64329 +    RouterT *_router;
64330 +    
64331 +    int _anonymous_offset;
64332 +  
64333 +    // what names represent types? (builds up linearly)
64334 +    HashMap<String, ElementClassT *> _base_type_map;
64335 +
64336 +    // errors
64337 +    LexerTInfo *_lexinfo;
64338 +    ErrorHandler *_errh;
64339 +
64340 +    void vlerror(const char *, const char *, const String &, const char *, va_list);
64341 +    int lerror(const char *, const char *, const char *, ...);
64342 +    int lerror(const Lexeme &, const char *, ...);
64343 +    String anon_element_name(const String &) const;
64344 +
64345 +    bool expect(int, bool report_error = true);
64346 +    const char *next_pos() const;
64347 +    
64348 +    ElementClassT *element_type(const Lexeme &) const;
64349 +    ElementClassT *force_element_type(const Lexeme &);
64350 +    void ydefine(RouterT *, const String &name, const String &value, bool isformal, const Lexeme &, bool &scope_order_error);
64351 +
64352 +    LexerT(const LexerT &);
64353 +    LexerT &operator=(const LexerT &);
64354 +    int make_element(String, const Lexeme &, const char *decl_pos2, ElementClassT *, const String &, const String &);
64355 +    int make_anon_element(const Lexeme &, const char *decl_pos2, ElementClassT *, const String &, const String &);
64356 +    void connect(int f1, int p1, int p2, int f2);
64357 +  
64358 +};
64359 +
64360 +#endif
64361 diff -Nurb click-1.6.0/inst/include/clicktool/lexertinfo.hh click-1.6.0-27/inst/include/clicktool/lexertinfo.hh
64362 --- click-1.6.0/inst/include/clicktool/lexertinfo.hh    1969-12-31 19:00:00.000000000 -0500
64363 +++ click-1.6.0-27/inst/include/clicktool/lexertinfo.hh 2009-02-05 10:20:38.000000000 -0500
64364 @@ -0,0 +1,29 @@
64365 +// -*- c-basic-offset: 4 -*-
64366 +#ifndef CLICK_LEXERTINFO_HH
64367 +#define CLICK_LEXERTINFO_HH
64368 +#include "lexert.hh"
64369 +class ElementT;
64370 +class ElementClassT;
64371 +
64372 +class LexerTInfo { public:
64373 +
64374 +    LexerTInfo()               { }
64375 +    virtual ~LexerTInfo()      { }
64376 +    
64377 +    virtual void notify_comment(const char *pos1, const char *pos2);
64378 +    virtual void notify_error(const String &message, const char *pos1, const char *pos2);
64379 +    virtual void notify_line_directive(const char *pos1, const char *pos2);
64380 +    virtual void notify_keyword(const String &keyword, const char *pos1, const char *pos2);
64381 +    virtual void notify_config_string(const char *pos1, const char *pos2);
64382 +    virtual void notify_class_declaration(ElementClassT *, bool anonymous,
64383 +               const char *pos1, const char *name_pos1, const char *pos2);
64384 +    virtual void notify_class_extension(ElementClassT *, const char *pos1, const char *pos2);
64385 +    virtual void notify_class_reference(ElementClassT *, const char *pos1, const char *pos2);
64386 +    virtual void notify_element_declaration(
64387 +               ElementT *e, const char *pos1, const char *name_pos2, const char *decl_pos2);
64388 +    virtual void notify_element_reference(
64389 +               ElementT *e, const char *pos1, const char *pos2);
64390 +  
64391 +};
64392 +
64393 +#endif
64394 diff -Nurb click-1.6.0/inst/include/clicktool/processingt.hh click-1.6.0-27/inst/include/clicktool/processingt.hh
64395 --- click-1.6.0/inst/include/clicktool/processingt.hh   1969-12-31 19:00:00.000000000 -0500
64396 +++ click-1.6.0-27/inst/include/clicktool/processingt.hh        2009-02-05 10:20:38.000000000 -0500
64397 @@ -0,0 +1,187 @@
64398 +// -*- c-basic-offset: 4 -*-
64399 +#ifndef CLICK_PROCESSINGT_HH
64400 +#define CLICK_PROCESSINGT_HH
64401 +#include "routert.hh"
64402 +class ElementMap;
64403 +class Bitvector;
64404 +
64405 +class ProcessingT { public:
64406 +
64407 +    enum ProcessingCode { VAGNOSTIC = 0, VPUSH = 1, VPULL = 2 };
64408 +    static const char processing_letters[];
64409 +
64410 +    ProcessingT();
64411 +    ProcessingT(const RouterT *, ErrorHandler *);
64412 +    ProcessingT(const RouterT *, ElementMap *, ErrorHandler *);
64413 +    ProcessingT(const RouterT *, ElementMap *, bool flatten, ErrorHandler *);
64414 +    int reset(const RouterT *, ElementMap *, bool flatten, ErrorHandler *);
64415 +    void resolve_agnostics();  // change remaining AGNOSTICs to PUSH
64416 +
64417 +    int nelements() const      { return _input_pidx.size() - 1; }
64418 +    int ninput_pidx() const    { return _input_pidx.back(); }
64419 +    int noutput_pidx() const   { return _output_pidx.back(); }
64420 +
64421 +    int input_pidx(const ConnectionT &) const;
64422 +    int output_pidx(const ConnectionT &) const;
64423 +    int input_pidx(const PortT &) const;
64424 +    int output_pidx(const PortT &) const;
64425 +    int input_pidx(int ei, int p = 0) const    { return _input_pidx[ei]+p; }
64426 +    int output_pidx(int ei, int p = 0) const   { return _output_pidx[ei]+p; }
64427 +    PortT input_port(int pidx) const;
64428 +    PortT output_port(int pidx) const;
64429 +
64430 +    int input_processing(const PortT &) const;
64431 +    int output_processing(const PortT &) const;
64432 +    int input_processing(int ei, int p) const;
64433 +    int output_processing(int ei, int p) const;
64434 +    bool input_is_pull(int ei, int p) const;
64435 +    bool output_is_push(int ei, int p) const;
64436 +    const PortT &input_connection(int ei, int p) const;
64437 +    const PortT &output_connection(int ei, int p) const;
64438 +
64439 +    bool same_processing(int, int) const;
64440 +
64441 +    String processing_code(const ElementT *) const;
64442 +    
64443 +    static int forward_flow(const String &code, int input_port, int noutputs, Bitvector *, ErrorHandler * = 0);
64444 +    static int forward_flow(const PortT &, Bitvector *, ErrorHandler * = 0);
64445 +    static int backward_flow(const String &code, int output_port, int ninputs, Bitvector *, ErrorHandler * = 0);
64446 +    static int backward_flow(const PortT &, Bitvector *, ErrorHandler * = 0);
64447 +
64448 +    void set_connected_inputs(const Bitvector &, Bitvector &) const;
64449 +    void set_connected_outputs(const Bitvector &, Bitvector &) const;
64450 +    void set_connected_inputs(const PortT &, Bitvector &) const;
64451 +    void set_connected_outputs(const PortT &, Bitvector &) const;
64452 +    void set_flowed_inputs(const Bitvector &, Bitvector &, ErrorHandler* = 0) const;
64453 +    void set_flowed_outputs(const Bitvector &, Bitvector &, ErrorHandler* = 0) const;
64454 +
64455 +    void forward_reachable_inputs(Bitvector &, ErrorHandler * = 0) const;
64456 +
64457 +    String compound_processing_code() const;
64458 +    String compound_flow_code(ErrorHandler * = 0) const;
64459 +    
64460 +  private:
64461 +
64462 +    const RouterT *_router;
64463 +
64464 +    Vector<int> _input_pidx;
64465 +    Vector<int> _output_pidx;
64466 +    Vector<const ElementT *> _input_elt;
64467 +    Vector<const ElementT *> _output_elt;
64468 +    Vector<int> _input_processing;
64469 +    Vector<int> _output_processing;
64470 +    Vector<PortT> _connected_input;
64471 +    Vector<PortT> _connected_output;
64472 +
64473 +    void create_pidx(ErrorHandler *);
64474 +
64475 +    void initial_processing_for(int, ErrorHandler *);
64476 +    void initial_processing(ErrorHandler *);
64477 +    void processing_error(const ConnectionT &, int, ErrorHandler *);
64478 +    void check_processing(ErrorHandler *);
64479 +    void check_connections(ErrorHandler *);
64480 +
64481 +};
64482 +
64483 +
64484 +inline int
64485 +ProcessingT::input_pidx(const PortT &h) const
64486 +{
64487 +    assert(h.router() == _router);
64488 +    return input_pidx(h.eindex(), h.port);
64489 +}
64490 +
64491 +inline int
64492 +ProcessingT::output_pidx(const PortT &h) const
64493 +{
64494 +    assert(h.router() == _router);
64495 +    return output_pidx(h.eindex(), h.port);
64496 +}
64497 +
64498 +inline int
64499 +ProcessingT::input_pidx(const ConnectionT &c) const
64500 +{
64501 +    return input_pidx(c.to());
64502 +}
64503 +
64504 +inline int
64505 +ProcessingT::output_pidx(const ConnectionT &c) const
64506 +{
64507 +    return output_pidx(c.from());
64508 +}
64509 +
64510 +inline PortT
64511 +ProcessingT::input_port(int pidx) const
64512 +{
64513 +    const ElementT *e = _input_elt[pidx];
64514 +    return PortT(const_cast<ElementT *>(e), pidx - _input_pidx[e->eindex()]);
64515 +}
64516 +
64517 +inline PortT
64518 +ProcessingT::output_port(int pidx) const
64519 +{
64520 +    const ElementT *e = _output_elt[pidx];
64521 +    return PortT(const_cast<ElementT *>(e), pidx - _output_pidx[e->eindex()]);
64522 +}
64523 +
64524 +inline int
64525 +ProcessingT::input_processing(const PortT &h) const
64526 +{
64527 +    return _input_processing[input_pidx(h)];
64528 +}
64529 +
64530 +inline int
64531 +ProcessingT::output_processing(const PortT &h) const
64532 +{
64533 +    return _output_processing[output_pidx(h)];
64534 +}
64535 +
64536 +inline int
64537 +ProcessingT::input_processing(int i, int p) const
64538 +{
64539 +    return _input_processing[input_pidx(i, p)];
64540 +}
64541 +
64542 +inline int
64543 +ProcessingT::output_processing(int i, int p) const
64544 +{
64545 +    return _output_processing[output_pidx(i, p)];
64546 +}
64547 +
64548 +inline bool
64549 +ProcessingT::input_is_pull(int i, int p) const
64550 +{
64551 +    return input_processing(i, p) == VPULL;
64552 +}
64553 +
64554 +inline bool
64555 +ProcessingT::output_is_push(int i, int p) const
64556 +{
64557 +    return output_processing(i, p) == VPUSH;
64558 +}
64559 +
64560 +inline const PortT &
64561 +ProcessingT::input_connection(int i, int p) const
64562 +{
64563 +    return _connected_input[input_pidx(i, p)];
64564 +}
64565 +
64566 +inline const PortT &
64567 +ProcessingT::output_connection(int i, int p) const
64568 +{
64569 +    return _connected_output[output_pidx(i, p)];
64570 +}
64571 +
64572 +inline int
64573 +ProcessingT::forward_flow(const PortT &p, Bitvector *bv, ErrorHandler *errh)
64574 +{
64575 +    return forward_flow(p.element->type()->flow_code(), p.port, p.element->noutputs(), bv, errh);
64576 +}
64577 +
64578 +inline int
64579 +ProcessingT::backward_flow(const PortT &p, Bitvector *bv, ErrorHandler *errh)
64580 +{
64581 +    return backward_flow(p.element->type()->flow_code(), p.port, p.element->ninputs(), bv, errh);
64582 +}
64583 +
64584 +#endif
64585 diff -Nurb click-1.6.0/inst/include/clicktool/routert.hh click-1.6.0-27/inst/include/clicktool/routert.hh
64586 --- click-1.6.0/inst/include/clicktool/routert.hh       1969-12-31 19:00:00.000000000 -0500
64587 +++ click-1.6.0-27/inst/include/clicktool/routert.hh    2009-02-05 10:20:38.000000000 -0500
64588 @@ -0,0 +1,462 @@
64589 +// -*- c-basic-offset: 4 -*-
64590 +#ifndef CLICK_ROUTERT_HH
64591 +#define CLICK_ROUTERT_HH
64592 +#include "elementt.hh"
64593 +#include "eclasst.hh"
64594 +#include <click/error.hh>
64595 +#include <click/hashmap.hh>
64596 +#include <click/archive.hh>
64597 +#include <click/variableenv.hh>
64598 +typedef HashMap<String, int> StringMap;
64599 +
64600 +class RouterT : public ElementClassT { public:
64601 +
64602 +    RouterT();
64603 +    RouterT(const String &name, const String &landmark, RouterT *declaration_scope = 0);
64604 +    virtual ~RouterT();
64605 +
64606 +    // ELEMENTS
64607 +    int nelements() const              { return _elements.size(); }
64608 +    int n_live_elements() const                { return _n_live_elements; }
64609 +    
64610 +    inline const ElementT *element(const String &) const;
64611 +    inline ElementT *element(const String &);
64612 +    int eindex(const String &s) const  { return _element_name_map[s]; }
64613 +    
64614 +    const ElementT *element(int i) const{ return _elements[i]; }
64615 +    ElementT *element(int i)           { return _elements[i]; }
64616 +    
64617 +    class iterator;
64618 +    class const_iterator;
64619 +    class type_iterator;
64620 +    class const_type_iterator;
64621 +    inline iterator begin_elements();
64622 +    inline const_iterator begin_elements() const;
64623 +    inline type_iterator begin_elements(ElementClassT *);
64624 +    inline const_type_iterator begin_elements(ElementClassT *) const;
64625 +    inline iterator end_elements();
64626 +    inline const_iterator end_elements() const;
64627 +    
64628 +    bool elive(int i) const            { return _elements[i]->live(); }
64629 +    bool edead(int i) const            { return _elements[i]->dead(); }
64630 +    inline String ename(int) const;
64631 +    inline ElementClassT *etype(int) const;
64632 +    inline String etype_name(int) const;
64633 +    
64634 +    ElementT *get_element(const String &name, ElementClassT *, const String &configuration, const String &landmark);
64635 +    ElementT *add_anon_element(ElementClassT *, const String &configuration = String(), const String &landmark = String());
64636 +    void change_ename(int, const String &);
64637 +    void deanonymize_elements();
64638 +    void free_element(ElementT *);
64639 +    void free_dead_elements();
64640 +
64641 +    void set_new_eindex_collector(Vector<int> *v) { _new_eindex_collector=v; }
64642 +
64643 +    // TYPES
64644 +    ElementClassT *locally_declared_type(const String &) const;
64645 +    inline ElementClassT *declared_type(const String &) const;
64646 +    void add_declared_type(ElementClassT *, bool anonymous);
64647 +
64648 +    void collect_types(HashMap<ElementClassT *, int> &) const;
64649 +    void collect_locally_declared_types(Vector<ElementClassT *> &) const;
64650 +    void collect_overloads(Vector<ElementClassT *> &) const;
64651 +
64652 +    // CONNECTIONS
64653 +    int nconnections() const                   { return _conn.size(); }
64654 +    const Vector<ConnectionT> &connections() const { return _conn; }
64655 +    const ConnectionT &connection(int c) const { return _conn[c]; }
64656 +    bool connection_live(int c) const          { return _conn[c].live(); }
64657 +
64658 +    void add_tunnel(const String &, const String &, const String &, ErrorHandler *);
64659 +
64660 +    bool add_connection(const PortT &, const PortT &, const String &landmark = String());
64661 +    inline bool add_connection(ElementT *, int, ElementT *, int, const String &landmark = String());
64662 +    void kill_connection(int);
64663 +    void kill_bad_connections();
64664 +    void compact_connections();
64665 +
64666 +    inline bool has_connection(const PortT &, const PortT &) const;
64667 +    int find_connection(const PortT &, const PortT &) const;
64668 +    void change_connection_to(int, PortT);
64669 +    void change_connection_from(int, PortT);
64670 +    bool find_connection_from(const PortT &, PortT &) const;
64671 +    void find_connections_from(const PortT &, Vector<PortT> &) const;
64672 +    void find_connections_from(const PortT &, Vector<int> &) const;
64673 +    void find_connections_to(const PortT &, Vector<PortT> &) const;
64674 +    void find_connections_to(const PortT &, Vector<int> &) const;
64675 +    void find_connection_vector_from(ElementT *, Vector<int> &) const;
64676 +    void find_connection_vector_to(ElementT *, Vector<int> &) const;
64677 +
64678 +    bool insert_before(const PortT &, const PortT &);
64679 +    bool insert_after(const PortT &, const PortT &);
64680 +    inline bool insert_before(ElementT *, const PortT &);
64681 +    inline bool insert_after(ElementT *, const PortT &);
64682 +
64683 +    // REQUIREMENTS
64684 +    void add_requirement(const String &);
64685 +    void remove_requirement(const String &);
64686 +    const Vector<String> &requirements() const { return _requirements; }
64687 +
64688 +    // ARCHIVE
64689 +    void add_archive(const ArchiveElement &);
64690 +    int narchive() const                       { return _archive.size(); }
64691 +    int archive_index(const String &s) const   { return _archive_map[s]; }
64692 +    const Vector<ArchiveElement> &archive() const{ return _archive; }
64693 +    ArchiveElement &archive(int i)             { return _archive[i]; }
64694 +    const ArchiveElement &archive(int i) const { return _archive[i]; }
64695 +    inline ArchiveElement &archive(const String &s);
64696 +    inline const ArchiveElement &archive(const String &s) const;
64697 +
64698 +    void add_components_to(RouterT *, const String &prefix = String()) const;
64699 +
64700 +    // CHECKING, FLATTENING AND EXPANDING
64701 +    void check() const;
64702 +
64703 +    void remove_duplicate_connections();
64704 +    void remove_dead_elements(ErrorHandler * = 0);
64705 +
64706 +    void remove_compound_elements(ErrorHandler *, bool expand_vars);
64707 +    void remove_tunnels(ErrorHandler * = 0);
64708 +
64709 +    void expand_into(RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
64710 +    void flatten(ErrorHandler *, bool expand_vars = false);
64711 +
64712 +    // UNPARSING
64713 +    void unparse(StringAccum &, const String & = String()) const;
64714 +    void unparse_requirements(StringAccum &, const String & = String()) const;
64715 +    void unparse_defines(StringAccum &, const String & = String()) const;
64716 +    void unparse_declarations(StringAccum &, const String & = String()) const;
64717 +    void unparse_connections(StringAccum &, const String & = String()) const;
64718 +    String configuration_string() const;
64719 +
64720 +    // COMPOUND ELEMENTS
64721 +    String landmark() const            { return _type_landmark; }
64722 +    const ElementTraits *find_traits() const;
64723 +    
64724 +    bool primitive() const             { return false; }
64725 +    
64726 +    int nformals() const               { return _nformals; }
64727 +    const VariableEnvironment &scope() const { return _scope; }
64728 +    inline bool define(const String &name, const String &value, bool isformal);
64729 +    inline void redefine(const VariableEnvironment &);
64730 +    int ninputs() const                        { return _ninputs; }
64731 +    int noutputs() const               { return _noutputs; }
64732 +    
64733 +    RouterT *declaration_scope() const { return _declaration_scope; }
64734 +    ElementClassT *overload_type() const { return _overload_type; }
64735 +    void set_overload_type(ElementClassT *);
64736 +
64737 +    int finish_type(ErrorHandler *);
64738 +    
64739 +    ElementClassT *resolve(int, int, Vector<String> &, ErrorHandler *, const String &landmark);
64740 +    ElementT *complex_expand_element(ElementT *, const String &, Vector<String> &, RouterT *, const String &prefix, VariableEnvironment &, ErrorHandler *);
64741 +
64742 +    String unparse_signature() const;
64743 +    void unparse_declaration(StringAccum &, const String &, UnparseKind, ElementClassT *);    
64744 +
64745 +    RouterT *cast_router()             { return this; }
64746 +
64747 +  private:
64748 +  
64749 +    struct Pair {
64750 +       int from;
64751 +       int to;
64752 +       Pair() : from(-1), to(-1) { }
64753 +       Pair(int f, int t) : from(f), to(t) { }
64754 +    };
64755 +
64756 +    struct ElementType {
64757 +       ElementClassT * const type;
64758 +       int scope_cookie;
64759 +       int prev_name;
64760 +       ElementType(ElementClassT *c, int sc, int pn) : type(c), scope_cookie(sc), prev_name(pn) { assert(type); type->use(); }
64761 +       ElementType(const ElementType &o) : type(o.type), scope_cookie(o.scope_cookie), prev_name(o.prev_name) { type->use(); }
64762 +       ~ElementType()                  { type->unuse(); }
64763 +       const String &name() const      { return type->name(); }
64764 +      private:
64765 +       ElementType &operator=(const ElementType &);
64766 +    };
64767 +
64768 +    StringMap _element_name_map;
64769 +    Vector<ElementT *> _elements;
64770 +    ElementT *_free_element;
64771 +    int _n_live_elements;
64772 +    Vector<int> *_new_eindex_collector;
64773 +
64774 +    Vector<ConnectionT> _conn;
64775 +    Vector<Pair> _first_conn;
64776 +    int _free_conn;
64777 +    
64778 +    StringMap _declared_type_map;
64779 +    Vector<ElementType> _declared_types;
64780 +
64781 +    Vector<String> _requirements;
64782 +
64783 +    StringMap _archive_map;
64784 +    Vector<ArchiveElement> _archive;
64785 +
64786 +    RouterT *_declaration_scope;
64787 +    int _declaration_scope_cookie;
64788 +    int _scope_cookie;
64789 +
64790 +    VariableEnvironment _scope;
64791 +    int _nformals;
64792 +    int _ninputs;
64793 +    int _noutputs;
64794 +    bool _scope_order_error : 1;
64795 +    ElementClassT *_overload_type;
64796 +    String _type_landmark;
64797 +    mutable ElementTraits _traits;
64798 +    bool _circularity_flag;
64799 +    
64800 +    RouterT(const RouterT &);
64801 +    RouterT &operator=(const RouterT &);
64802 +
64803 +    ElementClassT *declared_type(const String &, int scope_cookie) const;
64804 +    void update_noutputs(int);
64805 +    void update_ninputs(int);
64806 +    ElementT *add_element(const ElementT &);
64807 +    void assign_element_name(int);
64808 +    void free_connection(int ci);
64809 +    void unlink_connection_from(int ci);
64810 +    void unlink_connection_to(int ci);
64811 +    void expand_tunnel(Vector<PortT> *port_expansions, const Vector<PortT> &ports, bool is_output, int which, ErrorHandler *) const;
64812 +    int assign_arguments(const Vector<String> &, Vector<String> *) const;
64813 +
64814 +    friend class RouterUnparserT;
64815 +    
64816 +};
64817 +
64818 +class RouterT::const_iterator { public:
64819 +    operator bool() const              { return _e; }
64820 +    int eindex() const                 { return _e->eindex(); }
64821 +    void operator++(int)               { if (_e) step(_e->router(), eindex()+1);}
64822 +    void operator++()                  { (*this)++; }
64823 +    operator const ElementT *() const  { return _e; }
64824 +    const ElementT *operator->() const { return _e; }
64825 +    const ElementT &operator*() const  { return *_e; }
64826 +  private:
64827 +    const ElementT *_e;
64828 +    const_iterator()                   : _e(0) { }
64829 +    const_iterator(const RouterT *r, int ei) { step(r, ei); }
64830 +    void step(const RouterT *, int);
64831 +    friend class RouterT;
64832 +    friend class RouterT::iterator;
64833 +};
64834 +
64835 +class RouterT::iterator : public RouterT::const_iterator { public:
64836 +    operator ElementT *() const                { return const_cast<ElementT *>(_e); }
64837 +    ElementT *operator->() const       { return const_cast<ElementT *>(_e); }
64838 +    ElementT &operator*() const                { return const_cast<ElementT &>(*_e); }
64839 +  private:
64840 +    iterator()                         : const_iterator() { }
64841 +    iterator(RouterT *r, int ei)       : const_iterator(r, ei) { }
64842 +    friend class RouterT;
64843 +};
64844 +
64845 +class RouterT::const_type_iterator { public:
64846 +    operator bool() const              { return _e; }
64847 +    int eindex() const                 { return _e->eindex(); }
64848 +    inline void operator++(int);
64849 +    inline void operator++();
64850 +    operator const ElementT *() const  { return _e; }
64851 +    const ElementT *operator->() const { return _e; }
64852 +    const ElementT &operator*() const  { return *_e; }
64853 +  private:
64854 +    const ElementT *_e;
64855 +    const_type_iterator()              : _e(0) { }
64856 +    const_type_iterator(const RouterT *r, ElementClassT *t, int i) { step(r, t, i); }
64857 +    void step(const RouterT *, ElementClassT *, int);
64858 +    friend class RouterT;
64859 +    friend class RouterT::type_iterator;
64860 +};
64861 +
64862 +class RouterT::type_iterator : public RouterT::const_type_iterator { public:
64863 +    operator ElementT *() const                { return const_cast<ElementT *>(_e); }
64864 +    ElementT *operator->() const       { return const_cast<ElementT *>(_e); }
64865 +    ElementT &operator*() const                { return const_cast<ElementT &>(*_e); }
64866 +  private:
64867 +    type_iterator()                    : const_type_iterator() { }
64868 +    type_iterator(RouterT *r, ElementClassT *t, int ei)        : const_type_iterator(r, t, ei) { }
64869 +    friend class RouterT;
64870 +};
64871 +
64872 +
64873 +inline RouterT::iterator
64874 +RouterT::begin_elements()
64875 +{
64876 +    return iterator(this, 0);
64877 +}
64878 +
64879 +inline RouterT::const_iterator
64880 +RouterT::begin_elements() const
64881 +{
64882 +    return const_iterator(this, 0);
64883 +}
64884 +
64885 +inline RouterT::type_iterator
64886 +RouterT::begin_elements(ElementClassT *t)
64887 +{
64888 +    return type_iterator(this, t, 0);
64889 +}
64890 +
64891 +inline RouterT::const_type_iterator
64892 +RouterT::begin_elements(ElementClassT *t) const
64893 +{
64894 +    return const_type_iterator(this, t, 0);
64895 +}
64896 +
64897 +inline RouterT::const_iterator
64898 +RouterT::end_elements() const
64899 +{
64900 +    return const_iterator();
64901 +}
64902 +
64903 +inline RouterT::iterator
64904 +RouterT::end_elements()
64905 +{
64906 +    return iterator();
64907 +}
64908 +
64909 +inline void
64910 +RouterT::const_type_iterator::operator++(int)
64911 +{
64912 +    if (_e)
64913 +       step(_e->router(), _e->type(), _e->eindex() + 1);
64914 +}
64915 +
64916 +inline void
64917 +RouterT::const_type_iterator::operator++()
64918 +{
64919 +    (*this)++;
64920 +}
64921 +
64922 +inline const ElementT *
64923 +RouterT::element(const String &s) const
64924 +{
64925 +    int i = _element_name_map[s];
64926 +    return (i >= 0 ? _elements[i] : 0);
64927 +}
64928 +
64929 +inline ElementT *
64930 +RouterT::element(const String &s)
64931 +{
64932 +    int i = _element_name_map[s];
64933 +    return (i >= 0 ? _elements[i] : 0);
64934 +}
64935 +
64936 +inline String
64937 +RouterT::ename(int e) const
64938 +{
64939 +    return _elements[e]->name();
64940 +}
64941 +
64942 +inline ElementClassT *
64943 +RouterT::etype(int e) const
64944 +{
64945 +    return _elements[e]->type();
64946 +}
64947 +
64948 +inline String
64949 +RouterT::etype_name(int e) const
64950 +{
64951 +    return _elements[e]->type()->name();
64952 +}
64953 +
64954 +inline ElementClassT *
64955 +RouterT::declared_type(const String &name) const
64956 +{
64957 +    return declared_type(name, 0x7FFFFFFF);
64958 +}
64959 +
64960 +inline bool
64961 +RouterT::add_connection(ElementT *from_elt, int from_port, ElementT *to_elt,
64962 +                       int to_port, const String &landmark)
64963 +{
64964 +    return add_connection(PortT(from_elt, from_port), PortT(to_elt, to_port), landmark);
64965 +}
64966 +
64967 +inline bool
64968 +RouterT::has_connection(const PortT &hfrom, const PortT &hto) const
64969 +{
64970 +    return find_connection(hfrom, hto) >= 0;
64971 +}
64972 +
64973 +inline bool
64974 +RouterT::insert_before(ElementT *e, const PortT &h)
64975 +{
64976 +    return insert_before(PortT(e, 0), h);
64977 +}
64978 +
64979 +inline bool
64980 +RouterT::insert_after(ElementT *e, const PortT &h)
64981 +{
64982 +    return insert_after(PortT(e, 0), h);
64983 +}
64984 +
64985 +inline bool
64986 +RouterT::define(const String &name, const String &value, bool isformal)
64987 +{
64988 +    assert(!isformal || _nformals == _scope.size());
64989 +    bool retval = _scope.define(name, value, false);
64990 +    if (isformal)
64991 +       _nformals = _scope.size();
64992 +    return retval;
64993 +}
64994 +
64995 +inline void
64996 +RouterT::redefine(const VariableEnvironment &ve)
64997 +{
64998 +    for (int i = 0; i < ve.size(); i++)
64999 +       _scope.define(ve.name(i), ve.value(i), true);
65000 +}
65001 +
65002 +inline ArchiveElement &
65003 +RouterT::archive(const String &name)
65004 +{
65005 +    return _archive[_archive_map[name]];
65006 +}
65007 +
65008 +inline const ArchiveElement &
65009 +RouterT::archive(const String &name) const
65010 +{
65011 +    return _archive[_archive_map[name]];
65012 +}
65013 +
65014 +inline bool
65015 +operator==(const RouterT::const_iterator &i, const RouterT::const_iterator &j)
65016 +{
65017 +    return i.operator->() == j.operator->();
65018 +}
65019 +
65020 +inline bool
65021 +operator!=(const RouterT::const_iterator &i, const RouterT::const_iterator &j)
65022 +{
65023 +    return i.operator->() != j.operator->();
65024 +}
65025 +
65026 +inline bool
65027 +operator==(const RouterT::const_type_iterator &i, const RouterT::const_type_iterator &j)
65028 +{
65029 +    return i.operator->() == j.operator->();
65030 +}
65031 +
65032 +inline bool
65033 +operator!=(const RouterT::const_type_iterator &i, const RouterT::const_type_iterator &j)
65034 +{
65035 +    return i.operator->() != j.operator->();
65036 +}
65037 +
65038 +inline bool
65039 +operator==(const RouterT::const_type_iterator &i, const RouterT::const_iterator &j)
65040 +{
65041 +    return i.operator->() == j.operator->();
65042 +}
65043 +
65044 +inline bool
65045 +operator!=(const RouterT::const_type_iterator &i, const RouterT::const_iterator &j)
65046 +{
65047 +    return i.operator->() != j.operator->();
65048 +}
65049 +
65050 +#endif
65051 diff -Nurb click-1.6.0/inst/include/clicktool/runparse.hh click-1.6.0-27/inst/include/clicktool/runparse.hh
65052 --- click-1.6.0/inst/include/clicktool/runparse.hh      1969-12-31 19:00:00.000000000 -0500
65053 +++ click-1.6.0-27/inst/include/clicktool/runparse.hh   2009-02-05 10:20:38.000000000 -0500
65054 @@ -0,0 +1,31 @@
65055 +// -*- c-basic-offset: 4 -*-
65056 +#ifndef CLICK_RUNPARSE_HH
65057 +#define CLICK_RUNPARSE_HH
65058 +#include "routert.hh"
65059 +#include <click/pair.hh>
65060 +
65061 +class RouterUnparserT { public:
65062 +
65063 +    RouterUnparserT(ErrorHandler *);
65064 +
65065 +    struct Pair {
65066 +       ElementClassT *first;
65067 +       ElementClassT *second;
65068 +       Pair(ElementClassT *a, ElementClassT *b) : first(a), second(b) { }
65069 +    };
65070 +
65071 +  private:
65072 +    
65073 +    HashMap<int, int> _tuid_map;
65074 +    Vector<ElementClassT *> _types;
65075 +
65076 +    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 };
65077 +    static int relation_negater[X_NUM];
65078 +    static uint8_t relation_combiner[X_NUM][X_NUM];
65079 +    HashMap<Pair<ElementClassT *, ElementClassT *>, int> _relation;
65080 +
65081 +    ErrorHandler *_errh;
65082 +    
65083 +};
65084 +
65085 +#endif
65086 diff -Nurb click-1.6.0/inst/include/clicktool/toolutils.hh click-1.6.0-27/inst/include/clicktool/toolutils.hh
65087 --- click-1.6.0/inst/include/clicktool/toolutils.hh     1969-12-31 19:00:00.000000000 -0500
65088 +++ click-1.6.0-27/inst/include/clicktool/toolutils.hh  2009-02-05 10:20:38.000000000 -0500
65089 @@ -0,0 +1,18 @@
65090 +#ifndef CLICK_TOOLUTILS_HH
65091 +#define CLICK_TOOLUTILS_HH
65092 +#include <click/userutils.hh>
65093 +class RouterT;
65094 +
65095 +extern bool ignore_line_directives;
65096 +int click_maybe_define(const char *arg, ErrorHandler *errh);
65097 +RouterT *read_router_string(const String &text, const String &landmark, ErrorHandler *);
65098 +RouterT *read_router_string(String text, const String &landmark, bool, RouterT *, ErrorHandler *);
65099 +RouterT *read_router_file(const char *filename, ErrorHandler *);
65100 +RouterT *read_router_file(const char *filename, bool empty_ok, ErrorHandler *);
65101 +RouterT *read_router(const String &, bool is_expr, ErrorHandler *);
65102 +void write_router_file(RouterT *, FILE *, ErrorHandler * = 0);
65103 +int write_router_file(RouterT *, const char *, ErrorHandler * = 0);
65104 +
65105 +String xml_quote(const String &);
65106 +
65107 +#endif
65108 Files click-1.6.0/inst/lib/click.ko and click-1.6.0-27/inst/lib/click.ko differ
65109 Files click-1.6.0/inst/lib/libclick.a and click-1.6.0-27/inst/lib/libclick.a differ
65110 Files click-1.6.0/inst/lib/libclicktool.a and click-1.6.0-27/inst/lib/libclicktool.a differ
65111 Files click-1.6.0/inst/lib/proclikefs.ko and click-1.6.0-27/inst/lib/proclikefs.ko differ
65112 Files click-1.6.0/inst/sbin/click-install and click-1.6.0-27/inst/sbin/click-install differ
65113 Files click-1.6.0/inst/sbin/click-uninstall and click-1.6.0-27/inst/sbin/click-uninstall differ
65114 diff -Nurb click-1.6.0/inst/share/click/config.mk click-1.6.0-27/inst/share/click/config.mk
65115 --- click-1.6.0/inst/share/click/config.mk      1969-12-31 19:00:00.000000000 -0500
65116 +++ click-1.6.0-27/inst/share/click/config.mk   2009-02-05 10:20:41.000000000 -0500
65117 @@ -0,0 +1,13 @@
65118 +clickprefix=/d/click/click-1.6.0-27/inst
65119 +clickbindir=/d/click/click-1.6.0-27/inst/bin
65120 +clicksbindir=/d/click/click-1.6.0-27/inst/sbin
65121 +clicklibdir=/d/click/click-1.6.0-27/inst/lib
65122 +clickincludedir=/d/click/click-1.6.0-27/inst/include
65123 +clickdatadir=/d/click/click-1.6.0-27/inst/share/click
65124 +clicklinuxdir=/d/kernels/linux-2.6.27.10-clickport
65125 +clicksrcdir=/d/click/click-1.6.0-27/inst/share/click/src
65126 +CLICK_HAVE_USERLEVEL_DRIVER=1
65127 +CLICK_HAVE_LINUXMODULE_DRIVER=1
65128 +CLICK_HAVE_BSDMODULE_DRIVER=0
65129 +CLICK_LINUXMODULE_2_6=1
65130 +CLICK_GMAKE=make
65131 diff -Nurb click-1.6.0/inst/share/click/elementmap.xml click-1.6.0-27/inst/share/click/elementmap.xml
65132 --- click-1.6.0/inst/share/click/elementmap.xml 1969-12-31 19:00:00.000000000 -0500
65133 +++ click-1.6.0-27/inst/share/click/elementmap.xml      2009-02-11 14:08:51.000000000 -0500
65134 @@ -0,0 +1,219 @@
65135 +<?xml version="1.0" standalone="yes"?>
65136 +<?xml-stylesheet type="application/xml" href="http://www.lcdf.org/click/xml/elementmap.xsl"?>
65137 +<?xml-stylesheet type="application/xml" href="file:///d/click/click-1.6.0-27/etc/elementmap.xsl"?>
65138 +<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">
65139 +<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" />
65140 +<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" />
65141 +<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" />
65142 +<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" />
65143 +<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" />
65144 +<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" />
65145 +<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" />
65146 +<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" />
65147 +<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" />
65148 +<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" />
65149 +<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" />
65150 +<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" />
65151 +<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" />
65152 +<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" />
65153 +<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" />
65154 +<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" />
65155 +<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" />
65156 +<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" />
65157 +<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" />
65158 +<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" />
65159 +<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" />
65160 +<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" />
65161 +<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" />
65162 +<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" />
65163 +<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" />
65164 +<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" />
65165 +<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" />
65166 +<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" />
65167 +<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" />
65168 +<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" />
65169 +<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" />
65170 +<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" />
65171 +<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" />
65172 +<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" />
65173 +<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" />
65174 +<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" />
65175 +<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" />
65176 +<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" />
65177 +<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" />
65178 +<entry name="DevirtualizeInfo" cxxclass="DevirtualizeInfo" headerfile="elements/standard/devirtualizeinfo.hh" sourcefile="elements/standard/devirtualizeinfo.cc" portcount="0/0" processing="a/a" flowcode="x/x" />
65179 +<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" />
65180 +<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" />
65181 +<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" />
65182 +<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" />
65183 +<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" />
65184 +<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" />
65185 +<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" />
65186 +<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" />
65187 +<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" />
65188 +<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" />
65189 +<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" />
65190 +<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" />
65191 +<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" />
65192 +<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" />
65193 +<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" />
65194 +<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" />
65195 +<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" />
65196 +<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" />
65197 +<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" />
65198 +<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" />
65199 +<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" />
65200 +<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" />
65201 +<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" />
65202 +<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" />
65203 +<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" />
65204 +<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" />
65205 +<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" />
65206 +<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" />
65207 +<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" />
65208 +<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" />
65209 +<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" />
65210 +<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" />
65211 +<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" />
65212 +<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" />
65213 +<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" />
65214 +<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" />
65215 +<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" />
65216 +<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" />
65217 +<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" />
65218 +<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" />
65219 +<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" />
65220 +<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" />
65221 +<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" />
65222 +<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" />
65223 +<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" />
65224 +<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" />
65225 +<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" />
65226 +<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" />
65227 +<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" />
65228 +<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" />
65229 +<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" />
65230 +<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" />
65231 +<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" />
65232 +<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" />
65233 +<entry name="KernelHandlerProxy" cxxclass="KernelHandlerProxy" docname="KernelHandlerProxy" headerfile="elements/userlevel/khandlerproxy.hh" sourcefile="elements/userlevel/khandlerproxy.cc" requires="userlevel HandlerProxy" />
65234 +<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" />
65235 +<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" />
65236 +<entry name="LinearIPLookup" cxxclass="LinearIPLookup" docname="LinearIPLookup" headerfile="elements/ip/lineariplookup.hh" sourcefile="elements/ip/lineariplookup.cc" portcount="1/-" processing="h/h" requires="IPRouteTable" />
65237 +<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" />
65238 +<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" />
65239 +<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" />
65240 +<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" />
65241 +<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" />
65242 +<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" />
65243 +<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" />
65244 +<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" />
65245 +<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" />
65246 +<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" />
65247 +<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" />
65248 +<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" />
65249 +<entry name="Null2" cxxclass="Null2" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65250 +<entry name="Null3" cxxclass="Null3" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65251 +<entry name="Null4" cxxclass="Null4" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65252 +<entry name="Null5" cxxclass="Null5" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65253 +<entry name="Null6" cxxclass="Null6" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65254 +<entry name="Null7" cxxclass="Null7" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65255 +<entry name="Null8" cxxclass="Null8" headerfile="elements/standard/nulls.hh" sourcefile="elements/standard/nulls.cc" portcount="1/1" processing="a/a" flowcode="x/x" />
65256 +<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" />
65257 +<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" />
65258 +<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" />
65259 +<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" />
65260 +<entry name="PerfCountInfo" cxxclass="PerfCountInfo" docname="PerfCountInfo" headerfile="elements/linuxmodule/perfcountinfo.hh" sourcefile="elements/linuxmodule/perfcountinfo.cc" requires="linuxmodule PerfCountUser" />
65261 +<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" />
65262 +<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" />
65263 +<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" />
65264 +<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" />
65265 +<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" />
65266 +<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" />
65267 +<entry name="PullNull" cxxclass="PullNullElement" headerfile="elements/standard/nullelement.hh" sourcefile="elements/standard/nullelement.cc" portcount="1/1" processing="l/l" flowcode="x/x" />
65268 +<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" />
65269 +<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" />
65270 +<entry name="PushNull" cxxclass="PushNullElement" headerfile="elements/standard/nullelement.hh" sourcefile="elements/standard/nullelement.cc" portcount="1/1" processing="h/h" flowcode="x/x" />
65271 +<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" />
65272 +<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" />
65273 +<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" />
65274 +<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" />
65275 +<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" />
65276 +<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" />
65277 +<entry name="RadixIPLookup" cxxclass="RadixIPLookup" docname="RadixIPLookup" headerfile="elements/ip/radixiplookup.hh" sourcefile="elements/ip/radixiplookup.cc" portcount="1/-" processing="h/h" requires="IPRouteTable" />
65278 +<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" />
65279 +<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" />
65280 +<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" />
65281 +<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" />
65282 +<entry name="RangeIPLookup" cxxclass="RangeIPLookup" docname="RangeIPLookup" headerfile="elements/ip/rangeiplookup.hh" sourcefile="elements/ip/rangeiplookup.cc" portcount="1/-" processing="h/h" requires="DirectIPLookup" />
65283 +<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" />
65284 +<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" />
65285 +<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" />
65286 +<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" />
65287 +<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" />
65288 +<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" />
65289 +<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" />
65290 +<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" />
65291 +<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" />
65292 +<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" />
65293 +<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" />
65294 +<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" />
65295 +<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" />
65296 +<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" />
65297 +<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" />
65298 +<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" />
65299 +<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" />
65300 +<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" />
65301 +<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" />
65302 +<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" />
65303 +<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" />
65304 +<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" />
65305 +<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" />
65306 +<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" />
65307 +<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" />
65308 +<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" />
65309 +<entry name="SortedIPLookup" cxxclass="SortedIPLookup" docname="SortedIPLookup" headerfile="elements/ip/sortediplookup.hh" sourcefile="elements/ip/sortediplookup.cc" portcount="1/-" processing="h/h" requires="LinearIPLookup" />
65310 +<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" />
65311 +<entry name="SpinlockAcquire" cxxclass="SpinlockAcquire" docname="SpinlockAcquire" headerfile="elements/standard/spinlockacquire.hh" sourcefile="elements/standard/spinlockacquire.cc" portcount="-/-" processing="a/a" flowcode="x/x" />
65312 +<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" />
65313 +<entry name="SpinlockRelease" cxxclass="SpinlockRelease" docname="SpinlockRelease" headerfile="elements/standard/spinlockrelease.hh" sourcefile="elements/standard/spinlockrelease.cc" portcount="-/-" processing="a/a" flowcode="x/x" />
65314 +<entry name="StaticIPLookup" cxxclass="StaticIPLookup" docname="StaticIPLookup" headerfile="elements/ip/lookupiproute.hh" sourcefile="elements/ip/lookupiproute.cc" portcount="1/-" processing="h/h" requires="LinearIPLookup" />
65315 +<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" />
65316 +<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" />
65317 +<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" />
65318 +<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" />
65319 +<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" />
65320 +<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" />
65321 +<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" />
65322 +<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" />
65323 +<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" />
65324 +<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" />
65325 +<entry name="Suppressor" cxxclass="Suppressor" docname="Suppressor" headerfile="elements/standard/suppressor.hh" sourcefile="elements/standard/suppressor.cc" portcount="-/=" processing="a/a" flowcode="#/#" />
65326 +<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" />
65327 +<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" />
65328 +<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" />
65329 +<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" />
65330 +<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" />
65331 +<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" />
65332 +<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" />
65333 +<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" />
65334 +<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" />
65335 +<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" />
65336 +<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" />
65337 +<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" />
65338 +<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" />
65339 +<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" />
65340 +<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" />
65341 +<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" />
65342 +<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" />
65343 +<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" />
65344 +<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" />
65345 +<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" />
65346 +<entry headerfile="elements/linuxmodule/anydevice.hh" sourcefile="elements/linuxmodule/anydevice.cc" requires="linuxmodule" provides="AnyDevice" />
65347 +<entry headerfile="elements/userlevel/fakepcap.hh" sourcefile="elements/userlevel/fakepcap.cc" requires="userlevel|ns" provides="FakePcap" />
65348 +<entry headerfile="elements/userlevel/fromfile.hh" sourcefile="elements/userlevel/fromfile.cc" requires="userlevel|ns FakePcap" provides="FromFile" />
65349 +<entry headerfile="elements/userlevel/handlerproxy.hh" sourcefile="elements/userlevel/handlerproxy.cc" requires="userlevel" provides="HandlerProxy" />
65350 +<entry docname="IPRouteTable" headerfile="elements/ip/iproutetable.hh" sourcefile="elements/ip/iproutetable.cc" provides="IPRouteTable" />
65351 +<entry headerfile="elements/ip/iprw.hh" sourcefile="elements/ip/iprw.cc" provides="IPRw" />
65352 +<entry headerfile="elements/linuxmodule/perfcountuser.hh" sourcefile="elements/linuxmodule/perfcountuser.cc" requires="linuxmodule i586" provides="PerfCountUser" />
65353 +</elementmap>
65354 diff -Nurb click-1.6.0/inst/share/click/mkinstalldirs click-1.6.0-27/inst/share/click/mkinstalldirs
65355 --- click-1.6.0/inst/share/click/mkinstalldirs  1969-12-31 19:00:00.000000000 -0500
65356 +++ click-1.6.0-27/inst/share/click/mkinstalldirs       2009-02-11 14:08:51.000000000 -0500
65357 @@ -0,0 +1,158 @@
65358 +#! /bin/sh
65359 +# mkinstalldirs --- make directory hierarchy
65360 +
65361 +scriptversion=2005-06-29.22
65362 +
65363 +# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
65364 +# Created: 1993-05-16
65365 +# Public domain.
65366 +#
65367 +# This file is maintained in Automake, please report
65368 +# bugs to <bug-automake@gnu.org> or send patches to
65369 +# <automake-patches@gnu.org>.
65370 +
65371 +errstatus=0
65372 +dirmode=
65373 +
65374 +usage="\
65375 +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
65376 +
65377 +Create each directory DIR (with mode MODE, if specified), including all
65378 +leading file name components.
65379 +
65380 +Report bugs to <bug-automake@gnu.org>."
65381 +
65382 +# process command line arguments
65383 +while test $# -gt 0 ; do
65384 +  case $1 in
65385 +    -h | --help | --h*)         # -h for help
65386 +      echo "$usage"
65387 +      exit $?
65388 +      ;;
65389 +    -m)                         # -m PERM arg
65390 +      shift
65391 +      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
65392 +      dirmode=$1
65393 +      shift
65394 +      ;;
65395 +    --version)
65396 +      echo "$0 $scriptversion"
65397 +      exit $?
65398 +      ;;
65399 +    --)                         # stop option processing
65400 +      shift
65401 +      break
65402 +      ;;
65403 +    -*)                         # unknown option
65404 +      echo "$usage" 1>&2
65405 +      exit 1
65406 +      ;;
65407 +    *)                          # first non-opt arg
65408 +      break
65409 +      ;;
65410 +  esac
65411 +done
65412 +
65413 +for file
65414 +do
65415 +  if test -d "$file"; then
65416 +    shift
65417 +  else
65418 +    break
65419 +  fi
65420 +done
65421 +
65422 +case $# in
65423 +  0) exit 0 ;;
65424 +esac
65425 +
65426 +# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
65427 +# mkdir -p a/c at the same time, both will detect that a is missing,
65428 +# one will create a, then the other will try to create a and die with
65429 +# a "File exists" error.  This is a problem when calling mkinstalldirs
65430 +# from a parallel make.  We use --version in the probe to restrict
65431 +# ourselves to GNU mkdir, which is thread-safe.
65432 +case $dirmode in
65433 +  '')
65434 +    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
65435 +      echo "mkdir -p -- $*"
65436 +      exec mkdir -p -- "$@"
65437 +    else
65438 +      # On NextStep and OpenStep, the `mkdir' command does not
65439 +      # recognize any option.  It will interpret all options as
65440 +      # directories to create, and then abort because `.' already
65441 +      # exists.
65442 +      test -d ./-p && rmdir ./-p
65443 +      test -d ./--version && rmdir ./--version
65444 +    fi
65445 +    ;;
65446 +  *)
65447 +    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
65448 +       test ! -d ./--version; then
65449 +      echo "mkdir -m $dirmode -p -- $*"
65450 +      exec mkdir -m "$dirmode" -p -- "$@"
65451 +    else
65452 +      # Clean up after NextStep and OpenStep mkdir.
65453 +      for d in ./-m ./-p ./--version "./$dirmode";
65454 +      do
65455 +        test -d $d && rmdir $d
65456 +      done
65457 +    fi
65458 +    ;;
65459 +esac
65460 +
65461 +for file
65462 +do
65463 +  case $file in
65464 +    /*) pathcomp=/ ;;
65465 +    *)  pathcomp= ;;
65466 +  esac
65467 +  oIFS=$IFS
65468 +  IFS=/
65469 +  set fnord $file
65470 +  shift
65471 +  IFS=$oIFS
65472 +
65473 +  for d
65474 +  do
65475 +    test "x$d" = x && continue
65476 +
65477 +    pathcomp=$pathcomp$d
65478 +    case $pathcomp in
65479 +      -*) pathcomp=./$pathcomp ;;
65480 +    esac
65481 +
65482 +    if test ! -d "$pathcomp"; then
65483 +      echo "mkdir $pathcomp"
65484 +
65485 +      mkdir "$pathcomp" || lasterr=$?
65486 +
65487 +      if test ! -d "$pathcomp"; then
65488 +       errstatus=$lasterr
65489 +      else
65490 +       if test ! -z "$dirmode"; then
65491 +         echo "chmod $dirmode $pathcomp"
65492 +         lasterr=
65493 +         chmod "$dirmode" "$pathcomp" || lasterr=$?
65494 +
65495 +         if test ! -z "$lasterr"; then
65496 +           errstatus=$lasterr
65497 +         fi
65498 +       fi
65499 +      fi
65500 +    fi
65501 +
65502 +    pathcomp=$pathcomp/
65503 +  done
65504 +done
65505 +
65506 +exit $errstatus
65507 +
65508 +# Local Variables:
65509 +# mode: shell-script
65510 +# sh-indentation: 2
65511 +# eval: (add-hook 'write-file-hooks 'time-stamp)
65512 +# time-stamp-start: "scriptversion="
65513 +# time-stamp-format: "%:y-%02m-%02d.%02H"
65514 +# time-stamp-end: "$"
65515 +# End:
65516 diff -Nurb click-1.6.0/inst/share/click/pkg-Makefile click-1.6.0-27/inst/share/click/pkg-Makefile
65517 --- click-1.6.0/inst/share/click/pkg-Makefile   1969-12-31 19:00:00.000000000 -0500
65518 +++ click-1.6.0-27/inst/share/click/pkg-Makefile        2009-02-05 10:20:41.000000000 -0500
65519 @@ -0,0 +1,112 @@
65520 +# pkg-Makefile -- build tools for Click
65521 +# Eddie Kohler
65522 +#
65523 +# Copyright (c) 2006 Regents of the University of California
65524 +#
65525 +# Permission is hereby granted, free of charge, to any person obtaining a
65526 +# copy of this software and associated documentation files (the "Software"),
65527 +# to deal in the Software without restriction, subject to the conditions
65528 +# listed in the Click LICENSE file. These conditions include: you must
65529 +# preserve this copyright notice, and you cannot mention the copyright
65530 +# holders in advertising related to the Software without their permission.
65531 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
65532 +# notice is a summary of the Click LICENSE file; the license in that file is
65533 +# legally binding.
65534 +
65535 +VPATH ?= .:$(top_srcdir)/$(subdir):$(top_srcdir)
65536 +
65537 +include $(clickdatadir)/pkg-config.mk
65538 +
65539 +ifeq ($(CLICK_PACKAGE_MAKING),userlevel)
65540 +include $(clickdatadir)/pkg-userlevel.mk
65541 +endif
65542 +
65543 +ifeq ($(CLICK_PACKAGE_MAKING),linuxmodule)
65544 +include $(clickdatadir)/pkg-linuxmodule.mk
65545 +endif
65546 +
65547 +ifeq ($(CLICK_PACKAGE_MAKING),bsdmodule)
65548 +include $(clickdatadir)/pkg-bsdmodule.mk
65549 +endif
65550 +
65551 +ifeq ($(CLICK_PACKAGE_MAKING),)
65552 +
65553 +INSTALL ?= $(CLICKINSTALL)
65554 +INSTALL_DATA ?= $(CLICKINSTALL) -m 644
65555 +mkinstalldirs ?= $(clickdatadir)/mkinstalldirs
65556 +
65557 +CLICK_BUILDTOOL = $(clickbindir)/click-buildtool
65558 +CLICK_ELEM2PACKAGE = $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES)
65559 +
65560 +# set TARGETS, etc. based on MAKE_UPACKAGE, MAKE_KPACKAGE, and MAKE_BPACKAGE
65561 +ifeq ($(MAKE_UPACKAGE),1)
65562 +TARGETS += $(package).uo
65563 +DRIVERS += userlevel
65564 +endif
65565 +ifeq ($(MAKE_KPACKAGE),1)
65566 +TARGETS += $(package).ko
65567 +DRIVERS += linuxmodule
65568 +endif
65569 +ifeq ($(MAKE_BPACKAGE),1)
65570 +TARGETS += $(package).bo
65571 +DRIVERS += bsdmodule
65572 +endif
65573 +
65574 +all: $(TARGETS)
65575 +
65576 +$(package).uo: Makefile always
65577 +       $(MAKE) CLICK_PACKAGE_MAKING=userlevel $(package).uo
65578 +
65579 +$(package).ko: Makefile always
65580 +       $(MAKE) CLICK_PACKAGE_MAKING=linuxmodule $(package).ko
65581 +
65582 +ifneq ($(wildcard $(srcdir)/Makefile.in),)
65583 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
65584 +       cd $(top_builddir) \
65585 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
65586 +endif
65587 +
65588 +ifneq ($(wildcard $(top_srcdir)/configure.ac),)
65589 +$(top_builddir)/config.status: $(top_srcdir)/configure
65590 +       cd $(top_builddir) && ./config.status --recheck
65591 +$(top_srcdir)/configure: $(top_srcdir)/configure.ac
65592 +       cd $(top_srcdir) && autoconf
65593 +endif
65594 +
65595 +elemlist:
65596 +       for i in $(DRIVERS); do $(MAKE) CLICK_PACKAGE_MAKING=$$i elemlist; done
65597 +
65598 +elementmap-$(package).xml: $(clickbindir)/click-mkelemmap always
65599 +       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
65600 +
65601 +install: install-obj install-man elementmap-$(package).xml always
65602 +       $(mkinstalldirs) $(DESTDIR)$(clickdatadir)
65603 +       $(INSTALL_DATA) elementmap-$(package).xml $(DESTDIR)$(clickdatadir)/elementmap-$(package).xml
65604 +install-obj: $(TARGETS) always
65605 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
65606 +       for i in $(TARGETS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
65607 +install-man: always elementmap-$(package).xml
65608 +       $(mkinstalldirs) $(DESTDIR)$(mandir)
65609 +       $(mkinstalldirs) $(DESTDIR)$(mandir)/mann
65610 +       $(clickbindir)/click-elem2man -L -d $(DESTDIR)$(mandir)/mann -P $(package) -e $(clickdatadir)/elementmap.xml elementmap-$(package).xml
65611 +
65612 +uninstall: uninstall-obj uninstall-man always
65613 +       /bin/rm -f $(DESTDIR)$(clickdatadir)/elementmap-$(package).xml
65614 +uninstall-obj: always
65615 +       for i in $(TARGETS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
65616 +uninstall-man: always elementmap-$(package).xml
65617 +       $(clickbindir)/click-elem2man -L -d $(DESTDIR)$(mandir)/mann -P $(package) -e $(clickdatadir)/elementmap.xml -u elementmap-$(package).xml
65618 +
65619 +clean: always
65620 +       @for i in $(DRIVERS); do make CLICK_PACKAGE_MAKING=$$i clean; done
65621 +       -rm -f elementmap-$(package).xml conftest.*
65622 +distclean: clean
65623 +       -rm -f Makefile config.h config.status config.cache config.log
65624 +
65625 +always:
65626 +       @:
65627 +
65628 +.PHONY: all always clean distclean elemlist \
65629 +       install install-obj install-man uninstall uninstall-obj uninstall-man
65630 +
65631 +endif
65632 diff -Nurb click-1.6.0/inst/share/click/pkg-config.mk click-1.6.0-27/inst/share/click/pkg-config.mk
65633 --- click-1.6.0/inst/share/click/pkg-config.mk  1969-12-31 19:00:00.000000000 -0500
65634 +++ click-1.6.0-27/inst/share/click/pkg-config.mk       2009-02-05 10:20:41.000000000 -0500
65635 @@ -0,0 +1,43 @@
65636 +# pkg-config.mk -- build tools for Click
65637 +# Eddie Kohler
65638 +#
65639 +# Copyright (c) 2006 Regents of the University of California
65640 +#
65641 +# Permission is hereby granted, free of charge, to any person obtaining a
65642 +# copy of this software and associated documentation files (the "Software"),
65643 +# to deal in the Software without restriction, subject to the conditions
65644 +# listed in the Click LICENSE file. These conditions include: you must
65645 +# preserve this copyright notice, and you cannot mention the copyright
65646 +# holders in advertising related to the Software without their permission.
65647 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
65648 +# notice is a summary of the Click LICENSE file; the license in that file is
65649 +# legally binding.
65650 +
65651 +CLICKCC = gcc -W -Wall
65652 +CLICKCPP = gcc -W -Wall -E
65653 +CLICKCXX = g++ -W -Wall 
65654 +CLICKCXXCPP = g++ -W -Wall  -E
65655 +
65656 +CLICKAR_CREATE = ar cru
65657 +CLICKRANLIB = ranlib
65658 +CLICKSTRIP = strip
65659 +
65660 +CLICKKERNEL_CC = gcc -w -W -Wall
65661 +CLICKKERNEL_CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
65662 +
65663 +CLICKCPPFLAGS = 
65664 +CLICKCFLAGS = -g -O2
65665 +CLICKCFLAGS_NDEBUG =  -O2
65666 +CLICKCXXFLAGS = -g -O2
65667 +CLICKCXXFLAGS_NDEBUG =  -O2
65668 +CLICKDEPCFLAGS = -MD
65669 +
65670 +CLICKDEFS = -DHAVE_CONFIG_H
65671 +CLICKINCLUDES = -I$(clickincludedir) -I$(clicksrcdir) 
65672 +CLICKLDFLAGS = 
65673 +CLICKLDMODULEFLAGS = -shared
65674 +
65675 +CLICKAUTOCONF = autoconf
65676 +CLICKGMAKE = make
65677 +CLICKINSTALL = /usr/bin/install -c
65678 +
65679 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
65680 --- click-1.6.0/inst/share/click/pkg-linuxmodule-26.mk  1969-12-31 19:00:00.000000000 -0500
65681 +++ click-1.6.0-27/inst/share/click/pkg-linuxmodule-26.mk       2009-02-05 10:20:41.000000000 -0500
65682 @@ -0,0 +1,92 @@
65683 +# pkg-linuxmodule-26.mk -- build tools for Click
65684 +# Eddie Kohler
65685 +#
65686 +# Copyright (c) 2006-2007 Regents of the University of California
65687 +#
65688 +# Permission is hereby granted, free of charge, to any person obtaining a
65689 +# copy of this software and associated documentation files (the "Software"),
65690 +# to deal in the Software without restriction, subject to the conditions
65691 +# listed in the Click LICENSE file. These conditions include: you must
65692 +# preserve this copyright notice, and you cannot mention the copyright
65693 +# holders in advertising related to the Software without their permission.
65694 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
65695 +# notice is a summary of the Click LICENSE file; the license in that file is
65696 +# legally binding.
65697 +
65698 +CLICKBUILD = linux26module
65699 +
65700 +CLICKCPPFLAGS += -DCLICK_LINUXMODULE
65701 +CLICKINCLUDES := -I$(clickincludedir) -I$(clicksrcdir) -I$(clicklinuxdir)/include
65702 +
65703 +LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \
65704 +       -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \
65705 +       -e s,-Wdeclaration-after-statement,, \
65706 +       -e s,-Wno-pointer-sign,, -e s,-fno-common,,)
65707 +
65708 +CXXFLAGS ?= $(CLICKCXXFLAGS_NDEBUG)
65709 +DEPCFLAGS ?= -Wp,-MD,$(depfile)
65710 +
65711 +DEFS ?= $(CLICKDEFS)
65712 +INCLUDES ?= $(CLICKINCLUDES)
65713 +
65714 +CXXCOMPILE = $(CLICKKERNEL_CXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) \
65715 +       $(CLICKCFLAGS_NDEBUG) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) \
65716 +       $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65717 +COMPILE = $(CLICKKERNEL_CC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) \
65718 +       $(CLICKCFLAGS_NDEBUG) $(PACKAGE_CFLAGS) \
65719 +       $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65720 +
65721 +packagesrcdir ?= $(srcdir)
65722 +PACKAGE_OBJS ?= kpackage.ko
65723 +
65724 +CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool
65725 +CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES)
65726 +
65727 +quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@)
65728 +cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $<
65729 +
65730 +quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@)
65731 +cmd_ccompile = $(COMPILE) -c -o $@ $<
65732 +
65733 +EXTRA_CFLAGS += $(CLICKCPPFLAGS) $(CLICKCFLAGS_NDEBUG) $(CLICKDEFS) $(CLICKINCLUDES) 
65734 +
65735 +ifneq ($(KBUILD_EXTMOD),)
65736 +ifeq ($(srcdir),.)
65737 +top_srcdir := $(src)/..
65738 +srcdir := $(src)
65739 +else
65740 +ifneq ($(patsubst /%,/,$(srcdir)),/)
65741 +top_srcdir := $(obj)/$(top_srcdir)
65742 +srcdir := $(obj)/$(srcdir)
65743 +endif
65744 +top_builddir := $(obj)/$(top_builddir)
65745 +builddir := $(obj)
65746 +endif
65747 +
65748 +-include $(obj)/kelements.mk
65749 +
65750 +$(package)-objs := $(ELEMENT_OBJS) $(PACKAGE_OBJS) kversion.ko
65751 +endif
65752 +
65753 +obj-m += $(package).o
65754 +
65755 +$(obj)/kelements.conf: $(CLICK_BUILDTOOL)
65756 +       echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r linuxmodule -r $(package) -P $(CLICKFINDELEMFLAGS) > $(obj)/kelements.conf
65757 +$(obj)/kelements.mk: $(obj)/kelements.conf $(CLICK_BUILDTOOL)
65758 +       $(CLICK_BUILDTOOL) elem2make -t linuxmodule < $(obj)/kelements.conf > $(obj)/kelements.mk
65759 +$(obj)/kpackage.ko: $(obj)/kpackage.cc
65760 +       $(call if_changed_dep,cxxcompile)
65761 +$(obj)/kpackage.cc: $(obj)/kelements.conf $(CLICK_BUILDTOOL)
65762 +       $(CLICK_ELEM2PACKAGE) $(package) < $(obj)/kelements.conf > $(obj)/kpackage.cc
65763 +       @rm -f $(obj)/kpackage.kd
65764 +$(obj)/kversion.ko: $(obj)/kversion.c
65765 +       $(call if_changed_dep,ccompile)
65766 +$(obj)/kversion.c: $(CLICK_BUILDTOOL)
65767 +       $(CLICK_BUILDTOOL) kversion $(KVERSIONFLAGS) > $(obj)/kversion.c
65768 +
65769 +DEPFILES := $(wildcard *.kd)
65770 +ifneq ($(DEPFILES),)
65771 +include $(DEPFILES)
65772 +endif
65773 +
65774 +.PHONY: clean elemlist
65775 diff -Nurb click-1.6.0/inst/share/click/pkg-linuxmodule.mk click-1.6.0-27/inst/share/click/pkg-linuxmodule.mk
65776 --- click-1.6.0/inst/share/click/pkg-linuxmodule.mk     1969-12-31 19:00:00.000000000 -0500
65777 +++ click-1.6.0-27/inst/share/click/pkg-linuxmodule.mk  2009-02-05 10:20:41.000000000 -0500
65778 @@ -0,0 +1,115 @@
65779 +# pkg-linuxmodule.mk -- build tools for Click
65780 +# Eddie Kohler
65781 +#
65782 +# Copyright (c) 2006 Regents of the University of California
65783 +#
65784 +# Permission is hereby granted, free of charge, to any person obtaining a
65785 +# copy of this software and associated documentation files (the "Software"),
65786 +# to deal in the Software without restriction, subject to the conditions
65787 +# listed in the Click LICENSE file. These conditions include: you must
65788 +# preserve this copyright notice, and you cannot mention the copyright
65789 +# holders in advertising related to the Software without their permission.
65790 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
65791 +# notice is a summary of the Click LICENSE file; the license in that file is
65792 +# legally binding.
65793 +
65794 +CLICKBUILD = linuxmodule
65795 +
65796 +CC ?= $(CLICKKERNEL_CC)
65797 +CPP ?= $(CLICKCPP)
65798 +CXX ?= $(CLICKKERNEL_CXX)
65799 +CXXCPP ?= $(CLICKCXXCPP)
65800 +AR_CREATE ?= $(CLICKAR_CREATE)
65801 +RANLIB ?= $(CLICKRANLIB)
65802 +STRIP ?= $(CLICKSTRIP)
65803 +
65804 +CPPFLAGS ?= $(CLICKCPPFLAGS) -DCLICK_LINUXMODULE
65805 +CFLAGS ?= $(CLICKCFLAGS_NDEBUG)
65806 +CXXFLAGS ?= $(CLICKCXXFLAGS_NDEBUG)
65807 +DEPCFLAGS ?= $(CLICKDEPCFLAGS)
65808 +
65809 +DEFS ?= $(CLICKDEFS)
65810 +INCLUDES ?=  -I$(clickincludedir) -I$(clicksrcdir) -I$(clicklinuxdir)/include
65811 +LDFLAGS ?= $(CLICKLDFLAGS)
65812 +
65813 +packagesrcdir ?= $(srcdir)
65814 +PACKAGE_OBJS ?= kpackage.ko
65815 +
65816 +CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool
65817 +CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES)
65818 +
65819 +ifneq ($(CLICK_LINUXMODULE_2_6),1)
65820 +
65821 +CXXCOMPILE = $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65822 +CXXLD = $(CXX)
65823 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
65824 +COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(PACKAGE_CFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65825 +CCLD = $(CC)
65826 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
65827 +FIXDEP = @-sed 's/\.o:/\.ko:/' < $*.d > $*.kd; /bin/rm -f $*.d
65828 +
65829 +ifeq ($(V),1)
65830 +ccompile = $(COMPILE) $(1)
65831 +cxxcompile = $(CXXCOMPILE) $(1)
65832 +else
65833 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
65834 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
65835 +endif
65836 +
65837 +.SUFFIXES:
65838 +.SUFFIXES: .c .cc .ko .kii
65839 +
65840 +.c.ko:
65841 +       $(call ccompile,-c $< -o $@,CC)
65842 +       $(FIXDEP)
65843 +.cc.ko:
65844 +       $(call cxxcompile,-c $< -o $@,CXX)
65845 +       $(FIXDEP)
65846 +.cc.kii:
65847 +       $(call cxxcompile,-E $< > $@,CXXCPP)
65848 +
65849 +ifneq ($(MAKECMDGOALS),clean)
65850 +-include kelements.mk
65851 +endif
65852 +
65853 +OBJS = $(ELEMENT_OBJS) $(PACKAGE_OBJS) kversion.ko
65854 +
65855 +endif
65856 +
65857 +ifeq ($(CLICK_LINUXMODULE_2_6),1)
65858 +# Jump through hoops to avoid missing symbol warnings
65859 +$(package).ko: Makefile Kbuild always
65860 +       { ( $(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
65861 +Kbuild: $(CLICK_BUILDTOOL)
65862 +       echo 'include $$(obj)/Makefile' > Kbuild
65863 +       $(CLICK_BUILDTOOL) kbuild >> Kbuild
65864 +else
65865 +$(package).ko: $(clickdatadir)/pkg-linuxmodule.mk $(OBJS)
65866 +       $(LD) -r -o $(package).ko $(OBJS)
65867 +       $(STRIP) -g $(package).ko
65868 +endif
65869 +
65870 +elemlist kelements.conf: $(CLICK_BUILDTOOL)
65871 +       echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r linuxmodule -r $(package) -P $(CLICKFINDELEMFLAGS) > kelements.conf
65872 +kelements.mk: kelements.conf $(CLICK_BUILDTOOL)
65873 +       $(CLICK_BUILDTOOL) elem2make -t linuxmodule < kelements.conf > kelements.mk
65874 +kpackage.cc: kelements.conf $(CLICK_BUILDTOOL)
65875 +       $(CLICK_ELEM2PACKAGE) $(package) < kelements.conf > kpackage.cc
65876 +       @rm -f kpackage.kd
65877 +kversion.c: $(CLICK_BUILDTOOL)
65878 +       $(CLICK_BUILDTOOL) kversion $(KVERSIONFLAGS) > kversion.c
65879 +
65880 +DEPFILES := $(wildcard *.kd)
65881 +ifneq ($(DEPFILES),)
65882 +include $(DEPFILES)
65883 +endif
65884 +
65885 +always:
65886 +       @:
65887 +clean:
65888 +       -rm -f $(package).ko .$(package).ko.status
65889 +       -rm -f *.kd *.ko kelements.conf kelements.mk kpackage.cc kversion.c Kbuild
65890 +       -rm -f .*.o.cmd .*.ko.cmd $(package).mod.c $(package).mod.o $(package).o
65891 +       -rm -rf .tmp_versions
65892 +
65893 +.PHONY: clean elemlist always
65894 diff -Nurb click-1.6.0/inst/share/click/pkg-userlevel.mk click-1.6.0-27/inst/share/click/pkg-userlevel.mk
65895 --- click-1.6.0/inst/share/click/pkg-userlevel.mk       1969-12-31 19:00:00.000000000 -0500
65896 +++ click-1.6.0-27/inst/share/click/pkg-userlevel.mk    2009-02-05 10:20:41.000000000 -0500
65897 @@ -0,0 +1,96 @@
65898 +# pkg-userlevel.mk -- build tools for Click
65899 +# Eddie Kohler
65900 +#
65901 +# Copyright (c) 2006-2007 Regents of the University of California
65902 +#
65903 +# Permission is hereby granted, free of charge, to any person obtaining a
65904 +# copy of this software and associated documentation files (the "Software"),
65905 +# to deal in the Software without restriction, subject to the conditions
65906 +# listed in the Click LICENSE file. These conditions include: you must
65907 +# preserve this copyright notice, and you cannot mention the copyright
65908 +# holders in advertising related to the Software without their permission.
65909 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
65910 +# notice is a summary of the Click LICENSE file; the license in that file is
65911 +# legally binding.
65912 +
65913 +CLICKBUILD = userlevel
65914 +
65915 +CC ?= $(CLICKCC)
65916 +CPP ?= $(CLICKCPP)
65917 +CXX ?= $(CLICKCXX)
65918 +CXXCPP ?= $(CLICKCXXCPP)
65919 +AR_CREATE ?= $(CLICKAR_CREATE)
65920 +RANLIB ?= $(CLICKRANLIB)
65921 +STRIP ?= $(CLICKSTRIP)
65922 +
65923 +CPPFLAGS ?= $(CLICKCPPFLAGS) -DCLICK_USERLEVEL
65924 +CFLAGS ?= $(CLICKCFLAGS) -fPIC
65925 +CXXFLAGS ?= $(CLICKCXXFLAGS) -fPIC
65926 +DEPCFLAGS ?= $(CLICKDEPCFLAGS)
65927 +
65928 +DEFS ?= $(CLICKDEFS)
65929 +INCLUDES ?= $(CLICKINCLUDES)
65930 +LDFLAGS ?= $(CLICKLDMODULEFLAGS)
65931 +
65932 +packagesrcdir ?= $(srcdir)
65933 +PACKAGE_OBJS ?= upackage.uo
65934 +
65935 +CLICK_BUILDTOOL ?= $(clickbindir)/click-buildtool
65936 +CLICK_ELEM2PACKAGE ?= $(CLICK_BUILDTOOL) elem2package $(ELEM2PACKAGE_INCLUDES)
65937 +STRIP_UPACKAGE ?= true
65938 +
65939 +CXXCOMPILE = $(CXX) $(CPPFLAGS) $(CXXFLAGS) $(PACKAGE_CXXFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65940 +CXXLD = $(CXX)
65941 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
65942 +COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(PACKAGE_CFLAGS) $(DEFS) $(INCLUDES) $(DEPCFLAGS)
65943 +CCLD = $(CC)
65944 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
65945 +FIXDEP = @-sed 's/\.o:/\.uo:/' < $*.d > $*.ud; /bin/rm -f $*.d
65946 +
65947 +ifeq ($(V),1)
65948 +ccompile = $(COMPILE) $(1)
65949 +cxxcompile = $(CXXCOMPILE) $(1)
65950 +else
65951 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
65952 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
65953 +endif
65954 +
65955 +.SUFFIXES:
65956 +.SUFFIXES: .c .cc .uo .uii
65957 +
65958 +.c.uo:
65959 +       $(call ccompile,-c $< -o $@,CC)
65960 +       $(FIXDEP)
65961 +.cc.uo:
65962 +       $(call cxxcompile,-c $< -o $@,CXX)
65963 +       $(FIXDEP)
65964 +.cc.uii:
65965 +       $(call cxxcompile,-E $< > $@,CXXCPP)
65966 +
65967 +ifneq ($(MAKECMDGOALS),clean)
65968 +-include uelements.mk
65969 +endif
65970 +
65971 +OBJS = $(ELEMENT_OBJS) $(PACKAGE_OBJS)
65972 +
65973 +$(package).uo: $(clickdatadir)/pkg-userlevel.mk $(OBJS)
65974 +       $(CXXLINK) -o $(package).uo $(OBJS) $(ELEMENT_LIBS)
65975 +       $(STRIP_UPACKAGE) $(package).uo
65976 +
65977 +elemlist uelements.conf: $(CLICK_BUILDTOOL)
65978 +       echo $(packagesrcdir) | $(CLICK_BUILDTOOL) findelem -r userlevel -r $(package) -P $(CLICKFINDELEMFLAGS) > uelements.conf
65979 +uelements.mk: uelements.conf $(CLICK_BUILDTOOL)
65980 +       $(CLICK_BUILDTOOL) elem2make -t userlevel < uelements.conf > uelements.mk
65981 +upackage.cc: uelements.conf $(CLICK_BUILDTOOL)
65982 +       $(CLICK_ELEM2PACKAGE) $(package) < uelements.conf > upackage.cc
65983 +       @rm -f upackage.ud
65984 +
65985 +DEPFILES := $(wildcard *.ud)
65986 +ifneq ($(DEPFILES),)
65987 +include $(DEPFILES)
65988 +endif
65989 +
65990 +clean:
65991 +       -rm -f *.ud *.uo uelements.conf uelements.mk upackage.cc $(package).uo
65992 +
65993 +.PHONY: clean elemlist
65994 diff -Nurb click-1.6.0/inst/share/click/srcdir click-1.6.0-27/inst/share/click/srcdir
65995 --- click-1.6.0/inst/share/click/srcdir 1969-12-31 19:00:00.000000000 -0500
65996 +++ click-1.6.0-27/inst/share/click/srcdir      2009-02-11 14:08:51.000000000 -0500
65997 @@ -0,0 +1 @@
65998 +/d/click/click-1.6.0-27
65999 diff -Nurb click-1.6.0/inst/share/info/click.info click-1.6.0-27/inst/share/info/click.info
66000 --- click-1.6.0/inst/share/info/click.info      1969-12-31 19:00:00.000000000 -0500
66001 +++ click-1.6.0-27/inst/share/info/click.info   2009-02-11 14:08:52.000000000 -0500
66002 @@ -0,0 +1,2656 @@
66003 +This is click.info, produced by makeinfo version 4.8 from
66004 +../../doc/click.texi.
66005 +
66006 +INFO-DIR-SECTION Click modular router
66007 +START-INFO-DIR-ENTRY
66008 +* Click: (click).           The Click modular router programming manual.
66009 +END-INFO-DIR-ENTRY
66010 +
66011 +\1f
66012 +File: click.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)
66013 +
66014 +Click
66015 +*****
66016 +
66017 +This document describes the Click modular router's programming
66018 +interface. Read this if you're interested in writing new elements for
66019 +Click. You shouldn't need to read it if you are just building routers
66020 +that use existing elements.
66021 +
66022 +   Most of Click's programming interface documentation is now stored in
66023 +the source code as structured comments.  The formatted documentation is
66024 +on the Web: <http://www.read.cs.ucla.edu/click/doxygen>
66025 +
66026 +* Menu:
66027 +
66028 +* Overview::
66029 +* Helper Classes::
66030 +* Packets::
66031 +* Tasks::
66032 +* Timers::
66033 +* Notification::
66034 +* Coding Standards::
66035 +* Index::                       Index.
66036 +
66037 + --- The Detailed Node Listing ---
66038 +
66039 +Overview
66040 +
66041 +* Packet Transfer::
66042 +
66043 +Helper Classes
66044 +
66045 +* ErrorHandler::
66046 +
66047 +ErrorHandler
66048 +
66049 +* ErrorHandler Initialization::
66050 +* Reporting Errors::
66051 +* Error Format Strings::
66052 +* Counting Errors::
66053 +* Basic ErrorHandlers::
66054 +* Error Veneers::
66055 +* Writing ErrorHandlers::
66056 +
66057 +Packets
66058 +
66059 +* Packet Structure and Contents::
66060 +* Packet Creation::
66061 +* Packets and sk_buffs::
66062 +* Packet Sharing::
66063 +* Packet Buffer Manipulation::
66064 +* Annotations::
66065 +* Packet Out-of-Memory::
66066 +* Handlers::
66067 +
66068 +Annotations
66069 +
66070 +* Header Annotations::
66071 +* User Annotations::
66072 +* Specific User Annotations::
66073 +* Other Annotations::
66074 +* Annotations In General::
66075 +
66076 +Other Annotations
66077 +
66078 +* Destination Address Annotation::
66079 +* Timestamp Annotation::
66080 +* Device Annotation::
66081 +* Packet Type Annotation::
66082 +* Performance Counter Annotation::
66083 +
66084 +Handlers
66085 +
66086 +* Read and Write Handler Overview::
66087 +* Adding Handlers::
66088 +* Default Handlers::
66089 +* Accessing Handlers Internally::
66090 +* LLRPC Overview::
66091 +
66092 +Accessing Handlers Internally
66093 +
66094 +* Handler Objects::
66095 +* Handlers By Name or Index::
66096 +
66097 +Tasks
66098 +
66099 +* Task Initialization::
66100 +* Scheduling Tasks::
66101 +* Tickets::
66102 +* Task Thread Choice::
66103 +* Task Status::
66104 +* Task Handlers::
66105 +* Task Cleanup::
66106 +
66107 +Timers
66108 +
66109 +* Timer Initialization::
66110 +* Scheduling Timers::
66111 +* Timer Status Methods::
66112 +* Timer Cleanup::
66113 +
66114 +Coding Standards
66115 +
66116 +* Upper and lower case names::
66117 +* Common name patterns::
66118 +
66119 +\1f
66120 +File: click.info,  Node: Overview,  Next: Helper Classes,  Prev: Top,  Up: Top
66121 +
66122 +1 Overview
66123 +**********
66124 +
66125 +* Menu:
66126 +
66127 +* Packet Transfer::
66128 +
66129 +\1f
66130 +File: click.info,  Node: Packet Transfer,  Prev: Overview,  Up: Overview
66131 +
66132 +1.1 Packet Transfer
66133 +===================
66134 +
66135 +\1f
66136 +File: click.info,  Node: Helper Classes,  Next: Packets,  Prev: Overview,  Up: Top
66137 +
66138 +2 Helper Classes
66139 +****************
66140 +
66141 +* Menu:
66142 +
66143 +* ErrorHandler::
66144 +
66145 +\1f
66146 +File: click.info,  Node: ErrorHandler,  Prev: Helper Classes,  Up: Helper Classes
66147 +
66148 +2.1 ErrorHandler
66149 +================
66150 +
66151 +All Click error messages are passed to an instance of the
66152 +`ErrorHandler' class. `ErrorHandler' separates the generation of error
66153 +messages from the particular way those messages should be printed. It
66154 +also makes it easy to automatically decorate errors with context
66155 +information.
66156 +
66157 +   Most Click users must know how to report errors to an
66158 +`ErrorHandler', and how `ErrorHandler's count the messages they
66159 +receive. This section also describes how to decorate error messages
66160 +with error veneers, and how to write new `ErrorHandler's.
66161 +
66162 +   `ErrorHandler' and its important subclasses are defined in
66163 +`<click/error.hh>'.
66164 +
66165 +* Menu:
66166 +
66167 +* ErrorHandler Initialization::
66168 +* Reporting Errors::
66169 +* Error Format Strings::
66170 +* Counting Errors::
66171 +* Basic ErrorHandlers::
66172 +* Error Veneers::
66173 +* Writing ErrorHandlers::
66174 +
66175 +\1f
66176 +File: click.info,  Node: ErrorHandler Initialization,  Next: Reporting Errors,  Prev: ErrorHandler,  Up: ErrorHandler
66177 +
66178 +2.1.1 Class Initialization
66179 +--------------------------
66180 +
66181 +The `ErrorHandler' class maintains some global state that must be
66182 +initialized by calling `static_initialize' at the beginning of the
66183 +program, and may be freed by calling `static_cleanup' when execution is
66184 +complete.
66185 +
66186 + -- Static Method on ErrorHandler: void static_initialize (ErrorHandler
66187 +          *DEFAULT_ERRH)
66188 +     Call this function exactly once, at the beginning of the program,
66189 +     before any error messages are reported to any `ErrorHandler'. It
66190 +     is OK to create arbitrary `ErrorHandler' objects before calling
66191 +     this method, however. The DEFAULT_ERRH argument becomes the default
66192 +     `ErrorHandler'; see *Note Basic ErrorHandlers::.
66193 +
66194 + -- Static Method on ErrorHandler: void static_cleanup ()
66195 +     Call this function exactly once, just before the program exits.
66196 +     Destroys the default and silent `ErrorHandler's and cleans up other
66197 +     `ErrorHandler'-related memory. It is an error to call any
66198 +     `ErrorHandler' method after calling `static_cleanup'.
66199 +
66200 +\1f
66201 +File: click.info,  Node: Reporting Errors,  Next: Error Format Strings,  Prev: ErrorHandler Initialization,  Up: ErrorHandler
66202 +
66203 +2.1.2 Reporting Errors
66204 +----------------------
66205 +
66206 +`ErrorHandler''s basic error reporting methods take a format string,
66207 +which may use `printf'-like `%' escape sequences, and additional
66208 +arguments as required by the format string. *Note Error Format
66209 +Strings::, for more details on the format string. The five methods
66210 +differ in the seriousness of the error they report.
66211 +
66212 + -- Method on ErrorHandler: void debug (const char *FORMAT, ...)
66213 + -- Method on ErrorHandler: void message (const char *FORMAT, ...)
66214 + -- Method on ErrorHandler: int warning (const char *FORMAT, ...)
66215 + -- Method on ErrorHandler: int error (const char *FORMAT, ...)
66216 + -- Method on ErrorHandler: int fatal (const char *FORMAT, ...)
66217 +     Report the error described by FORMAT and any additional arguments.
66218 +     The methods are listed by increasing seriousness. Use `debug' for
66219 +     debugging messages that should not be printed in a production
66220 +     environment; `message' for explanatory messages that do not
66221 +     indicate errors; `warning' for warnings (this function prepends the
66222 +     string `warning: ' to every line of the error message); `error'
66223 +     for errors; and `fatal' for errors so serious that they should
66224 +     halt the execution of the program. The three functions that
66225 +     indicate errors, `warning', `error', and `fatal', always return
66226 +     `-EINVAL'. In some environments, `fatal' will actually exit the
66227 +     program with exit code 1.
66228 +
66229 +   Each of these methods has an analogue that additionally takes a
66230 +"landmark": a string representing where the error took place. A typical
66231 +landmark contains a file name and line number, separated by a
66232 +colon--`foo.click:31', for example.
66233 +
66234 + -- Method on ErrorHandler: void ldebug (const String &LANDMARK, const
66235 +          char *FORMAT, ...)
66236 + -- Method on ErrorHandler: void lmessage (const String &LANDMARK,
66237 +          const char *FORMAT, ...)
66238 + -- Method on ErrorHandler: int lwarning (const String &LANDMARK, const
66239 +          char *FORMAT, ...)
66240 + -- Method on ErrorHandler: int lerror (const String &LANDMARK, const
66241 +          char *FORMAT, ...)
66242 + -- Method on ErrorHandler: int lfatal (const String &LANDMARK, const
66243 +          char *FORMAT, ...)
66244 +     Report the error described by FORMAT and any additional arguments.
66245 +     The error took place at LANDMARK. Most `ErrorHandler's will simply
66246 +     prepend `LANDMARK: ' to each line of the error message.
66247 +
66248 +   These methods are all implemented as wrappers around the `verror'
66249 +function. This function takes a landmark, a format string, a `va_list'
66250 +packaging up any additional arguments, and a "seriousness value", which
66251 +encodes how serious the error was. The `Seriousness' enumerated type,
66252 +which is defined in the `ErrorHandler' class, represents seriousness
66253 +values. There are five constants, corresponding to the five
66254 +error-reporting methods:
66255 +
66256 +`ERR_DEBUG'
66257 +     Corresponds to `debug' and `ldebug'.
66258 +
66259 +`ERR_MESSAGE'
66260 +     Corresponds to `message' and `lmessage'.
66261 +
66262 +`ERR_WARNING'
66263 +     Corresponds to `warning' and `lwarning'.
66264 +
66265 +`ERR_ERROR'
66266 +     Corresponds to `error' and `lerror'.
66267 +
66268 +`ERR_FATAL'
66269 +     Corresponds to `fatal' and `lfatal'.
66270 +
66271 + -- Method on ErrorHandler: int verror (Seriousness SERIOUSNESS, const
66272 +          String &LANDMARK, const char *FORMAT, va_list VAL)
66273 +     Report the error described by FORMAT and VAL. The error took place
66274 +     at LANDMARK, if LANDMARK is nonempty. The SERIOUSNESS value is one
66275 +     of the five constants described above.  Always returns `-EINVAL'.
66276 +
66277 +\1f
66278 +File: click.info,  Node: Error Format Strings,  Next: Counting Errors,  Prev: Reporting Errors,  Up: ErrorHandler
66279 +
66280 +2.1.3 Format Strings
66281 +--------------------
66282 +
66283 +`ErrorHandler''s format strings closely follow C's standard `printf'
66284 +format strings. Most characters in the format string are printed
66285 +verbatim. The `%' character introduces a "conversion", which prints
66286 +data read from the remaining arguments. The format string may contain
66287 +newlines `\n', but it need not end with a newline; `ErrorHandler' will
66288 +add a final newline if one does not exist.
66289 +
66290 +   Each conversion, or formatting escape, follows this pattern:
66291 +
66292 +   * First, the `%' character introduces each conversion.
66293 +
66294 +   * Next comes zero or more "flag characters";
66295 +
66296 +   * then an optional "field width";
66297 +
66298 +   * then an optional "precision";
66299 +
66300 +   * then an optional "length modifier";
66301 +
66302 +   * and finally, the mandatory "conversion specifier", which is
66303 +     usually a single character, but may be a name enclosed in braces.
66304 +
66305 +We discuss each of these is turn.
66306 +
66307 +   Any conversion may be modified by zero or more of these flag
66308 +characters.
66309 +
66310 +`#'
66311 +     The value should be converted to an "alternate form". For `o'
66312 +     conversions, the first character of the output string is made `0',
66313 +     by prepending a `0' if there was not one already. For `x' and `X'
66314 +     conversions, nonzero values have `0x' or `0X' prepended,
66315 +     respectively.
66316 +
66317 +`0'
66318 +     The value should be zero padded. For `d', `i', `u', `o', `x', and
66319 +     `X' conversions, the converted value is padded on the left with
66320 +     `0' characters rather than spaces.
66321 +
66322 +`-'
66323 +     The value should be left-justified within the field width.
66324 +
66325 +` ' (a space)
66326 +     Leave a blank before a nonnegative number produced by a signed
66327 +     conversion.
66328 +
66329 +`+'
66330 +     Print a `+' character before a nonnegative number produced by a
66331 +     signed conversion.
66332 +
66333 +
66334 +   The optional "field width", a decimal digit string, forces the
66335 +conversion to use a minimum number of characters. The result of a
66336 +conversion is padded on the left with space characters to reach the
66337 +minimum field width, unless one of the `0' or `-' flags was supplied.
66338 +
66339 +   The optional "precision" is a decimal digit string preceded by a
66340 +period `.'. For `d', `i', `u', `o', `x', and `X' conversions, the
66341 +precision specifies the minimum number of digits that must appear;
66342 +results with fewer digits are padded on the left with `0' characters.
66343 +For the `s' conversion, the precision specifies the maximum number of
66344 +characters that can be printed. For `e', `f', `E', and `F' conversions,
66345 +it specifies the number of digits to appear after the radix character;
66346 +for `g' and `G' conversions, the number of significant digits.
66347 +
66348 +   If either the field width or precision is specified as a star `*',
66349 +`ErrorHandler' reads the next argument as an integer and uses that
66350 +instead.
66351 +
66352 +   Length modifiers affect the argument type read by the conversion.
66353 +There are three modifiers:
66354 +
66355 +`h'
66356 +     The next argument is a `short' or `unsigned short'. Affects the
66357 +     `d', `i', `u', `o', `x', and `X' conversions.
66358 +
66359 +`l'
66360 +     The next argument is a `long' or `unsigned long'. Affects the `d',
66361 +     `i', `u', `o', `x', and `X' conversions.
66362 +
66363 +`ll'
66364 +     The next argument is a `long long' or `unsigned long long'.
66365 +     Affects the `d', `i', `u', `o', `x', and `X' conversions.
66366 +
66367 +   Finally, these are the conversions themselves.
66368 +
66369 +`s'
66370 +     Print the `const char *' argument, treated as a C string.
66371 +
66372 +`c'
66373 +     The `int' argument is treated as a character constant. Printable
66374 +     ASCII characters (values between 32 and 126) are printed verbatim.
66375 +     Characters `\n', `\t', `\r', and `\0' use those C escape
66376 +     representations. Other characters use the representation `\%03o'.
66377 +
66378 +`d', `i'
66379 +     The argument is an `int'; print its decimal representation.
66380 +
66381 +`u'
66382 +     The argument is an `unsigned int'; print its decimal
66383 +     representation.
66384 +
66385 +`o'
66386 +     The argument is an `unsigned int'; print its octal representation.
66387 +
66388 +`x', `X'
66389 +     The argument is an `unsigned int'; print its hexadecimal
66390 +     representation. The `%x' conversion uses lowercase letters; `%X'
66391 +     uses uppercase letters.
66392 +
66393 +`e', `f', `g', `E', `F', `G'
66394 +     The argument is a `double'; print its representation as if by
66395 +     `printf' (user-level drivers only).
66396 +
66397 +`p'
66398 +     The `void *' argument is cast to `unsigned long' and printed as by
66399 +     `%#lx'.
66400 +
66401 +`%'
66402 +     Print a literal `%' character.
66403 +
66404 +`{element}'
66405 +     The argument is an `Element *'. Print that element's declaration.
66406 +
66407 +
66408 +   Note that `ErrorHandler' does not support the `n' conversion.
66409 +
66410 +\1f
66411 +File: click.info,  Node: Counting Errors,  Next: Basic ErrorHandlers,  Prev: Error Format Strings,  Up: ErrorHandler
66412 +
66413 +2.1.4 Counting Errors
66414 +---------------------
66415 +
66416 +`ErrorHandler' objects count the number of errors and warnings they
66417 +have received and make those values available to the user.
66418 +
66419 + -- Method on ErrorHandler: virtual int nwarnings () const
66420 + -- Method on ErrorHandler: virtual int nerrors () const
66421 +     Returns the number of warnings or errors received by this
66422 +     `ErrorHandler' so far.
66423 +
66424 + -- Method on ErrorHandler: virtual void reset_counts ()
66425 +     Resets the `nwarnings' and `nerrors' counters to zero.
66426 +
66427 +   These counters are typically used to determine whether an error has
66428 +taken place in some complex piece of code. For example:
66429 +
66430 +     int before_nerrors = errh->nerrors();
66431 +     // ... complex code that may report errors to `errh' ...
66432 +     if (errh->nerrors() != before_nerrors) {
66433 +         // an error has taken place
66434 +     }
66435 +
66436 +\1f
66437 +File: click.info,  Node: Basic ErrorHandlers,  Next: Error Veneers,  Prev: Counting Errors,  Up: ErrorHandler
66438 +
66439 +2.1.5 Basic `ErrorHandler's
66440 +---------------------------
66441 +
66442 +Every Click error message eventually reaches some "basic"
66443 +`ErrorHandler', which generally prints the messages it receives.  The
66444 +user-level driver's basic `ErrorHandler' prints error messages to
66445 +standard error, while in the Linux kernel module, the basic
66446 +`ErrorHandler' logs messages to the syslog and stores them for access
66447 +via `/click/errors'.
66448 +
66449 +   Two basic `ErrorHandlers' are always accessible via static methods:
66450 +the "default `ErrorHandler'", returned by `default_handler' and set by
66451 +`set_default_handler'; and the "silent `ErrorHandler'", returned by
66452 +`silent_handler', which ignores any error messages it receives.
66453 +
66454 + -- Static Method on ErrorHandler: ErrorHandler * default_handler ()
66455 +     Returns the default `ErrorHandler'.
66456 +
66457 + -- Static Method on ErrorHandler: void set_default_handler
66458 +          (ErrorHandler *errh)
66459 +     Sets the default `ErrorHandler' to ERRH. The `static_initialize'
66460 +     method also sets the default `ErrorHandler'; see *Note
66461 +     ErrorHandler Initialization::.
66462 +
66463 + -- Static Method on ErrorHandler: ErrorHandler * silent_handler ()
66464 +     Returns the silent `ErrorHandler'. This handler ignores any error
66465 +     messages it receives. It maintains correct `nwarnings' and
66466 +     `nerrors' counts, however.
66467 +
66468 +   `FileErrorHandler', a kind of basic `ErrorHandler', is available in
66469 +any user-level program. It prints every message it receives to some
66470 +file, usually standard error. It can also prepend an optional context
66471 +string to every line of every error message.
66472 +
66473 + -- Constructor on FileErrorHandler:  FileErrorHandler (FILE *F,
66474 +          const String &PREFIX = "")
66475 +     Constructs a `FileErrorHandler' that prints error messages to file
66476 +     F. If PREFIX is nonempty, then every line of every error message
66477 +     is prepended by PREFIX.
66478 +
66479 +\1f
66480 +File: click.info,  Node: Error Veneers,  Next: Writing ErrorHandlers,  Prev: Basic ErrorHandlers,  Up: ErrorHandler
66481 +
66482 +2.1.6 Error Veneers
66483 +-------------------
66484 +
66485 +"Error veneers" wrap around basic `ErrorHandler' objects and change how
66486 +error text is generated. An error veneer generally changes each error
66487 +message's text in some way, perhaps by adding a context message or some
66488 +indentation. It then passes the altered text to the basic
66489 +`ErrorHandler' for printing. Error veneers can be easily nested.
66490 +
66491 +   The first argument to each error veneer constructor is a pointer to
66492 +another `ErrorHandler' object. The veneer will pass altered error text
66493 +to this handler, the "base handler", for further processing and
66494 +printing. It also delegates `nwarnings()' and `nerrors()' calls to the
66495 +base handler.
66496 +
66497 +   Click comes with three error veneers: one for adding context, one for
66498 +prepending text to every line, and one for supplying missing landmarks.
66499 +It is easy to write others; see *Note Writing ErrorHandlers::, for
66500 +details.
66501 +
66502 + -- Constructor on ContextErrorHandler:  ContextErrorHandler
66503 +          (ErrorHandler *BASE_ERRH, const String &CONTEXT,
66504 +          const String &INDENT = "  ")
66505 +     Constructs a `ContextErrorHandler' with BASE_ERRH as base.
66506 +
66507 +     The first time this handler receives an error message, it will
66508 +     precede the message with the CONTEXT string--generally more
66509 +     detailed information about where the error has occurred. Every
66510 +     line in every received error message is prepended with INDENT, two
66511 +     spaces by default, to set off the message from its context.
66512 +
66513 + -- Constructor on PrefixErrorHandler:  PrefixErrorHandler
66514 +          (ErrorHandler *BASE_ERRH, const String &PREFIX)
66515 +     Constructs a `PrefixErrorHandler' with BASE_ERRH as base.
66516 +
66517 +     This handler precedes every line of every error message with
66518 +     PREFIX.
66519 +
66520 + -- Constructor on LandmarkErrorHandler:  LandmarkErrorHandler
66521 +          (ErrorHandler *BASE_ERRH, const String &LANDMARK)
66522 +     Constructs a `LandmarkErrorHandler' with BASE_ERRH as base.
66523 +
66524 +     This handler supplies LANDMARK in place of any blank landmark
66525 +     passed to it. This will cause the base handler to include LANDMARK
66526 +     in its error message.
66527 +
66528 +   To demonstrate these veneers in practice, we'll use the following
66529 +function, which prints two error messages:
66530 +
66531 +     void f(ErrorHandler *errh) {
66532 +         errh->error("First line\nSecond line");
66533 +         errh->lwarning("here", "Third line");
66534 +     }
66535 +
66536 +   A simple `FileErrorHandler' shows the base case.
66537 +
66538 +     FileErrorHandler errh1(stderr);
66539 +     f(&errh1);
66540 +         -| First line
66541 +         -| Second line
66542 +         -| here: warning: Third line
66543 +
66544 +   The simplest error veneer, `PrefixErrorHandler', just prepends text
66545 +to every line.
66546 +
66547 +     PrefixErrorHandler errh2(&errh1, "prefix - ");
66548 +     f(&errh2);
66549 +         -| prefix - First line
66550 +         -| prefix - Second line
66551 +         -| prefix - here: warning: Third line
66552 +
66553 +   `ContextErrorHandler' supplies a line of context before the first
66554 +error message, and indents all messages except the context.
66555 +
66556 +     ContextErrorHandler errh3(&errh1, "This was called from ...", "** ");
66557 +     f(&errh3);
66558 +         -| This was called from ...
66559 +         -| ** First line
66560 +         -| ** Second line
66561 +         -| here: ** warning: Third line
66562 +
66563 +Note that the indentation `** ' is printed after the landmark.  This
66564 +often looks better than the alternative.
66565 +
66566 +   Of course, an error veneer can take another error veneer as its "base
66567 +handler", leading to cumulative effects.
66568 +
66569 +     ContextErrorHandler errh4(&errh2, "This was called from ...", "** ");
66570 +     f(&errh4);
66571 +         -| prefix - This was called from ...
66572 +         -| prefix - ** First line
66573 +         -| prefix - ** Second line
66574 +         -| prefix - here: ** warning: Third line
66575 +
66576 +\1f
66577 +File: click.info,  Node: Writing ErrorHandlers,  Prev: Error Veneers,  Up: ErrorHandler
66578 +
66579 +2.1.7 Writing `ErrorHandler's
66580 +-----------------------------
66581 +
66582 +`ErrorHandler' constructs an error message using three virtual
66583 +functions. The first, `make_text', parses a format string and argument
66584 +list into a single `String'. This is passed to the second function,
66585 +`decorate_text', which may transform the string. The final function,
66586 +`handle_text', prints the resulting error message.  This structure
66587 +makes `ErrorHandler' easy to extend. To write a new basic
66588 +`ErrorHandler', you will need to override just `handle_text' and the
66589 +counting functions (`nwarnings', `nerrors', and `reset_counts'). The
66590 +`ErrorVeneer' helper class, described below, lets you override just
66591 +`decorate_text' when writing an error veneer.
66592 +
66593 + -- Method on ErrorHandler: virtual String make_text (Seriousness S,
66594 +          const char *FORMAT, va_list VAL)
66595 +     Parses the format string FORMAT with arguments from VAL, returning
66596 +     the results as a STRING object.
66597 +
66598 +     The default implementation processes the formatting escapes
66599 +     described above (*note Error Format Strings::). It also prepends
66600 +     every line of the error message with `warning: ' if S equals
66601 +     `ERR_WARNING'.
66602 +
66603 + -- Method on ErrorHandler: virtual String decorate_text (Seriousness
66604 +          S, const String &PREFIX, const String &LANDMARK, const String
66605 +          &TEXT)
66606 +     Decorates the error message TEXT as appropriate and returns the
66607 +     result. At minimum, every line of the result should be prepended by
66608 +     PREFIX and, if it is nonempty, the landmark string LANDMARK.
66609 +
66610 +     The default implementation creates lines like this:
66611 +
66612 +          PREFIXLANDMARK: TEXT     (if LANDMARK is nonempty)
66613 +          PREFIXTEXT               (if LANDMARK is empty)
66614 +
66615 +     Any spaces and/or a final colon are stripped from the end of
66616 +     LANDMARK. Special landmarks, which begin and end with a backslash
66617 +     `\', are ignored.
66618 +
66619 + -- Method on ErrorHandler: virtual void handle_text
66620 +          (Seriousness S, const String &TEXT)
66621 +     This method is responsible for printing or otherwise informing the
66622 +     user about the error message TEXT. If S equals `ERR_FATAL', the
66623 +     method should exit the program or perform some other drastic
66624 +     action.  It should also maintain the `nwarnings()' and `nerrors()'
66625 +     counters. In most cases, it should ensure that the last character
66626 +     in TEXT is a newline.
66627 +
66628 +     This method has no default implementation.
66629 +
66630 +   The `ErrorVeneer' class, a subclass of `ErrorHandler', supplies
66631 +default implementations for these functions that ease the construction
66632 +of new error veneers. `ErrorVeneer''s single instance variable,
66633 +`ErrorHandler *_errh', is the base handler.  `ErrorVeneer' overrides
66634 +all the relevant virtual functions--`nwarnings', `nerrors',
66635 +`reset_counts', `make_text', `decorate_text', and `handle_text'. Its
66636 +versions simply delegate to the corresponding methods on `_errh'.  An
66637 +error veneer designer will generally subclass `ErrorVeneer' rather than
66638 +`ErrorHandler'; then she will override only the methods she cares about
66639 +(usually `decorate_text'), relying on `ErrorVeneer''s default
66640 +implementations for the rest.
66641 +
66642 + -- Constructor on ErrorVeneer:  ErrorVeneer (ErrorHandler *BASE_ERRH)
66643 +     Constructs an `ErrorVeneer' helper class with BASE_ERRH as its
66644 +     base error handler. This constructor simply sets `_errh =
66645 +     base_errh'.
66646 +
66647 +\1f
66648 +File: click.info,  Node: Packets,  Next: Tasks,  Prev: Helper Classes,  Up: Top
66649 +
66650 +3 Packets
66651 +*********
66652 +
66653 +The `Packet' class represents Click packets. The single `Packet'
66654 +interface has multiple implementations, one per driver.  Inside the
66655 +Linux kernel driver, a `Packet' object is equivalent to a Linux
66656 +`sk_buff' structure; most `Packet' methods are inline functions that
66657 +expand to `sk_buff' calls. The user-level driver, however, uses a
66658 +purpose-built `Packet' implementation.
66659 +
66660 +   Click packets separate header information from data. The `Packet *'
66661 +pointer points to a header structure, which holds pointers to the
66662 +actual packet data and a set of "annotations". Packet data may be
66663 +shared by two or more packet headers. Packet headers, however, should
66664 +never be shared.
66665 +
66666 +   Packets come in two flavors, `Packet' and `WritablePacket'. A
66667 +`Packet' object represents a packet header whose data might be shared
66668 +with other packets. Because of this potential sharing, `Packet' data is
66669 +read-only, and its methods return `const' pointers to data. A
66670 +`WritablePacket' object, in contrast, represents a packet header whose
66671 +data is known not to be shared. Its methods return non-`const'
66672 +pointers. The `uniqueify' method turns a `Packet' into a
66673 +`WritablePacket', possibly by making a copy of the packet's data.
66674 +`WritablePacket' is a subclass of `Packet', so you can turn a
66675 +`WritablePacket' into a `Packet' implicitly.
66676 +
66677 +   The `Packet' and `WritablePacket' classes are defined in
66678 +`<click/packet.hh>'.
66679 +
66680 +* Menu:
66681 +
66682 +* Packet Structure and Contents::
66683 +* Packet Creation::
66684 +* Packets and sk_buffs::
66685 +* Packet Sharing::
66686 +* Packet Buffer Manipulation::
66687 +* Annotations::
66688 +* Packet Out-of-Memory::
66689 +* Handlers::
66690 +
66691 +\1f
66692 +File: click.info,  Node: Packet Structure and Contents,  Next: Packet Creation,  Prev: Packets,  Up: Packets
66693 +
66694 +3.1 Structure and Contents
66695 +==========================
66696 +
66697 +Packet data is stored in a single flat array of bytes. There is no
66698 +support for linked chains a` la BSD `mbuf'. The actual packet data is
66699 +embedded inside a buffer that may be much larger, leaving unused spaces
66700 +called "headroom" and "tailroom" before and after the data proper.
66701 +Therefore, tasks like prepending a header need not always reallocate
66702 +memory. If the headroom is big enough, prepending space for a new
66703 +header just requires bumping a pointer.
66704 +
66705 +   This diagram shows how a typical packet is laid out, with the
66706 +relevant `Packet' methods' names.
66707 +
66708 +                           data
66709 +             |<- headroom ->|<----- length ----->|<- tailroom ->|
66710 +             |              |                    |              |
66711 +             +==============+====================+==============+
66712 +             |XXXXXXXXXXXXXX| PACKET CONTENTS... |XXXXXXXXXXXXXX|
66713 +             +==============+====================+==============+
66714 +             |                                                  |
66715 +             |<---------------- buffer_length ----------------->|
66716 +        buffer_data
66717 +
66718 +
66719 +   And here are those methods' descriptions.
66720 +
66721 + -- Method on Packet: const unsigned char * data () const
66722 +     Returns a pointer to the packet data proper.
66723 +
66724 + -- Method on Packet: unsigned length () const
66725 +     Returns the length of the packet data proper.
66726 +
66727 + -- Method on Packet: const unsigned char * buffer_data () const
66728 +     Returns a pointer to the buffer that contains the packet data.
66729 +
66730 + -- Method on Packet: unsigned headroom () const
66731 + -- Method on Packet: unsigned tailroom () const
66732 + -- Method on Packet: unsigned buffer_length () const
66733 +     Returns the length of the headroom area, the tailroom area, and the
66734 +     whole buffer, respectively.
66735 +
66736 + -- Method on WritablePacket: unsigned char * data () const
66737 + -- Method on WritablePacket: unsigned char * buffer_data () const
66738 +     These `WritablePacket' methods are identical to `Packet''s `data'
66739 +     and `buffer_data' methods except for their non-`const' return type.
66740 +
66741 +   Two invariants relate these methods' values:
66742 +
66743 +     buffer_length() = headroom() + length() + tailroom()
66744 +     data() = buffer_data() + headroom()
66745 +
66746 +\1f
66747 +File: click.info,  Node: Packet Creation,  Next: Packets and sk_buffs,  Prev: Packet Structure and Contents,  Up: Packets
66748 +
66749 +3.2 Creation and Destruction
66750 +============================
66751 +
66752 +Packets are created with the `Packet::make' static methods, and
66753 +destroyed with the `Packet::kill' method. (The `Packet' and
66754 +`WritablePacket' classes have private constructors and destructors; you
66755 +cannot create or destroy packets with `new' or `delete'.)
66756 +
66757 +3.2.1 `Packet::make'
66758 +--------------------
66759 +
66760 +The `make' methods always take the length of the packet data; some of
66761 +them take the packet contents and the headroom and tailroom lengths as
66762 +well. (The contents of any headroom and tailroom areas are always
66763 +undefined.) Most of them return a `WritablePacket *', since new packets
66764 +are not shared.
66765 +
66766 +   The `Packet' class defines two constants related to packet creation,
66767 +`DEFAULT_HEADROOM' and `MIN_BUFFER_LENGTH'. Those `make' methods that
66768 +do not take an explicit headroom parameter use `DEFAULT_HEADROOM'
66769 +instead. Furthermore, no `make' method will create a packet with buffer
66770 +length less than `MIN_BUFFER_LENGTH'.  If the sum of a packet's
66771 +headroom and length is less than this, the packet buffer is given extra
66772 +tailroom to bump the buffer length up to `MIN_BUFFER_LENGTH'. These
66773 +constants have the values `DEFAULT_HEADROOM' = 28 and
66774 +`MIN_BUFFER_LENGTH' = 64.
66775 +
66776 + -- Static Method on Packet: WritablePacket * make (unsigned LEN)
66777 +     Returns a new packet containing LEN bytes of undefined data.
66778 +
66779 + -- Static Method on Packet: WritablePacket * make
66780 +          (const char *DATA, unsigned LEN)
66781 + -- Static Method on Packet: WritablePacket * make
66782 +          (const unsigned char *DATA, unsigned LEN)
66783 +     Returns a new packet whose contents equal the first LEN bytes of
66784 +     DATA. DATA may be a null pointer, in which case the packet
66785 +     contains LEN bytes of undefined data.
66786 +
66787 + -- Static Method on Packet: WritablePacket * make (unsigned HEADROOM,
66788 +          const unsigned char *DATA, unsigned LEN, unsigned TAILROOM)
66789 +     Returns a new packet containing HEADROOM bytes of headroom, LEN
66790 +     bytes of contents, and at least TAILROOM bytes of tailroom. The
66791 +     packet contents will equal the first LEN bytes of DATA unless DATA
66792 +     is a null pointer, in which case the contents are undefined.
66793 +
66794 +   The following `make' method is only available in the user-level
66795 +driver.
66796 +
66797 + -- Static Method on Packet: WritablePacket * make
66798 +          (unsigned char *DATA, unsigned LEN,
66799 +          void (*DESTRUCTOR)(unsigned char *, size_t))
66800 +     Returns a new packet that uses DATA as a buffer. That is, the new
66801 +     packet will have the following characteristics:
66802 +
66803 +     `buffer_data'     DATA
66804 +     `buffer_length'   LEN
66805 +     `headroom'        0
66806 +     `length'          LEN
66807 +     `tailroom'        0
66808 +
66809 +     When the resulting packet is destroyed, the function DESTRUCTOR
66810 +     will be called with DATA and LEN as arguments.  DESTRUCTOR may be
66811 +     a null pointer, in which case `Packet' calls `delete[] DATA'
66812 +     instead.
66813 +
66814 +     This method lets a user-level element manage packet memory itself,
66815 +     rather than relying on `Packet'.
66816 +
66817 +*Note Packets and sk_buffs::, for a `make' method only available in the
66818 +Linux kernel driver.
66819 +
66820 +3.2.2 `Packet::kill'
66821 +--------------------
66822 +
66823 +To destroy a `Packet', simply call its `kill' method.
66824 +
66825 + -- Method on Packet: void kill ()
66826 +     Frees this packet. If this packet contained the last reference to
66827 +     its data buffer, then frees the data buffer as well.
66828 +
66829 +\1f
66830 +File: click.info,  Node: Packets and sk_buffs,  Next: Packet Sharing,  Prev: Packet Creation,  Up: Packets
66831 +
66832 +3.3 `Packet's and `sk_buff's
66833 +============================
66834 +
66835 +In the Linux kernel driver, `Packet' objects are equivalent to `struct
66836 +sk_buff's. This avoids indirection overhead and makes it cheap to pass
66837 +packets back and forth between Linux and Click. The `Packet' operations
66838 +described in this section are mostly inline functions that expand to
66839 +conventional `sk_buff' calls like `skb_clone()'.
66840 +
66841 +   Click `Packet' `sk_buff's should always have `skb->users' equal to
66842 +1. That is, the `sk_buff' headers should not be shared, although the
66843 +data buffers they point to may be shared.
66844 +
66845 +   The `make', `skb', and `steal_skb' methods described in this section
66846 +convert `Packet's to `sk_buff's and vice versa.
66847 +
66848 + -- Static Method on Packet: Packet * make (struct sk_buff *SKB)
66849 +     Returns a new packet equivalent to the `sk_buff' SKB. All of SKB's
66850 +     data pointers and annotations are left unchanged. This method
66851 +     generally does nothing, since `Packet's and `sk_buff's are
66852 +     equivalent in the Linux kernel. However, if `SKB->users' field is
66853 +     bigger than 1, the method will return a clone of SKB.  This method
66854 +     returns a `Packet *', not a `WritablePacket *', because the SKB
66855 +     argument might share data with some other `sk_buff'.
66856 +
66857 +     Do not use or manipulate SKB after passing it to this method,
66858 +     since Click and the `Packet' implementation now own SKB.
66859 +
66860 + -- Method on Packet: struct sk_buff * skb ()
66861 + -- Method on Packet: const struct sk_buff * skb () const
66862 +     Returns the `sk_buff' corresponding to this packet. Use this method
66863 +     to examine the `sk_buff' version of a `Packet'.
66864 +
66865 +     Do not pass the result to a function that might free it or
66866 +     increment its `users' field; use `steal_skb' for that.
66867 +
66868 + -- Method on Packet: struct sk_buff * steal_skb ()
66869 +     Returns the `sk_buff' corresponding to this packet. Use this
66870 +     method to permanently change a `Packet' into an `sk_buff'--for
66871 +     example, to create an `sk_buff' you'd like to send to Linux.
66872 +
66873 +     Do not use or manipulate a `Packet' after calling its `steal_skb'
66874 +     method, since Linux now owns the resulting `sk_buff'.
66875 +
66876 +\1f
66877 +File: click.info,  Node: Packet Sharing,  Next: Packet Buffer Manipulation,  Prev: Packets and sk_buffs,  Up: Packets
66878 +
66879 +3.4 Sharing--`clone' and `uniqueify'
66880 +====================================
66881 +
66882 +The `clone' method creates a new packet header that shares data with an
66883 +existing packet. The `uniqueify' method, in contrast, ensures that a
66884 +packet's data is not shared by anyone, perhaps by making a copy of the
66885 +data.
66886 +
66887 + -- Method on Packet: Packet * clone ()
66888 +     Creates and returns a new packet header that shares this packet's
66889 +     data.  The new packet's annotations are copied from this packet's
66890 +     annotations.
66891 +
66892 +     The result may be a null pointer if there was not enough memory to
66893 +     make a new packet header.
66894 +
66895 + -- Method on Packet: WritablePacket * uniqueify ()
66896 +     Ensures that this packet does not share data with any other
66897 +     packet. This may involve copying the packet data, and perhaps
66898 +     creating a new packet header, but if this packet is already
66899 +     unshared, no real work is required. Returns a `WritablePacket *'
66900 +     because the new packet is unshared.
66901 +
66902 +     Do not use, manipulate, or free a `Packet' after calling its
66903 +     `uniqueify' method. Manipulate the returned `WritablePacket *'
66904 +     instead.
66905 +
66906 +     The result may be a null pointer if there was not enough memory to
66907 +     make a required data copy. In this case, the old packet is freed.
66908 +
66909 + -- Method on Packet: bool shared () const
66910 +     Returns true if and only if this packet shares data with some other
66911 +     packet.
66912 +
66913 +\1f
66914 +File: click.info,  Node: Packet Buffer Manipulation,  Next: Annotations,  Prev: Packet Sharing,  Up: Packets
66915 +
66916 +3.5 Buffer Manipulation--`push', `pull', `put', and `take'
66917 +==========================================================
66918 +
66919 +The `push', `pull', `put', and `take' methods manipulate a packet's
66920 +contents by adding or removing space from its headroom or tailroom.
66921 +Given a packet, use `push' to add space to its beginning, `pull' to
66922 +remove space from its beginning, `put' to add space to its end, and
66923 +`take' to remove space from its end. The methods that add space, `push'
66924 +and `put', uniqueify the relevant packet as a side effect. This ensures
66925 +that the packet's data is unshared so you can immediately manipulate
66926 +the added space.
66927 +
66928 + -- Method on Packet: WritablePacket * push (unsigned AMT)
66929 +     Adds AMT bytes of space to the beginning of the packet's data and
66930 +     returns the resulting packet. The new space is uninitialized. The
66931 +     result will not share data with any other packet; thus, it is a
66932 +     `WritablePacket *'. If this packet is unshared and its headroom is
66933 +     bigger than AMT, then this operation is cheap, amounting to a bit
66934 +     of pointer arithmetic. Otherwise, it requires copying the packet
66935 +     data and possibly creating a new packet header.
66936 +
66937 +     Do not use, manipulate, or free a `Packet' after calling its
66938 +     `push' method. Manipulate the returned `WritablePacket *' instead.
66939 +
66940 +     The result may be a null pointer if there was not enough memory to
66941 +     make a required new packet. In this case, the old packet is freed.
66942 +
66943 + -- Method on Packet: void pull (unsigned AMT)
66944 +     Removes AMT bytes of space from the beginning of the packet's
66945 +     data. AMT must be less than or equal to the packet's `length()'.
66946 +     This operation is always cheap, amounting to a bit of pointer
66947 +     arithmetic.
66948 +
66949 + -- Method on Packet: WritablePacket * put (unsigned AMT)
66950 +     Adds AMT bytes of space to the end of the packet's data and
66951 +     returns the resulting packet. The new space is uninitialized. The
66952 +     result will not share data with any other packet; thus, it is a
66953 +     `WritablePacket *'. If this packet is unshared and its tailroom is
66954 +     bigger than AMT, then this operation is cheap, amounting to a bit
66955 +     of pointer arithmetic. Otherwise, it requires copying the packet
66956 +     data and possibly creating a new packet header.
66957 +
66958 +     Do not use, manipulate, or free a `Packet' after calling its `put'
66959 +     method. Manipulate the returned `WritablePacket *' instead.
66960 +
66961 +     The result may be a null pointer if there was not enough memory to
66962 +     make a required new packet. In this case, the old packet is freed.
66963 +
66964 + -- Method on Packet: void take (unsigned AMT)
66965 +     Removes AMT bytes of space from the end of the packet's data.  AMT
66966 +     must be less than or equal to the packet's `length()'.  This
66967 +     operation is always cheap, amounting to a bit of pointer
66968 +     arithmetic.
66969 +
66970 +   The `push' and `put' methods have "nonunique" variants,
66971 +`nonunique_push' and `nonunique_put', which do not have the side effect
66972 +of uniqueifying their resulting packet. These methods are rarely used.
66973 +
66974 + -- Method on Packet: Packet * nonunique_push (unsigned AMT)
66975 +     Adds AMT bytes of space to the beginning of the packet's data and
66976 +     returns the resulting packet. The new space is uninitialized. The
66977 +     result may share data with other packets. If this packet's
66978 +     headroom is bigger than AMT, then this operation is cheap,
66979 +     amounting to a bit of pointer arithmetic. Otherwise, it requires
66980 +     copying the packet data and possibly creating a new packet header.
66981 +
66982 +     Do not use, manipulate, or free a `Packet' after calling its
66983 +     `nonunique_push' method. Manipulate the returned `Packet *'
66984 +     instead.
66985 +
66986 +     The result may be a null pointer if there was not enough memory to
66987 +     make a required new packet. In this case, the old packet is freed.
66988 +
66989 + -- Method on Packet: Packet * nonunique_put (unsigned AMT)
66990 +     Adds AMT bytes of space to the end of the packet's data, returning
66991 +     the resulting packet. The new space is uninitialized. The result
66992 +     may share data with other packets. If this packet's tailroom is
66993 +     bigger than AMT, then this operation is cheap, amounting to a bit
66994 +     of pointer arithmetic. Otherwise, it requires copying the packet
66995 +     data and possibly creating a new packet header.
66996 +
66997 +     Do not use, manipulate, or free a `Packet' after calling its
66998 +     `nonunique_put' method. Manipulate the returned `Packet *' instead.
66999 +
67000 +     The result may be a null pointer if there was not enough memory to
67001 +     make a required new packet. In this case, the old packet is freed.
67002 +
67003 +\1f
67004 +File: click.info,  Node: Annotations,  Next: Packet Out-of-Memory,  Prev: Packet Buffer Manipulation,  Up: Packets
67005 +
67006 +3.6 Annotations
67007 +===============
67008 +
67009 +Each packet header has space for a number of "annotations", extra
67010 +information about the packet that is not contained in its data. Click
67011 +supports "header annotations", which indicate where in the packet a
67012 +network header, such as an IP header, is located; "user annotations",
67013 +whose semantics are left undefined by Click--different elements can
67014 +treat them in different ways; and other specialized annotations, such
67015 +as the "timestamp annotation", the "destination IP address annotation",
67016 +and so forth.
67017 +
67018 +   New packets begin with all annotations cleared: numeric annotations
67019 +are zero, pointer annotations are null pointers. `clone', `uniqueify',
67020 +and their equivalents always copy each of the original packet's
67021 +annotations in the appropriate way. (For example, the new header
67022 +annotations will point into the new data, if a data copy was made.)
67023 +
67024 +* Menu:
67025 +
67026 +* Header Annotations::
67027 +* User Annotations::
67028 +* Specific User Annotations::
67029 +* Other Annotations::
67030 +* Annotations In General::
67031 +
67032 +\1f
67033 +File: click.info,  Node: Header Annotations,  Next: User Annotations,  Prev: Annotations,  Up: Annotations
67034 +
67035 +3.6.1 Header Annotations
67036 +------------------------
67037 +
67038 +Many packets contain a network header of some kind, such as an IP
67039 +header. This header may be located anywhere in the packet depending on
67040 +how the packet was encapsulated. Furthermore, the data encapsulated by
67041 +that network header may be located anywhere after the network header,
67042 +given the presence of options. With the "network header annotation" and
67043 +the "transport header annotation", one element can determine where a
67044 +network header is and how long it is, then store this information for
67045 +other elements to use. For example, the `CheckIPHeader' element sets
67046 +the header annotations on packets it receives. Elements like
67047 +`SetIPDSCP' then require a non-null IP header annotation on their input
67048 +packets.
67049 +
67050 +   The header annotations on new packets are each set to a null pointer.
67051 +
67052 + -- Method on Packet: const unsigned char * network_header () const
67053 + -- Method on WritablePacket: unsigned char * network_header () const
67054 +     Returns the network header annotation. The resulting pointer is
67055 +     read-only on `Packet's and read/write on `WritablePacket's.
67056 +
67057 + -- Method on Packet: const unsigned char * transport_header () const
67058 + -- Method on WritablePacket: unsigned char * transport_header () const
67059 +     Returns the transport header annotation. The resulting pointer is
67060 +     read-only on `Packet's and read/write on `WritablePacket's.
67061 +
67062 + -- Method on Packet: int network_header_offset () const
67063 +     Returns the offset from `data()' to `network_header()'. The result
67064 +     might be negative, since the `data' pointer may have been advanced
67065 +     past the network header annotation with the `pull' method.
67066 +
67067 + -- Method on Packet: int network_header_length () const
67068 +     Returns the network header's length. This equals
67069 +     `transport_header()' - `network_header()'.
67070 +
67071 + -- Method on Packet: unsigned transport_header_offset () const
67072 +     Returns the offset from `data()' to `transport_header()'. The
67073 +     result might be negative, since the `data' pointer may have been
67074 +     advanced past the transport header annotation with the `pull'
67075 +     method.
67076 +
67077 +   Several invariants relate these methods' values whenever the header
67078 +annotations are non-null:
67079 +
67080 +     `buffer_data()' <= `network_header()' <= `transport_header()'
67081 +                  <= `buffer_data()' + `buffer_length()'
67082 +     `network_header_offset()' = `network_header()' - `data()'
67083 +     `transport_header_offset()' = `transport_header()' - `data()'
67084 +     `network_header_length()' = `transport_header()' - `network_header()'
67085 +
67086 +
67087 +   Set the network and transport header annotations simultaneously with
67088 +the `set_network_header' method.
67089 +
67090 + -- Method on Packet: void set_network_header
67091 +          (const unsigned char *HEADER, unsigned LEN)
67092 +     Sets the network header annotation to HEADER, which must lie
67093 +     between `buffer_data()' and `buffer_data()' + `buffer_length()'.
67094 +     The network header is LEN bytes long, so `network_header_length()'
67095 +     will equal LEN and `transport_header()' will equal HEADER + LEN.
67096 +
67097 +3.6.1.1 Typed Header Annotations
67098 +................................
67099 +
67100 +For convenience, `Packet' provides methods for accessing and setting
67101 +the network header annotation as an IP or IPv6 header. These methods
67102 +use the same annotations as the generic `network_header' methods; they
67103 +are just typed differently.
67104 +
67105 + -- Method on Packet: const click_ip * ip_header () const
67106 + -- Method on WritablePacket: click_ip * ip_header () const
67107 + -- Method on Packet: const click_ip6 * ip6_header () const
67108 + -- Method on WritablePacket: click_ip6 * ip6_header () const
67109 +     Returns `network_header()' as a pointer to an IP or IPv6 header
67110 +     structure.
67111 +
67112 + -- Method on Packet: int ip_header_offset () const
67113 + -- Method on Packet: unsigned ip_header_length () const
67114 + -- Method on Packet: int ip6_header_offset () const
67115 + -- Method on Packet: unsigned ip6_header_length () const
67116 +     Equivalent to `network_header_offset()' and
67117 +     `network_header_length()'.
67118 +
67119 + -- Method on Packet: void set_ip_header (const click_ip *HEADER,
67120 +          unsigned LEN)
67121 + -- Method on Packet: void set_ip6_header (const click_ip6 *HEADER,
67122 +          unsigned LEN)
67123 +     Equivalent to `set_network_header(HEADER, LEN)'.
67124 +
67125 + -- Method on Packet: void set_ip6_header (const click_ip6 *HEADER)
67126 +     Equivalent to `set_ip6_header(HEADER, 40)'.
67127 +
67128 + -- Method on Packet: const click_tcp * tcp_header () const
67129 + -- Method on WritablePacket: click_tcp * tcp_header () const
67130 + -- Method on Packet: const click_udp * udp_header () const
67131 + -- Method on WritablePacket: click_udp * udp_header () const
67132 +     Returns `transport_header()' as a pointer to a TCP or UDP header
67133 +     structure.
67134 +
67135 +\1f
67136 +File: click.info,  Node: User Annotations,  Next: Specific User Annotations,  Prev: Header Annotations,  Up: Annotations
67137 +
67138 +3.6.2 User Annotations
67139 +----------------------
67140 +
67141 +Each packet header has a "user annotation area", space reserved for
67142 +arbitrary annotations. Different methods access this space as an array
67143 +of bytes, integers, or unsigned integers. The `Packet' class does not
67144 +assign semantics to any particular byte in the user annotation area.
67145 +Instead, macros in `<click/packet_anno.hh>' provide names for
67146 +particular bytes. Some of these names have overlapping byte ranges; the
67147 +user must take care not to define a configuration whose elements use an
67148 +annotation byte on a packet for different purposes. The next section
67149 +describes the macros in Click's default `<click/packet_anno.hh>'.
67150 +
67151 +   These constants define the size of the annotation area.
67152 +
67153 +`Packet::USER_ANNO_SIZE'
67154 +     The size of the annotation area in bytes.
67155 +
67156 +`Packet::USER_ANNO_US_SIZE'
67157 +     The size of the annotation area in `unsigned short's.
67158 +
67159 +`Packet::USER_ANNO_S_SIZE'
67160 +     The size of the annotation area in `short's.
67161 +
67162 +`Packet::USER_ANNO_U_SIZE'
67163 +     The size of the annotation area in `unsigned int's.
67164 +
67165 +`Packet::USER_ANNO_I_SIZE'
67166 +     The size of the annotation area in `int's.
67167 +
67168 +Currently, `USER_ANNO_SIZE' is 24, `USER_ANNO_U_SIZE' and
67169 +`USER_ANNO_I_SIZE' are both 6, and `USER_ANNO_US_SIZE' and
67170 +`USER_ANNO_S_SIZE' are both 12.
67171 +
67172 +   The user annotation area may be accessed as an array of bytes, an
67173 +array of `unsigned int's, or an array of `int's. The elements of these
67174 +arrays are numbered from 0 to K - 1, where K is the appropriate `SIZE'
67175 +constant.
67176 +
67177 + -- Method on Packet: unsigned char user_anno_c (int I) const
67178 +     Returns the Ith byte in the user annotation area. I must be
67179 +     between 0 and `USER_ANNO_SIZE' - 1.
67180 +
67181 + -- Method on Packet: unsigned user_anno_u (int I)
67182 + -- Method on Packet: int user_anno_i (int I)
67183 +     Returns the Ith `unsigned int' or `int' in the user annotation
67184 +     area. I must be between 0 and `USER_ANNO_U_SIZE' - 1. The Ith
67185 +     `unsigned int' or `int' annotation occupies bytes 4I through 4I +
67186 +     3 of the user annotation area.
67187 +
67188 + -- Method on Packet: void set_user_anno_c (int I, unsigned char VALUE)
67189 + -- Method on Packet: void set_user_anno_u (int I, unsigned VALUE)
67190 + -- Method on Packet: void set_user_anno_i (int I, int VALUE)
67191 +     Sets the Ith byte, `unsigned int', or `int' user annotation to
67192 +     VALUE.
67193 +
67194 + -- Method on Packet: unsigned * all_user_anno_u ()
67195 +     Returns a pointer to the user annotation area, treated as an array
67196 +     of `unsigned int's.
67197 +
67198 +\1f
67199 +File: click.info,  Node: Specific User Annotations,  Next: Other Annotations,  Prev: User Annotations,  Up: Annotations
67200 +
67201 +3.6.3 Specific User Annotations
67202 +-------------------------------
67203 +
67204 +The `<click/packet_anno.hh>' header file defines macros for accessing a
67205 +packet's user annotation area by name. These macros follow some simple
67206 +guidelines. Each user annotation is given a name like `PAINT' or
67207 +`FIX_IP_SRC'. Then, two macros are written for each annotation,
67208 +`NAME_ANNO' and `SET_NAME_ANNO'.
67209 +
67210 + -- Macro:  NAME_ANNO (const Packet *P)
67211 +     Returns the value of P's NAME annotation.
67212 +
67213 + -- Macro:  SET_NAME_ANNO (Packet *P, VALUE)
67214 +     Sets P's NAME annotation to VALUE.
67215 +
67216 +For example, here are the definitions of `PAINT_ANNO' and
67217 +`SET_PAINT_ANNO' from Click's default `<click/packet_anno.hh>'.
67218 +
67219 +     #define PAINT_ANNO(p)          ((p)->user_anno_c(0))
67220 +     #define SET_PAINT_ANNO(p, v)   ((p)->set_user_anno_c(0, (v)))
67221 +
67222 +
67223 +   This table lists the annotations declared in Click's default
67224 +`<click/packet_anno.hh>'.
67225 +
67226 +Annotation name     Type              Bytes   Some relevant elements
67227 +`PAINT'             `unsigned char'   0       `Paint', `CheckPaint', `PaintTee'
67228 +`ICMP_PARAM_PROB'   `unsigned char'   1       `IPGWOptions', `ICMPError'
67229 +`FIX_IP_SRC'        `unsigned char'   3       `ICMPError', `FixIPSrc'
67230 +`FWD_RATE'          `int'             4-7     `IPRateMonitor'
67231 +`REV_RATE'          `int'             8-11    `IPRateMonitor'
67232 +
67233 +\1f
67234 +File: click.info,  Node: Other Annotations,  Next: Annotations In General,  Prev: Specific User Annotations,  Up: Annotations
67235 +
67236 +3.6.4 Other Annotations
67237 +-----------------------
67238 +
67239 +Packet headers have space for four other particular annotations, and
67240 +special methods for accessing them. These annotations do not overlap the
67241 +user annotation area. There are annotations that hold a destination IP
67242 +address, a timestamp, the device on which the packet arrived, a packet
67243 +type constant, and, in the Linux kernel module, a performance counter
67244 +value.
67245 +
67246 +* Menu:
67247 +
67248 +* Destination Address Annotation::
67249 +* Timestamp Annotation::
67250 +* Device Annotation::
67251 +* Packet Type Annotation::
67252 +* Performance Counter Annotation::
67253 +
67254 +\1f
67255 +File: click.info,  Node: Destination Address Annotation,  Next: Timestamp Annotation,  Prev: Other Annotations,  Up: Other Annotations
67256 +
67257 +3.6.4.1 Destination Address
67258 +...........................
67259 +
67260 +The destination address annotation stores the IP or IPv6 address of the
67261 +next hop towards the packet's destination. Elements check and manipulate
67262 +this address, rather than the IP header's destination address, since the
67263 +next-hop address often differs from the final destination. The
67264 +destination IP address and IPv6 address are different annotations, but
67265 +they overlap; you may set only one at a time.
67266 +
67267 + -- Method on Packet: IPAddress dst_ip_anno () const
67268 +     Returns this packet's destination IP address annotation.
67269 +
67270 + -- Method on Packet: const IP6Address & dst_ip6_anno () const
67271 +     Returns a reference to this packet's destination IPv6 address
67272 +     annotation.
67273 +
67274 + -- Method on Packet: void set_dst_ip_anno (IPAddress VALUE)
67275 + -- Method on Packet: void set_dst_ip6_anno (const IP6Address &VALUE)
67276 +     Sets this packet's destination IP or IPv6 address annotation to
67277 +     VALUE.
67278 +
67279 +   The destination IP address annotation is set by the `GetIPAddress'
67280 +and `SetIPAddress' elements, manipulated by `LookupIPRoute' and its
67281 +cousins, and used by `ARPQuerier'. It defaults to zero.
67282 +
67283 +\1f
67284 +File: click.info,  Node: Timestamp Annotation,  Next: Device Annotation,  Prev: Destination Address Annotation,  Up: Other Annotations
67285 +
67286 +3.6.4.2 Timestamp
67287 +.................
67288 +
67289 +The timestamp annotation generally indicates when a packet was received.
67290 +
67291 + -- Method on Packet: const struct timeval & timestamp_anno () const
67292 + -- Method on Packet: struct timeval & timestamp_anno ()
67293 +     Returns a reference to this packet's timestamp annotation.
67294 +
67295 + -- Method on Packet: void set_timestamp_anno
67296 +          (const struct timeval &VALUE)
67297 +     Sets this packet's timestamp annotation to VALUE.
67298 +
67299 + -- Method on Packet: void set_timestamp_anno (int SEC, int USEC)
67300 +     Sets this packet's timestamp annotation to SEC and USEC.
67301 +     Equivalent to `struct timeval tv; tv.tv_sec = SEC; tv.tv_usec =
67302 +     USEC; set_timestamp_anno(tv)'.
67303 +
67304 +   Linux device drivers set this annotation, so packets emitted by
67305 +`FromDevice' and `PollDevice' in the Linux kernel driver have the
67306 +annotation set. Packet sources like `InfiniteSource' and `RatedSource'
67307 +also set the annotation, as does `FromDump' in the user-level driver.
67308 +Debugging elements like `Print' generally take a keyword argument that
67309 +makes them print packet timestamps.
67310 +
67311 +   The timestamp annotation defaults to zero.
67312 +
67313 +\1f
67314 +File: click.info,  Node: Device Annotation,  Next: Packet Type Annotation,  Prev: Timestamp Annotation,  Up: Other Annotations
67315 +
67316 +3.6.4.3 Device
67317 +..............
67318 +
67319 +In the Linux kernel, packets received from some device are annotated
67320 +with a pointer to the relevant `struct net_device' object. (In versions
67321 +of the kernel prior to 2.3, this type was called `struct device'.) The
67322 +`Packet' class provides access to this annotation.  The annotation has
67323 +type `net_device *'; Click defines `net_device' as a synonym for
67324 +`struct device' in kernel versions 2.2 and prior.
67325 +
67326 + -- Method on Packet: net_device * device_anno () const
67327 +     Returns this packet's device annotation.
67328 +
67329 + -- Method on Packet: void set_device_anno (net_device *VALUE)
67330 +     Sets this packet's device annotation to VALUE.
67331 +
67332 +In the user-level driver, `device_anno' always returns 0, and
67333 +`set_device_anno' does nothing.
67334 +
67335 +   The `ARPResponder' element sets this annotation on every generated
67336 +response to the value of the annotation on the relevant query. Because
67337 +of this, those responses can be safely forwarded to Linux: Linux's
67338 +ARP-response code requires a correct device annotation.
67339 +
67340 +   The device annotation defaults to a null pointer.
67341 +
67342 +\1f
67343 +File: click.info,  Node: Packet Type Annotation,  Next: Performance Counter Annotation,  Prev: Device Annotation,  Up: Other Annotations
67344 +
67345 +3.6.4.4 Packet Type
67346 +...................
67347 +
67348 +The packet type annotation specifies how a packet was received. Its
67349 +value is one of the following constants, which are defined in the
67350 +`Packet::PacketType' enumeration.
67351 +
67352 +`HOST'
67353 +     The packet was sent to this host.
67354 +
67355 +`BROADCAST'
67356 +     The packet was sent to a link-level broadcast address.
67357 +
67358 +`MULTICAST'
67359 +     The packet was sent to a link-level multicast address.
67360 +
67361 +`OTHERHOST'
67362 +     The packet was sent to a different host, but received anyway. The
67363 +     relevant device is probably in promiscuous mode.
67364 +
67365 +`OUTGOING'
67366 +     The packet was generated at this host and is being sent to another
67367 +     host.
67368 +
67369 +`LOOPBACK', `FASTROUTE'
67370 +     See the Linux kernel documentation. These values correspond to
67371 +     `PACKET_LOOPBACK' and `PACKET_FASTROUTE', which are defined in
67372 +     `<linux/if_packet.h>'.
67373 +
67374 + -- Method on Packet: Packet::PacketType packet_type_anno () const
67375 +     Returns this packet's packet type annotation.
67376 +
67377 + -- Method on Packet: void set_packet_type_anno
67378 +          (Packet::PacketType VALUE)
67379 +     Sets this packet's packet type annotation to VALUE.
67380 +
67381 +   In the Linux kernel, device drivers set the packet type annotation
67382 +for the packets they receive. Thus, the `FromDevice' and `PollDevice'
67383 +elements generate packets with correct packet type annotations. The
67384 +user-level driver's `FromDevice' also sets the packet type annotation.
67385 +The `ICMPError' and `DropBroadcasts' elements use the annotation's
67386 +value.
67387 +
67388 +   The packet type annotation defaults to `Packet::HOST'.
67389 +
67390 +\1f
67391 +File: click.info,  Node: Performance Counter Annotation,  Prev: Packet Type Annotation,  Up: Other Annotations
67392 +
67393 +3.6.4.5 Performance Counter
67394 +...........................
67395 +
67396 +This annotation is available only in the Linux kernel driver. Its value
67397 +is an `unsigned long long' that generally corresponds to some
67398 +performance counter value.
67399 +
67400 + -- Method on Packet: unsigned long long perfctr_anno () const
67401 +     Returns this packet's performance counter annotation.
67402 +
67403 + -- Method on Packet: void set_perfctr_anno (unsigned long long VALUE)
67404 +     Sets this packet's performance counter annotation to VALUE.
67405 +
67406 +   The `SetCycleCount', `SetPerfCount', `CycleCountAccum', and
67407 +`PerfCountAccum' elements manipulate this annotation. Its default value
67408 +is zero.
67409 +
67410 +\1f
67411 +File: click.info,  Node: Annotations In General,  Prev: Other Annotations,  Up: Annotations
67412 +
67413 +3.6.5 Annotations In General
67414 +----------------------------
67415 +
67416 +`Packet' provides methods for clearing a packet's annotations, and for
67417 +copying all of a packet's annotations from another packet.
67418 +
67419 + -- Method on Packet: void clear_annotations ()
67420 +     Clears all of this packet's annotations to their default state,
67421 +     which is generally zero.
67422 +
67423 + -- Method on Packet: void copy_annotations (const Packet *P)
67424 +     Copies all of P's annotations into this packet except for its
67425 +     header annotations. (This packet's current header annotations are
67426 +     left unchanged.)
67427 +
67428 +\1f
67429 +File: click.info,  Node: Packet Out-of-Memory,  Next: Handlers,  Prev: Annotations,  Up: Packets
67430 +
67431 +3.7 Out-of-Memory Conditions
67432 +============================
67433 +
67434 +Any method that potentially allocates memory for a `Packet' may fail
67435 +due to an out-of-memory condition. The complete list of these methods
67436 +follows:
67437 +
67438 +   * `make' variants
67439 +
67440 +   * `clone'
67441 +
67442 +   * `uniqueify'
67443 +
67444 +   * `push'
67445 +
67446 +   * `put'
67447 +
67448 +   * `nonunique_push'
67449 +
67450 +   * `nonunique_put'
67451 +
67452 +These methods always return a null pointer on out-of-memory. Methods
67453 +that manipulate existing packets--`uniqueify', `push', `put',
67454 +`nonunique_push', and `nonunique_put'--additionally free any existing
67455 +packet before returning a null pointer. You should always check the
67456 +results of these methods to see if you have run out of memory.
67457 +
67458 +\1f
67459 +File: click.info,  Node: Handlers,  Prev: Packet Out-of-Memory,  Up: Packets
67460 +
67461 +3.8 Handlers
67462 +============
67463 +
67464 +"Handlers" are access points through which users can interact with
67465 +elements in a running Click router, or with the router as a whole.
67466 +"Read" and "write handlers" behave like files in a file system, while
67467 +"LLRPCs" provide a remote procedure call interface.
67468 +
67469 +* Menu:
67470 +
67471 +* Read and Write Handler Overview::
67472 +* Adding Handlers::
67473 +* Default Handlers::
67474 +* Accessing Handlers Internally::
67475 +* LLRPC Overview::
67476 +
67477 +\1f
67478 +File: click.info,  Node: Read and Write Handler Overview,  Next: Adding Handlers,  Prev: Handlers,  Up: Handlers
67479 +
67480 +3.8.1 Read and Write Handler Overview
67481 +-------------------------------------
67482 +
67483 +Read and write handlers appear to the user like files in a file system,
67484 +or alternatively, like a limited RPC mechanism that uses ASCII strings
67485 +for data transfer. To the element programmer, a read handler is simply a
67486 +function that takes an element and returns a String; a write handler is
67487 +a function that takes an element and a String and returns an error code.
67488 +
67489 + -- Function Type: String (*ReadHandler) (Element *ELEMENT, void *THUNK)
67490 +     Read handler functions have this type. When the user accesses a
67491 +     read handler on an element, Click calls some `ReadHandler' function
67492 +     and passes the element as an argument. The THUNK argument contains
67493 +     callback data specified when the handler was added. The function's
67494 +     String return value is passed back to the user.
67495 +
67496 + -- Function Type: int (*WriteHandler) (const String &DATA,
67497 +          Element *ELEMENT, void *THUNK, ErrorHandler *ERRH)
67498 +     Write handler functions have this type. When the user accesses some
67499 +     element write handler by passing in a string, Click calls some
67500 +     `WriteHandler' function and passes the data and the relevant
67501 +     element as arguments. The THUNK argument contains callback data
67502 +     specified when the handler was added. The return value is an error
67503 +     code: zero when there are no errors, and the negative of some
67504 +     `errno' value when there is an error. More detailed information
67505 +     about any errors should be reported to the ERRH argument.
67506 +
67507 +   Each handler has an ASCII "name". Handler names must be unique
67508 +within each element; for example, there can be at most one `x' read
67509 +handler in a given element. A given name can be shared by a read handler
67510 +and a write handler, however. Such a handler pair is colloquially called
67511 +a "read/write handler", although its two components need not have
67512 +anything to do with one another.
67513 +
67514 +   There is currently no way to pass data to a read handler or return
67515 +data from a write handler. Use LLRPCs if you need a more RPC-like
67516 +read-write interface.
67517 +
67518 +   Note that read and write handler functions are regular functions, not
67519 +virtual functions. Often, therefore, handler functions are defined as
67520 +private static member functions in the relevant element class.
67521 +
67522 +   Read and write handlers need not use ASCII-formatted data. Most
67523 +existing handlers do format their data in ASCII, however, and use
67524 +`cp_uncomment' to ignore leading and trailing whitespace and comments.
67525 +You may want to do the same for consistency's sake.
67526 +
67527 +   Be careful when writing handlers that modify element state, or read
67528 +state that packet processing can modify. On an SMP machine, a handler
67529 +may be called on one processor while packets are passing through the
67530 +router on another processor. Furthermore, multiple read handlers and
67531 +safe LLRPCs (*note LLRPC Overview::) may be active simultaneously on
67532 +different processors. Write handlers are serialized with respect to
67533 +other handlers and LLRPCs (but not packet processing). That is, no other
67534 +handler or LLRPC will proceed while a write handler is active.
67535 +
67536 +\1f
67537 +File: click.info,  Node: Adding Handlers,  Next: Default Handlers,  Prev: Read and Write Handler Overview,  Up: Handlers
67538 +
67539 +3.8.2 Adding Handlers
67540 +---------------------
67541 +
67542 +Use `Element''s `add_read_handler' and `add_write_handler' methods to
67543 +add handlers for an element. You will generally call these methods only
67544 +from within your element's `add_handlers' method, although nothing
67545 +prevents you from adding handlers at any time.
67546 +
67547 + -- Method on Element: void add_read_handler (const String &NAME,
67548 +          ReadHandler FUNC, void *THUNK)
67549 +     Adds a read handler named NAME for this element. When the handler
67550 +     is accessed, FUNC will be called with `this' and THUNK as
67551 +     parameters.
67552 +
67553 + -- Method on Element: void add_write_handler (const String &NAME,
67554 +          WriteHandler FUNC, void *THUNK)
67555 +     Adds a write handler named NAME for this element. When the handler
67556 +     is accessed, FUNC will be called with the relevant data, `this',
67557 +     THUNK, and an `ErrorHandler' as parameters.
67558 +
67559 +   To create a read/write handler, call `add_read_handler' and
67560 +`add_write_handler' and supply the same handler name.
67561 +
67562 +   These methods simply forward their requests to static
67563 +`add_read_handler' and `add_write_handler' methods on the `Router'
67564 +class. Call those methods directly to add handlers to other elements,
67565 +or to add global handlers.
67566 +
67567 + -- Static Method on Router: void add_read_handler
67568 +          (const Element *ELEMENT, const String &NAME,
67569 +          ReadHandler FUNC, void *THUNK)
67570 + -- Static Method on Router: void add_write_handler
67571 +          (const Element *ELEMENT, const String &NAME,
67572 +          WriteHandler FUNC, void *THUNK)
67573 +     Adds a read or write handler for ELEMENT, or a global read or
67574 +     write handler if ELEMENT is null. The handler is named NAME.
67575 +
67576 +   The `change_handler_flags' method lets you change a handler's flags
67577 +word (*note Handler Objects::).
67578 +
67579 + -- Static Method on Router: void change_handler_flags
67580 +          (Element *ELEMENT, const String &NAME, uint32_t CLEAR_FLAGS,
67581 +          uint32_t SET_FLAGS)
67582 +     Changes the flags for ELEMENT's NAME handler, or the global NAME
67583 +     handler if ELEMENT is null. The flags are changed by first
67584 +     clearing the bits set in CLEAR_FLAGS, then setting the bits set in
67585 +     SET_FLAGS. This method fails and returns -1 when the specified
67586 +     handler does not exist; otherwise, it returns 0.
67587 +
67588 +\1f
67589 +File: click.info,  Node: Default Handlers,  Next: Accessing Handlers Internally,  Prev: Adding Handlers,  Up: Handlers
67590 +
67591 +3.8.3 Default Read and Write Handlers
67592 +-------------------------------------
67593 +
67594 +Every element automatically provides five handlers, `class', `name',
67595 +`config', `ports', and `handlers'. There is no need to add these
67596 +handlers yourself. The default handlers behave as follows:
67597 +
67598 +`class'
67599 +     Returns the element's class name, as returned by `class_name()',
67600 +     followed by a newline. Example result: "ARPQueriern".
67601 +
67602 +`name'
67603 +     Returns the element's name, as returned by `id()', followed by a
67604 +     newline. Example result: "arpq_0n".
67605 +
67606 +`config'
67607 +     Returns the element's configuration string. If the configuration
67608 +     string does not end in newline, the hander appends a newline
67609 +     itself. Example result: "18.26.7.1, 00:00:C0:4F:71:EFn".
67610 +
67611 +     If `can_live_reconfigure' returns true, `config' is also a write
67612 +     handler, and writing to it reconfigures the element.
67613 +
67614 +`ports'
67615 +     Returns a multi-line string describing the element's ports and
67616 +     what they are connected to. The string has the form
67617 +
67618 +          M input[s]
67619 +          ... M input port descriptions, one per line ...
67620 +          N output[s]
67621 +          ... N output port descriptions, one per line ...
67622 +
67623 +     Each port description lists the port's processing type, a dash,
67624 +     and then a comma-separated list of all the ports to which this
67625 +     port is connected.  The processing type is either `push' or
67626 +     `pull'; formerly agnostic ports are indicated by a trailing tilde
67627 +     (`push~' or `pull~'). Example result:
67628 +
67629 +          1 input
67630 +          push~   -       Strip@2 [0]
67631 +          2 outputs
67632 +          push~   -       [0] GetIPAddress@4
67633 +          push    -       [0] Print@7
67634 +
67635 +     If Click was compiled with statistics collection enabled, the dash
67636 +     on each line is replaced by a packet count.
67637 +
67638 +`handlers'
67639 +     Returns a string listing the element's visible handlers, one per
67640 +     line.  Each line contains the handler name, a tab, and then either
67641 +     `r', `w', or `rw', depending on whether the handler is read-only,
67642 +     write-only, or read/write. Example result for an `InfiniteSource'
67643 +     element, which has many handlers:
67644 +
67645 +          scheduled       r
67646 +          tickets r
67647 +          reset   w
67648 +          count   r
67649 +          active  rw
67650 +          burstsize       rw
67651 +          limit   rw
67652 +          data    rw
67653 +          handlers        r
67654 +          ports   r
67655 +          config  rw
67656 +          name    r
67657 +          class   r
67658 +
67659 +\1f
67660 +File: click.info,  Node: Accessing Handlers Internally,  Next: LLRPC Overview,  Prev: Default Handlers,  Up: Handlers
67661 +
67662 +3.8.4 Accessing Handlers Internally
67663 +-----------------------------------
67664 +
67665 +Element handlers are stored in the relevant `Router' as objects of type
67666 +`Router::Handler'. (This design allows handler objects to be shared
67667 +between elements when possible.) Handlers are often referred to by
67668 +index; indexes between 0 and `Router::FIRST_GLOBAL_HANDLER - 1' refer
67669 +to element handlers, while indexes above `Router::FIRST_GLOBAL_HANDLER'
67670 +refer to global handlers. Indexes less than 0 are used for error
67671 +returns, such as nonexistent handlers.  `Router' methods translate
67672 +between handler indexes and `Router::Handler' objects, and find
67673 +handlers or handler indexes given handler names.
67674 +
67675 +* Menu:
67676 +
67677 +* Handler Objects::
67678 +* Handlers By Name or Index::
67679 +
67680 +\1f
67681 +File: click.info,  Node: Handler Objects,  Next: Handlers By Name or Index,  Prev: Accessing Handlers Internally,  Up: Accessing Handlers Internally
67682 +
67683 +3.8.4.1 The Router::Handler Type
67684 +................................
67685 +
67686 +The `Router::Handler' type allows you to check a handler's properties
67687 +and call the handler. All of its methods are `const'; you must go
67688 +through `Router' to change a handler's properties.  `Router::Handler'
67689 +objects do not contain element references, since they are shared among
67690 +elements. That means you can't easily find the element (if any) to
67691 +which a particular `Router::Handler' is attached.
67692 +
67693 + -- Method on Router::Handler: const String & name () const
67694 +     Returns the handler's name.
67695 +
67696 + -- Method on Router::Handler: uint32_t flags () const
67697 +     Returns the handler's flags as an integer. The lower bits of the
67698 +     flags word are reserved for the system, and four bits are reserved
67699 +     for drivers, but the upper bits (at least 16) are left
67700 +     uninterpreted, and may be used by elements. The first user flag
67701 +     bit is called `Router::Handler::USER_FLAG_0'; its position in the
67702 +     word equals `Router::Handler::USER_FLAG_SHIFT'. To change a
67703 +     handler's flags, use the `Router::change_handler_flags' method
67704 +     (*note Changing Handler Flags::).
67705 +
67706 + -- Method on Router::Handler: bool readable () const
67707 +     Returns true iff this handler is readable.
67708 +
67709 + -- Method on Router::Handler: bool read_visible () const
67710 +     Returns true iff this handler is readable, and that read handler
67711 +     should be externally visible. Drivers and the ControlSocket
67712 +     element use `read_visible' rather than `readable' when deciding
67713 +     whether to tell the user that a read handler exists. Inter-element
67714 +     communication within the router, however, may use `readable'
67715 +     rather than `read_visible'.
67716 +
67717 + -- Method on Router::Handler: bool writable () const
67718 + -- Method on Router::Handler: bool write_visible () const
67719 +     The analogous methods for write handlers.
67720 +
67721 + -- Method on Router::Handler: bool visible () const
67722 +     Equivalent to `read_visible() || write_visible()'.
67723 +
67724 + -- Method on Router::Handler: String unparse_name (Element *ELEMENT)
67725 +          const
67726 +     Returns the handler's name, including its attached element's name
67727 +     if ELEMENT is non-null. For example, calling `unparse_name' on
67728 +     element `e''s `foo' handler would return `e.foo', while calling it
67729 +     on a global `bar' handler would return `bar'.
67730 +
67731 + -- Static Method on Router::Handler: String unparse_name
67732 +          (Element *ELEMENT, const String &NAME)
67733 +     Returns a string representing ELEMENT's hypothetical NAME handler,
67734 +     or the global NAME handler if ELEMENT is null.
67735 +
67736 + -- Method on Router::Handler: String call_read (Element *ELEMENT) const
67737 +     Calls this read handler on ELEMENT and returns the result. Do not
67738 +     use this method unless you know the handler is `readable()'.
67739 +
67740 + -- Method on Router::Handler: int call_write (const String &DATA,
67741 +          Element *ELEMENT, ErrorHandler *ERRH) const
67742 +     Calls this write handler on ELEMENT, passing it DATA and ERRH, and
67743 +     returns the result. Do not use this method unless you know the
67744 +     handler is `writable()'.
67745 +
67746 +\1f
67747 +File: click.info,  Node: Handlers By Name or Index,  Prev: Handler Objects,  Up: Accessing Handlers Internally
67748 +
67749 +3.8.4.2 Handlers By Name or Index
67750 +.................................
67751 +
67752 +These `Router' methods locate handlers by name, returning either a
67753 +pointer to a handler object or a handler index. The methods are static
67754 +to allow access to global handlers outside the context of a running
67755 +router.
67756 +
67757 + -- Static Method on Router: const Router::Handler * handler
67758 +          (const Element *ELEMENT, const String &NAME)
67759 +     Returns a pointer to the handler object for ELEMENT's handler
67760 +     named NAME, or null if no such handler exists. ELEMENT may be
67761 +     null, in which case the method looks for a global handler named
67762 +     NAME.
67763 +
67764 +     *Caution*: Handler pointers returned by `Router::handler' and
67765 +     similar methods should be treated as transient, since they may
67766 +     become invalid when new handlers are added.
67767 +
67768 + -- Static Method on Router: int hindex (const Element *ELEMENT,
67769 +          const String &NAME)
67770 +     Like `Router::handler', above, but returns an integer handler
67771 +     index for the named handler, or a negative number if no such
67772 +     handler exists. All valid handler indexes are nonnegative.
67773 +
67774 + -- Static Method on Router: const Router::Handler * handler
67775 +          (const Router *ROUTER, int HINDEX)
67776 +     Returns ROUTER's handler object corresponding to HINDEX, or a null
67777 +     pointer if HINDEX is invalid with respect to ROUTER. There are
67778 +     three possibilities: (1) HINDEX coresponds to a valid global
67779 +     handler, which is returned. In this case, ROUTER need not be
67780 +     valid. (2) HINDEX corresponds to a valid local handler in class
67781 +     ROUTER, which is returned. (3) Otherwise, a null pointer is
67782 +     returned.
67783 +
67784 + -- Static Method on Router: const Router::Handler * handler
67785 +          (const Element *ELEMENT, int HINDEX)
67786 +     Convenience function equivalent to `handler(ELEMENT->router(),
67787 +     HINDEX)'. Note that HINDEX need not refer to one of ELEMENT's
67788 +     handlers.
67789 +
67790 + -- Method on Router: const Router::Handler * handler (int HINDEX) const
67791 +     Convenience function equivalent to `handler(this, HINDEX)'.
67792 +
67793 +   Finally, the `element_hindexes' static method returns all the
67794 +handler indices that apply to a given element.
67795 +
67796 + -- Static Method on Router: void element_hindexes
67797 +          (const Element *ELEMENT, Vector<int> &RESULTS)
67798 +     Appends to RESULTS all the handler indexes for ELEMENT's handlers,
67799 +     or all global handlers if ELEMENT is null.
67800 +
67801 +\1f
67802 +File: click.info,  Node: LLRPC Overview,  Prev: Accessing Handlers Internally,  Up: Handlers
67803 +
67804 +3.8.5 LLRPC Overview
67805 +--------------------
67806 +
67807 +\1f
67808 +File: click.info,  Node: Tasks,  Next: Timers,  Prev: Packets,  Up: Top
67809 +
67810 +4 Tasks
67811 +*******
67812 +
67813 +Click schedules a router's CPU or CPUs with one or more "task queues".
67814 +These queues are simply lists of "tasks", which represent functions
67815 +that would like access to the CPU. Tasks are generally associated with
67816 +elements. When scheduled, most tasks call some element's `run_task'
67817 +method.
67818 +
67819 +   Click tasks are represented by `Task' objects. An element that would
67820 +like special access to a router's CPU should include and initialize a
67821 +`Task' instance variable.
67822 +
67823 +   Tasks are generally called very frequently, up to tens of thousands
67824 +of times per second. For infrequent events, it is far more efficient to
67825 +use timers than to use tasks; see *Note Timers::.
67826 +
67827 +   Executing a task should not take a long time. The Click driver loop
67828 +is not currently adaptive, so very long tasks can inappropriately delay
67829 +timers and other periodic events. We may address this problem in a
67830 +future release, but for now, keep tasks short.
67831 +
67832 +   See the Doxygen documentation on class `Task' for more information.
67833 +
67834 +   The `Task' class is defined in the `<click/task.hh>' header file.
67835 +
67836 +* Menu:
67837 +
67838 +* Task Initialization::
67839 +* Scheduling Tasks::
67840 +* Tickets::
67841 +* Task Thread Choice::
67842 +* Task Status::
67843 +* Task Handlers::
67844 +* Task Cleanup::
67845 +
67846 +\1f
67847 +File: click.info,  Node: Task Initialization,  Next: Scheduling Tasks,  Prev: Tasks,  Up: Tasks
67848 +
67849 +4.1 Task Initialization
67850 +=======================
67851 +
67852 +Task initialization is a two-step process. First, when a `Task' object
67853 +is constructed, you must supply information about the function that it
67854 +should call when it is scheduled. Second, when the router is
67855 +initialized, you must initialize the task by supplying it with the
67856 +relevant router. (You must initialize the task even if it will not be
67857 +scheduled right away.)
67858 +
67859 +   `Task' has two constructors. One of them asks the task to call an
67860 +element's `run_task' method when scheduled; the other asks it to call
67861 +an arbitrary function pointer.
67862 +
67863 + -- Constructor on Task:  Task (Element *E)
67864 +     When this task is scheduled, call `E->run_task()'.
67865 +
67866 + -- Constructor on Task:  Task (TaskHook HOOK, void *THUNK)
67867 +     When this task is scheduled, call `HOOK(this, THUNK)'.  The HOOK
67868 +     argument is a function pointer with type `void (*)(Task *, void
67869 +     *)'.
67870 +
67871 +   The `Task::initialize' method places the task on a router-wide list
67872 +of `Task's, associates the task with a particular task queue, and,
67873 +optionally, schedules it. Typically, an element's `initialize' method
67874 +calls `Task::initialize'.
67875 +
67876 + -- Method on Task: void initialize (Router *R, bool SCHEDULED)
67877 + -- Method on Task: void initialize (Element *E, bool SCHEDULED)
67878 +     Attaches the task to the router object R (or `E->router()').
67879 +     Additionally sets the task's tickets to a default value, and
67880 +     schedules the task if SCHEDULED is true.
67881 +
67882 +   Many elements call `ScheduleInfo::initialize_task' instead of
67883 +calling `Task::initialize' directly. This method queries any
67884 +`ScheduleInfo' elements in the configuration to determine the task's
67885 +scheduling parameters, sets those parameters, and calls
67886 +`Task::initialize' to schedule the task. The
67887 +`ScheduleInfo::initialize_task' method is defined in the
67888 +`<click/standard/scheduleinfo.hh>' header file.
67889 +
67890 + -- Static Method on ScheduleInfo: void initialize_task (Element *E,
67891 +          Task *TASK, bool SCHEDULE, ErrorHandler *ERRH)
67892 +     Sets TASK's scheduling parameters as specified by any
67893 +     `ScheduleInfo' elements in the router configuration. The element E
67894 +     is used to find the correct router, and provides the relevant name
67895 +     for parameter lookup--the user supplies parameters to
67896 +     `ScheduleInfo' by element name. If SCHEDULE is true, also
67897 +     schedules TASK on `E->router()''s task queue. Reports any errors
67898 +     to ERRH.
67899 +
67900 + -- Static Method on ScheduleInfo: void initialize_task (Element *E,
67901 +          Task *TASK, ErrorHandler *ERRH)
67902 +     A synonym for `initialize_task(E, TASK, true, ERRH)'.
67903 +
67904 + -- Static Method on ScheduleInfo: void join_scheduler (Element *E,
67905 +          Task *TASK, ErrorHandler *ERRH)
67906 +     A synonym for `initialize_task(E, TASK, true, ERRH)'.
67907 +
67908 +   The `initialize_task' method is generally called like this:
67909 +
67910 +     int
67911 +     SomeElement::initialize(ErrorHandler *errh)
67912 +     {
67913 +         ScheduleInfo::initialize_task(this, &_task, errh);
67914 +     }
67915 +
67916 +Here, `_task', a `Task' object, is one of `SomeElement''s instance
67917 +variables.
67918 +
67919 +\1f
67920 +File: click.info,  Node: Scheduling Tasks,  Next: Tickets,  Prev: Task Initialization,  Up: Tasks
67921 +
67922 +4.2 Scheduling Tasks
67923 +====================
67924 +
67925 +The user may take a task off its task queue with the `unschedule'
67926 +method, and place it back onto its task queue with the `reschedule'
67927 +method. As tasks move to the head of the task queue, they are
67928 +unscheduled and their callbacks are called. Within these callback
67929 +functions, the user will typically call `fast_reschedule', which is
67930 +like `reschedule' without the locking overhead.
67931 +
67932 + -- Method on Task: void unschedule ()
67933 +     Unschedules the task by removing it from its task queue. Does
67934 +     nothing if if the task is currently unscheduled, or if it was
67935 +     never initialized.  When this function returns, the task will not
67936 +     be scheduled.
67937 +
67938 + -- Method on Task: void reschedule ()
67939 +     Reschedules the task by placing it on its task queue. If the task
67940 +     is already scheduled, then this method does nothing.
67941 +
67942 +   All three functions lock the task queue before manipulating it. This
67943 +avoids corruption when there are multiple processors executing
67944 +simultaneously. If `reschedule' cannot immediately lock a task
67945 +queue--perhaps because it is being used on another processor--then they
67946 +register a task request, which will be executed in the near future. In
67947 +contrast, the `unschedule' function will wait until it can lock the
67948 +task queue.
67949 +
67950 +   Sometimes unscheduling a task is not enough: you don't want the task
67951 +to run, even if someone else (an upstream queue, for example) were to
67952 +reschedule it. The `strong_unschedule' method both unschedules the task
67953 +and shifts the task to the quiescent thread, which never runs. Thus, a
67954 +`strong_unschedule'd task will not run until someone calls
67955 +`strong_reschedule', which reschedules the task on its original
67956 +preferred thread.
67957 +
67958 + -- Method on Task: void strong_unschedule ()
67959 +     Unschedules the task by removing it from its task queue and
67960 +     shifting it to the quiescent thread. Does nothing if if the task
67961 +     is currently unscheduled, or if it was never initialized. When
67962 +     this function returns, the task will not be scheduled.
67963 +
67964 + -- Method on Task: void strong_reschedule ()
67965 +     Reschedules the task by placing it on the task queue corresponding
67966 +     to its thread preference. The task will not be scheduled
67967 +     immediately upon return, but it will become scheduled
67968 +     soon--`strong_reschedule' uses a task request to avoid locking.
67969 +
67970 +   The `fast_reschedule' method avoids locking overhead in the common
67971 +case that a task must be rescheduled from within its callback.
67972 +
67973 + -- Method on Task: void fast_reschedule ()
67974 +     Reschedules the task by placing it on its preferred task queue.
67975 +     This method avoids locking overhead, so it is faster than
67976 +     `reschedule'.
67977 +
67978 +          *Caution*: You may call a `Task''s `fast_reschedule' method
67979 +          only from within its callback function. For instance, if an
67980 +          element has a task, `_task', that calls the element's
67981 +          `run_task' method when scheduled, and if `run_task' is called
67982 +          only by that task's callback, then that element's `run_task'
67983 +          method should call `_task.fast_reschedule()' instead of
67984 +          `_task.reschedule()'.
67985 +
67986 +   The `fast_unschedule' method is to `unschedule' as `fast_reschedule'
67987 +is to `reschedule'. It is rarely used, since tasks are automatically
67988 +unscheduled before they are run.
67989 +
67990 + -- Method on Task: void fast_unschedule ()
67991 +     Unschedules the task by removing it from its task queue. Does
67992 +     nothing if if the task is currently unscheduled, or if it was
67993 +     never initialized.  This method avoids locking overhead, so it is
67994 +     faster than `unschedule'.
67995 +
67996 +          *Caution*: You may call a `Task''s `fast_unschedule' method
67997 +          only from within its callback function.
67998 +
67999 +\1f
68000 +File: click.info,  Node: Tickets,  Next: Task Thread Choice,  Prev: Scheduling Tasks,  Up: Tasks
68001 +
68002 +4.3 Tickets
68003 +===========
68004 +
68005 +Click tasks are scheduled using the flexible, lightweight stride
68006 +scheduling algorithm.(1) This algorithm assigns each task a parameter
68007 +called its "tickets". A task with twice as many tickets as usual is
68008 +scheduled twice as frequently.
68009 +
68010 +   `Task's have methods for querying, setting, and adjusting their
68011 +tickets.
68012 +
68013 + -- Method on Task: int tickets () const
68014 +     Returns this task's tickets. This number will be at least 1 and no
68015 +     more than `Task::MAX_TICKETS', which equals 32768.
68016 +
68017 + -- Method on Task: void set_tickets (int T)
68018 +     Sets this task's tickets to T. The T parameter should lie between
68019 +     1 and `Task::MAX_TICKETS', inclusive; numbers outside this range
68020 +     are constrained to the nearest valid value.
68021 +
68022 + -- Method on Task: void adj_tickets (int DELTA)
68023 +     Equivalent to `set_tickets(tickets() + DELTA)'.
68024 +
68025 +   ---------- Footnotes ----------
68026 +
68027 +   (1) For more information, see MIT Laboratory for Computer Science
68028 +Technical Memo MIT/LCS/TM-528, `Stride scheduling: deterministic
68029 +proportional-share resource management', by Carl A. Waldspurger and
68030 +William E. Weihl, June 1995.
68031 +
68032 +\1f
68033 +File: click.info,  Node: Task Thread Choice,  Next: Task Status,  Prev: Tickets,  Up: Tasks
68034 +
68035 +4.4 Choosing a Thread
68036 +=====================
68037 +
68038 +Each task belongs to some task queue, which generally corresponds to a
68039 +thread of control. Single-threaded Click has one active thread, and
68040 +therefore one task queue, but multithreaded Click can have an arbitrary
68041 +number of threads. Either Click has a special thread, the "quiescent
68042 +thread", numbered -1; tasks belonging to the quiescent thread never
68043 +run, whether or not they are scheduled. Every task starts out belonging
68044 +to the first thread, thread 0. The `change_thread' method moves a task
68045 +to another thread.
68046 +
68047 + -- Method on Task: void change_thread (int THREAD_ID)
68048 +     Move this task to thread THREAD_ID, which should be a number
68049 +     between -1 and the relevant `Router''s `nthreads()'.
68050 +
68051 +     The task is scheduled on the new task queue if and only if it was
68052 +     scheduled on the old task queue.
68053 +
68054 +   Like `reschedule', `change_thread' must lock the task queue before
68055 +manipulating it. (Unlike those methods, `change_thread' must lock two
68056 +task queues, the old and the new.) If `change_thread' cannot lock a
68057 +task queue, then it registers a task request that will be executed in
68058 +the near future. This implies that a task may remain on the same
68059 +thread, or become unscheduled, for some time after `change_thread' is
68060 +called.
68061 +
68062 +\1f
68063 +File: click.info,  Node: Task Status,  Next: Task Handlers,  Prev: Task Thread Choice,  Up: Tasks
68064 +
68065 +4.5 Task Status Methods
68066 +=======================
68067 +
68068 +These methods let a user check various properties of a task--for
68069 +instance, whether it is initialized or scheduled.
68070 +
68071 + -- Method on Task: bool initialized () const
68072 +     Returns true iff the task has been initialized--that is, if it is
68073 +     associated with some router.
68074 +
68075 + -- Method on Task: bool scheduled () const
68076 +     Returns true iff the task is currently scheduled on some task
68077 +     queue.
68078 +
68079 + -- Method on Task: RouterThread * scheduled_list () const
68080 +     Returns the task queue with which this task is associated. Even
68081 +     unscheduled tasks are associated with some task queue; this is the
68082 +     task queue on which the task will be placed if `reschedule' is
68083 +     called.
68084 +
68085 + -- Method on Task: TaskHook hook () const
68086 +     Returns the callback function that is called when the task is
68087 +     scheduled.  If the task is associated with some element, this
68088 +     method returns a null pointer.
68089 +
68090 + -- Method on Task: void * thunk () const
68091 +     Returns the extra data passed to the callback function when the
68092 +     task is scheduled.
68093 +
68094 + -- Method on Task: Element * element () const
68095 +     If the task is associated with some element, this method returns
68096 +     that element. Otherwise, returns a null pointer.
68097 +
68098 +\1f
68099 +File: click.info,  Node: Task Handlers,  Next: Task Cleanup,  Prev: Task Status,  Up: Tasks
68100 +
68101 +4.6 Task Handlers
68102 +=================
68103 +
68104 +By convention, elements with tasks should provide handlers that access
68105 +task properties. The `Element::add_task_handlers' method automatically
68106 +adds these handlers for a given `Task' object.
68107 +
68108 + -- Method on Element: void add_task_handlers (Task *TASK,
68109 +          const String &PREFIX = String())
68110 +     Adds task handlers for TASK to this element. The string PREFIX is
68111 +     prepended to every handler name.
68112 +
68113 +   This method adds at least the following handlers:
68114 +
68115 +`scheduled'
68116 +     Returns a Boolean value saying whether the task is currently
68117 +     scheduled on some task queue. Example result: "truen".
68118 +
68119 +`tickets'
68120 +     Returns or sets the task's currently allocated tickets. This
68121 +     handler is only available if Click was compiled to support stride
68122 +     scheduling.  Example result: "1024n".
68123 +
68124 +`thread_preference'
68125 +     Returns the task's thread preference. This handler is only
68126 +     available on multithreaded Click. Example result: "2n".
68127 +
68128 +\1f
68129 +File: click.info,  Node: Task Cleanup,  Prev: Task Handlers,  Up: Tasks
68130 +
68131 +4.7 Task Cleanup
68132 +================
68133 +
68134 +You generally don't need to worry about destroying `Task' objects: they
68135 +are automatically unscheduled and removed when the `Router' is
68136 +destroyed. This only works if the `Task' objects have the same lifetime
68137 +as the `Router', however. This includes the normal case, when `Task's
68138 +are element instance variables. If you create and destroy `Task'
68139 +objects as the router runs, however, you will need to call the
68140 +following method before deleting the `Task'.
68141 +
68142 + -- Method on Task: void cleanup ()
68143 +     Cleans up the `Task' object.
68144 +
68145 +\1f
68146 +File: click.info,  Node: Timers,  Next: Notification,  Prev: Tasks,  Up: Top
68147 +
68148 +5 Timers
68149 +********
68150 +
68151 +Click "timers", like Click tasks, represent callback functions that the
68152 +driver calls when appropriate. Unlike tasks, however, you schedule
68153 +timers to go off at a specified time. Timers are intended for more
68154 +infrequent and/or slower tasks.
68155 +
68156 +   As with `Task', most `Timer' objects are declared as instance
68157 +variables of elements and scheduled when needed.
68158 +
68159 +   Timers may be scheduled with microsecond precision, but on current
68160 +hardware, only millisecond precision is likely to be achievable.
68161 +
68162 +   The `Timer' class is defined in the `<click/timer.hh>' header file.
68163 +
68164 +* Menu:
68165 +
68166 +* Timer Initialization::
68167 +* Scheduling Timers::
68168 +* Timer Status Methods::
68169 +* Timer Cleanup::
68170 +
68171 +\1f
68172 +File: click.info,  Node: Timer Initialization,  Next: Scheduling Timers,  Prev: Timers,  Up: Timers
68173 +
68174 +5.1 Timer Initialization
68175 +========================
68176 +
68177 +Timer initialization resembles task initialization. When the timer is
68178 +constructed, you must supply it with information about its callback
68179 +function. Later, after the router is initialized, you must initialize
68180 +and, optionally, schedule it.
68181 +
68182 + -- Constructor on Timer:  Timer (Element *E)
68183 +     When this timer goes off, call `E->run_timer()'.
68184 +
68185 + -- Constructor on Timer:  Timer (Task *T)
68186 +     When this timer goes off, call `T->reschedule()'.
68187 +
68188 + -- Constructor on Timer:  Timer (TimerHook HOOK, void *THUNK)
68189 +     When this timer goes off, call `HOOK(this, THUNK)'. The HOOK
68190 +     argument is a function pointer with type `void (*)(Timer *, void
68191 +     *)'.
68192 +
68193 + -- Method on Timer: void initialize (Router *R)
68194 + -- Method on Timer: void initialize (Element *E)
68195 +     Attaches the timer to the router object R (or `E->router()').
68196 +
68197 +   Typically, an element's `initialize' method calls
68198 +`Timer::initialize', and possibly one of the `schedule' functions
68199 +described below.
68200 +
68201 +\1f
68202 +File: click.info,  Node: Scheduling Timers,  Next: Timer Status Methods,  Prev: Timer Initialization,  Up: Timers
68203 +
68204 +5.2 Scheduling Timers
68205 +=====================
68206 +
68207 +A variety of methods schedule timers to go off at specified times. The
68208 +basic method is `schedule_at', which schedules the timer for a
68209 +specified time. Subsidiary methods schedule the timer relative to the
68210 +current time (the `schedule_after' methods), or relative to the last
68211 +time the timer was scheduled to run (the `reschedule_after' methods).
68212 +Finally, `unschedule' unschedules the timer.
68213 +
68214 +   All `schedule' and `reschedule' functions first unschedule the timer
68215 +if it was already scheduled.
68216 +
68217 +   The `reschedule' methods are particularly useful for timers that
68218 +should occur periodically. For example, this callback function will
68219 +cause its timer to go off at 20-second intervals:
68220 +
68221 +     void timer_callback(Timer *t, void *) {
68222 +         t->reschedule_after_s(20);
68223 +     }
68224 +
68225 + -- Method on Timer: void schedule_at (const struct timeval &WHEN)
68226 +     Schedule the timer to go off at WHEN. You must have initialized
68227 +     the timer earlier.
68228 +
68229 + -- Method on Timer: void schedule_now ()
68230 +     Schedule the timer to go off as soon as possible.
68231 +
68232 + -- Method on Timer: void schedule_after (const struct timeval &DELAY)
68233 +     Schedule the timer to go off DELAY after the current time.
68234 +
68235 + -- Method on Timer: void schedule_after_s (uint32_t DELAY)
68236 +     Schedule the timer to go off DELAY seconds after the current time.
68237 +
68238 + -- Method on Timer: void schedule_after_ms (uint32_t DELAY)
68239 +     Schedule the timer to go off DELAY milliseconds after the current
68240 +     time.
68241 +
68242 + -- Method on Timer: void reschedule_after (const struct timeval &DELAY)
68243 +     Schedule the timer to go off DELAY after it was last scheduled to
68244 +     go off. If the timer was never previously scheduled, this method
68245 +     will schedule the timer for some arbitrary time.
68246 +
68247 + -- Method on Timer: void reschedule_after_s (uint32_t DELAY)
68248 +     Schedule the timer to go off DELAY seconds after it was last
68249 +     scheduled to go off.
68250 +
68251 + -- Method on Timer: void reschedule_after_ms (uint32_t DELAY)
68252 +     Schedule the timer to go off DELAY milliseconds after it was last
68253 +     scheduled to go off.
68254 +
68255 + -- Method on Timer: void unschedule ()
68256 +     Unschedules the timer, if it was scheduled.
68257 +
68258 +\1f
68259 +File: click.info,  Node: Timer Status Methods,  Next: Timer Cleanup,  Prev: Scheduling Timers,  Up: Timers
68260 +
68261 +5.3 Timer Status Methods
68262 +========================
68263 +
68264 +These methods return information about a timer, including when it is
68265 +scheduled to expire.
68266 +
68267 + -- Method on Timer: bool initialized () const
68268 +     Returns true iff the timer has been initialized with a call to
68269 +     `initialize()'. Uninitialized timers must not be scheduled.
68270 +
68271 + -- Method on Timer: bool scheduled () const
68272 +     Returns true iff the timer is scheduled to expire some time in the
68273 +     future.
68274 +
68275 + -- Method on Timer: const struct timeval & expiry () const
68276 +     Returns the time that the timer is set to expire. If the timer has
68277 +     never been scheduled, the value is garbage. If the timer was
68278 +     scheduled but is not scheduled currently, the value is most
68279 +     recently set expiry time.
68280 +
68281 +\1f
68282 +File: click.info,  Node: Timer Cleanup,  Prev: Timer Status Methods,  Up: Timers
68283 +
68284 +5.4 Timer Cleanup
68285 +=================
68286 +
68287 +You don't need to worry about cleaning up `Timer' objects. They are
68288 +automatically unscheduled and removed when the `Router' is destroyed,
68289 +and deleting a `Timer' automatically removes it from any relevant
68290 +lists. The following function is nevertheless provided for consistency
68291 +with `Task's, which do need to be cleaned up in certain circumstances
68292 +(*note Task Cleanup::).
68293 +
68294 + -- Method on Timer: void cleanup ()
68295 +     Cleans up the `Timer' object.
68296 +
68297 +\1f
68298 +File: click.info,  Node: Notification,  Next: Coding Standards,  Prev: Timers,  Up: Top
68299 +
68300 +6 Notification
68301 +**************
68302 +
68303 +\1f
68304 +File: click.info,  Node: Coding Standards,  Next: Index,  Prev: Notification,  Up: Top
68305 +
68306 +7 Coding Standards
68307 +******************
68308 +
68309 +* Menu:
68310 +
68311 +* Upper and lower case names::
68312 +* Common name patterns::
68313 +
68314 +\1f
68315 +File: click.info,  Node: Upper and lower case names,  Next: Common name patterns,  Prev: Coding Standards,  Up: Coding Standards
68316 +
68317 +7.1 Upper and Lower Case in Names
68318 +=================================
68319 +
68320 +Keep to the following consistent scheme for choosing between upper and
68321 +lower case when naming variables, types, and functions.
68322 +
68323 +*Classes*
68324 +     Use mixed case with an initial capital letter and no underscores:
68325 +     `LookupIPRoute'.
68326 +
68327 +*Methods*
68328 +     Use all lower case with underscores separating words:
68329 +     `negation_is_simple'.
68330 +
68331 +*Constants*
68332 +     Use all upper case with underscores separating words:
68333 +     `TYPE_ICMP_TYPE'.
68334 +
68335 +*Instance variables*
68336 +     Begin with an underscore, then use all lower case with underscores
68337 +     separating words: `_length'.
68338 +
68339 +*Regular variables*
68340 +     Use all lower case with underscores separating words: `i',
68341 +     `the_handler'.
68342 +
68343 +*Class variables*
68344 +     These variables are declared as `static' in the class header. Name
68345 +     them like regular variables: `nelements_allocated'.
68346 +
68347 +*Functions*
68348 +     Name them like methods: `quicksort_hook'.
68349 +
68350 +*Other types*
68351 +     This includes typedefs and enumerated types. Name them like
68352 +     classes: `CpVaParseCmd', `ConfigurePhase'.
68353 +
68354 +   There are exceptions to these guidelines. In particular:
68355 +
68356 +   * Instance variables in C structs--that is, classes with few methods
68357 +     whose instance variables are mostly public--may be named like
68358 +     regular variables, without a preceding underscore. The same goes
68359 +     for the components of unions.
68360 +
68361 +   * Classes that act like simple types, such as `uatomic32_t', take
68362 +     names similar to the types they replace (in this case `uint32_t').
68363 +
68364 +\1f
68365 +File: click.info,  Node: Common name patterns,  Prev: Upper and lower case names,  Up: Coding Standards
68366 +
68367 +7.2 Common Name Patterns
68368 +========================
68369 +
68370 +   * Many instance variables have associated "getter methods" that
68371 +     return their values, and/or "setter methods" that change their
68372 +     values. For an instance variable named `_x', the getter method
68373 +     should be named `x()' and the setter method should be named
68374 +     `set_x()'.
68375 +
68376 +   * A variable or method which counts something is often named
68377 +     `nOBJECTs'--for instance, `_nwarnings', `ninputs()', `_npackets'.
68378 +
68379 +   * Use a bare `0' for a null pointer, except where some ambiguity
68380 +     might arise (for example, where an incorrect overloading might be
68381 +     selected).
68382 +
68383 +\1f
68384 +File: click.info,  Node: Index,  Prev: Coding Standards,  Up: Top
68385 +
68386 +Index
68387 +*****
68388 +
68389 +\0\b[index\0\b]
68390 +* Menu:
68391 +
68392 +* (*ReadHandler):                        Read and Write Handler Overview.
68393 +                                                              (line  13)
68394 +* (*WriteHandler):                       Read and Write Handler Overview.
68395 +                                                              (line  21)
68396 +* add_read_handler on Element:           Adding Handlers.     (line  13)
68397 +* add_read_handler on Router:            Adding Handlers.     (line  34)
68398 +* add_task_handlers on Element:          Task Handlers.       (line  12)
68399 +* add_write_handler on Element:          Adding Handlers.     (line  19)
68400 +* add_write_handler on Router:           Adding Handlers.     (line  37)
68401 +* adj_tickets on Task:                   Tickets.             (line  24)
68402 +* all_user_anno_u on Packet:             User Annotations.    (line  60)
68403 +* buffer_data on Packet:                 Packet Structure and Contents.
68404 +                                                              (line  37)
68405 +* buffer_data on WritablePacket:         Packet Structure and Contents.
68406 +                                                              (line  47)
68407 +* buffer_length on Packet:               Packet Structure and Contents.
68408 +                                                              (line  42)
68409 +* call_read on Router::Handler:          Handler Objects.     (line  57)
68410 +* call_write on Router::Handler:         Handler Objects.     (line  62)
68411 +* change_handler_flags on Router:        Adding Handlers.     (line  46)
68412 +* change_thread on Task:                 Task Thread Choice.  (line  16)
68413 +* cleanup on Task:                       Task Cleanup.        (line  15)
68414 +* cleanup on Timer:                      Timer Cleanup.       (line  14)
68415 +* clear_annotations on Packet:           Annotations In General.
68416 +                                                              (line  10)
68417 +* clone on Packet:                       Packet Sharing.      (line  12)
68418 +* ContextErrorHandler on ContextErrorHandler: Error Veneers.  (line  26)
68419 +* copy_annotations on Packet:            Annotations In General.
68420 +                                                              (line  14)
68421 +* data on Packet:                        Packet Structure and Contents.
68422 +                                                              (line  31)
68423 +* data on WritablePacket:                Packet Structure and Contents.
68424 +                                                              (line  46)
68425 +* debug on ErrorHandler:                 Reporting Errors.    (line  13)
68426 +* decorate_text on ErrorHandler:         Writing ErrorHandlers.
68427 +                                                              (line  30)
68428 +* default ErrorHandler:                  Basic ErrorHandlers. (line  13)
68429 +* default_handler on ErrorHandler:       Basic ErrorHandlers. (line  19)
68430 +* device_anno on Packet:                 Device Annotation.   (line  14)
68431 +* dst_ip6_anno on Packet:                Destination Address Annotation.
68432 +                                                              (line  17)
68433 +* dst_ip_anno on Packet:                 Destination Address Annotation.
68434 +                                                              (line  14)
68435 +* element on Task:                       Task Status.         (line  33)
68436 +* element_hindexes on Router:            Handlers By Name or Index.
68437 +                                                              (line  52)
68438 +* error on ErrorHandler:                 Reporting Errors.    (line  16)
68439 +* ErrorHandler, default:                 Basic ErrorHandlers. (line  13)
68440 +* ErrorVeneer:                           Writing ErrorHandlers.
68441 +                                                              (line  54)
68442 +* ErrorVeneer on ErrorVeneer:            Writing ErrorHandlers.
68443 +                                                              (line  67)
68444 +* expiry on Timer:                       Timer Status Methods.
68445 +                                                              (line  18)
68446 +* fast_reschedule on Task:               Scheduling Tasks.    (line  55)
68447 +* fast_unschedule on Task:               Scheduling Tasks.    (line  72)
68448 +* fatal on ErrorHandler:                 Reporting Errors.    (line  17)
68449 +* FileErrorHandler on FileErrorHandler:  Basic ErrorHandlers. (line  39)
68450 +* flags on Router::Handler:              Handler Objects.     (line  17)
68451 +* handle_text on ErrorHandler:           Writing ErrorHandlers.
68452 +                                                              (line  45)
68453 +* handler on Router:                     Handlers By Name or Index.
68454 +                                                              (line  13)
68455 +* headroom on Packet:                    Packet Structure and Contents.
68456 +                                                              (line  40)
68457 +* hindex on Router:                      Handlers By Name or Index.
68458 +                                                              (line  24)
68459 +* hook on Task:                          Task Status.         (line  24)
68460 +* initialize on Task:                    Task Initialization. (line  31)
68461 +* initialize on Timer:                   Timer Initialization.
68462 +                                                              (line  23)
68463 +* initialize_task on ScheduleInfo:       Task Initialization. (line  46)
68464 +* initialized on Task:                   Task Status.         (line  10)
68465 +* initialized on Timer:                  Timer Status Methods.
68466 +                                                              (line  10)
68467 +* ip6_header on Packet:                  Header Annotations.  (line  76)
68468 +* ip6_header on WritablePacket:          Header Annotations.  (line  77)
68469 +* ip6_header_length on Packet:           Header Annotations.  (line  84)
68470 +* ip6_header_offset on Packet:           Header Annotations.  (line  83)
68471 +* ip_header on Packet:                   Header Annotations.  (line  74)
68472 +* ip_header on WritablePacket:           Header Annotations.  (line  75)
68473 +* ip_header_length on Packet:            Header Annotations.  (line  82)
68474 +* ip_header_offset on Packet:            Header Annotations.  (line  81)
68475 +* join_scheduler on ScheduleInfo:        Task Initialization. (line  60)
68476 +* kill on Packet:                        Packet Creation.     (line  80)
68477 +* LandmarkErrorHandler on LandmarkErrorHandler: Error Veneers.
68478 +                                                              (line  43)
68479 +* ldebug on ErrorHandler:                Reporting Errors.    (line  36)
68480 +* length on Packet:                      Packet Structure and Contents.
68481 +                                                              (line  34)
68482 +* lerror on ErrorHandler:                Reporting Errors.    (line  42)
68483 +* lfatal on ErrorHandler:                Reporting Errors.    (line  44)
68484 +* lmessage on ErrorHandler:              Reporting Errors.    (line  38)
68485 +* lwarning on ErrorHandler:              Reporting Errors.    (line  40)
68486 +* make on Packet <1>:                    Packets and sk_buffs.
68487 +                                                              (line  20)
68488 +* make on Packet:                        Packet Creation.     (line  31)
68489 +* make_text on ErrorHandler:             Writing ErrorHandlers.
68490 +                                                              (line  19)
68491 +* message on ErrorHandler:               Reporting Errors.    (line  14)
68492 +* name on Router::Handler:               Handler Objects.     (line  14)
68493 +* NAME_ANNO:                             Specific User Annotations.
68494 +                                                              (line  13)
68495 +* nerrors on ErrorHandler:               Counting Errors.     (line  11)
68496 +* network_header on Packet:              Header Annotations.  (line  21)
68497 +* network_header on WritablePacket:      Header Annotations.  (line  22)
68498 +* network_header_length on Packet:       Header Annotations.  (line  36)
68499 +* network_header_offset on Packet:       Header Annotations.  (line  31)
68500 +* nonunique_push on Packet:              Packet Buffer Manipulation.
68501 +                                                              (line  62)
68502 +* nonunique_put on Packet:               Packet Buffer Manipulation.
68503 +                                                              (line  77)
68504 +* nwarnings on ErrorHandler:             Counting Errors.     (line  10)
68505 +* packet_type_anno on Packet:            Packet Type Annotation.
68506 +                                                              (line  33)
68507 +* perfctr_anno on Packet:                Performance Counter Annotation.
68508 +                                                              (line  11)
68509 +* PrefixErrorHandler on PrefixErrorHandler: Error Veneers.    (line  36)
68510 +* pull on Packet:                        Packet Buffer Manipulation.
68511 +                                                              (line  31)
68512 +* push on Packet:                        Packet Buffer Manipulation.
68513 +                                                              (line  16)
68514 +* put on Packet:                         Packet Buffer Manipulation.
68515 +                                                              (line  37)
68516 +* read_visible on Router::Handler:       Handler Objects.     (line  30)
68517 +* readable on Router::Handler:           Handler Objects.     (line  27)
68518 +* reschedule on Task:                    Scheduling Tasks.    (line  20)
68519 +* reschedule_after on Timer:             Scheduling Timers.   (line  42)
68520 +* reschedule_after_ms on Timer:          Scheduling Timers.   (line  51)
68521 +* reschedule_after_s on Timer:           Scheduling Timers.   (line  47)
68522 +* reset_counts on ErrorHandler:          Counting Errors.     (line  15)
68523 +* schedule_after on Timer:               Scheduling Timers.   (line  32)
68524 +* schedule_after_ms on Timer:            Scheduling Timers.   (line  38)
68525 +* schedule_after_s on Timer:             Scheduling Timers.   (line  35)
68526 +* schedule_at on Timer:                  Scheduling Timers.   (line  25)
68527 +* schedule_now on Timer:                 Scheduling Timers.   (line  29)
68528 +* scheduled on Task:                     Task Status.         (line  14)
68529 +* scheduled on Timer:                    Timer Status Methods.
68530 +                                                              (line  14)
68531 +* scheduled_list on Task:                Task Status.         (line  18)
68532 +* set_default_handler on ErrorHandler:   Basic ErrorHandlers. (line  23)
68533 +* set_device_anno on Packet:             Device Annotation.   (line  17)
68534 +* set_dst_ip6_anno on Packet:            Destination Address Annotation.
68535 +                                                              (line  22)
68536 +* set_dst_ip_anno on Packet:             Destination Address Annotation.
68537 +                                                              (line  21)
68538 +* set_ip6_header on Packet:              Header Annotations.  (line  91)
68539 +* set_ip_header on Packet:               Header Annotations.  (line  89)
68540 +* SET_NAME_ANNO:                         Specific User Annotations.
68541 +                                                              (line  16)
68542 +* set_network_header on Packet:          Header Annotations.  (line  60)
68543 +* set_packet_type_anno on Packet:        Packet Type Annotation.
68544 +                                                              (line  37)
68545 +* set_perfctr_anno on Packet:            Performance Counter Annotation.
68546 +                                                              (line  14)
68547 +* set_tickets on Task:                   Tickets.             (line  19)
68548 +* set_timestamp_anno on Packet:          Timestamp Annotation.
68549 +                                                              (line  14)
68550 +* set_user_anno_c on Packet:             User Annotations.    (line  54)
68551 +* set_user_anno_i on Packet:             User Annotations.    (line  56)
68552 +* set_user_anno_u on Packet:             User Annotations.    (line  55)
68553 +* shared on Packet:                      Packet Sharing.      (line  34)
68554 +* silent_handler on ErrorHandler:        Basic ErrorHandlers. (line  28)
68555 +* skb on Packet:                         Packets and sk_buffs.
68556 +                                                              (line  32)
68557 +* static_cleanup on ErrorHandler:        ErrorHandler Initialization.
68558 +                                                              (line  20)
68559 +* static_initialize on ErrorHandler:     ErrorHandler Initialization.
68560 +                                                              (line  13)
68561 +* steal_skb on Packet:                   Packets and sk_buffs.
68562 +                                                              (line  40)
68563 +* strong_reschedule on Task:             Scheduling Tasks.    (line  46)
68564 +* strong_unschedule on Task:             Scheduling Tasks.    (line  40)
68565 +* tailroom on Packet:                    Packet Structure and Contents.
68566 +                                                              (line  41)
68567 +* take on Packet:                        Packet Buffer Manipulation.
68568 +                                                              (line  52)
68569 +* Task on Task:                          Task Initialization. (line  18)
68570 +* tcp_header on Packet:                  Header Annotations.  (line  97)
68571 +* tcp_header on WritablePacket:          Header Annotations.  (line  98)
68572 +* thunk on Task:                         Task Status.         (line  29)
68573 +* tickets on Task:                       Tickets.             (line  15)
68574 +* Timer on Timer:                        Timer Initialization.
68575 +                                                              (line  12)
68576 +* timestamp_anno on Packet:              Timestamp Annotation.
68577 +                                                              (line   9)
68578 +* transport_header on Packet:            Header Annotations.  (line  26)
68579 +* transport_header on WritablePacket:    Header Annotations.  (line  27)
68580 +* transport_header_offset on Packet:     Header Annotations.  (line  40)
68581 +* udp_header on Packet:                  Header Annotations.  (line  99)
68582 +* udp_header on WritablePacket:          Header Annotations.  (line 100)
68583 +* uniqueify on Packet:                   Packet Sharing.      (line  20)
68584 +* unparse_name on Router::Handler:       Handler Objects.     (line  46)
68585 +* unschedule on Task:                    Scheduling Tasks.    (line  14)
68586 +* unschedule on Timer:                   Scheduling Timers.   (line  55)
68587 +* user_anno_c on Packet:                 User Annotations.    (line  43)
68588 +* user_anno_i on Packet:                 User Annotations.    (line  48)
68589 +* user_anno_u on Packet:                 User Annotations.    (line  47)
68590 +* verror on ErrorHandler:                Reporting Errors.    (line  73)
68591 +* visible on Router::Handler:            Handler Objects.     (line  42)
68592 +* warning on ErrorHandler:               Reporting Errors.    (line  15)
68593 +* writable on Router::Handler:           Handler Objects.     (line  38)
68594 +* write_visible on Router::Handler:      Handler Objects.     (line  39)
68595 +
68596 +
68597 +\1f
68598 +Tag Table:
68599 +Node: Top\7f233
68600 +Node: Overview\7f2218
68601 +Node: Packet Transfer\7f2353
68602 +Node: Helper Classes\7f2470
68603 +Node: ErrorHandler\7f2618
68604 +Node: ErrorHandler Initialization\7f3523
68605 +Node: Reporting Errors\7f4673
68606 +Node: Error Format Strings\7f8229
68607 +Node: Counting Errors\7f12734
68608 +Node: Basic ErrorHandlers\7f13677
68609 +Node: Error Veneers\7f15602
68610 +Node: Writing ErrorHandlers\7f19343
68611 +Node: Packets\7f22748
68612 +Node: Packet Structure and Contents\7f24424
68613 +Node: Packet Creation\7f26727
68614 +Node: Packets and sk_buffs\7f30171
68615 +Node: Packet Sharing\7f32385
68616 +Node: Packet Buffer Manipulation\7f33889
68617 +Node: Annotations\7f38510
68618 +Node: Header Annotations\7f39633
68619 +Node: User Annotations\7f44362
68620 +Node: Specific User Annotations\7f46926
68621 +Node: Other Annotations\7f48352
68622 +Node: Destination Address Annotation\7f49046
68623 +Node: Timestamp Annotation\7f50312
68624 +Node: Device Annotation\7f51557
68625 +Node: Packet Type Annotation\7f52750
68626 +Node: Performance Counter Annotation\7f54390
68627 +Node: Annotations In General\7f55128
68628 +Node: Packet Out-of-Memory\7f55784
68629 +Node: Handlers\7f56549
68630 +Node: Read and Write Handler Overview\7f57053
68631 +Node: Adding Handlers\7f60246
68632 +Ref: Changing Handler Flags\7f62106
68633 +Node: Default Handlers\7f62591
68634 +Node: Accessing Handlers Internally\7f65097
68635 +Node: Handler Objects\7f65946
68636 +Node: Handlers By Name or Index\7f69116
68637 +Node: LLRPC Overview\7f71591
68638 +Node: Tasks\7f71730
68639 +Node: Task Initialization\7f73013
68640 +Node: Scheduling Tasks\7f76105
68641 +Node: Tickets\7f79882
68642 +Ref: Tickets-Footnote-1\7f80864
68643 +Node: Task Thread Choice\7f81096
68644 +Node: Task Status\7f82460
68645 +Node: Task Handlers\7f83806
68646 +Node: Task Cleanup\7f84870
68647 +Node: Timers\7f85502
68648 +Node: Timer Initialization\7f86263
68649 +Node: Scheduling Timers\7f87370
68650 +Node: Timer Status Methods\7f89646
68651 +Node: Timer Cleanup\7f90505
68652 +Node: Notification\7f91069
68653 +Node: Coding Standards\7f91191
68654 +Node: Upper and lower case names\7f91386
68655 +Node: Common name patterns\7f93028
68656 +Node: Index\7f93763
68657 +\1f
68658 +End Tag Table
68659 diff -Nurb click-1.6.0/inst/share/info/dir click-1.6.0-27/inst/share/info/dir
68660 --- click-1.6.0/inst/share/info/dir     1969-12-31 19:00:00.000000000 -0500
68661 +++ click-1.6.0-27/inst/share/info/dir  2009-02-11 14:08:52.000000000 -0500
68662 @@ -0,0 +1,18 @@
68663 +This is the file .../info/dir, which contains the
68664 +topmost node of the Info hierarchy, called (dir)Top.
68665 +The first time you invoke Info you start off looking at this node.
68666 +\1f
68667 +File: dir,     Node: Top       This is the top of the INFO tree
68668 +
68669 +  This (the Directory node) gives a menu of major topics.
68670 +  Typing "q" exits, "?" lists all Info commands, "d" returns here,
68671 +  "h" gives a primer for first-timers,
68672 +  "mEmacs<Return>" visits the Emacs manual, etc.
68673 +
68674 +  In Emacs, you can click mouse button 2 on a menu item or cross reference
68675 +  to select it.
68676 +
68677 +* Menu:
68678 +
68679 +Click modular router
68680 +* Click: (click).           The Click modular router programming manual.
68681 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
68682 --- click-1.6.0/inst/share/man/man1/click-align.1       1969-12-31 19:00:00.000000000 -0500
68683 +++ click-1.6.0-27/inst/share/man/man1/click-align.1    2009-02-11 14:08:51.000000000 -0500
68684 @@ -0,0 +1,129 @@
68685 +.\" -*- mode: nroff -*-
68686 +.ds V 1.0
68687 +.ds E " \-\- 
68688 +.if t .ds E \(em
68689 +.de Sp
68690 +.if n .sp
68691 +.if t .sp 0.4
68692 +..
68693 +.de Es
68694 +.Sp
68695 +.RS 5
68696 +.nf
68697 +..
68698 +.de Ee
68699 +.fi
68700 +.RE
68701 +.PP
68702 +..
68703 +.de Rs
68704 +.RS
68705 +.Sp
68706 +..
68707 +.de Re
68708 +.Sp
68709 +.RE
68710 +..
68711 +.de M
68712 +.BR "\\$1" "(\\$2)\\$3"
68713 +..
68714 +.de RM
68715 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
68716 +..
68717 +.TH CLICK-ALIGN 1 "27/Nov/1999" "Version \*V"
68718 +.SH NAME
68719 +click-align \- adds required Align elements to a Click configuration
68720 +'
68721 +.SH SYNOPSIS
68722 +.B click-align
68723 +.RI \%[ options ]
68724 +.RI \%[ param = value " ...]"
68725 +.RI \%[ router\-file ]
68726 +'
68727 +.SH DESCRIPTION
68728 +The
68729 +.B click-align
68730 +tool makes Click router configurations usable on machines that don't
68731 +support unaligned accesses. It reads a router configuration file in the
68732 +.M click 5
68733 +language, adds any required
68734 +.M Align n
68735 +elements, and writes the new configuration to the standard output.
68736 +.PP
68737 +Several Click elements, such as
68738 +.M CheckIPHeader n
68739 +and
68740 +.M ToLinux n ,
68741 +have alignment requirements. The CheckIPHeader element, for example,
68742 +expects that the packet begins with an IP header, and that this IP header
68743 +is four-byte-aligned. Normally, Click does not guarantee this: elements
68744 +cannot know how input packets will be aligned. The
68745 +.B click-align
68746 +tool first analyzes the router configuration, then inserts
68747 +.M Align n
68748 +elements as required to ensure that packets will be properly aligned. It
68749 +also adds an
68750 +.M AlignmentInfo n
68751 +element so elements can figure out what packet alignment they can expect.
68752 +.PP
68753 +The list of alignment requirements is currently built in to the
68754 +.B click-align
68755 +tool and cannot be changed except by recompilation.
68756 +'
68757 +.SH "OPTIONS"
68758 +'
68759 +If any filename argument is a single dash "-",
68760 +.B click-align
68761 +will use the standard input or output instead, as appropriate.
68762 +'
68763 +.TP 5
68764 +.BI \-f " file"
68765 +.PD 0
68766 +.TP
68767 +.BI \-\-file " file"
68768 +Read the router configuration to transform from
68769 +.IR file .
68770 +The default is the standard input.
68771 +'
68772 +.Sp
68773 +.TP
68774 +.BI \-e " expr"
68775 +.PD 0
68776 +.TP
68777 +.BI \-\-expr " expr"
68778 +Use
68779 +.IR expr ,
68780 +a string in the Click language, as the router configuration to transform.
68781 +'
68782 +.Sp
68783 +.TP
68784 +.BI \-o " file"
68785 +.TP
68786 +.BI \-\-output " file"
68787 +Write the output router configuration to
68788 +.IR file .
68789 +The default is the standard output.
68790 +'
68791 +.Sp
68792 +.TP 5
68793 +.BI \-\-help
68794 +Print usage information and exit.
68795 +'
68796 +.Sp
68797 +.TP
68798 +.BI \-\-version
68799 +Print the version number and some quickie warranty information and exit.
68800 +'
68801 +.PD
68802 +'
68803 +.SH "SEE ALSO"
68804 +.M click 5 ,
68805 +.M Align n ,
68806 +.M AlignmentInfo n
68807 +'
68808 +.SH AUTHOR
68809 +.na
68810 +Eddie Kohler, kohler@cs.ucla.edu
68811 +.br
68812 +http://www.pdos.lcs.mit.edu/click/
68813 +'
68814 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
68815 --- click-1.6.0/inst/share/man/man1/click-combine.1     1969-12-31 19:00:00.000000000 -0500
68816 +++ click-1.6.0-27/inst/share/man/man1/click-combine.1  2009-02-11 14:08:51.000000000 -0500
68817 @@ -0,0 +1,182 @@
68818 +.\" -*- mode: nroff -*-
68819 +.ds V 1.0.5
68820 +.ds E " \-\- 
68821 +.if t .ds E \(em
68822 +.de Sp
68823 +.if n .sp
68824 +.if t .sp 0.4
68825 +..
68826 +.de Es
68827 +.Sp
68828 +.RS 5
68829 +.nf
68830 +..
68831 +.de Ee
68832 +.fi
68833 +.RE
68834 +.PP
68835 +..
68836 +.de Rs
68837 +.RS
68838 +.Sp
68839 +..
68840 +.de Re
68841 +.Sp
68842 +.RE
68843 +..
68844 +.de M
68845 +.BR "\\$1" "(\\$2)\\$3"
68846 +..
68847 +.de RM
68848 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
68849 +..
68850 +.TH CLICK-COMBINE 1 "27/Apr/2000" "Version \*V"
68851 +.SH NAME
68852 +click-combine \- combines two or more Click configurations into one
68853 +'
68854 +.SH SYNOPSIS
68855 +.B click-combine
68856 +.RI \%[ options ]
68857 +\%\fIname\fR=\fIfile\fR ... \e
68858 +.br
68859 +\%        \fIname1\fR.\fIelement1\fR=\fIname2\fR.\fIelement2\fR ...
68860 +'
68861 +.SH DESCRIPTION
68862 +The
68863 +.B click-combine
68864 +tool combines two or more Click router configurations into a single
68865 +configuration representing the network. For example, say there is a
68866 +point-to-point link from router A's eth0 interface to router B's eth1
68867 +interface. Then in the combined configuration, A's ToDevice(eth0) element
68868 +and B's PollDevice(eth1) element will be replaced with a new RouterLink
68869 +element; packets will flow from A to B via the RouterLink element. You can
68870 +edit the combined configuration with tools, which are effectively able to
68871 +consider the whole network. For example, they can check cross-router
68872 +properties or perform cross-router optimizations. Use the
68873 +.M click-uncombine 1
68874 +tool to extract a component router configuration from the combination.
68875 +.PP
68876 +Component routers are identified by name. This name must be a legal Click
68877 +identifier (see
68878 +.M click 5 )
68879 +that does not contain a slash. To add a router component named
68880 +.I N
68881 +whose configuration is in the file
68882 +.IR f ,
68883 +supply the option
68884 +.RI ` N = f '.
68885 +You will generally supply at least two such options.
68886 +.PP
68887 +A link says that packets leaving one router via one element will arrive at
68888 +another router via another element. The routers are specified by component
68889 +name, and the elements can be specified by element name or by device name.
68890 +To connect the
68891 +.I e1
68892 +element from  router component
68893 +.I A
68894 +to the
68895 +.I e2
68896 +element from router component
68897 +.IR B ,
68898 +supply the option
68899 +.RI ` A . e1 = B . e2 '.
68900 +If
68901 +.I e1
68902 +is a
68903 +.M ToDevice n
68904 +element, then you can use its device name argument instead of its name.
68905 +Similarly, if
68906 +.I e2
68907 +is a
68908 +.M PollDevice n
68909 +or
68910 +.M FromDevice n
68911 +element, you can use its device name argument instead of its name.
68912 +.PP
68913 +Link options are one-way, so if there is a duplex connection, you will need
68914 +to give two arguments: `A.eth0=B.eth1 B.eth1=A.eth0', for example. You can
68915 +also support more than two routers sharing a link; for example,
68916 +`A.eth0=B.eth1 A.eth0=C.eth2'.
68917 +'
68918 +.SH "OPTIONS"
68919 +'
68920 +If any filename argument is a single dash "-",
68921 +.B click-combine
68922 +will use the standard input or output instead, as appropriate.
68923 +'
68924 +.TP 5
68925 +.BR \-o ", " \-\-output " \fIfile"
68926 +.PD 0
68927 +Write the output router configuration to
68928 +.IR file .
68929 +The default is the standard output.
68930 +'
68931 +.Sp
68932 +.TP
68933 +.BR \-n ", " \-\-name " \fIname"
68934 +The next router component will be named
68935 +.IR name .
68936 +This option and the
68937 +.BR \-\-file
68938 +provide an alternative to the
68939 +.IR name = file
68940 +syntax.
68941 +'
68942 +.Sp
68943 +.TP
68944 +.BR \-f ", " \-\-file " \fIfile"
68945 +Read a router configuration from
68946 +.IR file .
68947 +Together with the
68948 +.BR \-\-name
68949 +option, the
68950 +.B \-\-file
68951 +and
68952 +.B \-\-expression
68953 +options provide an alternative to the
68954 +.IR name = file
68955 +syntax.
68956 +'
68957 +.Sp
68958 +.TP
68959 +.BR \-e ", " \-\-expression " \fIexpr"
68960 +Use
68961 +.IR expr ,
68962 +a string in the Click language, as the next router configuration.
68963 +'
68964 +.Sp
68965 +.TP
68966 +.BR \-l ", " \-\-link " \fIcomponent1\fR.\fIelement1\fR=\fIcomponent2\fR.\fIelement2"
68967 +Add a link specification as described above.
68968 +'
68969 +.Sp
68970 +.TP
68971 +.BR \-c ", " \-\-config
68972 +Output new configuration only (not an archive with extra information).
68973 +'
68974 +.Sp
68975 +.TP 5
68976 +.BI \-\-help
68977 +Print usage information and exit.
68978 +'
68979 +.Sp
68980 +.TP
68981 +.BI \-\-version
68982 +Print the version number and some quickie warranty information and exit.
68983 +'
68984 +.PD
68985 +'
68986 +.SH "SEE ALSO"
68987 +.M click-uncombine 1 ,
68988 +.M click-xform 1 ,
68989 +.M click 5 ,
68990 +.M PollDevice n ,
68991 +.M FromDevice n ,
68992 +.M ToDevice n
68993 +'
68994 +.SH AUTHOR
68995 +.na
68996 +Eddie Kohler, kohler@cs.ucla.edu
68997 +.br
68998 +http://www.pdos.lcs.mit.edu/click/
68999 +'
69000 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
69001 --- click-1.6.0/inst/share/man/man1/click-devirtualize.1        1969-12-31 19:00:00.000000000 -0500
69002 +++ click-1.6.0-27/inst/share/man/man1/click-devirtualize.1     2009-02-11 14:08:51.000000000 -0500
69003 @@ -0,0 +1,190 @@
69004 +.\" -*- mode: nroff -*-
69005 +.ds V 1.0.3
69006 +.ds E " \-\- 
69007 +.if t .ds E \(em
69008 +.de Sp
69009 +.if n .sp
69010 +.if t .sp 0.4
69011 +..
69012 +.de Es
69013 +.Sp
69014 +.RS 5
69015 +.nf
69016 +..
69017 +.de Ee
69018 +.fi
69019 +.RE
69020 +.PP
69021 +..
69022 +.de Rs
69023 +.RS
69024 +.Sp
69025 +..
69026 +.de Re
69027 +.Sp
69028 +.RE
69029 +..
69030 +.de M
69031 +.BR "\\$1" "(\\$2)\\$3"
69032 +..
69033 +.de RM
69034 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
69035 +..
69036 +.TH CLICK-DEVIRTUALIZE 1 "31/Mar/2000" "Version \*V"
69037 +.SH NAME
69038 +click-devirtualize \- removes virtual function calls from a Click configuration
69039 +'
69040 +.SH SYNOPSIS
69041 +.B click-devirtualize
69042 +.RI \%[ options ]
69043 +.RI \%[ param = value " ...]"
69044 +.RI \%[ router\-file ]
69045 +'
69046 +.SH DESCRIPTION
69047 +The
69048 +.B click-devirtualize
69049 +tool speeds up a Click configuration by removing virtual function calls
69050 +from its elements. It reads a router configuration file in the
69051 +.M click 5
69052 +language and creates specialized C++ source code for each element. The
69053 +virtual function calls in this specialized C++ code are replaced with
69054 +direct function calls to other elements in the configuration.
69055 +.PP
69056 +After creating the source code,
69057 +.B click-devirtualize
69058 +will optionally compile it into dynamically loadable packages. The elements
69059 +in the input configuration are changed to use new, specially generated
69060 +element classes, and the resulting configuration, plus source code and any
69061 +compiled packages, are combined into an archive and written to the standard
69062 +output. You can install such an archive into the
69063 +.M click.o 8
69064 +Linux kernel module with
69065 +.M click-install 1 :
69066 +.Sp
69067 +.nf
69068 +  % click-devirtualize -k CONFIGURATION | click-install
69069 +.fi
69070 +.Sp
69071 +The
69072 +.M click 1
69073 +user level driver can read the archives directly.
69074 +.PP
69075 +The
69076 +.B click-devirtualize
69077 +transformation can be reversed with the
69078 +.B \-\-reverse
69079 +option.
69080 +'
69081 +.SH "OPTIONS"
69082 +'
69083 +If any filename argument is a single dash "-",
69084 +.B click-devirtualize
69085 +will use the standard input or output instead, as appropriate.
69086 +'
69087 +.TP 5
69088 +.BI \-f " file"
69089 +.PD 0
69090 +.TP
69091 +.BI \-\-file " file"
69092 +Read the router configuration to transform from
69093 +.IR file .
69094 +The default is the standard input.
69095 +'
69096 +.Sp
69097 +.TP 5
69098 +.BI \-e " expr"
69099 +.PD 0
69100 +.TP
69101 +.BI \-\-expr " expr"
69102 +Use
69103 +.IR expr ,
69104 +a string in the Click language, as the router configuration to transform.
69105 +'
69106 +.Sp
69107 +.TP
69108 +.BI \-o " file"
69109 +.TP
69110 +.BI \-\-output " file"
69111 +Write the output router configuration to
69112 +.IR file .
69113 +The default is the standard output.
69114 +'
69115 +.Sp
69116 +.TP
69117 +.BR \-l ", " \-\-linuxmodule
69118 +Generate a dynamically loadable package for the
69119 +.M click.o 8
69120 +Linux kernel module.
69121 +'
69122 +.Sp
69123 +.TP
69124 +.BR \-u ", " \-\-userlevel
69125 +Generate a dynamically loadable package for the
69126 +.M click 1
69127 +user-level driver.
69128 +'
69129 +.Sp
69130 +.TP 5
69131 +.BR \-s ", " \-\-source
69132 +Output only the specialized element class source code.
69133 +'
69134 +.Sp
69135 +.TP 5
69136 +.BR \-c ", " \-\-config
69137 +Output only the new configuration (the one that includes specialized
69138 +elements).
69139 +'
69140 +.Sp
69141 +.TP 5
69142 +.BR \-r ", " \-\-reverse
69143 +Reverse the tranformation. That is, change any existing devirtualized 
69144 +element classes into the equivalent normal elements.
69145 +'
69146 +.Sp
69147 +.TP
69148 +.BI \-n " class"
69149 +.TP
69150 +.BI \-\-no\-devirtualize " class"
69151 +Do not devirtualize elements whose element class is
69152 +.IR class .
69153 +Such elements will continue using normal source code.
69154 +'
69155 +.Sp
69156 +.TP
69157 +.BI \-i " file"
69158 +.TP
69159 +.BI \-\-instructions " file"
69160 +Read devirtualization instructions from
69161 +.IR file .
69162 +This file can contain any number of lines. Comments start with `#';
69163 +non-blank, non-comment lines should have devirtualization directives. There
69164 +is currently one directive: "noclass
69165 +.IR "class1 class2" "..."""
69166 +is equivalent to several `\-\-no\-devirtualize
69167 +.IR class "i'"
69168 +options.
69169 +'
69170 +.Sp
69171 +.TP 5
69172 +.BI \-\-help
69173 +Print usage information and exit.
69174 +'
69175 +.Sp
69176 +.TP
69177 +.BI \-\-version
69178 +Print the version number and some quickie warranty information and exit.
69179 +'
69180 +.PD
69181 +'
69182 +.SH "SEE ALSO"
69183 +.M click 1 ,
69184 +.M click-install 1 ,
69185 +.M click 5 ,
69186 +.M click.o 8
69187 +'
69188 +.SH AUTHOR
69189 +.na
69190 +Eddie Kohler, kohler@cs.ucla.edu
69191 +.br
69192 +http://www.pdos.lcs.mit.edu/click/
69193 +'
69194 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
69195 --- click-1.6.0/inst/share/man/man1/click-fastclassifier.1      1969-12-31 19:00:00.000000000 -0500
69196 +++ click-1.6.0-27/inst/share/man/man1/click-fastclassifier.1   2009-02-11 14:08:51.000000000 -0500
69197 @@ -0,0 +1,194 @@
69198 +.\" -*- mode: nroff -*-
69199 +.ds V 1.0.3
69200 +.ds E " \-\- 
69201 +.if t .ds E \(em
69202 +.de Sp
69203 +.if n .sp
69204 +.if t .sp 0.4
69205 +..
69206 +.de Es
69207 +.Sp
69208 +.RS 5
69209 +.nf
69210 +..
69211 +.de Ee
69212 +.fi
69213 +.RE
69214 +.PP
69215 +..
69216 +.de Rs
69217 +.RS
69218 +.Sp
69219 +..
69220 +.de Re
69221 +.Sp
69222 +.RE
69223 +..
69224 +.de M
69225 +.BR "\\$1" "(\\$2)\\$3"
69226 +..
69227 +.de RM
69228 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
69229 +..
69230 +.TH CLICK-FASTCLASSIFIER 1 "9/Feb/2000" "Version \*V"
69231 +.SH NAME
69232 +click-fastclassifier \- specializes Classifier code in a Click configuration
69233 +'
69234 +.SH SYNOPSIS
69235 +.B click-fastclassifier
69236 +.RI \%[ options ]
69237 +.RI \%[ param = value " ...]"
69238 +.RI \%[ router\-file ]
69239 +'
69240 +.SH DESCRIPTION
69241 +The
69242 +.B click-fastclassifier
69243 +tool speeds up a Click configuration by creating fast versions of all its
69244 +.M Classifier n ,
69245 +.M IPClassifier n ,
69246 +and
69247 +.M IPFilter n
69248 +elements. It reads a router configuration file in the
69249 +.M click 5
69250 +language and creates specialized C++ source code for each Classifier-like
69251 +element. A Classifier is expanded into a series of if statements; for
69252 +example, the expansion of `Classifier(0/80, -)' contains something like
69253 +this function:
69254 +.PP
69255 +.nf
69256 +inline void
69257 +FastClassifier_a_ac::length_unchecked_push(Packet *p)
69258 +{
69259 +  const unsigned *data = (const unsigned *)(p->data() - 0);
69260 + step_0:
69261 +  if ((data[0] & 255U) == 128U) {
69262 +    output(0).push(p);
69263 +    return;
69264 +  }
69265 +  output(1).push(p);
69266 +  return;
69267 +}
69268 +.fi
69269 +.PP
69270 +After creating the source code,
69271 +.B click-fastclassifier
69272 +will optionally compile it into dynamically loadable packages. The
69273 +Classifier elements in the input configuration are changed to use new
69274 +FastClassifier elements, and the resulting configuration, plus source code
69275 +and any compiled packages, are combined into an archive and written to the
69276 +standard output. You can install such an archive into the
69277 +.M click.o 8
69278 +Linux kernel module with
69279 +.M click-install 1 :
69280 +.Sp
69281 +.nf
69282 +  % click-fastclassifier -k CONFIGURATION | click-install
69283 +.fi
69284 +.Sp
69285 +The
69286 +.M click 1
69287 +user level driver can read the archives directly.
69288 +.PP
69289 +The
69290 +.B click-fastclassifier
69291 +transformation can be reversed with the
69292 +.B \-\-reverse
69293 +option.
69294 +'
69295 +.SH "OPTIONS"
69296 +'
69297 +If any filename argument is a single dash "-",
69298 +.B click-fastclassifier
69299 +will use the standard input or output instead, as appropriate.
69300 +'
69301 +.TP 5
69302 +.BI \-f " file"
69303 +.PD 0
69304 +.TP
69305 +.BI \-\-file " file"
69306 +Read the router configuration to transform from
69307 +.IR file .
69308 +The default is the standard input.
69309 +'
69310 +.Sp
69311 +.TP 5
69312 +.BI \-e " expr"
69313 +.PD 0
69314 +.TP
69315 +.BI \-\-expression " expr"
69316 +Use
69317 +.IR expr ,
69318 +a string in the Click language, as the router configuration to transform.
69319 +'
69320 +.Sp
69321 +.TP
69322 +.BI \-o " file"
69323 +.TP
69324 +.BI \-\-output " file"
69325 +Write the output router configuration to
69326 +.IR file .
69327 +The default is the standard output.
69328 +'
69329 +.Sp
69330 +.TP
69331 +.BR \-k ", " \-\-kernel
69332 +Generate a dynamically loadable package for the
69333 +.M click.o 8
69334 +Linux kernel module.
69335 +'
69336 +.Sp
69337 +.TP
69338 +.BR \-u ", " \-\-user
69339 +Generate a dynamically loadable package for the
69340 +.M click 1
69341 +user-level driver.
69342 +'
69343 +.Sp
69344 +.TP 5
69345 +.BR \-s ", " \-\-source
69346 +Output only the source code for the FastClassifier elements.
69347 +'
69348 +.Sp
69349 +.TP 5
69350 +.BR \-c ", " \-\-config
69351 +Output only the new configuration (the one that includes FastClassifiers).
69352 +'
69353 +.Sp
69354 +.TP 5
69355 +.BR \-r ", " \-\-reverse
69356 +Reverse the tranformation. That is, remove any existing FastClassifier
69357 +elements and replace them with equivalent Classifiers.
69358 +'
69359 +.Sp
69360 +.TP 5
69361 +.BR \-q ", " \-\-quiet
69362 +Compile code quietly (without echoing commands or top-level warnings).
69363 +'
69364 +.Sp
69365 +.TP 5
69366 +.BI \-\-help
69367 +Print usage information and exit.
69368 +'
69369 +.Sp
69370 +.TP
69371 +.BI \-\-version
69372 +Print the version number and some quickie warranty information and exit.
69373 +'
69374 +.PD
69375 +'
69376 +.SH "SEE ALSO"
69377 +.M click 1 ,
69378 +.M click-devirtualize 1 ,
69379 +.M click-install 1 ,
69380 +.M click 5 ,
69381 +.M click.o 8 ,
69382 +.M Classifier n ,
69383 +.M IPClassifier n ,
69384 +.M IPFilter n
69385 +'
69386 +.SH AUTHOR
69387 +.na
69388 +Eddie Kohler, kohler@cs.ucla.edu
69389 +.br
69390 +http://www.pdos.lcs.mit.edu/click/
69391 +'
69392 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
69393 --- click-1.6.0/inst/share/man/man1/click-flatten.1     1969-12-31 19:00:00.000000000 -0500
69394 +++ click-1.6.0-27/inst/share/man/man1/click-flatten.1  2009-02-11 14:08:51.000000000 -0500
69395 @@ -0,0 +1,133 @@
69396 +.\" -*- mode: nroff -*-
69397 +.ds V 1.5.0
69398 +.ds E " \-\- 
69399 +.if t .ds E \(em
69400 +.de Sp
69401 +.if n .sp
69402 +.if t .sp 0.4
69403 +..
69404 +.de Es
69405 +.Sp
69406 +.RS 5
69407 +.nf
69408 +..
69409 +.de Ee
69410 +.fi
69411 +.RE
69412 +.PP
69413 +..
69414 +.de Rs
69415 +.RS
69416 +.Sp
69417 +..
69418 +.de Re
69419 +.Sp
69420 +.RE
69421 +..
69422 +.de M
69423 +.BR "\\$1" "(\\$2)\\$3"
69424 +..
69425 +.de RM
69426 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
69427 +..
69428 +.TH CLICK-FLATTEN 1 "21/May/2001" "Version \*V"
69429 +.SH NAME
69430 +click-flatten \- removes compound elements from a Click configuration
69431 +'
69432 +.SH SYNOPSIS
69433 +.B click-flatten
69434 +.RI \%[ options ]
69435 +.RI \%[ param = value " ...]"
69436 +.RI \%[ router\-file ]
69437 +'
69438 +.SH DESCRIPTION
69439 +The
69440 +.B click-flatten
69441 +tool flattens a Click router configuration, compiling all its compound
69442 +elements away, and writes the resulting configuration to the standard
69443 +output. It can also output information about the file.
69444 +'
69445 +.SH "OPTIONS"
69446 +'
69447 +If any filename argument is a single dash "-",
69448 +.B click-flatten
69449 +will use the standard input or output instead, as appropriate.
69450 +'
69451 +.TP 5
69452 +.BR \-c ", " \-\-classes
69453 +.PD 0
69454 +Output an alphabetical list of the element classes used by the flattened
69455 +router file, one per line, instead of the usual configuration.
69456 +'
69457 +.Sp
69458 +.TP 5
69459 +.BR \-n ", " \-\-elements
69460 +Output an alphabetical list of the element names in the flattened router
69461 +file, one per line, instead of the usual configuration.
69462 +'
69463 +.Sp
69464 +.TP 5
69465 +.BR \-d ", " \-\-declaration
69466 +Output the element declarations in the flattened router file, one per line,
69467 +instead of the usual configuration.
69468 +'
69469 +.Sp
69470 +.TP 5
69471 +.BR \-f ", " \-\-file " \fIfile"
69472 +Read the router configuration to flatten from
69473 +.IR file .
69474 +The default is the standard input.
69475 +'
69476 +.Sp
69477 +.TP 5
69478 +.BR \-e ", " \-\-expression " \fIexpr"
69479 +Use
69480 +.IR expr ,
69481 +a string in the Click language, as the router configuration to flatten.
69482 +'
69483 +.Sp
69484 +.TP
69485 +.BR \-\-config
69486 +Output flattened configuration only -- if the input was an archive, ignore
69487 +other archive elements.
69488 +'
69489 +.Sp
69490 +.TP
69491 +.BR \-\-expand\-vars
69492 +Expand global variables.  By default,
69493 +.B click-flatten
69494 +does not expand global variables into configuration strings, allowing later
69495 +operations, such as
69496 +.BR click-install ,
69497 +to override their values.
69498 +'
69499 +.Sp
69500 +.TP
69501 +.BR \-o ", " \-\-output " \fIfile"
69502 +Write the flattened router configuration to
69503 +.IR file .
69504 +The default is the standard output.
69505 +'
69506 +.Sp
69507 +.TP 5
69508 +.BI \-\-help
69509 +Print usage information and exit.
69510 +'
69511 +.Sp
69512 +.TP
69513 +.BI \-\-version
69514 +Print the version number and some quickie warranty information and exit.
69515 +'
69516 +.PD
69517 +'
69518 +.SH "SEE ALSO"
69519 +.M click 5 ,
69520 +.M click-check 1 ,
69521 +.M click-xform 1
69522 +'
69523 +.SH AUTHOR
69524 +.na
69525 +Eddie Kohler, kohler@cs.ucla.edu
69526 +.br
69527 +http://www.pdos.lcs.mit.edu/click/
69528 +'
69529 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
69530 --- click-1.6.0/inst/share/man/man1/click-install.1     1969-12-31 19:00:00.000000000 -0500
69531 +++ click-1.6.0-27/inst/share/man/man1/click-install.1  2009-02-11 14:08:51.000000000 -0500
69532 @@ -0,0 +1,237 @@
69533 +.\" -*- mode: nroff -*-
69534 +.ds V 1.2
69535 +.ds D 27/Apr/2000
69536 +.ds E " \-\- 
69537 +.if t .ds E \(em
69538 +.de Sp
69539 +.if n .sp
69540 +.if t .sp 0.4
69541 +..
69542 +.de Es
69543 +.Sp
69544 +.RS 5
69545 +.nf
69546 +..
69547 +.de Ee
69548 +.fi
69549 +.RE
69550 +.PP
69551 +..
69552 +.de Rs
69553 +.RS
69554 +.Sp
69555 +..
69556 +.de Re
69557 +.Sp
69558 +.RE
69559 +..
69560 +.de M
69561 +.BR "\\$1" "(\\$2)\\$3"
69562 +..
69563 +.de RM
69564 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
69565 +..
69566 +.TH CLICK-INSTALL 1 "\*D" "Version \*V"
69567 +.SH NAME
69568 +click-install \- installs a Click configuration into the kernel module driver
69569 +'
69570 +.SH SYNOPSIS
69571 +.B click-install
69572 +.RI \%[ options ]
69573 +.RI \%[ param = value " ...]"
69574 +.RI \%[ router\-file ]
69575 +'
69576 +.SH DESCRIPTION
69577 +.B Click-install
69578 +is a convenience program that installs a Click router configuration
69579 +into the current Linux kernel. It reads a router configuration file in the
69580 +.M click 5
69581 +language, installs the
69582 +.M click.o 8
69583 +kernel module if necessary, compiles and/or installs any dynamically
69584 +loadable packages required by the router configuration, installs the router
69585 +configuration itself by writing it to /click/config, and uninstalls
69586 +any unused packages. It reports any errors to standard error, including
69587 +errors reported by the Click module, and returns a zero (true) exit status
69588 +if and only if the configuration was successfully installed.
69589 +'
69590 +.SH "OPTIONS"
69591 +'
69592 +Arguments such as "NAME=value" set configuration parameters, overriding any
69593 +existing settings. Thus, "echo \%'Message($MSG)' | \fBclick\-install\fR
69594 +MSG=Hi" will cause the kernel module to print "Hi".
69595 +.PP
69596 +If any filename argument is a single dash "-",
69597 +.B click-install
69598 +will use the standard input or output instead, as appropriate.
69599 +'
69600 +.TP 5
69601 +.BI \-f " file"
69602 +.PD 0
69603 +.TP
69604 +.BI \-\-file " file"
69605 +Read the router configuration to transform from
69606 +.IR file .
69607 +The default is the standard input.
69608 +'
69609 +.Sp
69610 +.TP
69611 +.BI \-e " expr"
69612 +.TP
69613 +.BI \-\-expression " expr"
69614 +Use
69615 +.IR expr ,
69616 +a string in the Click language, as the router configuration.
69617 +'
69618 +.Sp
69619 +.TP 5
69620 +.BR \-h ", " \-\-hotswap
69621 +Hot-swap install the new configuration. If you supply this option, the new
69622 +configuration will only be installed if it initializes correctly. If it
69623 +fails, the old configuration will continue to route packets without
69624 +interruption. Furthermore, state from the old configuration\*Esuch as
69625 +packets contained in
69626 +.M Queue n
69627 +elements\*Ewill be swapped into the new configuration under certain
69628 +conditions. See under
69629 +.B /click/hotconfig
69630 +in
69631 +.M click.o 8
69632 +for details.
69633 +'
69634 +.Sp
69635 +.TP 5
69636 +.BR \-u ", " \-\-uninstall
69637 +Uninstall and reinstall the Click kernel module.
69638 +.B \-\-hotswap
69639 +and
69640 +.B \-\-uninstall
69641 +are mutually exclusive.
69642 +'
69643 +.Sp
69644 +.TP 5
69645 +.BR \-t ", " "\-\-threads=\fIN\fP"
69646 +The Click kernel module will run
69647 +.I N
69648 +threads per router. Click must have been build with
69649 +\f(CW\-\-enable\-multithread\fR. This option only matters when
69650 +.B click-install
69651 +installs a Click kernel module. The thread count on an installed kernel
69652 +module cannot be changed. (The
69653 +.B \-\-uninstall
69654 +option is useful here.)
69655 +'
69656 +.Sp
69657 +.TP 5
69658 +.BR \-n ", " "\-\-priority=\fIN\fP"
69659 +Set the Click kernel thread's priority to
69660 +.IR N .
69661 +Lower numbers have higher priority. A typical range for priority values is
69662 +-20 (highest) to +19 (lowest). If you do not give a
69663 +.B \-\-priority
69664 +option, then the current priority is left unchanged.
69665 +'
69666 +.Sp
69667 +.TP 5
69668 +.BR \-G ", " "\-\-greedy"
69669 +The Click kernel module will claim an entire CPU, not allowing any other
69670 +process to run.  This option only matters when
69671 +.B click-install
69672 +installs a Click kernel module; the greediness of an installed kernel
69673 +module cannot be changed.  (The
69674 +.B \-\-uninstall
69675 +option is useful here.)
69676 +'
69677 +.Sp
69678 +.TP 5
69679 +.BR \-p ", " "\-\-private"
69680 +Make the /click directory hierarchy readable only by the owning user, which
69681 +is usually root. Generally, files under /click are writable only by the
69682 +owner, but readable by everyone. Works only when simultaneously loading a
69683 +Click kernel module; see
69684 +.BR \-\-uninstall .
69685 +'
69686 +.Sp
69687 +.TP 5
69688 +.BR \-U ", " "\-\-user=\fIUSER\fR[:\fIGROUP\fR]"
69689 +Set the user ID and group ID of the /click directory hierarchy to
69690 +.I USER
69691 +and group
69692 +.IR GROUP .
69693 +By default
69694 +.IR USER " and " GROUP
69695 +are both root. Works only when simultaneously loading a
69696 +Click kernel module; see
69697 +.BR \-\-uninstall .
69698 +'
69699 +.Sp
69700 +.TP 5
69701 +.BR \-\-\cpu =\fIN
69702 +Sets the Click thread to preferentially run on CPU
69703 +.IR N .
69704 +If Click is running
69705 +.I K
69706 +threads, they are run preferentially on CPUs
69707 +.I N
69708 +up to, but not including,
69709 +.I N
69710 ++
69711 +.IR K .
69712 +Thread affinities are ignored if they refer to unavailable CPUs. Works
69713 +only when simultaneously loading a Click kernel module; see
69714 +.BR \-\-uninstall .
69715 +'
69716 +.Sp
69717 +.TP 5
69718 +.BR \-m ", " \-\-map
69719 +(Linux 2.4 only) If a Click kernel module is installed, write its load map
69720 +to standard output. This can make it easier to debug kernel panics.
69721 +'
69722 +.Sp
69723 +.TP 5
69724 +.BR \-V ", " \-\-verbose
69725 +Print information about each step in the install process, including the
69726 +filenames of any installed modules.
69727 +'
69728 +.Sp
69729 +.TP 5
69730 +.BI \-\-help
69731 +Print usage information and exit.
69732 +'
69733 +.Sp
69734 +.TP
69735 +.BI \-\-version
69736 +Print the version number and some quickie warranty information and exit.
69737 +'
69738 +.PD
69739 +'
69740 +.SH "EXIT STATUS"
69741 +.B Click-install
69742 +exits with one of the following return values:
69743 +.TP 5
69744 +.B 0
69745 +The configuration was successfully installed.
69746 +.TP
69747 +.B 1
69748 +Some error prevented
69749 +.B click-install
69750 +from attempting to install the configuration. For example, perhaps the
69751 +configuration could not be parsed, or the kernel module could not be
69752 +loaded.
69753 +.TP
69754 +.B 2
69755 +The configuration was installed, but the kernel module reports that it
69756 +could not be initialized.
69757 +.PD
69758 +'
69759 +.SH "SEE ALSO"
69760 +.M click-uninstall 1 ,
69761 +.M click 5 ,
69762 +.M click.o 8
69763 +'
69764 +.SH AUTHOR
69765 +.na
69766 +Eddie Kohler, kohler@cs.ucla.edu
69767 +.br
69768 +http://www.pdos.lcs.mit.edu/click/
69769 +'
69770 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
69771 --- click-1.6.0/inst/share/man/man1/click-mkmindriver.1 1969-12-31 19:00:00.000000000 -0500
69772 +++ click-1.6.0-27/inst/share/man/man1/click-mkmindriver.1      2009-02-11 14:08:51.000000000 -0500
69773 @@ -0,0 +1,196 @@
69774 +.\" -*- mode: nroff -*-
69775 +.ds V 1.2.0
69776 +.ds E " \-\- 
69777 +.if t .ds E \(em
69778 +.de Sp
69779 +.if n .sp
69780 +.if t .sp 0.4
69781 +..
69782 +.de Es
69783 +.Sp
69784 +.RS 5
69785 +.nf
69786 +..
69787 +.de Ee
69788 +.fi
69789 +.RE
69790 +.PP
69791 +..
69792 +.de Rs
69793 +.RS
69794 +.Sp
69795 +..
69796 +.de Re
69797 +.Sp
69798 +.RE
69799 +..
69800 +.de M
69801 +.BR "\\$1" "(\\$2)\\$3"
69802 +..
69803 +.de RM
69804 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
69805 +..
69806 +.TH CLICK-MKMINDRIVER 1 "28/Apr/2001" "Version \*V"
69807 +.SH NAME
69808 +click-mkmindriver \- generates a build environment for a minimal Click driver
69809 +'
69810 +.SH SYNOPSIS
69811 +.B click-mkmindriver
69812 +.RI "-p " packagename
69813 +.RI \%[ options "] \e"
69814 +.RI \%[ param = value " ...]"
69815 +.br
69816 +.RI "\%        [" router\-files... ]
69817 +'
69818 +.SH DESCRIPTION
69819 +The
69820 +.B click-mkmindriver
69821 +tool generates a build environment for a minimal Click driver\*Ethat is, a
69822 +driver containing only the elements necessary to run the configurations in
69823 +the
69824 +.IR router\-files .
69825 +You must supply a name for the driver,
69826 +.IR packagename .
69827 +Running
69828 +.RI "`make MINDRIVER=" packagename "'"
69829 +will create either a user-level driver named
69830 +.RI "`" packagename "click',"
69831 +or a Linux kernel module named
69832 +.RI "`" packagename "click.o'."
69833 +Run
69834 +.B click-mkmindriver
69835 +from the respective Click build directory, or supply a relevant
69836 +.B \-\-directory
69837 +option.
69838 +.PP
69839 +Sometimes one element depends weakly on another, especially for parsing.
69840 +For instance, the
69841 +.M IPEncap n
69842 +element can take advantage of protocol names supplied by the
69843 +.M IPNameInfo n
69844 +class; if IPNameInfo is not available, IPEncap will still work, it just
69845 +won't be able to parse protocol names.
69846 +.B Click-mkmindriver
69847 +does not include weakly dependent elements automatically, so you must
69848 +supply them explicitly with
69849 +.B \-E
69850 +options if you want them.  Common examples include IPNameInfo and
69851 +IPFieldInfo.  If a configuration fails to parse, try including these
69852 +elements.
69853 +'
69854 +.SH "OPTIONS"
69855 +'
69856 +If any filename argument is a single dash "-",
69857 +.B click-mkmindriver
69858 +will use the standard input or output instead, as appropriate.
69859 +'
69860 +.TP 5
69861 +.BI \-p " packagename"
69862 +.PD 0
69863 +.TP
69864 +.BI \-\-package " packagename"
69865 +Specifies the package name.
69866 +'
69867 +.Sp
69868 +.TP
69869 +.BI \-f " file"
69870 +.TP
69871 +.BI \-\-file " file"
69872 +Read a router configuration from
69873 +.IR file .
69874 +'
69875 +.Sp
69876 +.TP
69877 +.BI \-e " expr"
69878 +.TP
69879 +.BI \-\-expression " expr"
69880 +Use
69881 +.IR expr ,
69882 +a string in the Click language, as a router configuration.
69883 +'
69884 +.Sp
69885 +.TP
69886 +.BR \-a ", " \-\-all
69887 +Include every primitive element class, even those in compound elements that
69888 +are not themselves used, in the following router configurations. This is
69889 +useful to add support for
69890 +.M click-xform 1 ,
69891 +for example.
69892 +'
69893 +.Sp
69894 +.TP
69895 +.BR \-l ", " \-\-linuxmodule
69896 +Output a build environment for a Linux kernel module driver.
69897 +'
69898 +.Sp
69899 +.TP
69900 +.BR \-u ", " \-\-userlevel
69901 +Output a build environment for a user-level driver. This is the default.
69902 +'
69903 +.Sp
69904 +.TP
69905 +.BI \-d " dir"
69906 +.TP
69907 +.BI \-\-directory " dir"
69908 +Write output file `elements_\fIpackagename\fR.conf' to the directory
69909 +.IR dir .
69910 +This directory must already contain a normal build environment for the
69911 +Click Linux module or user-level driver. (The driver required depends on
69912 +the 
69913 +.B \-k
69914 +and
69915 +.B \-u
69916 +options.) The default directory is `.'.
69917 +'
69918 +'
69919 +.Sp
69920 +.TP
69921 +.BI \-E " elts"
69922 +.TP
69923 +.BI \-\-elements " elts"
69924 +Include the element classes
69925 +.IR elts ,
69926 +a space-separated list of element class names.
69927 +.B Click-mkmindriver
69928 +will also read a router configuration, but see
69929 +.B \-\-no\-file
69930 +below.
69931 +'
69932 +.Sp
69933 +.TP
69934 +.BR \-\-no\-extras
69935 +Do not add optional, but useful, element classes by default.  Currently,
69936 +these classes are
69937 +.M Align n
69938 +and
69939 +.M IPNameInfo n ". "
69940 +If a configuration or option explicitly requires one of these classes, it
69941 +will of course be included.
69942 +'
69943 +.Sp
69944 +.TP
69945 +.BR \-V ", " \-\-verbose
69946 +Print verbose progress information to standard error.
69947 +'
69948 +.Sp
69949 +.TP 5
69950 +.BI \-\-help
69951 +Print usage information and exit.
69952 +'
69953 +.Sp
69954 +.TP
69955 +.BI \-\-version
69956 +Print the version number and some quickie warranty information and exit.
69957 +'
69958 +.PD
69959 +'
69960 +.SH "SEE ALSO"
69961 +.M click 1 ,
69962 +.M click.o 8
69963 +'
69964 +.SH AUTHOR
69965 +.na
69966 +Eddie Kohler, kohler@cs.ucla.edu
69967 +.br
69968 +http://www.read.cs.ucla.edu/click/
69969 +'
69970 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
69971 --- click-1.6.0/inst/share/man/man1/click-pretty.1      1969-12-31 19:00:00.000000000 -0500
69972 +++ click-1.6.0-27/inst/share/man/man1/click-pretty.1   2009-02-11 14:08:51.000000000 -0500
69973 @@ -0,0 +1,591 @@
69974 +.\" -*- mode: nroff -*-
69975 +.ds V 1.5.0
69976 +.ds E " \-\- 
69977 +.if t .ds E \(em
69978 +.de Sp
69979 +.if n .sp
69980 +.if t .sp 0.4
69981 +..
69982 +.de Es
69983 +.Sp
69984 +.RS 5
69985 +.nf
69986 +..
69987 +.de Ee
69988 +.fi
69989 +.RE
69990 +.PP
69991 +..
69992 +.de Rs
69993 +.RS
69994 +.Sp
69995 +..
69996 +.de Re
69997 +.Sp
69998 +.RE
69999 +..
70000 +.de M
70001 +.BR "\\$1" "(\\$2)\\$3"
70002 +..
70003 +.de RM
70004 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
70005 +..
70006 +.TH CLICK-PRETTY 1 "4/Jan/2002" "Version \*V"
70007 +.SH NAME
70008 +click-pretty \- pretty-prints a Click configuration in HTML
70009 +'
70010 +.SH SYNOPSIS
70011 +.B click-pretty
70012 +.RI \%[ options ", " param = value " ...]"
70013 +.RI \%[ routerfile ]
70014 +.RI "> " output\fR.html
70015 +.br
70016 +.B click-pretty
70017 +.B \-\-dot
70018 +.RI \%[...]
70019 +.RI \%[ routerfile \]
70020 +.RB "| " "dot \fR\-Tpng"
70021 +.RI "> " output\fR.png
70022 +'
70023 +.SH DESCRIPTION
70024 +The
70025 +.B click-pretty
70026 +tool pretty-prints Click configurations into HTML files, including syntax
70027 +highlighting and optional indexes; or, optionally, it can output a graph
70028 +definition suitable for passing to
70029 +.M dot 1 .
70030 +.B Click-pretty
70031 +reads a router configuration and, optionally, an HTML-like template file,
70032 +replaces special tags in the template with HTML code derived from the
70033 +configuration, and writes the result to the standard output.
70034 +'
70035 +.SH "HTML TEMPLATES"
70036 +.BR Click-pretty 's
70037 +HTML output is based on a template file that contains special HTML-like
70038 +tags.  These tags, which start with a tilde "~", control
70039 +.BR click-pretty 's
70040 +operation.
70041 +'
70042 +.SS "The config Tag"
70043 +'
70044 +.PP
70045 +The
70046 +.B <~config>
70047 +tag expands to a pretty-printed version of the router configuration.
70048 +Various features in the configuration are highlighted with HTML
70049 +.B <span class=xxx>
70050 +tags; the class differs from feature to feature, so you can affect the
70051 +output with CSS. The classes are:
70052 +.PP
70053 +.TP 10
70054 +.B c-cmt
70055 +.PD 0
70056 +Comments.
70057 +.TP
70058 +.B c-kw
70059 +Keywords.
70060 +.TP
70061 +.B c-cfg
70062 +Configuration strings.
70063 +.TP
70064 +.B c-cd
70065 +Element class declarations.
70066 +.TP
70067 +.B c-ed
70068 +Element declarations.
70069 +.TP
70070 +.B c-err
70071 +Configuration errors.
70072 +.PD
70073 +.PP
70074 +Other features of the output include:
70075 +.TP 3
70076 +\(bu
70077 +'
70078 +Anchors marking element declarations and element class declarations. For
70079 +example, the tag
70080 +.BR "<a name='e-X'>"
70081 +encloses the declaration of an element named
70082 +.BR X .
70083 +'
70084 +.TP
70085 +\(bu
70086 +'
70087 +A
70088 +.B span title
70089 +attribute encloses every element reference, giving that element's
70090 +declaration. Thus, a user can find out what class an element has by
70091 +hovering their mouse over a reference to it.
70092 +'
70093 +.TP
70094 +\(bu
70095 +'
70096 +Similarly,
70097 +.BR "span title" s
70098 +explain configuration errors in more detail.
70099 +'
70100 +.TP
70101 +\(bu
70102 +'
70103 +Element class names are linked to element class declarations, for compound
70104 +elements, or, optionally, to Web documentation, for primitive element
70105 +classes. See the
70106 +.B \-u
70107 +option, below.
70108 +'
70109 +.SS "The elements Tag"
70110 +'
70111 +.PP
70112 +The
70113 +.B "<~elements>"
70114 +tag expands to an alphabetical list of the elements and/or element classes
70115 +used in the router configuration. The
70116 +.B entry
70117 +attribute determines how elements are rendered;
70118 +.B typeentry
70119 +does the same for classes. Inside these attributes, subtags like
70120 +.BR <~name> ,
70121 +.BR <~type> ,
70122 +and
70123 +.BR <~inputs>
70124 +expand to information about the relevant element or type. For example, this
70125 +.B <~elements>
70126 +tag expands to a comma-separated list of the configuration's elements:
70127 +.Es
70128 +<~elements entry="<~name>" sep=", ">
70129 +.Ee
70130 +This one expands to an unordered list of declarations, with element names
70131 +and type names linked to relevant declarations in the configuration:
70132 +.Es
70133 +<ul>
70134 +<~elements entry="<li><~name link> :: <~type link></li>">
70135 +</ul>
70136 +.Ee
70137 +'
70138 +.SS "elements Tag Attributes"
70139 +.TP 5
70140 +.BR entry =\fItext
70141 +Sets the text used for each element in the configuration. If this attribute
70142 +is absent, the
70143 +.B <~element>
70144 +tag's expansion will not mention elements.
70145 +'
70146 +.TP 5
70147 +.BR typeentry =\fItext
70148 +Sets the text used for each element type used by the configuration. If this
70149 +attribute is absent, the
70150 +.B <~element>
70151 +tag's expansion will not mention element types.
70152 +'
70153 +.TP 5
70154 +.BR sep =\fItext
70155 +Sets the text used to separate entries in the expansion.
70156 +'
70157 +.TP 5
70158 +.BR column =\fIwhich\fR/\fIcount
70159 +If present,
70160 +.I count
70161 +should be a number greater than 1, and
70162 +.I which
70163 +should be between 1 and
70164 +.IR count .
70165 +The
70166 +.B <~element>
70167 +tag is expanded, then broken into
70168 +.I count
70169 +columns at entry boundaries. Only the
70170 +.IR which th
70171 +column is printed.
70172 +'
70173 +.TP 5
70174 +.BR configlink =\fItext
70175 +See the
70176 +.B <~configlink>
70177 +subtag below.
70178 +'
70179 +.TP 5
70180 +.BR typeref =\fItext
70181 +See the
70182 +.B <~typerefs>
70183 +subtag below.
70184 +'
70185 +.TP 5
70186 +.BR inputentry "=\fItext\fR, " noinputentry "=\fItext\fR"
70187 +See the
70188 +.B <~inputs>
70189 +subtag below.
70190 +'
70191 +.TP 5
70192 +.BR outputentry "=\fItext\fR, " nooutputentry "=\fItext\fR"
70193 +See the
70194 +.B <~outputs>
70195 +subtag below.
70196 +'
70197 +.TP 5
70198 +.BR inputconnection "=\fItext\fR, " noinputconnection "=\fItext\fR"
70199 +See the
70200 +.B <~inputconnections>
70201 +subtag below.
70202 +'
70203 +.TP 5
70204 +.BR outputconnection "=\fItext\fR, " nooutputconnection "=\fItext\fR"
70205 +See the
70206 +.B <~outputconnections>
70207 +subtag below.
70208 +'
70209 +.PD
70210 +'
70211 +.SS "Subtags"
70212 +.PP
70213 +These subtags apply only within
70214 +.B <~elements>
70215 +entries and type entries.
70216 +'
70217 +.TP 5
70218 +.BR "<~name [link" "=\fIlink\fR" "]>"
70219 +Expands to the current element's name. When the
70220 +.B link
70221 +attribute is present, the name is contained in a link pointing at the
70222 +declaration site within the router configuration or, when
70223 +.I link
70224 +equals "type", the element class's Web documentation.
70225 +'
70226 +.TP 5
70227 +.BR "<~type [link]>"
70228 +Expands to the current element type's name, or the current element's
70229 +type-name. When the
70230 +.B link
70231 +attribute is present, the name is contained in a link pointing at the
70232 +the element class's Web documentation.
70233 +'
70234 +.TP 5
70235 +.BR "<~config [limit" "=\fIlimit" "] [parens]>"
70236 +Elements only. Expands to the current element's configuration string. The
70237 +result contains at most \fIlimit\fR characters; if the configuration string
70238 +was longer,
70239 +.B click-pretty
70240 +prints its first \fIlimit\fR characters, followed by an ellipsis. If
70241 +.B parens
70242 +was supplied, non-empty configuration strings are enclosed in parentheses.
70243 +'
70244 +.TP 5
70245 +.BR "<~configlink [text" "=\fItext" "]>"
70246 +Elements only. Expands to a link to the element's declaration in the router
70247 +configuration. The
70248 +.B text
70249 +attribute gives the link text; it defaults to the
70250 +.B <~elements>
70251 +tag's
70252 +.B configlink
70253 +attribute.
70254 +'
70255 +.TP 5
70256 +.BR "<~typerefs [entry" "=\fItext" "] [sep" "=\fIsep" "]>"
70257 +Expands to an alphabetical list of elements in the configuration that have
70258 +the current element type, separated by \fIsep\fR. The
70259 +.B entry
70260 +attribute specifies how to render each element; it defaults to the
70261 +.B <~elements>
70262 +tag's
70263 +.B typeref
70264 +attribute.
70265 +'
70266 +.TP 5
70267 +.BR "<~ninputs [english]>"
70268 +Elements only. Expands to the current element's number of input ports. If
70269 +.B english
70270 +was supplied, either "input" or "inputs" follows the number.
70271 +'
70272 +.TP 5
70273 +.BR "<~outputs [english]>"
70274 +Elements only. Expands to the current element's number of output ports. If
70275 +.B english
70276 +was supplied, either "input" or "inputs" follows the number.
70277 +'
70278 +.TP 5
70279 +.BR "<~inputs [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep" "]>"
70280 +Elements only. Expands to a list of the element's input ports. The
70281 +.B entry
70282 +attribute specifies how to render each port; it defaults to the
70283 +.B <~elements>
70284 +tag's
70285 +.B inputentry
70286 +attribute. If the element has no input ports, the
70287 +.B noentry
70288 +attribute is used instead, which defaults to the
70289 +.B <~elements>
70290 +tag's
70291 +.B noinputentry
70292 +attribute.
70293 +'
70294 +.TP 5
70295 +.BR "<~outputs [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep" "]>"
70296 +Elements only. Expands to a list of the element's output ports. The
70297 +.B entry
70298 +attribute specifies how to render each port; it defaults to the
70299 +.B <~elements>
70300 +tag's
70301 +.B outputentry
70302 +attribute. If the element has no output ports, the
70303 +.B noentry
70304 +attribute is used instead, which defaults to the
70305 +.B <~elements>
70306 +tag's
70307 +.B nooutputentry
70308 +attribute.
70309 +.PD
70310 +'
70311 +.TP 5
70312 +.BR "<~if test" "=\fItext" " [then" "=\fItext" "] [else" "=\fItext" "] [eq" "=\fItext" "]"
70313 +.PD 0
70314 +.TP
70315 +.BR "     [ne" "=\fItext" "] [gt" "=\fItext" "] [lt" "=\fItext" "] [ge" "=\fItext" "] [le" "=\fItext" "]>"
70316 +.PD
70317 +Silently expands the
70318 +.B test
70319 +attribute, then makes a comparison. If that comparison is true, expands the
70320 +.B then
70321 +attribute; otherwise, expands the
70322 +.B else
70323 +attribute. The comparison depends on which of the other attributes is
70324 +present. When
70325 +.B eq
70326 +is supplied, the comparison is true if
70327 +.BR test 's
70328 +expansion equals
70329 +.BR eq 's
70330 +expansion.
70331 +.B ne
70332 +checks for inequality.
70333 +The
70334 +.BR gt ,
70335 +.BR lt ,
70336 +.BR ge ,
70337 +and
70338 +.BR le
70339 +attributes compare strings (or integers) in alphabetical (or numeric)
70340 +sorting order. A
70341 +.B gt
70342 +comparison is true when
70343 +.BR test 's
70344 +expansion is greater than
70345 +.BR gt 's
70346 +expansion; similarly,
70347 +.B lt
70348 +checks for less than,
70349 +.B ge
70350 +for greater-than-or-equal-to, and
70351 +.B le
70352 +for less-than-or-equal-to. If none of these attributes are present, the
70353 +test is true if
70354 +.B test
70355 +expands to a nonempty string.
70356 +'
70357 +.SS "Port-Specific Subtags"
70358 +These subtags apply only within
70359 +.B <~inputs>
70360 +and
70361 +.B <~outputs>
70362 +entries.
70363 +'
70364 +.TP 5
70365 +.BR "<~port>"
70366 +Expands to the current port number.
70367 +'
70368 +.TP 5
70369 +.BR "<~processing>"
70370 +Expands to the current port's processing value: either "push", "pull", or
70371 +(rarely) "agnostic".
70372 +'
70373 +.TP 5
70374 +.BR "<~inputconnections [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep\fR" "]>"
70375 +Expands to a list of the output ports to which this input port is
70376 +connected. List entries are separated by \fIsep\fR. The
70377 +.B entry
70378 +attribute specifies how to render each port; it defaults to the
70379 +.B <~elements>
70380 +tag's
70381 +.B inputconnection
70382 +attribute. If the port is not connected to anything, the
70383 +.B noentry
70384 +attribute is used instead, which defaults to the
70385 +.B <~elements>
70386 +tag's
70387 +.B noinputconnection
70388 +attribute.
70389 +'
70390 +.TP 5
70391 +.BR "<~outputconnections [entry" "=\fItext" "] [noentry" "=\fItext" "] [sep" "=\fIsep\fR" "]>"
70392 +Expands to a list of the input ports to which this output port is
70393 +connected. List entries are separated by \fIsep\fR. The
70394 +.B entry
70395 +attribute specifies how to render each port; it defaults to the
70396 +.B <~elements>
70397 +tag's
70398 +.B outputconnection
70399 +attribute. If the port is not connected to anything, the
70400 +.B noentry
70401 +attribute is used instead, which defaults to the
70402 +.B <~elements>
70403 +tag's
70404 +.B nooutputconnection
70405 +attribute.
70406 +.PD
70407 +'
70408 +.SH "OPTIONS"
70409 +'
70410 +If any filename argument is a single dash "-",
70411 +.B click-align
70412 +will use the standard input or output instead, as appropriate.
70413 +'
70414 +.TP 5
70415 +.BI \-f " file"
70416 +.PD 0
70417 +.TP
70418 +.BI \-\-file " file"
70419 +Read the router configuration from
70420 +.IR file .
70421 +The default is the standard input.
70422 +'
70423 +.Sp
70424 +.TP
70425 +.BI \-e " expr"
70426 +.TP
70427 +.BI \-\-expression " expr"
70428 +Use
70429 +.IR expr ,
70430 +a string in the Click language, as the router configuration.
70431 +'
70432 +.Sp
70433 +.TP
70434 +.BI \-o " file"
70435 +.TP
70436 +.BI \-\-output " file"
70437 +Write HTML output to
70438 +.IR file .
70439 +The default is the standard output.
70440 +'
70441 +.Sp
70442 +.TP
70443 +.BI \-t " file"
70444 +.TP
70445 +.BI \-\-template " file"
70446 +Use
70447 +.I file
70448 +as the HTML template file. If no template is specified,
70449 +.B click-pretty
70450 +will use a built-in default.
70451 +'
70452 +.Sp
70453 +.TP
70454 +.BI \-d "name\fR=\fItext"
70455 +.TP
70456 +.BI \-\-define " name\fR=\fItext"
70457 +Defines a new tag named
70458 +.IR name .
70459 +Occurrences of
70460 +.BI <~ name >
70461 +in the template will be replaced with the expansion of
70462 +.IR text .
70463 +'
70464 +.Sp
70465 +.TP
70466 +.BR \-\-userlevel
70467 +.TP
70468 +.BR \-k ", " \-\-linuxmodule
70469 +.TP
70470 +.BR \-b ", " \-\-bsdmodule
70471 +Specifies the driver for which the configuration was designed. This is
70472 +necessary to discover whether ports are push or pull. Usually, you don't
70473 +have to give any of these options;
70474 +.B click-pretty
70475 +will figure out the right answer by looking at the configuration.
70476 +'
70477 +.Sp
70478 +.TP
70479 +.BI \-u " url"
70480 +.TP
70481 +.BI \-\-class\-docs " url"
70482 +Web documentation for primitive element classes is available at
70483 +.IR url .
70484 +The
70485 +.I url
70486 +may contain a single "%s", which is replaced with the element class's
70487 +documentation name. (This is the same as its regular name, unless
70488 +.B =title
70489 +was specified in the documentation comment.) URLs specified in elementmap
70490 +files with $webdoc take precedence over
70491 +.BR \-u .
70492 +'
70493 +.Sp
70494 +.TP
70495 +.BI \-\-package\-docs " package\fR=\fIurl"
70496 +Web documentation for primitive element classes in package
70497 +.I package
70498 +is available at
70499 +.IR url .
70500 +The
70501 +.I url
70502 +may contain a single "%s", which is replaced with the element class's
70503 +documentation name. URLs specified in elementmap files take precedence over
70504 +.BR \-\-package\-docs .
70505 +'
70506 +.Sp
70507 +.TP
70508 +.BI \-\-write\-template
70509 +Output the template unmodified. This is useful for getting a look at the
70510 +built-in default.
70511 +'
70512 +.Sp
70513 +.TP
70514 +.BI \-\-dot
70515 +Rather than generating HTML, generate a graph definition suitable for input
70516 +to the
70517 +.M dot 1
70518 +program (part of the
70519 +.B graphviz
70520 +suite originally from Bell Labs).  Using
70521 +.BR \-\-dot ,
70522 +you can automatically generate a PNG or PostScript graphic showing a
70523 +picture of the Click configuration, as in "\fBclick-pretty\fR router.click
70524 +| \fBdot\fR \-Tpng >routerpicture.png".
70525 +'
70526 +.Sp
70527 +.TP
70528 +.BI \-C " path"
70529 +.TP
70530 +.BI \-\-clickpath " path"
70531 +Use
70532 +.I path
70533 +for CLICKPATH.
70534 +'
70535 +.Sp
70536 +.TP 5
70537 +.BI \-\-help
70538 +Print usage information and exit.
70539 +'
70540 +.Sp
70541 +.TP
70542 +.BI \-\-version
70543 +Print the version number and some quickie warranty information and exit.
70544 +'
70545 +.PD
70546 +'
70547 +.SH FILES
70548 +.TP 5
70549 +.B CLICKDIR/share/click/elementmap
70550 +.B Click-pretty
70551 +uses elementmap files to determine whether ports are push or pull. You can
70552 +also add `$webdoc URL' lines to elementmap files;
70553 +.B click-pretty
70554 +will use that URL for element classes described in that elementmap. As with
70555 +the
70556 +.B \-u
70557 +option, a $webdoc URL can contain `%s', which is replaced with the element
70558 +class name.
70559 +'
70560 +.SH AUTHOR
70561 +.na
70562 +Eddie Kohler, kohler@cs.ucla.edu
70563 +.br
70564 +http://www.pdos.lcs.mit.edu/click/
70565 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
70566 --- click-1.6.0/inst/share/man/man1/click-uncombine.1   1969-12-31 19:00:00.000000000 -0500
70567 +++ click-1.6.0-27/inst/share/man/man1/click-uncombine.1        2009-02-11 14:08:51.000000000 -0500
70568 @@ -0,0 +1,107 @@
70569 +.\" -*- mode: nroff -*-
70570 +.ds V 1.0.5
70571 +.ds E " \-\- 
70572 +.if t .ds E \(em
70573 +.de Sp
70574 +.if n .sp
70575 +.if t .sp 0.4
70576 +..
70577 +.de Es
70578 +.Sp
70579 +.RS 5
70580 +.nf
70581 +..
70582 +.de Ee
70583 +.fi
70584 +.RE
70585 +.PP
70586 +..
70587 +.de Rs
70588 +.RS
70589 +.Sp
70590 +..
70591 +.de Re
70592 +.Sp
70593 +.RE
70594 +..
70595 +.de M
70596 +.BR "\\$1" "(\\$2)\\$3"
70597 +..
70598 +.de RM
70599 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
70600 +..
70601 +.TH CLICK-UNCOMBINE 1 "27/Apr/2000" "Version \*V"
70602 +.SH NAME
70603 +click-uncombine \- separates a component from a combined Click configuration
70604 +'
70605 +.SH SYNOPSIS
70606 +.B click-uncombine
70607 +.RI \%[ param = value " ...]"
70608 +.RI \%[ options ]
70609 +.RI \%[ router\-file " [" \fIcomponent\fR ]]
70610 +'
70611 +.SH DESCRIPTION
70612 +The
70613 +.B click-uncombine
70614 +tool reads a combined router configuration created by
70615 +.M click-combine 1
70616 +and outputs one of its components. The chosen component is specified by its
70617 +name, as originally specified to
70618 +.M click-combine 1 .
70619 +'
70620 +.SH "OPTIONS"
70621 +'
70622 +If any filename argument is a single dash "-",
70623 +.B click-uncombine
70624 +will use the standard input or output instead, as appropriate. You can give
70625 +one or two non-option arguments; the first is the router file and the
70626 +second, the component name.
70627 +'
70628 +.TP 5
70629 +.BI \-f " file"
70630 +.PD 0
70631 +.TP
70632 +.BI \-\-file " file"
70633 +Read the combined router configuration from
70634 +.IR file .
70635 +The default is the standard input.
70636 +'
70637 +.Sp
70638 +.TP
70639 +.BI \-n " name"
70640 +.TP
70641 +.BI \-\-name " name"
70642 +Output the router component named
70643 +.IR name .
70644 +'
70645 +.Sp
70646 +.TP 5
70647 +.BI \-o " file"
70648 +.TP
70649 +.BI \-\-output " file"
70650 +Write the output router configuration to
70651 +.IR file .
70652 +The default is the standard output.
70653 +'
70654 +.Sp
70655 +.TP 5
70656 +.BI \-\-help
70657 +Print usage information and exit.
70658 +'
70659 +.Sp
70660 +.TP
70661 +.BI \-\-version
70662 +Print the version number and some quickie warranty information and exit.
70663 +'
70664 +.PD
70665 +'
70666 +.SH "SEE ALSO"
70667 +.M click-combine 1 ,
70668 +.M click 5
70669 +'
70670 +.SH AUTHOR
70671 +.na
70672 +Eddie Kohler, kohler@cs.ucla.edu
70673 +.br
70674 +http://www.pdos.lcs.mit.edu/click/
70675 +'
70676 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
70677 --- click-1.6.0/inst/share/man/man1/click-undead.1      1969-12-31 19:00:00.000000000 -0500
70678 +++ click-1.6.0-27/inst/share/man/man1/click-undead.1   2009-02-11 14:08:51.000000000 -0500
70679 @@ -0,0 +1,203 @@
70680 +.\" -*- mode: nroff -*-
70681 +.ds V 1.1
70682 +.ds E " \-\- 
70683 +.if t .ds E \(em
70684 +.de Sp
70685 +.if n .sp
70686 +.if t .sp 0.4
70687 +..
70688 +.de Es
70689 +.Sp
70690 +.RS 5
70691 +.nf
70692 +..
70693 +.de Ee
70694 +.fi
70695 +.RE
70696 +.PP
70697 +..
70698 +.de Rs
70699 +.RS
70700 +.Sp
70701 +..
70702 +.de Re
70703 +.Sp
70704 +.RE
70705 +..
70706 +.de M
70707 +.BR "\\$1" "(\\$2)\\$3"
70708 +..
70709 +.de RM
70710 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
70711 +..
70712 +.TH CLICK-UNDEAD 1 "28/Aug/2000" "Version \*V"
70713 +.SH NAME
70714 +click-undead \- removes dead code from a Click configuration
70715 +'
70716 +.SH SYNOPSIS
70717 +.B click-undead
70718 +.RI \%[ param = value " ...]"
70719 +.RI \%[ options ]
70720 +.RI \%[ router\-file ]
70721 +'
70722 +.SH DESCRIPTION
70723 +The
70724 +.B click-undead
70725 +tool speeds up some Click configurations by removing dead code. This
70726 +includes:
70727 +.IP "\(bu" 3
70728 +Any
70729 +.M Null n ,
70730 +.M StaticSwitch n ,
70731 +and
70732 +.M StaticPullSwitch n
70733 +elements.
70734 +.IP "\(bu" 3
70735 +Any elements not reachable from both a 
70736 +.I source element
70737 +and a
70738 +.IR "sink element" .
70739 +Click packet source elements include
70740 +.M FromDevice n
70741 +and
70742 +.M InfiniteSource n ;
70743 +packet sink elements include
70744 +.M ToDump n ,
70745 +.M ToDevice n ,
70746 +and
70747 +.M Discard n
70748 +(when it is used as a pull element).
70749 +.IP "\(bu" 3
70750 +Dead ports on scheduler elements 
70751 +.RM ( RoundRobinSched n ,
70752 +.M PrioSched n ,
70753 +.M StrideSched n ,
70754 +and so on) are removed. These are ports that no packet could ever enter.
70755 +.IP "\(bu" 3
70756 +Scheduler elements that have only one attached input are redundant, so they
70757 +are removed.
70758 +.IP "\(bu" 3
70759 +Dead ports on tee elements
70760 +.RM ( Tee n ,
70761 +.M PullTee n )
70762 +are removed. These are ports with no packet sink downstream.
70763 +.IP "\(bu" 3
70764 +Tee elements that have only one attached output are redundant, so they are
70765 +removed.
70766 +.PP
70767 +.B click-undead
70768 +will not remove any information elements. Connections to removed elements
70769 +are rerouted appropriately.
70770 +.PP
70771 +For example,
70772 +.B click-undead 
70773 +will transform this configuration,
70774 +.Sp
70775 +.nf
70776 +   Idle -> Counter -> td1 :: ToDump(a);
70777 +   InfiniteSource -> ss :: StaticSwitch(1);
70778 +     ss[0] -> ToDump(c);
70779 +     ss[1] -> Queue -> rr :: RoundRobinSched;
70780 +     Idle -> [1]rr;
70781 +     rr -> td2 :: ToDump(b);
70782 +.fi
70783 +.Sp
70784 +into this configuration:
70785 +.Sp
70786 +.nf
70787 +   InfiniteSource -> Queue -> td2 :: ToDump(b);
70788 +.fi
70789 +.Sp
70790 +Note that the resulting configuration is not guaranteed to have the same
70791 +semantics as the input configuration. Here, for example, the result
70792 +configuration does not truncate the files `a' and `c'.
70793 +.PP
70794 +The resulting configuration is written to the standard output. 
70795 +'
70796 +.SH "OPTIONS"
70797 +'
70798 +If any filename argument is a single dash "-",
70799 +.B click-undead
70800 +will use the standard input or output instead, as appropriate.
70801 +'
70802 +.TP 5
70803 +.BI \-f " file"
70804 +.PD 0
70805 +.TP
70806 +.BI \-\-file " file"
70807 +Read the router configuration to transform from
70808 +.IR file .
70809 +The default is the standard input.
70810 +'
70811 +.Sp
70812 +.TP
70813 +.BI \-e " expr"
70814 +.TP
70815 +.BI \-\-expression " expr"
70816 +Use
70817 +.IR expr ,
70818 +a string in the Click language, as the router configuration to transform.
70819 +'
70820 +.Sp
70821 +.TP
70822 +.BI \-o " file"
70823 +.TP
70824 +.BI \-\-output " file"
70825 +Write the output router configuration to
70826 +.IR file .
70827 +The default is the standard output.
70828 +'
70829 +.Sp
70830 +.TP
70831 +.BR \-k ", " \-\-kernel
70832 +Check the configuration only for the
70833 +.M click.o 8
70834 +Linux kernel module driver.
70835 +'
70836 +.Sp
70837 +.TP
70838 +.BR \-u ", " \-\-user
70839 +Check the configuration only for the
70840 +.M click 1
70841 +user-level driver.
70842 +'
70843 +.Sp
70844 +.TP 5
70845 +.BR \-c ", " \-\-config
70846 +Output only the new configuration, not any archived packages.
70847 +'
70848 +.Sp
70849 +.TP 5
70850 +.BR \-V ", " \-\-verbose
70851 +Print debugging information about the transformation\*Efor example, which
70852 +elements are chosen as sources and sinks.
70853 +'
70854 +.Sp
70855 +.TP 5
70856 +.BI \-\-help
70857 +Print usage information and exit.
70858 +'
70859 +.Sp
70860 +.TP
70861 +.BI \-\-version
70862 +Print the version number and some quickie warranty information and exit.
70863 +'
70864 +.PD
70865 +'
70866 +.SH "SEE ALSO"
70867 +.M click 1 ,
70868 +.M click-install 1 ,
70869 +.M click 5 ,
70870 +.M click.o 8 ,
70871 +.M Discard n ,
70872 +.M FromDevice n ,
70873 +.M InfiniteSource n ,
70874 +.M ToDump n ,
70875 +.M ToDevice n
70876 +'
70877 +.SH AUTHOR
70878 +.na
70879 +Eddie Kohler, kohler@cs.ucla.edu
70880 +.br
70881 +http://www.pdos.lcs.mit.edu/click/
70882 +'
70883 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
70884 --- click-1.6.0/inst/share/man/man1/click-uninstall.1   1969-12-31 19:00:00.000000000 -0500
70885 +++ click-1.6.0-27/inst/share/man/man1/click-uninstall.1        2009-02-11 14:08:51.000000000 -0500
70886 @@ -0,0 +1,73 @@
70887 +.\" -*- mode: nroff -*-
70888 +.ds V 1.0
70889 +.ds E " \-\- 
70890 +.if t .ds E \(em
70891 +.de Sp
70892 +.if n .sp
70893 +.if t .sp 0.4
70894 +..
70895 +.de Es
70896 +.Sp
70897 +.RS 5
70898 +.nf
70899 +..
70900 +.de Ee
70901 +.fi
70902 +.RE
70903 +.PP
70904 +..
70905 +.de Rs
70906 +.RS
70907 +.Sp
70908 +..
70909 +.de Re
70910 +.Sp
70911 +.RE
70912 +..
70913 +.de M
70914 +.BR "\\$1" "(\\$2)\\$3"
70915 +..
70916 +.de RM
70917 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
70918 +..
70919 +.TH CLICK-UNINSTALL 1 "9/Feb/2000" "Version \*V"
70920 +.SH NAME
70921 +click-uninstall \- uninstalls the Click kernel module
70922 +'
70923 +.SH SYNOPSIS
70924 +.B click-uninstall
70925 +.I \%[options]
70926 +'
70927 +.SH DESCRIPTION
70928 +.B Click-uninstall
70929 +is a convenience program that uninstalls Click from the current Linux
70930 +kernel. It uninstalls the currently running configuration, any dynamically
70931 +loadable Click packages, and the
70932 +.M click.o 8
70933 +kernel module itself.
70934 +'
70935 +.SH "OPTIONS"
70936 +'
70937 +.TP 5
70938 +.BI \-\-help
70939 +.PD 0
70940 +Print usage information and exit.
70941 +'
70942 +.Sp
70943 +.TP
70944 +.BI \-\-version
70945 +Print the version number and some quickie warranty information and exit.
70946 +'
70947 +.PD
70948 +'
70949 +.SH "SEE ALSO"
70950 +.M click-install 1 ,
70951 +.M click 5 ,
70952 +.M click.o 8
70953 +'
70954 +.SH AUTHOR
70955 +.na
70956 +Eddie Kohler, kohler@cs.ucla.edu
70957 +.br
70958 +http://www.pdos.lcs.mit.edu/click/
70959 +'
70960 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
70961 --- click-1.6.0/inst/share/man/man1/click-xform.1       1969-12-31 19:00:00.000000000 -0500
70962 +++ click-1.6.0-27/inst/share/man/man1/click-xform.1    2009-02-11 14:08:51.000000000 -0500
70963 @@ -0,0 +1,310 @@
70964 +.\" -*- mode: nroff -*-
70965 +.ds V 1.0.3
70966 +.ds E " \-\- 
70967 +.if t .ds E \(em
70968 +.de Sp
70969 +.if n .sp
70970 +.if t .sp 0.4
70971 +..
70972 +.de Es
70973 +.Sp
70974 +.RS 5
70975 +.nf
70976 +..
70977 +.de Ee
70978 +.fi
70979 +.RE
70980 +.PP
70981 +..
70982 +.de Rs
70983 +.RS
70984 +.Sp
70985 +..
70986 +.de Re
70987 +.Sp
70988 +.RE
70989 +..
70990 +.de M
70991 +.BR "\\$1" "(\\$2)\\$3"
70992 +..
70993 +.de RM
70994 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
70995 +..
70996 +.TH CLICK-XFORM 1 "31/Mar/2000" "Version \*V"
70997 +.SH NAME
70998 +click-xform \- pattern-based Click configuration optimizer
70999 +'
71000 +.SH SYNOPSIS
71001 +.B click-xform
71002 +.RI \%[ options ]
71003 +.RI \%[ param = value " ...]"
71004 +.RI \%[ router\-file " [" pattern\-files ...]]
71005 +'
71006 +.SH DESCRIPTION
71007 +The
71008 +.B click-xform
71009 +tool is a Click router configuration optimizer. It reads files giving Click
71010 +configuration patterns and their replacements, and a router configuration
71011 +file. Then it replaces pattern matches in the configuration until none
71012 +remain and writes the new configuration to the standard output.
71013 +.PP
71014 +Pattern files use the Click language (see
71015 +.M click 5 ).
71016 +They contain pairs of `elementclass' definitions, where each pair consists
71017 +of one pattern text and one replacement text. The replacement for a pattern
71018 +named
71019 +.RI ` X '
71020 +must be named
71021 +.RI ` X _Replacement'.
71022 +This example pattern file replaces all Queues with Queue-Shaper
71023 +combinations:
71024 +.Rs
71025 +.nf
71026 +elementclass QueuePattern {
71027 +  input -> Queue -> output;
71028 +}
71029 +elementclass QueuePattern_Replacement {
71030 +  input -> Queue -> Shaper(200) -> output;
71031 +}
71032 +.fi
71033 +.Re
71034 +.PP
71035 +A pattern text can contain an arbitrary number of elements, and an
71036 +arbitrary number of input and output ports. Basically, a pattern matches a
71037 +fragment of a router configuration when they have the same number of
71038 +elements; their element classes match; all of the pattern's connections are
71039 +duplicated in the fragment; and any connections into or out of the fragment
71040 +correspond to connections to or from the pattern's input and output ports.
71041 +The formal definition of matching is given below.
71042 +.PP
71043 +Any configuration strings in the pattern must match the configuration
71044 +strings in the configuration subset. The pattern can use variables, which
71045 +look like `$[letters, numbers and underscores]', to match a set of
71046 +configuration strings; except for variables, the strings must match
71047 +verbatim. A variable matches a single configuration argument. The same
71048 +variable can be used multiple times in a pattern; if so, then it must match
71049 +the same text on each occurrence. If a variable is used in the
71050 +replacement's configuration strings, then when a replacement is made, the
71051 +text that matched in the pattern will be inserted instead. For example,
71052 +applying this pattern
71053 +.Rs
71054 +.nf
71055 +elementclass Meters {
71056 +  input -> Meter($a)
71057 +        -> Shaper($b) -> output;
71058 +}
71059 +elementclass Meters_Replacement {
71060 +  input -> Meter($b)
71061 +        -> SlowShaper($a) -> output;
71062 +}
71063 +.fi
71064 +.Re
71065 +to this configuration
71066 +.Rs
71067 +.nf
71068 +\&... -> Meter(1000) -> Shaper(2000) -> ...
71069 +.fi
71070 +.Re
71071 +will create this result:
71072 +.Rs
71073 +.nf
71074 +\&... -> Meter(2000) -> SlowShaper(1000) -> ...
71075 +.fi
71076 +.Re
71077 +.PP
71078 +The optimizer will not apply the same pattern to a configuration subset
71079 +twice in succession. Specifically, every replacement element is marked with
71080 +the pattern that generated it; a pattern will not match a configuration
71081 +fragment if every element in that fragment came from that pattern. Thus, a
71082 +pattern like the QueuePattern above won't cause an infinite loop. You can
71083 +still cause an infinite loop, if you'd like, by having two patterns that
71084 +match the same text:
71085 +.Rs
71086 +.nf
71087 +elementclass Evil1 {
71088 +  input -> Queue -> output;
71089 +}
71090 +elementclass Evil1_Replacement {
71091 +  input -> Queue -> output;
71092 +}
71093 +elementclass Evil2 {
71094 +  input -> Queue -> output;
71095 +}
71096 +elementclass Evil2_Replacement {
71097 +  input -> Queue -> output;
71098 +}
71099 +.fi
71100 +.Re
71101 +This collection of patterns will make the optimizer run forever on any
71102 +configuration that has a Queue.
71103 +.PP
71104 +The
71105 +.B click-xform
71106 +transformation can be reversed with the
71107 +.B \-\-reverse
71108 +option.
71109 +'
71110 +.SH "OPTIONS"
71111 +'
71112 +If any filename argument is a single dash "-",
71113 +.B click-xform
71114 +will use the standard input or output instead, as appropriate.
71115 +'
71116 +.TP 5
71117 +.BI \-p " file"
71118 +.PD 0
71119 +.TP
71120 +.BI \-\-patterns " file"
71121 +Read patterns and replacements from
71122 +.IR file .
71123 +You can give any number of these options.
71124 +'
71125 +.Sp
71126 +.TP
71127 +.BI \-f " file"
71128 +.TP
71129 +.BI \-\-file " file"
71130 +Read the router configuration to transform from
71131 +.IR file .
71132 +The default is the standard input.
71133 +'
71134 +.Sp
71135 +.TP
71136 +.BI \-e " expr"
71137 +.TP
71138 +.BI \-\-expression " expr"
71139 +Use
71140 +.IR expr ,
71141 +a string in the Click language, as the router configuration to transform.
71142 +'
71143 +.Sp
71144 +.TP
71145 +.BI \-o " file"
71146 +.TP
71147 +.BI \-\-output " file"
71148 +Write the output router configuration to
71149 +.IR file .
71150 +The default is the standard output.
71151 +'
71152 +.Sp
71153 +.TP
71154 +.BR \-r ", " \-\-reverse
71155 +Apply the patterns in reverse. That is, replace occurrences of the
71156 +replacement texts with the corresponding pattern texts.
71157 +'
71158 +.Sp
71159 +.TP 5
71160 +.BI \-\-help
71161 +Print usage information and exit.
71162 +'
71163 +.Sp
71164 +.TP
71165 +.BI \-\-version
71166 +Print the version number and some quickie warranty information and exit.
71167 +'
71168 +.PD
71169 +'
71170 +.SH "FORMAL DEFINITION OF MATCHING"
71171 +'
71172 +A pattern
71173 +.I P
71174 +matches a subset
71175 +.I S
71176 +of the configuration's elements if the following conditions hold:
71177 +.TP 4
71178 +\(bu
71179 +There is a one-to-one mapping 
71180 +.I map
71181 +from
71182 +.I P
71183 +to
71184 +.I S
71185 +that respects element classes (that is, if an element
71186 +.IR p " in " P
71187 +has class
71188 +.IR K ,
71189 +then
71190 +.RI map( p ") also has class " K ).
71191 +.TP 4
71192 +\(bu
71193 +The configuration strings match, possibly by using a consistent variable
71194 +assignment.
71195 +.TP 4
71196 +\(bu
71197 +For every connection
71198 +.RI ` p1 " [" x "] -> [" y "] " p2 '
71199 +in the pattern
71200 +.IR P ,
71201 +there exists a connection
71202 +.RI `map( p1 ") [" x "] -> [" y "] map(" p2 )'
71203 +in the configuration subset
71204 +.IR S .
71205 +.TP 4
71206 +\(bu
71207 +For every connection
71208 +.RI ` c1 " [" x "] -> [" y "] " c2 '
71209 +in the configuration, one of four conditions hold:
71210 +.RS
71211 +.TP 3
71212 +\(bu
71213 +The connection is wholly outside the subset
71214 +.IR S .
71215 +(That is,
71216 +.IR c1 " is not in " S
71217 +and
71218 +.IR c2 " is not in " S .)
71219 +.TP 3
71220 +\(bu
71221 +The connection is inside the subset, and corresponds to a connection in the
71222 +pattern. (That is,
71223 +.IR c1 " is in " S ,
71224 +.IR c2 " is in " S ,
71225 +and
71226 +.I P
71227 +has a connection
71228 +.RI "`map-1(" c1 ") [" x "] -> [" y "] map-1(" c2 ")'.)"
71229 +.TP 3
71230 +\(bu
71231 +The connection goes into the subset, and corresponds to an input port in
71232 +the pattern. (That is,
71233 +.IR c1 " is not in " S
71234 +but
71235 +.IR c2 " is in " S ,
71236 +and there exists an input port number
71237 +.I i
71238 +so that
71239 +.I P
71240 +has a connection
71241 +.RI "`input [" i "] -> [" y "] map-1(" c2 ")',"
71242 +and for every connection in the pattern
71243 +.RI "`input [" i "] -> [" z "] " q ',
71244 +there is a connection in the configuration
71245 +.RI ` c1 " [" x "] -> [" z "] map(" q ")'.)"
71246 +.TP 3
71247 +\(bu
71248 +The connection goes out of the subset, and corresponds to an output port in
71249 +the pattern. (That is,
71250 +.IR c1 " is in " S
71251 +but
71252 +.IR c2 " is not in " S ,
71253 +and there exists an output port number
71254 +.I o
71255 +so that
71256 +.I P
71257 +has a connection
71258 +.RI "`map-1(" c1 ") [" x "] -> [" o "] output',"
71259 +and for every connection in the pattern
71260 +.RI ` q " [" z "] -> [" o "] output',"
71261 +there is a connection in the configuration
71262 +.RI "`map(" q ") [" z "] -> [" y "] " c2 "'.)"
71263 +.RE
71264 +'
71265 +.SH "SEE ALSO"
71266 +.M click 5
71267 +'
71268 +.SH AUTHOR
71269 +.na
71270 +Eddie Kohler, kohler@cs.ucla.edu
71271 +.br
71272 +http://www.pdos.lcs.mit.edu/click/
71273 +'
71274 diff -Nurb click-1.6.0/inst/share/man/man1/click.1 click-1.6.0-27/inst/share/man/man1/click.1
71275 --- click-1.6.0/inst/share/man/man1/click.1     1969-12-31 19:00:00.000000000 -0500
71276 +++ click-1.6.0-27/inst/share/man/man1/click.1  2009-02-11 14:08:51.000000000 -0500
71277 @@ -0,0 +1,259 @@
71278 +.\" -*- mode: nroff -*-
71279 +.ds V 1.3
71280 +.ds E " \-\- 
71281 +.if t .ds E \(em
71282 +.de Sp
71283 +.if n .sp
71284 +.if t .sp 0.4
71285 +..
71286 +.de Es
71287 +.Sp
71288 +.RS 5
71289 +.nf
71290 +..
71291 +.de Ee
71292 +.fi
71293 +.RE
71294 +.PP
71295 +..
71296 +.de Rs
71297 +.RS
71298 +.Sp
71299 +..
71300 +.de Re
71301 +.Sp
71302 +.RE
71303 +..
71304 +.de M
71305 +.BR "\\$1" "(\\$2)\\$3"
71306 +..
71307 +.de RM
71308 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
71309 +..
71310 +.TH CLICK 1 "26/Mar/2003" "Version \*V"
71311 +.SH NAME
71312 +click \- Click user-level driver
71313 +'
71314 +.SH SYNOPSIS
71315 +.B click
71316 +.RI \%[ options ]
71317 +.RI \%[ param = value " ...]"
71318 +.RI \%[ router\-file ]
71319 +'
71320 +.SH DESCRIPTION
71321 +The
71322 +.B click
71323 +driver executes a Click modular router specification in a user-level
71324 +program. It reads a router configuration file, sets up the router according
71325 +to that file, and generally continues until interrupted. The router
71326 +configuration is written in the Click language (see
71327 +.M click 5 ),
71328 +and can contain dynamically loadable code, which
71329 +.B click
71330 +will link against before installing the configuration.
71331 +.PP
71332 +The
71333 +.B click
71334 +program can read and write packets from the network using Berkeley Packet
71335 +Filters\*Esee
71336 +.M FromDevice.u n
71337 +and
71338 +.M ToDevice.u n .
71339 +It can also read and write BPF dump files, such as those created by
71340 +.M tcpdump 1 "\*Esee"
71341 +.M FromDump n
71342 +and
71343 +.M ToDump n .
71344 +The
71345 +.M InfiniteSource n
71346 +element, and others like it, may be useful for testing configurations
71347 +without affecting the network.
71348 +'
71349 +.SH "OPTIONS"
71350 +'
71351 +Arguments such as "NAME=value" set configuration parameters, overriding any
71352 +existing settings. Thus, "echo \%'Message($MSG)' | \fBclick\fR MSG=Hi" will
71353 +print "Hi".
71354 +.PP
71355 +If any filename argument is a single dash "-",
71356 +.B click
71357 +will use the standard input or output instead, as appropriate.
71358 +'
71359 +.TP 5
71360 +.BI \-f " file"
71361 +.PD 0
71362 +.TP
71363 +.BI \-\-file " file"
71364 +Read the router configuration from
71365 +.IR file .
71366 +The default is the standard input.
71367 +'
71368 +.Sp
71369 +.TP
71370 +.BI \-e " expr"
71371 +.TP
71372 +.BI \-\-expression " expr"
71373 +Use
71374 +.IR expr ,
71375 +a string in the Click language, as the router configuration.
71376 +'
71377 +.Sp
71378 +.TP
71379 +.BI \-p " port"
71380 +.TP
71381 +.BI \-\-port " port"
71382 +Open a
71383 +.M ControlSocket n
71384 +connection listening on TCP port
71385 +.IR port .
71386 +ControlSockets allow users to connect to the router and call its read and
71387 +write handlers remotely.
71388 +'
71389 +.Sp
71390 +.TP
71391 +.BI \-u " file"
71392 +.TP
71393 +.BI \-\-unix\-socket " file"
71394 +Open a
71395 +.M ControlSocket n
71396 +connection listening on a Unix socket, on file
71397 +.IR file .
71398 +'
71399 +.Sp
71400 +.TP
71401 +.BR \-R ", " \-\-allow\-reconfigure
71402 +Provide a "hotconfig" handler, which allows remote
71403 +.M ControlSocket n
71404 +users, and elements within the router, to reconfigure the router
71405 +dynamically. See
71406 +.M click.o 8 's
71407 +"/click/hotconfig" section for more information on hot-swapping.
71408 +'
71409 +.Sp
71410 +.TP
71411 +.BI \-h " \fR[\fPelement\fR.]\fPhandler"
71412 +.TP
71413 +.BI \-\-handler " \fR[\fPelement\fR.]\fPhandler"
71414 +After running the driver, call
71415 +.IR element 's
71416 +read handler named
71417 +.IR handler ,
71418 +or the global read handler named
71419 +.IR handler ,
71420 +and print the result to standard output.  Each element has several generic
71421 +handlers\*Efor example,
71422 +.BR config
71423 +returns the element's configuration string and
71424 +.BR class
71425 +returns the element's class name.  Some elements have additional handlers;
71426 +.M Counter n ,
71427 +for example, has
71428 +.BR count " and " rate
71429 +handlers that return the number of packets arrived and the recent arrival
71430 +rate in packets per second.  See
71431 +.M click.o 8
71432 +for more information on generic handlers, and the element documentation for
71433 +more information on element-specific handlers.
71434 +.Sp
71435 +.I element
71436 +may be a pattern that uses the shell's globbing syntax (*, ?, and
71437 +[...]).  In this case,
71438 +.B click
71439 +will run each
71440 +.I handler
71441 +whose element's name matches the pattern.
71442 +.I element
71443 +may also be an element class or interface name, such as "Queue" or "Storage";
71444 +.B click
71445 +will run each
71446 +.I handler
71447 +whose element has that class or interface.
71448 +'
71449 +.Sp
71450 +.TP
71451 +.BI \-x " \fR[\fPelement\fR.]\fPhandler"
71452 +.TP
71453 +.BI \-\-exit-handler " \fR[\fPelement\fR.]\fPhandler"
71454 +After running the driver, call
71455 +.IR element 's
71456 +read handler named
71457 +.IR handler ,
71458 +or the global read handler named
71459 +.IR handler ,
71460 +and use the result as the
71461 +.B click
71462 +process exit value.  The handler should return an integer, which is used directly, or a boolean (true means 0, false means 1).
71463 +'
71464 +.Sp
71465 +.TP
71466 +.BI \-o " file"
71467 +.TP
71468 +.BI \-\-output " file"
71469 +Write a flattened version of the router configuration to
71470 +.IR file .
71471 +The flattening process removes all compound elements and additional archive
71472 +members.
71473 +'
71474 +.Sp
71475 +.TP 5
71476 +.BR \-q ", " \-\-quit
71477 +Do not run the driver. This option can be used to check a configuration for
71478 +errors, or to check handler results (with the
71479 +.B \-\-handler
71480 +option) without running the configuration.
71481 +'
71482 +.Sp
71483 +.TP 5
71484 +.BR \-t ", " \-\-time
71485 +Print the time it took to run the driver.
71486 +'
71487 +.Sp
71488 +.TP 5
71489 +.BR \-w ", " \-\-no\-warnings
71490 +Do not print any warning messages.
71491 +'
71492 +.Sp
71493 +.TP
71494 +.BI \-C " path"
71495 +.TP
71496 +.BI \-\-clickpath " path"
71497 +Use
71498 +.I path
71499 +for CLICKPATH.
71500 +'
71501 +.Sp
71502 +.TP 5
71503 +.BI \-\-help
71504 +Print usage information and exit.
71505 +'
71506 +.Sp
71507 +.TP
71508 +.BI \-\-version
71509 +Print the version number and some quickie warranty information and exit.
71510 +'
71511 +.PD
71512 +'
71513 +.SH "BUGS"
71514 +If you get an unaligned access error, try running your configuration
71515 +through
71516 +.M click-align 1
71517 +first.
71518 +'
71519 +.SH "SEE ALSO"
71520 +.M click-align 1 ,
71521 +.M click 5 ,
71522 +.M click.o 8 ,
71523 +.M ControlSocket n ,
71524 +.M FromDevice.u n ,
71525 +.M ToDevice.u n ,
71526 +.M FromDump n ,
71527 +.M ToDump n ,
71528 +.M tcpdump 1 ,
71529 +.M InfiniteSource n
71530 +'
71531 +.SH AUTHOR
71532 +.na
71533 +Eddie Kohler, kohler@cs.ucla.edu
71534 +.br
71535 +http://www.pdos.lcs.mit.edu/click/
71536 +'
71537 diff -Nurb click-1.6.0/inst/share/man/man1/testie.1 click-1.6.0-27/inst/share/man/man1/testie.1
71538 --- click-1.6.0/inst/share/man/man1/testie.1    1969-12-31 19:00:00.000000000 -0500
71539 +++ click-1.6.0-27/inst/share/man/man1/testie.1 2009-02-11 14:08:51.000000000 -0500
71540 @@ -0,0 +1,309 @@
71541 +.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
71542 +.\"
71543 +.\" Standard preamble:
71544 +.\" ========================================================================
71545 +.de Sh \" Subsection heading
71546 +.br
71547 +.if t .Sp
71548 +.ne 5
71549 +.PP
71550 +\fB\\$1\fR
71551 +.PP
71552 +..
71553 +.de Sp \" Vertical space (when we can't use .PP)
71554 +.if t .sp .5v
71555 +.if n .sp
71556 +..
71557 +.de Vb \" Begin verbatim text
71558 +.ft CW
71559 +.nf
71560 +.ne \\$1
71561 +..
71562 +.de Ve \" End verbatim text
71563 +.ft R
71564 +.fi
71565 +..
71566 +.\" Set up some character translations and predefined strings.  \*(-- will
71567 +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
71568 +.\" double quote, and \*(R" will give a right double quote.  | will give a
71569 +.\" real vertical bar.  \*(C+ will give a nicer C++.  Capital omega is used to
71570 +.\" do unbreakable dashes and therefore won't be available.  \*(C` and \*(C'
71571 +.\" expand to `' in nroff, nothing in troff, for use with C<>.
71572 +.tr \(*W-|\(bv\*(Tr
71573 +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
71574 +.ie n \{\
71575 +.    ds -- \(*W-
71576 +.    ds PI pi
71577 +.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
71578 +.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
71579 +.    ds L" ""
71580 +.    ds R" ""
71581 +.    ds C` ""
71582 +.    ds C' ""
71583 +'br\}
71584 +.el\{\
71585 +.    ds -- \|\(em\|
71586 +.    ds PI \(*p
71587 +.    ds L" ``
71588 +.    ds R" ''
71589 +'br\}
71590 +.\"
71591 +.\" If the F register is turned on, we'll generate index entries on stderr for
71592 +.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
71593 +.\" entries marked with X<> in POD.  Of course, you'll have to process the
71594 +.\" output yourself in some meaningful fashion.
71595 +.if \nF \{\
71596 +.    de IX
71597 +.    tm Index:\\$1\t\\n%\t"\\$2"
71598 +..
71599 +.    nr % 0
71600 +.    rr F
71601 +.\}
71602 +.\"
71603 +.\" For nroff, turn off justification.  Always turn off hyphenation; it makes
71604 +.\" way too many mistakes in technical documents.
71605 +.hy 0
71606 +.if n .na
71607 +.\"
71608 +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
71609 +.\" Fear.  Run.  Save yourself.  No user-serviceable parts.
71610 +.    \" fudge factors for nroff and troff
71611 +.if n \{\
71612 +.    ds #H 0
71613 +.    ds #V .8m
71614 +.    ds #F .3m
71615 +.    ds #[ \f1
71616 +.    ds #] \fP
71617 +.\}
71618 +.if t \{\
71619 +.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
71620 +.    ds #V .6m
71621 +.    ds #F 0
71622 +.    ds #[ \&
71623 +.    ds #] \&
71624 +.\}
71625 +.    \" simple accents for nroff and troff
71626 +.if n \{\
71627 +.    ds ' \&
71628 +.    ds ` \&
71629 +.    ds ^ \&
71630 +.    ds , \&
71631 +.    ds ~ ~
71632 +.    ds /
71633 +.\}
71634 +.if t \{\
71635 +.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
71636 +.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
71637 +.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
71638 +.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
71639 +.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
71640 +.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
71641 +.\}
71642 +.    \" troff and (daisy-wheel) nroff accents
71643 +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
71644 +.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
71645 +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
71646 +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
71647 +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
71648 +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
71649 +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
71650 +.ds ae a\h'-(\w'a'u*4/10)'e
71651 +.ds Ae A\h'-(\w'A'u*4/10)'E
71652 +.    \" corrections for vroff
71653 +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
71654 +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
71655 +.    \" for low resolution devices (crt and lpr)
71656 +.if \n(.H>23 .if \n(.V>19 \
71657 +\{\
71658 +.    ds : e
71659 +.    ds 8 ss
71660 +.    ds o a
71661 +.    ds d- d\h'-1'\(ga
71662 +.    ds D- D\h'-1'\(hy
71663 +.    ds th \o'bp'
71664 +.    ds Th \o'LP'
71665 +.    ds ae ae
71666 +.    ds Ae AE
71667 +.\}
71668 +.rm #[ #] #H #V #F C
71669 +.\" ========================================================================
71670 +.\"
71671 +.IX Title "TESTIE 1"
71672 +.TH TESTIE 1 "" "perl v5.8.8" ""
71673 +.SH "NAME"
71674 +testie \- simple test harness
71675 +.SH "SYNOPSIS"
71676 +.IX Header "SYNOPSIS"
71677 +.Vb 1
71678 +\&  testie [OPTIONS] [FILE]...
71679 +.Ve
71680 +.SH "DESCRIPTION"
71681 +.IX Header "DESCRIPTION"
71682 +Testie is a simple test harness. Each testie test file incorporates a shell
71683 +script to be run and, optionally, input and expected output files for that
71684 +script. Testie runs the script; the test fails if any of the script
71685 +commands fail, or if the script generates unexpected output.
71686 +.PP
71687 +To run testie, pass it one or more test filenames. It will print useful
71688 +error messages for failed tests. Alternatively, give it directory names;
71689 +the directories are recursively searched for '\fI*.testie\fR' files.
71690 +.PP
71691 +Return status is 0 if all tests succeed, 1 if any test fails, and 2 if a
71692 +test fails due to an internal error. Tests whose \f(CW%require\fR prerequisites
71693 +fail do not affect the return status, except that if all tests'
71694 +prerequisites fail, the return status is 1 instead of 0.
71695 +.SH "OPTIONS"
71696 +.IX Header "OPTIONS"
71697 +.IP "\fI\s-1VARIABLE\s0\fR=\fI\s-1VALUE\s0\fR" 8
71698 +.IX Item "VARIABLE=VALUE"
71699 +Provide a setting for \fI\s-1VARIABLE\s0\fR. Occurrences in the script of
71700 +\&'\f(CW$VARIABLE\fR' or '\f(CW\*(C`${VARIABLE}\*(C'\fR' will be replaced by \fI\s-1VALUE\s0\fR. Note that
71701 +this is not an environment variable setting. Variable references to unset
71702 +variables are left unchanged.
71703 +.IP "\-V, \-\-verbose" 8
71704 +.IX Item "-V, --verbose"
71705 +Print information to standard error about successful tests as well as
71706 +unsuccessful tests.
71707 +.IP "\-VV, \-\-superverbose" 8
71708 +.IX Item "-VV, --superverbose"
71709 +Like \-\-verbose, but use a slightly different format, and additionally print
71710 +every test's \f(CW%desc\fR section before the test results.
71711 +.IP "\-v, \-\-version" 8
71712 +.IX Item "-v, --version"
71713 +Print version number information and exit.
71714 +.IP "\-\-help" 8
71715 +.IX Item "--help"
71716 +Print help information and exit.
71717 +.IP "\-\-preserve\-temporaries" 8
71718 +.IX Item "--preserve-temporaries"
71719 +Preserve the temporary directory created for the test.
71720 +.IP "\-s, \-\-show \s-1FILE\s0" 8
71721 +.IX Item "-s, --show FILE"
71722 +Echo the contents of \s-1FILE\s0 on completion. \s-1FILE\s0 should be one of the
71723 +filenames specified by \f(CW%file\fR or \f(CW%expect\fR*, or 'stdout' or 'stderr'.
71724 +.IP "\-e, \-\-expand" 8
71725 +.IX Item "-e, --expand"
71726 +Don't run the given test; instead, expand its files into the current
71727 +directory.  The script is stored in a file called '+script+'.
71728 +.SH "FILE FORMAT"
71729 +.IX Header "FILE FORMAT"
71730 +Testie test files consist of several sections, each introduced by a line
71731 +starting with %. There must be, at least, a \f(CW%script\fR section.
71732 +.PP
71733 +The \f(CW%file\fR and \f(CW%expect\fR* sections define input and/or output files by
71734 +name. Testie runs its script in a private directory in \fI/tmp\fR; any files
71735 +mentioned in \f(CW%file\fR or \f(CW%expect\fR* are placed in that directory.
71736 +.IP "%script" 8
71737 +.IX Item "%script"
71738 +The shell script (in sh syntax) that controls the test. Testie will run
71739 +each command in sequence. Every command in the script must succeed, with
71740 +exit status 0, or the test will fail. The script's inputs and outputs are
71741 +defined with the \f(CW%file\fR and \f(CW%expect\fR* sections.
71742 +.IP "%require [\-q]" 8
71743 +.IX Item "%require [-q]"
71744 +A shell script (in sh syntax) defining prerequisites that must be satisfied
71745 +before the test can run. Every command in the script must succeed, with
71746 +exit status 0, for the test to run. \f(CW%require\fR's output is not checked,
71747 +however. The \f(CW\*(C`\-q\*(C'\fR flag tells testie not to print an error message if a
71748 +requirement fails.
71749 +.IP "%desc" 8
71750 +.IX Item "%desc"
71751 +A short description of the test.  In \-\-superverbose mode, its contents are
71752 +printed before the test results.
71753 +.IP "%info" 8
71754 +.IX Item "%info"
71755 +This section is ignored. It is intended for information about the test.
71756 +.IP "%cut" 8
71757 +.IX Item "%cut"
71758 +This section is ignored. It is intended to comment out obsolete parts of
71759 +the test.
71760 +.IP "%file [\-d] [+LENGTH] \s-1FILENAME\s0..." 8
71761 +.IX Item "%file [-d] [+LENGTH] FILENAME..."
71762 +Create an input file for the script. \s-1FILENAME\s0 can be 'stdin', which sets
71763 +the script's standard input. If \s-1LENGTH\s0 is provided, the file data consists
71764 +of the \s-1LENGTH\s0 bytes following this line. Otherwise, it consists of the data
71765 +up to the next section. The \f(CW\*(C`\-d\*(C'\fR flag tells testie to delete the
71766 +first character of each line in the section; this makes it possible to
71767 +include files that have lines that start with %. \s-1FILENAME\s0 cannot contain
71768 +slashes.
71769 +.IP "%expectv [\-a] [\-d] [+LENGTH] \s-1FILENAME\s0..." 8
71770 +.IX Item "%expectv [-a] [-d] [+LENGTH] FILENAME..."
71771 +An expected output file for the script. \s-1FILENAME\s0 can be 'stdout', for
71772 +standard output. If \s-1LENGTH\s0 is provided, the file data consists of the
71773 +\&\s-1LENGTH\s0 bytes following this line; otherwise, it consists of the data up to
71774 +the next section.
71775 +.Sp
71776 +Testie will run the script, then compare the script's output file with the
71777 +provided data. They must match exactly or the test fails.
71778 +.Sp
71779 +The \f(CW\*(C`\-a\*(C'\fR flag marks this expected output as an alternate. Testie will
71780 +compare the script's output file with each provided alternate; the test
71781 +succeeds if any of the alternates match. The \f(CW\*(C`\-d\*(C'\fR flag behaves as in
71782 +\&\f(CW%file\fR.
71783 +.IP "%expect [\-a] [\-d] [\-i] [+LENGTH] \s-1FILENAME\s0..." 8
71784 +.IX Item "%expect [-a] [-d] [-i] [+LENGTH] FILENAME..."
71785 +An expected output file for the script. Arguments are as for \f(CW%expectv\fR.
71786 +.Sp
71787 +Testie will run the script, then compare the file generated by script
71788 +with the provided data. The files are compared line\-by\-line. Testie
71789 +ignores trailing whitespace on each line and in the files at large. It also
71790 +ignores lines in the script output that match \f(CW%ignore\fR patterns (see below).
71791 +Blank lines in the \f(CW%expect\fR data match one or more blank lines in the
71792 +output. \f(CW%expect\fR lines can contain Perl regular expressions, enclosed by two
71793 +sets of braces; so the \f(CW%expect\fR line
71794 +.Sp
71795 +.Vb 1
71796 +\&    foo{{(bar)?}}
71797 +.Ve
71798 +.Sp
71799 +matches either 'foo' or 'foobar'. The \f(CW\*(C`\-i\*(C'\fR flag makes any regular
71800 +expressions case\-insensitive.
71801 +.IP "%expectx [\-a] [\-d] [\-i] [+LENGTH] \s-1FILENAME\s0..." 8
71802 +.IX Item "%expectx [-a] [-d] [-i] [+LENGTH] FILENAME..."
71803 +%expectx is just like \f(CW%expect\fR, except that every line is treated as a
71804 +regular expression (so there is no need for the \*(L"{{ }}\*(R" escapes).
71805 +.IP "%stdin [+LENGTH]" 8
71806 +.IX Item "%stdin [+LENGTH]"
71807 +Same as '%file stdin [\s-1ARGS\s0]'.
71808 +.IP "%stdout [\-a] [\-d] [\-i] [+LENGTH]" 8
71809 +.IX Item "%stdout [-a] [-d] [-i] [+LENGTH]"
71810 +Same as '%expect stdout'.
71811 +.IP "%stderr [\-a] [\-d] [\-i] [+LENGTH]" 8
71812 +.IX Item "%stderr [-a] [-d] [-i] [+LENGTH]"
71813 +Same as '%expect stderr'.
71814 +.IP "%ignorex [\-d] [\-i] [+LENGTH] [\s-1FILENAME\s0]" 8
71815 +.IX Item "%ignorex [-d] [-i] [+LENGTH] [FILENAME]"
71816 +Each line in the \f(CW%ignorex\fR section is a Perl regular expression.  Lines in
71817 +the supplied \s-1FILENAME\s0 that match any of those regular expressions will not
71818 +be considered when comparing files with \f(CW%expect\fR[x] data.  The regular
71819 +expression must match the whole line.  \s-1FILENAME\s0 may be 'all', in which case
71820 +the regular expressions will apply to all \f(CW%expect\fR[x] files.
71821 +.ie n .IP "%ignore, %ignorev" 8
71822 +.el .IP "%ignore, \f(CW%ignorev\fR" 8
71823 +.IX Item "%ignore, %ignorev"
71824 +Like '%ignorex', but '%ignore' parses regular expressions only inside
71825 +double braces (\*(L"{{ }}\*(R"), and '%ignorev' lines must match exactly.
71826 +.IP "%eot" 8
71827 +.IX Item "%eot"
71828 +Marks the end of the current test.  The rest of the file will be parsed for
71829 +additional tests.
71830 +.IP "%eof" 8
71831 +.IX Item "%eof"
71832 +The rest of the file is ignored.
71833 +.SH "EXAMPLE"
71834 +.IX Header "EXAMPLE"
71835 +This simple testie script checks that 'grep \-c' works for a simple output
71836 +file.
71837 +.PP
71838 +.Vb 7
71839 +\&  %script
71840 +\&  grep -c B.
71841 +\&  %stdin
71842 +\&  Bfoo
71843 +\&  B
71844 +\&  %stdout
71845 +\&  1
71846 +.Ve
71847 +.SH "AUTHOR"
71848 +.IX Header "AUTHOR"
71849 +Eddie Kohler, <kohler@cs.ucla.edu>
71850 diff -Nurb click-1.6.0/inst/share/man/man5/click.5 click-1.6.0-27/inst/share/man/man5/click.5
71851 --- click-1.6.0/inst/share/man/man5/click.5     1969-12-31 19:00:00.000000000 -0500
71852 +++ click-1.6.0-27/inst/share/man/man5/click.5  2009-02-11 14:08:51.000000000 -0500
71853 @@ -0,0 +1,785 @@
71854 +.\" -*- mode: nroff -*-
71855 +.ds V 1.1
71856 +.ds E " \-\- 
71857 +.if t .ds E \(em
71858 +.de OP
71859 +.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
71860 +..
71861 +.de OA
71862 +.IR "\fB\\$1\& \|\fI\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
71863 +..
71864 +.de QO
71865 +.RB ` "\\$1" "'\\$2"
71866 +..
71867 +.de Sp
71868 +.if n .sp
71869 +.if t .sp 0.4
71870 +..
71871 +.de Es
71872 +.Sp
71873 +.RS 5
71874 +.nf
71875 +..
71876 +.de Ee
71877 +.fi
71878 +.RE
71879 +.PP
71880 +..
71881 +.de M
71882 +.BR "\\$1" "(\\$2)\\$3"
71883 +..
71884 +.de Rs
71885 +.RS
71886 +.Sp
71887 +..
71888 +.de Re
71889 +.Sp
71890 +.RE
71891 +..
71892 +.TH CLICK 5 "16/Mar/2004" "Version \*V"
71893 +.SH NAME
71894 +click \- Click configuration language
71895 +'
71896 +.SH DESCRIPTION
71897 +The Click language describes the configuration of a Click router. It has
71898 +two main directives:
71899 +.IR declarations
71900 +declare new elements, and
71901 +.IR connections
71902 +connect those elements together.  Click router configurations are like
71903 +directed graphs of elements; in this interpretation, declarations specify
71904 +the vertices of the graph and connections specify the edges.  Other
71905 +language statements define configuration parameters and create new element
71906 +types.
71907 +'
71908 +.SS "Declarations"
71909 +'
71910 +A declaration looks like this:
71911 +.Rs
71912 +.IR "name" " :: " "class" ( "config" );
71913 +.Re
71914 +(The semicolon, like all semicolons in Click syntax, is optional.)
71915 +This declares an element called
71916 +.IR name
71917 +that has element class
71918 +.IR class
71919 +and configuration arguments
71920 +.IR config .
71921 +If the configuration string is empty, the parentheses can be left off.
71922 +Also, there can be two or more names in a comma-separated list, which has
71923 +the same effect as multiple declarations.
71924 +.Rs
71925 +.IR "name" " :: " "class" ;
71926 +.br
71927 +.IR "name1" ", " "name2" ", ..., " "nameN" " ::"
71928 +.IR "class" ( "config" );
71929 +.Re
71930 +'
71931 +.SS "Connections"
71932 +'
71933 +A connection looks like this:
71934 +.Rs
71935 +.IR "name1" " [" "port1" "] -> [" "port2" "] " "name2" ;
71936 +.Re
71937 +where the two
71938 +.IR name s
71939 +are names of previously declared elements, and the two
71940 +.IR port s
71941 +are nonnegative integers. This says that
71942 +.IR name1 "'s output port " port1
71943 +should be connected to
71944 +.IR name2 "'s input port " port2 .
71945 +Two connections can be strung together into a single statement if the
71946 +output element of one is the same as the input element of the other:
71947 +.Rs
71948 +.IR "n1" " [" "p1" "] -> [" "p2" "] " "x" ;
71949 +.br
71950 +.IR "x" " [" "p3" "] -> [" "p4" "] " "n2" ;
71951 +.Re
71952 +is the same as
71953 +.Rs
71954 +.IR "n1" " [" "p1" "] -> [" "p2" "] " "x"
71955 +.RI "[" "p3" "] -> [" "p4" "] " "n2" ;
71956 +.Re
71957 +This can be extended to three or more connections. Furthermore, if an input
71958 +or output port is 0, it can be omitted along with the brackets. These two
71959 +lines are equivalent:
71960 +.Rs
71961 +.IR "n1" " [0] -> [0] " "n2" ;
71962 +.br
71963 +.IR "n1" " -> " "n2" ;
71964 +.Re
71965 +.PP
71966 +You can also declare elements inside connections:
71967 +.Rs
71968 +.RI "... -> [" "p1" "] " "name" " ::"
71969 +.IR "class" ( "config" ") [" "p2" "] -> ...;"
71970 +.Re
71971 +is equivalent to
71972 +.Rs
71973 +.IR "name" " :: " "class" ( "config" );
71974 +.br
71975 +.RI "... -> [" "p1" "] " "name" " [" "p2" "] -> ...;"
71976 +.Re
71977 +Every such declaration can declare at most one element.
71978 +'
71979 +.SS "Anonymous elements"
71980 +You may declare an element without specifying its name, in which case the
71981 +system will choose an element name for you. For example:
71982 +.Rs
71983 +.IR class "(" config ");"
71984 +.Re
71985 +is equivalent to
71986 +.Rs
71987 +.IR generatedname " :: " class ( config );
71988 +.Re
71989 +As usual, the parentheses can be left off if
71990 +.I config
71991 +is empty. You may also declare an anonymous element inside a connection:
71992 +.Rs
71993 +.RI "... -> [" p1 "] " class ( config )
71994 +.RI "[" p2 "] -> ...;"
71995 +.Re
71996 +is equivalent to
71997 +.Rs
71998 +.IR generatedname " :: " class ( config );
71999 +.br
72000 +.RI "... -> [" p1 "] " generatedname " [" p2 "] -> ...;"
72001 +.Re
72002 +.PP
72003 +The
72004 +.I generatedname
72005 +has the form
72006 +.RI ` class "@" number ',
72007 +where the
72008 +.IR number
72009 +is chosen to make the name unique. These numbers are predictable: when the
72010 +system parses a Click file twice, that file's anonymous elements will get
72011 +the same generated names each time. Nothing prevents a user from declaring
72012 +an element named like an anonymous element. We suggest that users avoid the `@'
72013 +character in their element names.
72014 +.PP
72015 +Not all elements can usefully be anonymous, since an anonymous element can
72016 +be part of at most two connections (once as input, once as output).
72017 +'
72018 +.SH "CONFIGURATION STRINGS"
72019 +'
72020 +Click configuration strings are comma-separated lists of arguments, where
72021 +each argument is a space-separated list of objects. This section describes
72022 +some common object types. See the element documentation for argument types
72023 +expected by a particular element.
72024 +.PP
72025 +Configuration strings may contain comments (`// ... EOL' and `/* ... */'),
72026 +which are replaced with single space characters. Inside single- or
72027 +double-quoted strings, commas, spaces, and comment-starting sequences lose
72028 +their regular meaning and are treated as normal characters.
72029 +.PP
72030 +The most common object types are:
72031 +.TP 3
72032 +\(bu
72033 +.B Strings.
72034 +Any sequence of characters.  Single- or double-quoted strings are allowed
72035 +(and required, if the string contains a space or comma).  Inside
72036 +double-quoted strings, backslash substitutions are performed; see below.
72037 +You can concatenate strings by juxtaposing them.  For example, `a"b"c' is
72038 +equivalent to `abc'.
72039 +.TP
72040 +\(bu
72041 +.B Booleans.
72042 +`0', `false', and `no' mean false; `1', `true', and `yes' mean true.
72043 +.TP
72044 +\(bu
72045 +.B Integers
72046 +preceded by an optional `+' or `\-' sign. Decimal, octal (first digit `0'),
72047 +and hexadecimal (starting with `0x') are allowed. 
72048 +.TP
72049 +\(bu
72050 +.B Real numbers
72051 +in decimal notation.
72052 +.TP
72053 +\(bu
72054 +.B Times and delays
72055 +in decimal real notation, followed by an optional unit: `s'/`sec', `ms',
72056 +`us', `ns', `m'/`min', `h'/`hr'.
72057 +.TP
72058 +\(bu
72059 +.B Bandwidths
72060 +in decimal real notation, followed by an optional unit: `bps' or `Bps' for
72061 +bits or bytes per second, with an optional SI prefix `k', `M', or `G'.  The
72062 +default unit is generally `Bps'.
72063 +.TP
72064 +\(bu
72065 +.B IP addresses
72066 +in the conventional `n.n.n.n' form (for example, `18.26.4.15').
72067 +.TP
72068 +\(bu
72069 +.B IP network prefixes
72070 +in the CIDR form `n.n.n.n/k' (for example, `18.26.4/24').
72071 +.TP
72072 +\(bu
72073 +.B IPv6 addresses
72074 +in any of the conventional forms (for example, `::',
72075 +`1080::8:800:200C:417A', or `::18.26.4.15').
72076 +.TP
72077 +\(bu
72078 +.B Ethernet addresses
72079 +in the conventional `x:x:x:x:x:x' form (for example, `0:a0:c9:9c:fd:9c').
72080 +.TP
72081 +\(bu
72082 +.B Element names.
72083 +.PD
72084 +.PP
72085 +Some elements, like
72086 +.IR Classifier ,
72087 +take arguments that don't fit any of these types. See the element
72088 +documentation for details.
72089 +.PP
72090 +If the last argument in a configuration string is empty (containing only
72091 +whitespace and comments), then it is ignored.  Thus, `Element(1, )',
72092 +`Element(1, /* comment */)', and `Element(1)' behave exactly alike.
72093 +.PP
72094 +Configuration strings may also contain parameter references, such as
72095 +`$interface'. The parameter values are substituted in. Parameters may be
72096 +defined either by compound element arguments, by explicit `define'
72097 +statements, or on the command line.
72098 +'
72099 +.SS "Backslash Substitutions"
72100 +.PP
72101 +The following backslash substitutions are performed inside double quotes.
72102 +Additionally, as a special case, a bare data substitution sequence `\e<
72103 +\&... >' acts as if it were enclosed in double quotes.  (Inside single
72104 +quotes, `\e< ... >' is not special.)
72105 +.TP 4
72106 +1.
72107 +'
72108 +C-like substitutions. Specifically, `\ea', `\eb', `\et', `\en', `\ev',
72109 +`\ef', `\er', `\e\e', and `\e[1, 2, or 3 octal digits]' have their C
72110 +meanings.  `\ex[any number of hex digits]' is replaced with the byte
72111 +defined by the last 2 hex digits.
72112 +.TP 4
72113 +2.
72114 +Data substitutions. An escape sequence `\e< ... hex digits and spaces ...
72115 +>' is replaced with the data represented by the hex digits. For example,
72116 +the sequence `\e< 48 45 4c 4C 4f >' is replaced with `HELLO'.
72117 +.TP
72118 +3.
72119 +Backlash-newline sequences (`\e[LF]', `\e[CR]', or `\e[CR][LF]') are removed.
72120 +.TP
72121 +4.
72122 +Any other `\e[CHAR]' sequence is replaced with `[CHAR]'.
72123 +'
72124 +.SH "COMPOUND ELEMENTS"
72125 +'
72126 +A
72127 +.I compound element
72128 +is a scoped collection of elements that acts like a single element from
72129 +outside. A compound element can be used anywhere an element class is
72130 +expected (that is, in a declaration or connection). Syntactically, a
72131 +compound element is a set of Click statements enclosed in braces `{ }'.
72132 +Inside the braces, the special names `input' and `output' represent
72133 +connections from or to the outside. Before a router is put on line,
72134 +compound elements are systematically expanded until none remain; thus, they
72135 +have no run-time overhead.
72136 +.PP
72137 +Here are some examples. This code, with a compound element,
72138 +.Rs
72139 +a -> { input -> X -> output } -> b;
72140 +.Re
72141 +expands to
72142 +.Rs
72143 +a -> X -> b;
72144 +.Re
72145 +Here is a more complicated example, with multiple ports:
72146 +.Rs
72147 +compound :: {
72148 +.br
72149 +\%  input -> X -> output;
72150 +.br
72151 +\%  input [1] -> Y -> [1] output;
72152 +.br
72153 +};
72154 +.br
72155 +a -> compound -> b;
72156 +.br
72157 +c -> [1] compound [1] -> d;
72158 +.Re
72159 +expands to
72160 +.Rs
72161 +a -> X -> b;
72162 +.br
72163 +c -> Y -> d;
72164 +.Re
72165 +.PP
72166 +The `input' and `output' pseudoelements incur no run-time overhead. (In
72167 +fact, they are connection tunnel endpoints; see below for more.)
72168 +.PP
72169 +The actual expansions will differ from these examples because the elements
72170 +will have different names. A prefix is prepended to the components' names,
72171 +providing locality relative to other names in the configuration. The new
72172 +names have the form
72173 +.RI ` "compoundname" / "componentname" ',
72174 +where
72175 +.I compoundname
72176 +is the name of the compound element being expanded, and
72177 +.I componentname
72178 +is the name of the component element inside that compound. For example,
72179 +.Rs
72180 +compound :: { input -> x :: X -> output };
72181 +.br
72182 +a -> compound -> b;
72183 +.Re
72184 +is really expanded to
72185 +.Rs
72186 +a -> compound/x :: X -> b;
72187 +.Re
72188 +For this purpose, anonymous compound elements are given constructed names
72189 +like
72190 +.RI `@ number '.
72191 +Nothing prevents a user from declaring an element named like a compound
72192 +element component. We suggest that users generally avoid using the `/'
72193 +character in their element names.
72194 +.PP
72195 +It is an error to use the `input' pseudoelement's input ports or the
72196 +`output' pseudoelement's output ports. It is also an error to leave an
72197 +intermediate port unused\*Efor example, to use `input [0]' and `input [2]'
72198 +but not `input [1]'.
72199 +'
72200 +.SS "The `elementclass' statement"
72201 +'
72202 +The `elementclass' statement lets the user name a frequently-occurring
72203 +compound element, and use the name as if it were a primitive element class.
72204 +Syntactically, it looks like this:
72205 +.Rs
72206 +elementclass
72207 +.I identifier
72208 +.I compoundelement
72209 +;
72210 +.Re
72211 +After this statement, every occurrence of the
72212 +.I identifier
72213 +will be replaced with the
72214 +.IR compoundelement .
72215 +For example, this code, with an `elementclass':
72216 +.Rs
72217 +elementclass MyQueue {
72218 +.br
72219 +\%  input -> Queue -> Shaper(1000) -> output;
72220 +.br
72221 +}
72222 +.br
72223 +q :: MyQueue;
72224 +.br
72225 +a -> q -> b;
72226 +.Re
72227 +is equivalent to this code, without it:
72228 +.Rs
72229 +q :: { input -> Queue -> Shaper(1000) -> output };
72230 +.br
72231 +a -> q -> b;
72232 +.Re
72233 +which roughly expands to:
72234 +.Rs
72235 +a -> Queue -> Shaper(1000) -> b;
72236 +.Re
72237 +.PP
72238 +The user can declare element classes that have the names of previously
72239 +existing element classes:
72240 +.Rs
72241 +elementclass Queue {
72242 +.br
72243 +\%  input -> Queue -> Shaper(1000) -> output;
72244 +.br
72245 +}
72246 +.Re
72247 +Element classes are nonrecursive and lexically scoped, so the `Queue'
72248 +inside this definition refers to the original `Queue'. The scope of an
72249 +element class definition extends from immediately after its closing right
72250 +brace to the end of the enclosing scope.
72251 +.PP
72252 +A variant of the elementclass statement makes synonyms for preexisting
72253 +element classes. For example, this statement
72254 +.Rs
72255 +elementclass MyQueue Queue;
72256 +.Re
72257 +makes MyQueue a synonym for Queue.
72258 +'
72259 +.SS "Configuration parameters"
72260 +'
72261 +Compound elements may take configuration parameters, which are expanded
72262 +into the configuration strings of its components. The parameters are named
72263 +at the beginning of the compound element. Each parameter looks like a Perl
72264 +variable\*Ea dollar sign followed by one or more letters, numbers, and
72265 +underscores. For example, this compound element
72266 +.Rs
72267 +{ $a, $b | ... }
72268 +.Re
72269 +takes two configuration parameters, named `$a' and `$b'. Keyword arguments
72270 +are also supported. For example, this compound element
72271 +.Rs
72272 +{ COUNT $count | ... }
72273 +.Re
72274 +takes a COUNT keyword parameter. Mismatched configuration parameters cause
72275 +errors; for example:
72276 +.Rs
72277 +\%{ $a, $b | ... } (1)         // Error: too few arguments
72278 +.br
72279 +\%{ $a, $b | ... } (1, 2, 3)   // Error: too many arguments
72280 +.br
72281 +\%{ COUNT $count | ... } (1)   // Error: missing 'COUNT' parameter
72282 +.Re
72283 +The special keyword `__REST__' matches any additional arguments supplied to
72284 +the compound element. For example:
72285 +.Rs
72286 +\%{ $a, COUNT $count, __REST__ $rest | ... } 
72287 +.br
72288 +\%           (1, 2, COUNT 3, FOO 4)
72289 +.Re
72290 +This compound element will be expanded with `$a' set to `1', `$count' set
72291 +to `3', and `$rest' set to `2, FOO 4'. 
72292 +.PP
72293 +In a compound element definition, all positional parameters must precede
72294 +any keyword parameters, and `__REST__', if present, must appear last of
72295 +all.
72296 +.PP
72297 +As the compound is expanded, its components' configuration strings are
72298 +searched for references to the parameters. Any such references are replaced
72299 +with the supplied arguments. For example, this code:
72300 +.Rs
72301 +\&... -> { $a | input -> 
72302 +.br
72303 +\%           A(1, $a, 3) -> output } (100) -> ...
72304 +.Re
72305 +expands to this:
72306 +.Rs
72307 +\&... -> A(1, 100, 3) -> ...
72308 +.Re
72309 +You can avoid substitution by putting the dollar sign inside single quotes.
72310 +.PP
72311 +Use braces, like `${a}', to avoid including following letters in a variable
72312 +name. Click also supports the shell-like `${VAR-DEFAULT}' syntax, which
72313 +substitutes the value of `$VAR', or `DEFAULT' if that variable was not set.
72314 +See also PARAMETER DEFINITIONS, below.
72315 +'
72316 +.SS "Overloading"
72317 +'
72318 +A single compound element may contain multiple overloaded definitions
72319 +separated from one another by two vertical bars "\f(CW||\fR". Different
72320 +definitions may have different numbers of input ports, different numbers of
72321 +output ports, or different sets of configuration arguments. For example,
72322 +this extended MyQueue compound element takes an optional capacity argument,
72323 +just like Queue itself:
72324 +.Rs
72325 +elementclass MyQueue {
72326 +.br
72327 +\%  input -> Queue -> Shaper(1000) -> output;
72328 +.br
72329 +\%||
72330 +.br
72331 +\%  $cap | input -> Queue($cap)
72332 +.br
72333 +\%               -> Shaper(1000) -> output;
72334 +.br
72335 +}
72336 +.Re
72337 +For each use of an overloaded compound element, Click will choose the first
72338 +definition that matches the provided number of input ports, number of
72339 +output ports, and configuration arguments. It is an error if no definition
72340 +matches these properties exactly.
72341 +.PP
72342 +It is also possible to extend an existing element class with new overloaded
72343 +definitions with "\f(CW...\fR". For example, this definition introduces a
72344 +two-argument version of Queue:
72345 +.Rs
72346 +elementclass Queue {
72347 +.br
72348 +\%  $cap, $rate | input -> Queue($cap)
72349 +.br
72350 +\%                -> Shaper($rate) -> output;
72351 +.br
72352 +\%|| ...
72353 +.br
72354 +}
72355 +.Re
72356 +(The ellipsis in this example must be typed verbatim.) The overloadings
72357 +visible at a given declaration are those that lexically precede that
72358 +declaration. For example, the following example is an error since the
72359 +two-argument version of Test is not visible at the declaration where it is
72360 +required:
72361 +.Rs
72362 +elementclass Test { $a | /* nothing */ }
72363 +.br
72364 +test :: Test(1, 2);
72365 +.br
72366 +elementclass Test { $a, $b | /* nothing */ || ... }
72367 +.Re
72368 +'
72369 +.SH "CONNECTION TUNNELS"
72370 +'
72371 +A
72372 +.I connection tunnel
72373 +is a pair of element names that acts as a tunnel for connections.
72374 +Consider a tunnel
72375 +.RI ` p1 " -> " p2 '.
72376 +Then connections to 
72377 +.I p1
72378 +pass through the tunnel and are transformed, at compile time, into
72379 +connections from
72380 +.IR p2 .
72381 +For example, this code, with a tunnel,
72382 +.Rs
72383 +connectiontunnel p1 -> p2;
72384 +.br
72385 +a -> p1; p2 -> b;
72386 +.Re
72387 +is transformed into this code, without it:
72388 +.Rs
72389 +a -> b;
72390 +.Re
72391 +The connections to p1's 
72392 +.IR i th
72393 +input port have been expanded into connections from p2's
72394 +.IR i th
72395 +output port. Thus, a is connected to b in the result because a was
72396 +connected to p1's input port 0, and p2's output port 0 was connected to b.
72397 +Here is a slightly more complicated example involving several connections
72398 +and different port numbers:
72399 +.Rs
72400 +connectiontunnel p1 -> p2;
72401 +.br
72402 +a -> p1; b -> p1; p2 -> c;
72403 +.br
72404 +a [1] -> [1] p1; p2 [1] -> Discard;
72405 +.Re
72406 +is transformed into
72407 +.Rs
72408 +a -> c; b -> c;
72409 +.br
72410 +a [1] -> Discard;
72411 +.Re
72412 +And one final example:
72413 +.Rs
72414 +connectiontunnel p1 -> p2;
72415 +.br
72416 +a -> p1; p2 -> b; p2 -> c;
72417 +.Re
72418 +becomes
72419 +.Rs
72420 +a -> b; a -> c;
72421 +.Re
72422 +.PP
72423 +Connection tunnels can be connected to each other. The system will
72424 +recursively expand the tunnels until none of them remain. (Circular
72425 +connections are silently ignored.) For example:
72426 +.Rs
72427 +connectiontunnel p1 -> p2, q1 -> q2;
72428 +.br
72429 +a -> p1; p2 -> q1; q2 -> b;
72430 +.Re
72431 +becomes
72432 +.Rs
72433 +a -> b;
72434 +.Re
72435 +.PP
72436 +An identifier that has been used for a connection tunnel cannot be used for
72437 +an element, and vice versa. However, an identifier can be used for two
72438 +tunnels, once as the input end and once as the output end. For example:
72439 +.Rs
72440 +connectiontunnel p -> p/input, p/output -> p;
72441 +.br
72442 +a -> p; // using `p' as input
72443 +.br
72444 +p/input -> Counter -> p/output; 
72445 +.br
72446 +p -> b; // using `p' as output
72447 +.Re
72448 +becomes
72449 +.Rs
72450 +a -> Counter -> b;
72451 +.Re
72452 +Compound elements use this mechanism.
72453 +'
72454 +.SH "REQUIREMENTS"
72455 +'
72456 +A configuration can say that it depends on optional packages by using the
72457 +`require' statement. Its argument is a comma-separated list of package
72458 +names:
72459 +.Rs
72460 +require(fastclassifier, specialcode);
72461 +.Re
72462 +Installation programs can use the package names to find and upload any
72463 +necessary package code. Furthermore, the required package names are checked
72464 +against a list of currently active packages when a configuration is
72465 +installed. If any required packages are unavailable, an error is reported.
72466 +'
72467 +.SH "PARAMETER DEFINITIONS"
72468 +'
72469 +Parameters are defined using the `define' statement. Its argument is a
72470 +comma-separated list of pairs, each pair consisting of a configuration
72471 +variable and a value:
72472 +.Rs
72473 +define($DEVNAME eth0, $COUNT 1);
72474 +.Re
72475 +This sets the `$DEVNAME' parameter to `eth0' and the `$COUNT' parameter to
72476 +`1'. Definitions are lexically scoped, so definitions inside a compound
72477 +element are not visible outside it. However, all definitions in a given
72478 +scope take place simultaneously, regardless of their ordering. The
72479 +following two configurations have the same effect:
72480 +.Rs
72481 +1) define($a 2); Message($a)
72482 +.br
72483 +2) Message($a); define($a 2)
72484 +.Re
72485 +It is an error to define a parameter more than once in any single
72486 +scope. Click programs such as
72487 +.M click 1
72488 +and
72489 +.M click-install 1
72490 +allow parameters to specified on the command line; these override any
72491 +global parameters with the same names.
72492 +'
72493 +.SH "LEXICAL ISSUES"
72494 +'
72495 +Click identifiers are nonempty sequences of letters, numbers, underscores
72496 +`_', at-signs `@', and slashes `/' that do not begin or end with a slash.
72497 +The system uses `@' and `/' for special purposes: `@' in constructed names
72498 +for anonymous elements and prefixes, and `/' in names for components of
72499 +compound elements. Users are discouraged from using these characters in
72500 +their own identifiers. Identifiers are case-sensitive. No component of an
72501 +identifier may consist solely of numbers; for example, `1/x' is an illegal
72502 +identifier.
72503 +.PP
72504 +The keywords `connectiontunnel', `elementclass', `require', and `define'
72505 +may not be used as identifiers. The normal identifiers `input' and `output'
72506 +have special meaning inside compound element definitions.
72507 +.PP
72508 +The following characters and multi-character sequences are single Click
72509 +tokens:
72510 +.RS
72511 +->\~\~::\~\~;\~\~,\~\~(\~\~)\~\~[\~\~]\~\~{\~\~}\~\~|\~\~||\~\~...
72512 +.RE
72513 +.PP
72514 +Whitespace (using the C definition) and comments separate Click tokens.
72515 +Click uses C++-style comments: from `//' to the end of the line, or from
72516 +`/*' to the next `*/'. Either form of comment terminates an identifier, so
72517 +this Click fragment
72518 +.RS
72519 +an/identifier/with/slashes//too/many
72520 +.RE
72521 +has an identifier `an/identifier/with/slashes' and a comment
72522 +`//too/many'. No identifier contains two consecutive slashes.
72523 +.PP
72524 +Parameters, which are used in compound elements, look like Perl variables. A
72525 +parameter consists of a dollar sign `$' followed by one or more letters,
72526 +numbers, and underscores.
72527 +.PP
72528 +A configuration string starts immediately following a left parenthesis `(',
72529 +and continues up to the next unbalanced right parenthesis `)'. However,
72530 +parentheses inside single or double quotes or comments do not affect
72531 +balancing. Here are several examples; in each case, the configuration
72532 +string consists of the text between the `#' marks (including the `#' marks
72533 +themselves).
72534 +.Rs
72535 +C1(#simple string#)
72536 +.br
72537 +C2(#string with (balanced parens)#)
72538 +.br
72539 +C3(#string with ")quoted" paren#)
72540 +.br
72541 +C4(#// end-of-line comment)
72542 +.br
72543 +\%   still going!#)
72544 +.br
72545 +C5(#/* slash-star comment) */ and backslash \e#)
72546 +.Re
72547 +.PP
72548 +A Click program may contain C preprocessor-style line directives. These
72549 +lines start with `#' and have the form `# \fIlinenumber\fP
72550 +"\fIfilename\fP"' or `#line \fIlinenumber\fP "\fIfilename\fP"'; they change
72551 +the filenames and line numbers used for error messages. The filename
72552 +portion is optional. Line directives are not recognized inside
72553 +configuration strings.
72554 +'
72555 +.SH "ARCHIVES"
72556 +Many Click programs also accept
72557 +.M ar 1
72558 +archives as configurations. The archive must contain a member called
72559 +`config', which is treated as a Click-language configuration. The archive
72560 +may also contain package code required by the configuration. The
72561 +.M click-install 1
72562 +and
72563 +.M click 1
72564 +programs will decompose the archive and install any package code before
72565 +installing the configuration itself. The
72566 +.M click.o 8
72567 +kernel module will not accept archives; use
72568 +.M click-install 1 .
72569 +'
72570 +.SH "BNF GRAMMAR"
72571 +'
72572 +.IR stmts " ::= " stmts " " stmt " | " empty
72573 +.br
72574 +.IR stmt " ::= " declaration " | " connection
72575 +.br
72576 +.RI "    | " tunnelstmt " | " elementclassstmt " | " requirestmt
72577 +.br
72578 +.RI "    | " definestmt " | "";"""
72579 +.br
72580 +.IR declaration " ::= " element-names " ""::"" "
72581 +.IR class " " opt-config
72582 +.br
72583 +.IR element-names " ::= " element-name
72584 +.br
72585 +.RI "    | " element-names " "","" " element-name
72586 +.br
72587 +.IR element-name " ::= identifier
72588 +.\" | ""^"" identifier
72589 +.br
72590 +.IR class " ::= identifier | ""{"" " compounds " ""}"""
72591 +.br
72592 +.RI "    | ""{"" " compounds " ""||"" ""..."" ""}"""
72593 +.br
72594 +.IR compounds " ::= " compound " | " compounds " ""||"" " compound
72595 +.br
72596 +.IR compound " ::= " stmts " | " opt-formals " ""|"" " stmts
72597 +.br
72598 +.IR opt-formals " ::= " formals " | " empty
72599 +.br
72600 +.IR formals " ::= " formal " | " formals " "","" " formal
72601 +.br
72602 +.IR formal " ::= parameter | identifier parameter" 
72603 +.br
72604 +.IR connection " ::= " element " " opt-port " ""->"" " opt-port " " conntail
72605 +.br
72606 +.IR conntail " ::= " element " | " connection
72607 +.br
72608 +.IR element " ::= " element-name
72609 +.br
72610 +.RI "    | " element-name " ""::"" " class " " opt-config
72611 +.br
72612 +.RI "    | " class " " opt-config
72613 +.br
72614 +.IR opt-config " ::= ""("" configstring "")"" | " empty
72615 +.br
72616 +.IR opt-port " ::= ""["" portnumber ""]"" | " empty
72617 +.br
72618 +.IR tunnelstmt " ::= ""connectiontunnel"" identifier ""->"" identifier"
72619 +.br
72620 +.IR elementclassstmt " ::= ""elementclass"" identifier " class
72621 +.br
72622 +.IR requirestmt " ::= ""require"" ""("" configstring "")"""
72623 +.br
72624 +.IR definestmt " ::= ""define"" ""("" configstring "")"""
72625 +.br
72626 +.IR empty " ::= "
72627 +'
72628 +.SH "SEE ALSO"
72629 +.M click 1 ,
72630 +.M click-install 1 ,
72631 +.M click.o 8
72632 +'
72633 +.SH AUTHOR
72634 +.na
72635 +Eddie Kohler, kohler@cs.ucla.edu
72636 +.br
72637 +http://www.pdos.lcs.mit.edu/click/
72638 +'
72639 diff -Nurb click-1.6.0/inst/share/man/man7/elementdoc.7 click-1.6.0-27/inst/share/man/man7/elementdoc.7
72640 --- click-1.6.0/inst/share/man/man7/elementdoc.7        1969-12-31 19:00:00.000000000 -0500
72641 +++ click-1.6.0-27/inst/share/man/man7/elementdoc.7     2009-02-11 14:08:51.000000000 -0500
72642 @@ -0,0 +1,526 @@
72643 +.\" -*- mode: nroff -*-
72644 +.ds V 1.1
72645 +.ds D 29/Apr/2000
72646 +.ds E " \-\- 
72647 +.if t .ds E \(em
72648 +.de Sp
72649 +.if n .sp
72650 +.if t .sp 0.4
72651 +..
72652 +.de Es
72653 +.Sp
72654 +.RS 5
72655 +.nf
72656 +..
72657 +.de Ee
72658 +.fi
72659 +.RE
72660 +.PP
72661 +..
72662 +.de Rs
72663 +.RS
72664 +.Sp
72665 +..
72666 +.de Re
72667 +.Sp
72668 +.RE
72669 +..
72670 +.de M
72671 +.IR "\\$1" "(\\$2)\\$3"
72672 +..
72673 +.de RM
72674 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
72675 +..
72676 +.de K
72677 +.BR "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
72678 +..
72679 +.de RK
72680 +.RB "\\$1" "\\$2" "\\$3" "\\$4" "\\$5" "\\$6"
72681 +..
72682 +.TH ELEMENTDOC 7 "\*D" "Version \*V"
72683 +.SH NAME
72684 +elementdoc \- how to write Click element documentation
72685 +'
72686 +.SH DESCRIPTION
72687 +Documentation for a Click element is automatically generated from formatted
72688 +comments in its header files. This manual page describes how to write one
72689 +of these formatted comments.
72690 +.PP
72691 +Click element documentation syntax is based on Perl-style PODs; see
72692 +.M perlpod 1
72693 +for more information. However, not all POD constructs are usable in element
72694 +documentation at the moment; and Click element documentation is
72695 +line-oriented, not paragraph-oriented.
72696 +'
72697 +.SH "COMMAND QUICK REFERENCE"
72698 +These are the sectioning commands and the sections they correspond to,
72699 +listed in the conventional order.
72700 +.RS 5
72701 +.PP
72702 +.PD 0
72703 +.IP "\f(CW=c\fR" 15
72704 +SYNOPSIS
72705 +.IP "\f(CW=s\fR \fIcategory\fR" 15
72706 +NAME (one-line summary)
72707 +.IP "\f(CW=io\fR" 15
72708 +INPUTS AND OUTPUTS
72709 +.IP "\f(CW=processing\fR" 15
72710 +PROCESSING TYPE
72711 +.IP "\f(CW=d\fR" 15
72712 +DESCRIPTION
72713 +.IP "\f(CW=n\fR" 15
72714 +NOTES
72715 +.IP "\f(CW=e\fR" 15
72716 +EXAMPLES
72717 +.IP "\f(CW=h\fR \fIname\fR \fItype\fR" 15
72718 +ELEMENT HANDLERS
72719 +.IP "\f(CW=a\fR" 15
72720 +SEE ALSO
72721 +.IP "\f(CW=head1\fR \fItext\fR" 15
72722 +other heading
72723 +.PD
72724 +.RE
72725 +.PP
72726 +These are the other commands used in element documentation.
72727 +.RS 5
72728 +.PP
72729 +.PD 0
72730 +.IP "\f(CW=head2\fR \fItext\fR" 15
72731 +subheading
72732 +.IP "\f(CW=over\fR \fIamount\fR" 15
72733 +begin item list
72734 +.IP "\f(CW=item\fR \fItext\fR" 15
72735 +add item
72736 +.IP "\f(CW=back\fR" 15
72737 +end item list
72738 +.IP "\f(CW=for\fR \fIformat\fR" 15
72739 +selective formatting
72740 +.IP "\f(CW=begin\fR \fIformat\fR" 15
72741 +selective formatting
72742 +.IP "\f(CW=end\fR \fIformat\fR" 15
72743 +selective formatting
72744 +.IP "\f(CW=deprecated\fR \fInew-element\fR" 15
72745 +element is deprecated
72746 +.PD
72747 +.RE
72748 +.PP
72749 +These are the formatting commands, used inside ordinary text.
72750 +.RS 5
72751 +.PP
72752 +.PD 0
72753 +.IP "\f(CWB<\fItext\fR\f(CW>\fR" 15
72754 +boldface
72755 +.IP "\f(CWI<\fItext\fR\f(CW>\fR" 15
72756 +italics
72757 +.IP "\f(CWU<\fItext\fR\f(CW>\fR" 15
72758 +underlined (if possible)
72759 +.IP "\f(CWP<\fItext\fR\f(CW>\fR" 15
72760 +plain text (i.e., no automatic links)
72761 +.IP "\f(CWC<\fItext\fR\f(CW>\fR" 15
72762 +code (fixed-width)
72763 +.IP "\f(CWF<\fItext\fR\f(CW>\fR" 15
72764 +filename (italics)
72765 +.IP "\f(CWL<\fItext\fR|\fIlink\fR\f(CW>\fR" 15
72766 +hyperlink
72767 +.IP "\f(CWN<>\fR" 15
72768 +line break
72769 +.IP "\f(CWE<\fIname\fR\f(CW>\fR" 15
72770 +entity
72771 +.IP "\f(CWV<\fItext\fR\f(CW>\fR" 15
72772 +hide text
72773 +.PD
72774 +.RE
72775 +.PP
72776 +And these are the category keywords, used in the summary section to
72777 +categorize elements.
72778 +.RS 5
72779 +.PP
72780 +.PD 0
72781 +.IP "\f(CWbasicsources\fR" 22
72782 +Basic Sources and Sinks
72783 +.IP "\f(CWclassification\fR" 22
72784 +Basic Classification and Selection
72785 +.IP "\f(CWbasictransfer\fR" 22
72786 +Basic Packet Transfer
72787 +.IP "\f(CWcounters\fR" 22
72788 +Counters
72789 +.IP "\f(CWtimestamps\fR" 22
72790 +Timestamps
72791 +.IP "\f(CWbasicmod\fR" 22
72792 +Basic Packet Modification
72793 +.IP "\f(CWstorage\fR" 22
72794 +Packet Storage
72795 +.IP "\f(CWaqm\fR" 22
72796 +Active Queue Management
72797 +.IP "\f(CWscheduling\fR" 22
72798 +Packet Scheduling
72799 +.IP "\f(CWshaping\fR" 22
72800 +Traffic Shaping
72801 +.IP "\f(CWinformation\fR" 22
72802 +Information Elements
72803 +.IP "\f(CWnetdevices\fR" 22
72804 +Network Devices
72805 +.IP "\f(CWcomm\fR" 22
72806 +Host and Socket Communication
72807 +.IP "\f(CWethernet\fR" 22
72808 +Ethernet
72809 +.IP "\f(CWarp\fR" 22
72810 +ARP
72811 +.IP "\f(CWip\fR" 22
72812 +IPv4
72813 +.IP "\f(CWiproute\fR" 22
72814 +IPv4 Routing
72815 +.IP "\f(CWicmp\fR" 22
72816 +ICMP
72817 +.IP "\f(CWnat\fR" 22
72818 +Network Address Translation
72819 +.IP "\f(CWtcp\fR" 22
72820 +TCP
72821 +.IP "\f(CWudp\fR" 22
72822 +UDP
72823 +.IP "\f(CWapp\fR" 22
72824 +Applications
72825 +.IP "\f(CWtraces\fR" 22
72826 +Trace Manipulation
72827 +.IP "\f(CWipmeasure\fR" 22
72828 +TCP/IP Measurement
72829 +.IP "\f(CWaggregates\fR" 22
72830 +Aggregates
72831 +.IP "\f(CWip6\fR" 22
72832 +IPv6
72833 +.IP "\f(CWipsec\fR" 22
72834 +IPsec
72835 +.IP "\f(CWcrc\fR" 22
72836 +CRCs
72837 +.IP "\f(CWpaint\fR" 22
72838 +Paint Annotations
72839 +.IP "\f(CWannotations\fR" 22
72840 +Annotations
72841 +.IP "\f(CWdebugging\fR" 22
72842 +Debugging
72843 +.IP "\f(CWcontrol\fR" 22
72844 +Control
72845 +.IP "\f(CWsmpclick\fR" 22
72846 +Multithreaded Click
72847 +.IP "\f(CWtest\fR" 22
72848 +Regression Tests
72849 +.PD
72850 +.RE
72851 +'
72852 +.SH "COMMENT SYNTAX"
72853 +Each piece of documentation is stored in a single block comment
72854 +`\f(CW/*...*/\fR'. Two kinds of block comment are recognized:
72855 +.PP
72856 +.nf
72857 +    /*
72858 +    =c
72859 +    ElementName(...)
72860 +    ... and so on ...
72861 +    */
72862 +
72863 +    /*
72864 +     * =c
72865 +     * ElementName(...)
72866 +     * ... and so on ...
72867 +     */
72868 +.fi
72869 +.PP
72870 +In the first form, commands and normal text MUST begin in the first column
72871 +of each line. In the second form, commands and normal text MUST begin in
72872 +the fourth column of each line, immediately following the initial star and
72873 +spaces `\f(CW\ *\ \fR'. Indented lines are treated as verbatim text, as in
72874 +POD.
72875 +'
72876 +.SH "COMMANDS"
72877 +Commands are lines that begin with `\f(CW=\fR' and a lower-case letter.
72878 +There are two kinds of commands, those that start new sections and those
72879 +that occur within sections. There is also a set of formatting
72880 +commands\*Efor turning text bold, for example\*Ethat occurs inside normal
72881 +text; they are described in the next section.
72882 +'
72883 +.SS "Section Commands"
72884 +.IP "\f(CW=s\fR [\fIcategory\fR]" 5
72885 +Begin the summary section. This should contain a very short,
72886 +one-line summary of the element's function. For example, for a
72887 +.M Queue n
72888 +element:
72889 +.nf
72890 +   =s storage
72891 +   stores packets in a FIFO queue
72892 +.fi
72893 +The summary text should generally be a verb phrase. 
72894 +.RS 5
72895 +.PP
72896 +The optional \fIcategory\fR specifies one or more element categories into
72897 +which this element fits, separated by commas. Specifying meaningful
72898 +categories helps a lot; documentation tools use categories to divide
72899 +elements into manageable groups. Use existing categories, defined by the
72900 +list of category keywords above in the Command Quick Reference, or create
72901 +your own.
72902 +.RE
72903 +.TP 5
72904 +\f(CW=c\fR
72905 +Begin the synopsis section. This section is mandatory.
72906 +.RS 5
72907 +.PP
72908 +The \f(CW=c\fR section gives the element's name and any of its
72909 +configuration arguments. For example:
72910 +.nf
72911 +   =c
72912 +   IPEncap(PROTOCOL, SADDR, DADDR)
72913 +.fi
72914 +.PP
72915 +Configuration arguments should be specified as all-upper-case words. The
72916 +description section will use those upper-case words to talk about the
72917 +arguments. Use brackets to show that an argument is optional:
72918 +.nf
72919 +   =c
72920 +   UDPIPEncap(SADDR, SPORT, DADDR, DPORT [, CHECKSUM?])
72921 +.fi
72922 +.PP
72923 +Do not use anything more complicated than brackets. If an element has
72924 +complex syntax, either use upper-case words and talk about the syntax more
72925 +in the description section, or give multiple lines:
72926 +.nf
72927 +   =c
72928 +   ControlSocket(tcp, PORTNUMBER [, READONLY?])
72929 +   ControlSocket(unix, PORTNUMBER [, READONLY?])
72930 +.fi
72931 +(`tcp' and `unix' are lowercase because they should be typed verbatim.)
72932 +.RE
72933 +'
72934 +.TP 5
72935 +\f(CW=io\fR
72936 +Begin the inputs and outputs section. This section mentions how many inputs
72937 +and outputs the element has. It is usually quite short; for example:
72938 +.nf
72939 +   =io
72940 +   None
72941 +.fi
72942 +This section is optional, and most elements don't bother to have one; they
72943 +mention inputs and outputs in the description section.
72944 +'
72945 +.TP 5
72946 +\f(CW=processing\fR
72947 +Begin the processing type section. This section mentions the processing
72948 +types of the element's input and output ports. It is usually quite short; for
72949 +example:
72950 +.nf
72951 +   =processing
72952 +   Push inputs, pull outputs
72953 +.fi
72954 +This section is optional. Documentation processing tools will generate a
72955 +\f(CW=processing\fR section from the element's \fBprocessing\fP() method,
72956 +if possible.
72957 +'
72958 +.TP 5
72959 +\f(CW=d\fR
72960 +Begin the description section.
72961 +This section tells how the element should be used. It is usually the
72962 +longest section. When mentioning configuration arguments, use the
72963 +upper-case words given in the \f(CW=c\fR section.
72964 +'
72965 +.TP 5
72966 +\f(CW=n\fR
72967 +Begin the notes section.
72968 +'
72969 +.TP 5
72970 +\f(CW=e\fR
72971 +Begin the examples section.
72972 +'
72973 +.TP 5
72974 +\f(CW=h\fR \fIhandlername\fP \fItype\fP
72975 +Begin a handler description. Use this section to describe any special
72976 +handlers that the element installs. \fIHandlername\fP should be the name of
72977 +the handler, and \fItype\fP its type (either `\f(CWread-only\fR',
72978 +`\f(CWwrite-only\fR', or `\f(CWread/write\fR'). The following text should
72979 +describe that handler. For example:
72980 +.nf
72981 +   =h capacity read/write
72982 +   Returns or sets the queue's capacity.
72983 +.fi
72984 +'
72985 +.TP 5
72986 +\f(CW=a\fR [\fItext\fP]
72987 +Begin the "see also" section. Use this section to mention other relevant
72988 +elements and programs, when appropriate. The more references, the better.
72989 +For example:
72990 +.nf
72991 +   =a RED, FrontDropQueue
72992 +.fi
72993 +The optional \fItext\fP is just part of the body of the section.
72994 +.RS 5
72995 +.PP
72996 +The references in this section should be either manual page references,
72997 +like `\f(CWtcpdump(1)\fR', or text references, like `RFC 959: File Transfer
72998 +Protocol'. However, the first paragraph in the section is special; there,
72999 +you can just give element names without `\f(CW(n)\fP' suffixes.
73000 +.PP
73001 +If one of these references occurs in some other section, it will be
73002 +formatted like a link. For example, in
73003 +.nf
73004 +   =d
73005 +   This element is like Queue.
73006 +   =a Queue
73007 +.fi
73008 +the mention of `\f(CWQueue\fR' in the description section will be formatted
73009 +like a link.
73010 +.RE
73011 +'
73012 +.TP 5
73013 +\f(CW=head1\fR \fIsectionname\fR
73014 +Begin a section other than those listed. \fISectionname\fR is the name of
73015 +the section.
73016 +'
73017 +.SS "Other Commands"
73018 +.TP 5
73019 +\f(CW=head2\fR \fItext\fR
73020 +Produce a subheading with \fItext\fR as the text.
73021 +.TP 5
73022 +\f(CW=over\fR \fIamount\fR
73023 +Begin a list of items that is indented by
73024 +\fIamount\fR characters. (Some translators may ignore \fIamount\fR.)
73025 +.TP 5
73026 +\f(CW=item\fR \fItext\fR
73027 +Add an item to the latest list opened by \f(CW=over\fR. It is illegal to
73028 +use \f(CW=item\fR outside of any \f(CW=over\fR list. The text of the item
73029 +is \fItext\fR. If you are creating a bulleted list, use `\f(CW*\fR' as the
73030 +text; if you are creating a numbered list, use `\f(CW1.\fR', `\f(CW2.\fR',
73031 +and so forth.
73032 +.TP 5
73033 +\f(CW=back\fR
73034 +Close the latest list opened by \f(CW=over\fR.
73035 +.TP 5
73036 +\f(CW=for\fR \fIformat\fR
73037 +'
73038 +Output the next paragraph only when generating documentation in
73039 +\fIformat\fR. Valid \fIformat\fRs include `html', `man', and `roff'. The
73040 +paragraph ends at the next command or blank line, and it consists of text
73041 +in the given format, not element documentation. For example, this code
73042 +includes a picture in HTML mode:
73043 +.nf
73044 +   =for html
73045 +   <p>Here is a pretty picture:
73046 +   <img src="pretty.gif"></p>
73047 +
73048 +   Back to B<normal text> here.
73049 +.fi
73050 +.TP 5
73051 +\f(CW=begin\fR \fIformat\fR ... \f(CW=end\fR \fIformat\fR
73052 +'
73053 +This is like \f(CW=for\fR, but can encompass multiple paragraphs. It
73054 +outputs text in between the \f(CW=begin\fR command and the \f(CW=end\fR
73055 +command only when generating documentation in \fIformat\fR.
73056 +.TP 5
73057 +\f(CW=deprecated\fR \fInew-element\fR
73058 +This command notes that the element has been deprecated in favor of
73059 +\fInew-element\fR. It does not result in any output.
73060 +'
73061 +.SH TEXT
73062 +Each line that doesn't begin with `\f(CW=\fR' and a lower-case letter is
73063 +treated as text. (Unless it starts with a space or tab; see verbatim text,
73064 +below.) This text is formatted nicely, and perhaps even justified. You can
73065 +use several formatting commands inside normal text; they consist of an
73066 +uppercase letter, followed by `\f(CW<\fR', some text, and `\f(CW>\fR'. The
73067 +commands are:
73068 +.TP 10
73069 +\f(CWB<\fItext\fR\f(CW>\fR
73070 +Print \fItext\fR in \fBboldface\fR.
73071 +.TP 10
73072 +\f(CWI<\fItext\fR\f(CW>\fR
73073 +Print \fItext\fR in \fIitalic\fR.
73074 +.TP 10
73075 +\f(CWR<\fItext\fR\f(CW>\fR
73076 +Print \fItext\fR in \fRroman\fR. Useful inside \f(CWB<...>\fR and so forth,
73077 +or to prevent words from being highlighted.
73078 +.TP 10
73079 +\f(CWC<\fItext\fR\f(CW>\fR
73080 +Print \fItext\fR like source code, in a constant-width font.
73081 +.TP 10
73082 +\f(CWF<\fItext\fR\f(CW>\fR
73083 +Print \fItext\fR like a filename. By default, filenames appear in italics.
73084 +.TP 10
73085 +\f(CWL<\fItext\fR|\fIlink\fR\f(CW>\fR
73086 +Print \fItext\fR as a hyperlink with destination \fIlink\fR. This usually
73087 +just comes out as \fItext\fR.
73088 +.TP 10
73089 +\f(CWN<>\fR
73090 +Put a line break here.
73091 +.TP 10
73092 +\f(CWE<\fIname\fR\f(CW>\fR
73093 +'
73094 +Print the HTML-style entity named \fIname\fR. There are six entities:
73095 +\f(CWE<lt>\fR is `<', \f(CWE<gt>\fR is `>', \f(CWE<amp>\fR is `&',
73096 +\f(CWE<solid>\fR is `/', \f(CWE<verbar>\fR is `|', \f(CWE<star>\fR is `*',
73097 +and \f(CWE<eq>\fR is `='. This is useful for typing one of these characters
73098 +in a context that would seem like a command or formatting command.
73099 +.TP 10
73100 +\f(CWV<\fItext\fR\f(CW>\fR
73101 +Do not print \fItext\fR.
73102 +'
73103 +.SH VERBATIM TEXT
73104 +Lines that start with a space or tab character are printed out
73105 +verbatim\*Ethat is, without any changes, and with the line breaks and
73106 +indentation you specified. You can't use formatting commands
73107 +in verbatim text. Verbatim text is useful for showing example code; for
73108 +example:
73109 +.PP
73110 +.nf
73111 +  This code
73112 +     q :: Queue;
73113 +     ... -> RED(5, 50, 0.02) -> q -> ...
73114 +  adds RED dropping to q.
73115 +.fi
73116 +'
73117 +.SH EXAMPLES
73118 +.nf
73119 +/* =c
73120 + * Align(MODULUS, OFFSET)
73121 + * =s modification
73122 + * aligns packet data
73123 + * =d
73124 + * Aligns packet data. Each input packet is aligned so that
73125 + * its first byte is OFFSET bytes off from a MODULUS-byte
73126 + * boundary. This may involve a packet copy.
73127 + *
73128 + * MODULUS I<must> be 2, 4, or 8.
73129 + * =n
73130 + * The click-align(1) tool will insert this element 
73131 + * automatically wherever it is required.
73132 + * =e
73133 + *   ... -> Align(4, 0) -> ...
73134 + * =a AlignmentInfo, click-align(1) */
73135 +.fi
73136 +.PP
73137 +.nf
73138 +/* =c
73139 + * Counter([TYPE])
73140 + * =s measurement
73141 + * measures packet count and rate
73142 + * =d
73143 + * Passes packets unchanged from its input to its output,
73144 + * maintaining statistics information about packet count and
73145 + * rate if TYPE is "packets", or byte count and byte rate if
73146 + * TYPE is "bytes". The default TYPE is "packets".
73147 + * =h count read-only
73148 + * Returns the number of packets/bytes that have passed through.
73149 + * =h rate read-only
73150 + * Returns the recent arrival rate (measured by exponential
73151 + * weighted moving average) in packets/bytes per second.
73152 + * =h reset write-only
73153 + * Resets the count and rate to zero.
73154 + */
73155 +.fi
73156 +'
73157 +.SH "SEE ALSO"
73158 +.M perlpod 1 ,
73159 +.M click 1 ,
73160 +.M click 5
73161 +.SH AUTHOR
73162 +.na
73163 +Eddie Kohler, kohler@cs.ucla.edu
73164 +.br
73165 +Robert Morris, rtm@lcs.mit.edu
73166 +.br
73167 +http://www.pdos.lcs.mit.edu/click/
73168 +'
73169 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
73170 --- click-1.6.0/inst/share/man/man8/click.o.8   1969-12-31 19:00:00.000000000 -0500
73171 +++ click-1.6.0-27/inst/share/man/man8/click.o.8        2009-02-11 14:08:51.000000000 -0500
73172 @@ -0,0 +1,345 @@
73173 +.\" -*- mode: nroff -*-
73174 +.ds V 1.5
73175 +.ds D 15/Dec/2006
73176 +.ds E " \-\- 
73177 +.if t .ds E \(em
73178 +.de Sp
73179 +.if n .sp
73180 +.if t .sp 0.4
73181 +..
73182 +.de Es
73183 +.Sp
73184 +.RS 5
73185 +.nf
73186 +..
73187 +.de Ee
73188 +.fi
73189 +.RE
73190 +.PP
73191 +..
73192 +.de Rs
73193 +.RS
73194 +.Sp
73195 +..
73196 +.de Re
73197 +.Sp
73198 +.RE
73199 +..
73200 +.de M
73201 +.BR "\\$1" "(\\$2)\\$3"
73202 +..
73203 +.de RM
73204 +.RB "\\$1" "\\$2" "(\\$3)\\$4"
73205 +..
73206 +.TH CLICK.O 8 "\*D" "Version \*V"
73207 +.SH NAME
73208 +click.o \- Click kernel module driver for Linux
73209 +'
73210 +.SH DESCRIPTION
73211 +'
73212 +The Click modular router can be compiled as a Linux kernel module, called
73213 +.BR click.o .
73214 +It can steal packets from network devices before Linux gets a chance to
73215 +handle them, send packets directly to devices, and send packets to Linux
73216 +for normal processing.
73217 +.PP
73218 +The right way to load the Click kernel module is with
73219 +.M click-install 1 ". "
73220 +This installs the module if necessary, mounts the Click file system onto
73221 +the /click directory, and installs a configuration, including any required
73222 +packages.  The right way to unload the Click kernel module is with
73223 +.M click-uninstall 1 ". "
73224 +For example:
73225 +.sp
73226 +.nf
73227 +   # click-install config.click
73228 +   # click-uninstall
73229 +.fi
73230 +'
73231 +.SH "HANDLERS"
73232 +The module's API is a filesystem similar to the
73233 +.M proc 5
73234 +filesystem.  Click creates a number of files under /click (or wherever you
73235 +have mounted the filesystem), some read-only and some read/write (writable
73236 +by the superuser). You control the module by writing to these files, which
73237 +are called
73238 +.IR handlers .
73239 +.PP
73240 +.B click-install
73241 +installs a router configuration by writing it to /click/config or
73242 +/click/hotconfig.  The configuration can use most of Click's element classes
73243 +(see
73244 +.M elements n ).
73245 +Several element classes control how the module receives and transmits
73246 +packets:
73247 +.M FromDevice n
73248 +and
73249 +.M PollDevice n
73250 +steal packets from devices before Linux processes them,
73251 +.M ToDevice n
73252 +sends packets directly to devices, and
73253 +.M ToHost n
73254 +sends packets to Linux for normal processing. Removing the module or
73255 +installing a null configuration will restore your machine's default
73256 +networking behavior.
73257 +.PP
73258 +The handlers under /click include:
73259 +.TP 5
73260 +.B /click/config
73261 +Read/write.  Contains a Click-language description (see
73262 +.M click 5 )
73263 +of the most recent router configuration, not including any run-time
73264 +reconfiguration.
73265 +.B click-install
73266 +writes a Click-language router description to this file to
73267 +install a new router configuration.
73268 +'
73269 +.TP
73270 +.B /click/hotconfig
73271 +Write-only. 
73272 +.B 'click-install -h'
73273 +writes a Click-language router description to this file to
73274 +hot-swap install a new router configuration. The new router is installed
73275 +only if it initializes correctly; otherwise, error messages will be
73276 +reported to /click/errors, but the old router will keep working
73277 +without interruption. If the new router initializes successfully, state
73278 +from the old router, such as any packets stored in
73279 +.M Queue n
73280 +elements, will be moved into the new router before it is installed. This
73281 +happens on a per-element basis, and it only works if the new element and
73282 +the old element have the same name. In contrast,
73283 +/click/config always throws away the old router.
73284 +'
73285 +.TP
73286 +.B /click/errors
73287 +Read-only. Errors reported by the Click router since the last
73288 +reconfiguration (that is, the last write to /click/config or
73289 +/click/hotconfig). Errors are also printed to the system log. Only the most
73290 +recent 2-4KB of error messages are saved in this file.
73291 +'
73292 +.TP
73293 +.B /click/messages
73294 +Read-only. All messages printed by the Click router since the last
73295 +reconfiguration (that is, the last write to /click/config or
73296 +/click/hotconfig). This includes messages generated by Print, among
73297 +others. Messages are also printed to the system log. Only the most recent
73298 +2-4KB of messages are saved in this file.
73299 +'
73300 +.TP
73301 +.B /click/classes
73302 +Read-only. The primitive element classes supported by the router, listed
73303 +one per line.
73304 +'
73305 +.TP
73306 +.B /click/list
73307 +Read-only. The names of the elements in the current router configuration,
73308 +listed one per line. The first line is an integer: the number of elements.
73309 +'
73310 +.TP
73311 +.B /click/flatconfig
73312 +Read-only. A Click-language description of the current router
73313 +configuration, including the effects of any run-time reconfiguration. All
73314 +element declarations come first, then all connections. Compound elements
73315 +are expanded into their primitive components.
73316 +'
73317 +.TP
73318 +.B /click/packages
73319 +Read-only. The packages that are currently linked to the Click module,
73320 +listed one per line.
73321 +'
73322 +.TP
73323 +.B /click/requirements
73324 +Read-only. The packages required by the current configuration, listed one
73325 +per line.
73326 +'
73327 +.TP
73328 +.B /click/cycles, /click/meminfo
73329 +Read-only. Cycle count and memory usage statistics.
73330 +'
73331 +.TP
73332 +.B /click/threads
73333 +Read-only. The PIDs of any currently running Click kernel threads, listed
73334 +one per line.
73335 +'
73336 +.TP
73337 +.B /click/priority
73338 +Read/write. The CPU priority for Click kernel threads. Lower values have
73339 +higher priority.
73340 +'
73341 +.TP
73342 +.B /click/version
73343 +Read-only. The kernel module's version number.
73344 +'
73345 +.PP
73346 +When compiled with --enable-adaptive, Click provides three additional
73347 +handlers:
73348 +'
73349 +.TP
73350 +.B /click/min_cpu_share
73351 +Read/write. The minimum fraction of CPU time Click will use, even if it has
73352 +no work to do. Expressed as a real number between 0.001 and 0.999. Default
73353 +is 0.005. Raising this number will help Click in polling mode respond more
73354 +quickly to network events.
73355 +'
73356 +.TP
73357 +.B /click/max_cpu_share
73358 +Read/write. The maximum fraction of CPU time Click will use, no matter how
73359 +much work it has to do. Expressed as a real number between 0.001 and 0.999.
73360 +Default is 0.8. Lowering this number will help user-level programs make
73361 +progress, even under high network load.
73362 +'
73363 +.TP
73364 +.B /click/cpu_share
73365 +Read-only. The fraction of CPU time Click is currently using, expressed as
73366 +a real number between 0 and 1.
73367 +'
73368 +.PP
73369 +When compiled with --enable-kassert, Click provides one additional
73370 +handler:
73371 +'
73372 +.TP
73373 +.B /click/assert_stop
73374 +Read/write. A Boolean value. If true, then Click will attempt to stop the
73375 +running router, if any, if an assertion fails. Default is false.
73376 +'
73377 +.SS "Element directories"
73378 +'
73379 +Every element in the current router configuration has a directory under
73380 +/click. You can access the directory by number or element name. The
73381 +.IR i th
73382 +element in /click/list has directory
73383 +.RI `/click/ i ',
73384 +and if the element is named
73385 +.IR n ,
73386 +that directory can be accessed as
73387 +.RI `/click/ n '.
73388 +This works even if the name contains slashes 
73389 +.RB ( click.o
73390 +creates directories for each name component). However, if an element name
73391 +conflicts with a handler name, the handler is preferred. Thus, if you call
73392 +an element "config", you will be able to access that element's handlers
73393 +only via its number directory.
73394 +.PP
73395 +Handlers in these element directories include:
73396 +'
73397 +.TP 5
73398 +.BI /click/xxx/class
73399 +Read-only. The element's class.
73400 +.TP
73401 +.BI /click/xxx/name
73402 +Read-only. The element's name.
73403 +.TP
73404 +.BI /click/xxx/config
73405 +Read/write if the element supports run-time reconfiguration; otherwise
73406 +read-only. The element's current configuration. Writing to this file (if it
73407 +is writable) causes the element to reconfigure itself on the fly. If the
73408 +reconfiguration fails, the element's old configuration is used instead.
73409 +.TP
73410 +.BI /click/xxx/ports
73411 +Read-only. Describes the element's input and output ports: how many there
73412 +are, their processing type, and (for pull inputs and push outputs) what
73413 +they are connected to.
73414 +.TP
73415 +.BI /click/xxx/handlers
73416 +Read-only. Lists the element's handlers, one per line. Each line has the
73417 +handler name and, after a tab, a permissions word. The permissions word is
73418 +currently "r" (read-only), "w" (write-only), or "rw" (read/write).
73419 +'
73420 +.PP
73421 +Elements that have associated tasks often provide these two additional
73422 +handlers:
73423 +'
73424 +.TP 5
73425 +.BI /click/xxx/scheduled
73426 +Read-only. A Boolean value: "true" if the element is currently on the task
73427 +list, "false" if it is not.
73428 +.TP
73429 +.BI /click/xxx/tickets
73430 +Read/write. Returns or sets the element's tickets, an integer that
73431 +influences task scheduling priority. The more tickets a task has, the more
73432 +often it will be scheduled relative to other tasks.
73433 +'
73434 +.PP
73435 +Particular elements may add additional handlers to their directories. For
73436 +example, RED elements (see
73437 +.M RED n )
73438 +add read/write
73439 +.BR min_thresh ", " max_thresh ", and " max_p
73440 +files representing RED parameters, and Counter elements (see
73441 +.M Counter n )
73442 +provide read-only
73443 +.BR count " and " rate
73444 +files to report packet counts and the recent rate.
73445 +.PP
73446 +The subdirectories and generic files are always created, but
73447 +element-specific files are created only if the router configuration was
73448 +initialized successfully.
73449 +'
73450 +.SH "MANUAL LOADING"
73451 +You almost certainly should load Click using 
73452 +.M click-install 1 ". "
73453 +Nevertheless, the manual loading steps are as follows.
73454 +.TP 3
73455 +1.
73456 +Load the
73457 +.B proclikefs
73458 +module with
73459 +.M insmod 8 :
73460 +"/sbin/insmod proclikefs.ko". This module takes charge of the Click
73461 +filesystem, allowing you to safely unload the Click module even if
73462 +user-level programs have Click control files open. 
73463 +.TP
73464 +2.
73465 +Load the
73466 +.B click
73467 +module with
73468 +.BR insmod :
73469 +"/sbin/insmod click.ko".
73470 +.TP
73471 +3.
73472 +Mount the Click filesystem on a directory using
73473 +.M mount 8 ". "
73474 +The usual choice is /click: "mount -t click none /click".  The Click kernel
73475 +module installs a symbolic link from /proc/click to /click.
73476 +.TP
73477 +4.
73478 +Install a configuration by writing it to /click/config:
73479 +"cat CONFIGFILE > /click/config", for example.
73480 +.LP
73481 +To uninstall Click without
73482 +.M click-uninstall 1 ,
73483 +kill the current router by installing an empty configuration ("echo >
73484 +/click/config"), unload any element packages, and finally
73485 +.M rmmod 8
73486 +the "click" module.
73487 +'
73488 +.SH "BUGS"
73489 +If you get an unaligned access error, try running your configuration
73490 +through
73491 +.M click-align 1
73492 +before installing it.
73493 +'
73494 +.SH "SEE ALSO"
73495 +.M click 1 ,
73496 +.M click-align 1 ,
73497 +.M click-install 1 ,
73498 +.M click-uninstall 1 ,
73499 +.M insmod 1 ,
73500 +.M rmmod 1 ,
73501 +.M click 5 ,
73502 +.M elements n ,
73503 +.M FromDevice n ,
73504 +.M PollDevice n ,
73505 +.M ToDevice n ,
73506 +.M FromHost n ,
73507 +.M ToHost n ,
73508 +.M Queue n
73509 +'
73510 +.SH AUTHOR
73511 +.na
73512 +Eddie Kohler, kohler@cs.ucla.edu
73513 +.br
73514 +Robert Morris, rtm@lcs.mit.edu
73515 +.br
73516 +http://www.pdos.lcs.mit.edu/click/
73517 +'
73518 diff -Nurb click-1.6.0/inst/share/man/mann/ARPFaker.n click-1.6.0-27/inst/share/man/mann/ARPFaker.n
73519 --- click-1.6.0/inst/share/man/mann/ARPFaker.n  1969-12-31 19:00:00.000000000 -0500
73520 +++ click-1.6.0-27/inst/share/man/mann/ARPFaker.n       2009-02-11 14:08:51.000000000 -0500
73521 @@ -0,0 +1,50 @@
73522 +.\" -*- mode: nroff -*-
73523 +.\" Generated by 'click-elem2man' from '../elements/ethernet/arpfaker.hh'
73524 +.de M
73525 +.IR "\\$1" "(\\$2)\\$3"
73526 +..
73527 +.de RM
73528 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73529 +..
73530 +.TH "ARPFAKER" n "11/Feb/2009" "Click"
73531 +.SH "NAME"
73532 +ARPFaker \- Click element;
73533 +periodically generates an ARP reply
73534 +.SH "SYNOPSIS"
73535 +\fBARPFaker\fR(DSTIP, DSTETH, SRCIP, SRCETH)
73536 +
73537 +\fBPorts\fR: no inputs, 1 output
73538 +.br
73539 +\fBProcessing\fR: push
73540 +.br
73541 +\fBPackage\fR: ethernet (core)
73542 +.br
73543 +.SH "DESCRIPTION"
73544 +Every 10 seconds,
73545 +sends an ARP "reply" packet to DSTIP/DSTETH claiming that SRCIP has ethernet
73546 +address SRCETH. Generates the ethernet header as well as the
73547 +ARP header.
73548 +.PP
73549 +
73550 +.SH "EXAMPLES"
73551 +Sends ARP packets to 18.26.4.1 (with ether addr 0:e0:2b:b:1a:0)
73552 +claiming that 18.26.4.99's ethernet address is 00:a0:c9:9c:fd:9c.
73553 +.PP
73554 +.nf
73555 +\&  ARPFaker(18.26.4.1, 0:e0:2b:b:1a:0, 18.26.4.99, 00:a0:c9:9c:fd:9c)
73556 +\&     -> ToDevice(eth0);
73557 +.fi
73558 +.PP
73559 +
73560 +
73561 +
73562 +.SH "NOTES"
73563 +You probably want to use 
73564 +.M ARPResponder "n" 
73565 +rather than \fBARPFaker\fR.
73566 +.PP
73567 +
73568 +.SH "SEE ALSO"
73569 +.M ARPQuerier n ,
73570 +.M ARPResponder "n" 
73571 +
73572 diff -Nurb click-1.6.0/inst/share/man/mann/ARPPrint.n click-1.6.0-27/inst/share/man/mann/ARPPrint.n
73573 --- click-1.6.0/inst/share/man/mann/ARPPrint.n  1969-12-31 19:00:00.000000000 -0500
73574 +++ click-1.6.0-27/inst/share/man/mann/ARPPrint.n       2009-02-11 14:08:51.000000000 -0500
73575 @@ -0,0 +1,45 @@
73576 +.\" -*- mode: nroff -*-
73577 +.\" Generated by 'click-elem2man' from '../elements/ethernet/arpprint.hh'
73578 +.de M
73579 +.IR "\\$1" "(\\$2)\\$3"
73580 +..
73581 +.de RM
73582 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73583 +..
73584 +.TH "ARPPRINT" n "11/Feb/2009" "Click"
73585 +.SH "NAME"
73586 +ARPPrint \- Click element;
73587 +pretty-prints ARP packets a la tcpdump
73588 +.SH "SYNOPSIS"
73589 +\fBARPPrint\fR([TAG, \fIKEYWORDS\fR])
73590 +
73591 +\fBPorts\fR: 1 input, 1 output
73592 +.br
73593 +\fBProcessing\fR: agnostic
73594 +.br
73595 +\fBPackage\fR: ethernet (core)
73596 +.br
73597 +.SH "DESCRIPTION"
73598 +Expects ARP packets as input.  
73599 +.PP
73600 +Prints out ARP packets in a human-readable tcpdump-like format, preceded by
73601 +the TAG text.
73602 +.PP
73603 +Keyword arguments are:
73604 +.PP
73605 +
73606 +
73607 +.IP "TIMESTAMP" 2
73608 +Boolean. Determines whether to print each packet's timestamp in seconds since
73609 +1970. Default is true.
73610 +.IP "" 2
73611 +.IP "OUTFILE" 2
73612 +String. Only available at user level. Print information to the file specified
73613 +by OUTFILE instead of standard error.
73614 +.IP "" 2
73615 +.PP
73616 +
73617 +.SH "SEE ALSO"
73618 +.M Print n ,
73619 +.M CheckARPHeader "n" 
73620 +
73621 diff -Nurb click-1.6.0/inst/share/man/mann/ARPQuerier.n click-1.6.0-27/inst/share/man/mann/ARPQuerier.n
73622 --- click-1.6.0/inst/share/man/mann/ARPQuerier.n        1969-12-31 19:00:00.000000000 -0500
73623 +++ click-1.6.0-27/inst/share/man/mann/ARPQuerier.n     2009-02-11 14:08:51.000000000 -0500
73624 @@ -0,0 +1,119 @@
73625 +.\" -*- mode: nroff -*-
73626 +.\" Generated by 'click-elem2man' from '../elements/ethernet/arpquerier.hh'
73627 +.de M
73628 +.IR "\\$1" "(\\$2)\\$3"
73629 +..
73630 +.de RM
73631 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73632 +..
73633 +.TH "ARPQUERIER" n "11/Feb/2009" "Click"
73634 +.SH "NAME"
73635 +ARPQuerier \- Click element;
73636 +encapsulates IP packets in Ethernet headers found via ARP
73637 +.SH "SYNOPSIS"
73638 +\fBARPQuerier\fR(IP, ETH, \fIkeywords\fR)
73639 +.br
73640 +\fBARPQuerier\fR(NAME, \fIkeywords\fR)
73641 +
73642 +\fBPorts\fR: 2 inputs, 1-2 outputs
73643 +.br
73644 +\fBProcessing\fR: push
73645 +.br
73646 +\fBPackage\fR: ethernet (core)
73647 +.br
73648 +.SH "DESCRIPTION"
73649 +Handles most of the ARP protocol. Argument IP should be
73650 +this host's IP address, and ETH should be this host's
73651 +Ethernet address. (In
73652 +the one-argument form, NAME should be shorthand for
73653 +both an IP and an Ethernet address; see 
73654 +.M AddressInfo n .)
73655 +.PP
73656 +Packets arriving on input 0 should be IP packets, and must have their
73657 +destination address annotations set.
73658 +If an Ethernet address is already known
73659 +for the destination, the IP packet is wrapped in an Ethernet
73660 +header and sent to output 0. Otherwise the IP packet is saved and
73661 +an ARP query is sent instead. If an ARP response arrives
73662 +on input 1 for an IP address that we need, the mapping is
73663 +recorded and any saved IP packets are sent.
73664 +.PP
73665 +The ARP reply packets on input 1 should include the Ethernet header.
73666 +.PP
73667 +\fBARPQuerier\fR may have one or two outputs. If it has two, then ARP queries
73668 +are sent to the second output.
73669 +.PP
73670 +\fBARPQuerier\fR will not send queries for packets addressed to 0.0.0.0,
73671 +255.255.255.255, or, if specified, any BROADCAST address.  Packets addressed
73672 +to 0.0.0.0 are dropped; packets for broadcast addresses are forwarded with
73673 +destination Ethernet address FF:FF:FF:FF:FF:FF.
73674 +.PP
73675 +Keyword arguments are:
73676 +.PP
73677 +
73678 +
73679 +.IP "CAPACITY" 8
73680 +Unsigned integer.  The maximum number of saved IP packets the element will
73681 +hold at a time.  Default is 2048.  Note that, unlike the number of packets,
73682 +the total number of ARP entries the element will hold is currently unlimited.
73683 +.IP "" 8
73684 +.IP "BROADCAST" 8
73685 +IP address.  Local broadcast IP address.  Packets sent to this address will be
73686 +forwarded to Ethernet address FF:FF:FF:FF:FF:FF.  Defaults to the local
73687 +broadcast address that can be extracted from the IP address's corresponding
73688 +prefix, if any.
73689 +.IP "" 8
73690 +.PP
73691 +
73692 +.SH "EXAMPLES"
73693 +
73694 +.nf
73695 +\&   c :: Classifier(12/0806 20/0002, 12/0800, ...);
73696 +\&   a :: ARPQuerier(18.26.4.24, 00:00:C0:AE:67:EF);
73697 +\&   c[0] -> a[1];
73698 +\&   c[1] -> ... -> a[0];
73699 +\&   a[0] -> ... -> ToDevice(eth0);
73700 +.fi
73701 +.PP
73702 +
73703 +
73704 +
73705 +.SH "NOTES"
73706 +If a host has multiple interfaces, it will need multiple
73707 +instances of \fBARPQuerier\fR.
73708 +.PP
73709 +\fBARPQuerier\fR uses packets' destination IP address annotations, and can destroy
73710 +their next packet annotations.
73711 +.PP
73712 +\fBARPQuerier\fR will send at most 10 queries a second for any IP address.
73713 +.PP
73714 +
73715 +.SH "ELEMENT HANDLERS"
73716 +
73717 +
73718 +
73719 +.IP "\fBipaddr\fR (read/write)" 5
73720 +Returns or sets the \fBARPQuerier\fR's source IP address.
73721 +.IP "" 5
73722 +.IP "\fBtable\fR (read-only)" 5
73723 +Returns a textual representation of the ARP table.
73724 +.IP "" 5
73725 +.IP "\fBstats\fR (read-only)" 5
73726 +Returns textual statistics (queries and drops).
73727 +.IP "" 5
73728 +.IP "\fBqueries\fR (read-only)" 5
73729 +Returns the number of queries sent.
73730 +.IP "" 5
73731 +.IP "\fBresponses\fR (read-only)" 5
73732 +Returns the number of responses received.
73733 +.IP "" 5
73734 +.IP "\fBdrops\fR (read-only)" 5
73735 +Returns the number of packets dropped.
73736 +.IP "" 5
73737 +.PP
73738 +
73739 +.SH "SEE ALSO"
73740 +.M ARPResponder n ,
73741 +.M ARPFaker n ,
73742 +.M AddressInfo "n" 
73743 +
73744 diff -Nurb click-1.6.0/inst/share/man/mann/ARPResponder.n click-1.6.0-27/inst/share/man/mann/ARPResponder.n
73745 --- click-1.6.0/inst/share/man/mann/ARPResponder.n      1969-12-31 19:00:00.000000000 -0500
73746 +++ click-1.6.0-27/inst/share/man/mann/ARPResponder.n   2009-02-11 14:08:51.000000000 -0500
73747 @@ -0,0 +1,66 @@
73748 +.\" -*- mode: nroff -*-
73749 +.\" Generated by 'click-elem2man' from '../elements/ethernet/arpresponder.hh'
73750 +.de M
73751 +.IR "\\$1" "(\\$2)\\$3"
73752 +..
73753 +.de RM
73754 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73755 +..
73756 +.TH "ARPRESPONDER" n "11/Feb/2009" "Click"
73757 +.SH "NAME"
73758 +ARPResponder \- Click element;
73759 +generates responses to ARP queries
73760 +.SH "SYNOPSIS"
73761 +\fBARPResponder\fR(IP/MASK1 [IP/MASK...] ETH1, IP/MASK2 ETH2, ...)
73762 +
73763 +\fBPorts\fR: 1 input, 1 output
73764 +.br
73765 +\fBProcessing\fR: agnostic
73766 +.br
73767 +\fBPackage\fR: ethernet (core)
73768 +.br
73769 +.SH "DESCRIPTION"
73770 +Input should be ARP request packets, including the Ethernet header.
73771 +Forwards an ARP reply if we know the answer -- that is, if one of the
73772 +IPPREFIX arguments matches the requested IP address, then it outputs an ARP
73773 +reply giving the corresponding ETH address. Could be used for proxy ARP as
73774 +well as producing replies for a host's own address.
73775 +.PP
73776 +The IP/MASK arguments are IP network addresses (IP address/netmask pairs).
73777 +The netmask can be specified in CIDR form (`\f(CW18.26.7.0/24\fR') or dotted
73778 +decimal form (`\f(CW18.26.7.0/255.255.255.0\fR').
73779 +.PP
73780 +\fBARPResponder\fR sets the device annotations on generated ARP responses to the
73781 +device annotations from the corresponding queries.
73782 +.PP
73783 +
73784 +.SH "NOTES"
73785 +.M AddressInfo "n" 
73786 +elements can simplify the arguments to \fBARPResponder\fR. In
73787 +particular, if \f(CWNAME\fR is shorthand for both an IP network address (or IP
73788 +address) \f(CWIP\fR and an Ethernet address \f(CWETH\fR, then \f(CWARPResponder(NAME)\fR is
73789 +equivalent to \f(CWARPResponder(IP ETH)\fR. If \f(CWNAME\fR is short for both an IP
73790 +address and an IP network address, then \fBARPResponder\fR will prefer the IP
73791 +address. (You can say \f(CWNAME:ipnet\fR to use the IP network address.)
73792 +.PP
73793 +
73794 +.SH "EXAMPLES"
73795 +Produce ARP replies for the local machine (18.26.4.24)
73796 +as well as proxy ARP for all machines on net 18.26.7
73797 +directing their packets to the local machine:
73798 +.PP
73799 +.nf
73800 +\&  c :: Classifier(12/0806 20/0001, ...);
73801 +\&  ar :: ARPResponder(18.26.4.24 18.26.7.0/24 00:00:C0:AE:67:EF);
73802 +\&  c[0] -> ar;
73803 +\&  ar -> ToDevice(eth0);
73804 +.fi
73805 +.PP
73806 +
73807 +
73808 +
73809 +.SH "SEE ALSO"
73810 +.M ARPQuerier n ,
73811 +.M ARPFaker n ,
73812 +.M AddressInfo "n" 
73813 +
73814 diff -Nurb click-1.6.0/inst/share/man/mann/AdaptiveRED.n click-1.6.0-27/inst/share/man/mann/AdaptiveRED.n
73815 --- click-1.6.0/inst/share/man/mann/AdaptiveRED.n       1969-12-31 19:00:00.000000000 -0500
73816 +++ click-1.6.0-27/inst/share/man/mann/AdaptiveRED.n    2009-02-11 14:08:52.000000000 -0500
73817 @@ -0,0 +1,40 @@
73818 +.\" -*- mode: nroff -*-
73819 +.\" Generated by 'click-elem2man' from '../elements/aqm/adaptivered.hh'
73820 +.de M
73821 +.IR "\\$1" "(\\$2)\\$3"
73822 +..
73823 +.de RM
73824 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73825 +..
73826 +.TH "ADAPTIVERED" n "11/Feb/2009" "Click"
73827 +.SH "NAME"
73828 +AdaptiveRED \- Click element;
73829 +drops packets according to Adaptive RED
73830 +.SH "SYNOPSIS"
73831 +\fBAdaptiveRED\fR(TARGET, MAX_P [, \fIKEYWORDS\fR])
73832 +
73833 +\fBPorts\fR: 1 input, 1-2 outputs
73834 +.br
73835 +\fBProcessing\fR: agnostic, but output 1 is push
73836 +.br
73837 +\fBPackage\fR: aqm (core)
73838 +.br
73839 +.SH "DESCRIPTION"
73840 +Implements the Adaptive Random Early Detection packet dropping algorithm. This
73841 +algorithm implements Random Early Detection, as by the 
73842 +.M RED "n" 
73843 +element, plus
73844 +automatic parameter setting.
73845 +.PP
73846 +The TARGET argument is the target queue length. 
73847 +.M RED "n" 's
73848 +MIN_THRESH parameter
73849 +is set to TARGET/2, and MAX_THRESH to 3*TARGET/2. The MAX_P parameter, and
73850 +QUEUES and STABILITY keywords, are as in the 
73851 +.M RED "n" 
73852 +element.
73853 +.PP
73854 +
73855 +.SH "SEE ALSO"
73856 +.M RED "n" 
73857 +
73858 diff -Nurb click-1.6.0/inst/share/man/mann/AddressInfo.n click-1.6.0-27/inst/share/man/mann/AddressInfo.n
73859 --- click-1.6.0/inst/share/man/mann/AddressInfo.n       1969-12-31 19:00:00.000000000 -0500
73860 +++ click-1.6.0-27/inst/share/man/mann/AddressInfo.n    2009-02-11 14:08:51.000000000 -0500
73861 @@ -0,0 +1,85 @@
73862 +.\" -*- mode: nroff -*-
73863 +.\" Generated by 'click-elem2man' from '../include/click/standard/addressinfo.hh'
73864 +.de M
73865 +.IR "\\$1" "(\\$2)\\$3"
73866 +..
73867 +.de RM
73868 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73869 +..
73870 +.TH "ADDRESSINFO" n "11/Feb/2009" "Click"
73871 +.SH "NAME"
73872 +AddressInfo \- Click element;
73873 +specifies address information
73874 +.SH "SYNOPSIS"
73875 +\fBAddressInfo\fR(NAME ADDRESS [ADDRESS...], ...)
73876 +
73877 +\fBPorts\fR: None
73878 +.br
73879 +\fBPackage\fR: standard (core)
73880 +.br
73881 +.SH "DESCRIPTION"
73882 +Lets you use mnemonic names for IPv4 and IPv6 addresses, IPv4 and IPv6
73883 +address prefixes, and Ethernet addresses. Each argument has the form `NAME
73884 +ADDRESS [ADDRESS...]', which associates the given ADDRESSes with NAME. For
73885 +example, if a configuration contains this \fBAddressInfo\fR element,
73886 +.PP
73887 +.nf
73888 +\&   AddressInfo(mauer 10.0.0.1, mazu 10.0.0.10);
73889 +.fi
73890 +.PP
73891 +then other configuration strings can use \f(CWmauer\fR and \f(CWmazu\fR as mnemonics
73892 +for the IP addresses 10.0.0.1 and 10.0.0.10, respectively.
73893 +.PP
73894 +The mnemonic names introduced by \fBAddressInfo\fR elements are local with
73895 +respect to compound elements. That is, names created inside a compound
73896 +element apply only within that compound element and its subelements. For
73897 +example:
73898 +.PP
73899 +.nf
73900 +\&   AddressInfo(mauer 10.0.0.1);
73901 +\&   compound :: {
73902 +\&     AddressInfo(mazu 10.0.0.10);
73903 +\&     ... -> IPEncap(6, mauer, mazu) -> ...  // OK
73904 +\&   };
73905 +\&   ... -> IPEncap(6, mauer, mazu) -> ...    // error: `mazu' undefined
73906 +.fi
73907 +.PP
73908 +Any name can be simultaneously associated with an IP address, an IP network
73909 +address, and an Ethernet address. The kind of address that is returned is
73910 +generally determined from context. For example:
73911 +.PP
73912 +.nf
73913 +\&   AddressInfo(mauer 10.0.0.1/8 00:50:BA:85:84:A9);
73914 +\&   ... -> IPEncap(6, mauer, ...)                  // as IP address
73915 +\&       -> EtherEncap(0x0800, mauer, ...) -> ...   // as Ethernet address
73916 +\&   ... -> ARPResponder(mauer) -> ...              // as IP prefix AND Ethernet address!
73917 +.fi
73918 +.PP
73919 +An optional suffix makes the context unambiguous. \f(CWNAME\fR is an ambiguous
73920 +reference to some address, but \f(CWNAME:ip\fR is always an IPv4 address,
73921 +\f(CWNAME:ipnet\fR is always an IPv4 network address (IPv4 address prefix),
73922 +\f(CWNAME:ip6\fR is always an IPv6 address, \f(CWNAME:ip6net\fR is always an IPv6
73923 +network address, and \f(CWNAME:eth\fR is always an Ethernet address.
73924 +.PP
73925 +
73926 +
73927 +.SH "DEFAULT ADDRESSES"
73928 +If you do not define an address for a given name, \fBAddressInfo\fR will use the
73929 +default, if any.  Defaults are as follows:
73930 +.PP
73931 +
73932 +
73933 +.IP "*" 2
73934 +If DEVNAME is the name of an Ethernet device, then \f(CWDEVNAME:eth\fR defaults to
73935 +DEVNAME's Ethernet address.  (At userlevel, this works only on BSD and Linux.)
73936 +.IP "" 2
73937 +.IP "*" 2
73938 +\f(CWDEVNAME:ip\fR defaults to the first primary IPv4 address associated with the
73939 +device DEVNAME.
73940 +.IP "" 2
73941 +.PP
73942 +These defaults are not available on all platforms.
73943 +.PP
73944 +.SH "SEE ALSO"
73945 +.M PortInfo "n" 
73946 +
73947 diff -Nurb click-1.6.0/inst/share/man/mann/Align.n click-1.6.0-27/inst/share/man/mann/Align.n
73948 --- click-1.6.0/inst/share/man/mann/Align.n     1969-12-31 19:00:00.000000000 -0500
73949 +++ click-1.6.0-27/inst/share/man/mann/Align.n  2009-02-11 14:08:51.000000000 -0500
73950 @@ -0,0 +1,48 @@
73951 +.\" -*- mode: nroff -*-
73952 +.\" Generated by 'click-elem2man' from '../elements/standard/align.hh'
73953 +.de M
73954 +.IR "\\$1" "(\\$2)\\$3"
73955 +..
73956 +.de RM
73957 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
73958 +..
73959 +.TH "ALIGN" n "11/Feb/2009" "Click"
73960 +.SH "NAME"
73961 +Align \- Click element;
73962 +aligns packet data
73963 +.SH "SYNOPSIS"
73964 +\fBAlign\fR(MODULUS, OFFSET)
73965 +
73966 +\fBPorts\fR: 1 input, 1 output
73967 +.br
73968 +\fBProcessing\fR: agnostic
73969 +.br
73970 +\fBPackage\fR: standard (core)
73971 +.br
73972 +.SH "DESCRIPTION"
73973 +Aligns packet data. Each input packet is aligned so that its first byte is
73974 +OFFSET bytes off from a MODULUS-byte boundary. This may involve a packet
73975 +copy.
73976 +.PP
73977 +MODULUS must be 2, 4, or 8.
73978 +
73979 +.SH "NOTES"
73980 +The 
73981 +.M click-align 1 
73982 +tool will insert this element automatically wherever it
73983 +is required.
73984 +.PP
73985 +
73986 +.SH "EXAMPLES"
73987 +
73988 +.nf
73989 +\&  ... -> Align(4, 0) -> ...
73990 +.fi
73991 +.PP
73992 +
73993 +
73994 +
73995 +.SH "SEE ALSO"
73996 +.M AlignmentInfo n ,
73997 +click-align(1)
73998 +
73999 diff -Nurb click-1.6.0/inst/share/man/mann/AlignmentInfo.n click-1.6.0-27/inst/share/man/mann/AlignmentInfo.n
74000 --- click-1.6.0/inst/share/man/mann/AlignmentInfo.n     1969-12-31 19:00:00.000000000 -0500
74001 +++ click-1.6.0-27/inst/share/man/mann/AlignmentInfo.n  2009-02-11 14:08:51.000000000 -0500
74002 @@ -0,0 +1,36 @@
74003 +.\" -*- mode: nroff -*-
74004 +.\" Generated by 'click-elem2man' from '../include/click/standard/alignmentinfo.hh'
74005 +.de M
74006 +.IR "\\$1" "(\\$2)\\$3"
74007 +..
74008 +.de RM
74009 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74010 +..
74011 +.TH "ALIGNMENTINFO" n "11/Feb/2009" "Click"
74012 +.SH "NAME"
74013 +AlignmentInfo \- Click element;
74014 +specifies alignment information
74015 +.SH "SYNOPSIS"
74016 +\fBAlignmentInfo\fR(ELEMENT [MODULUS OFFSET ...], ...)
74017 +
74018 +\fBPorts\fR: None
74019 +.br
74020 +\fBPackage\fR: standard (core)
74021 +.br
74022 +.SH "DESCRIPTION"
74023 +Provides information about the packet alignment specified elements can
74024 +expect. Each configuration argument has the form
74025 +`ELEMENT [MODULUS0 OFFSET0 MODULUS1 OFFSET1 ...]',
74026 +where there are zero or more MODULUS-OFFSET pairs.
74027 +All packets arriving at ELEMENT's
74028 +\fIn\fRth input will start `OFFSET\fIn\fR' bytes
74029 +off from a `MODULUS\fIn\fR'-byte boundary.
74030 +
74031 +.SH "NOTES"
74032 +This element is inserted automatically by 
74033 +.M click-align 1 .
74034 +
74035 +.SH "SEE ALSO"
74036 +.M Align n ,
74037 +click-align(1)
74038 +
74039 diff -Nurb click-1.6.0/inst/share/man/mann/AverageCounter.n click-1.6.0-27/inst/share/man/mann/AverageCounter.n
74040 --- click-1.6.0/inst/share/man/mann/AverageCounter.n    1969-12-31 19:00:00.000000000 -0500
74041 +++ click-1.6.0-27/inst/share/man/mann/AverageCounter.n 2009-02-11 14:08:51.000000000 -0500
74042 @@ -0,0 +1,54 @@
74043 +.\" -*- mode: nroff -*-
74044 +.\" Generated by 'click-elem2man' from '../elements/standard/averagecounter.hh'
74045 +.de M
74046 +.IR "\\$1" "(\\$2)\\$3"
74047 +..
74048 +.de RM
74049 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74050 +..
74051 +.TH "AVERAGECOUNTER" n "11/Feb/2009" "Click"
74052 +.SH "NAME"
74053 +AverageCounter \- Click element;
74054 +measures historical packet count and rate
74055 +.SH "SYNOPSIS"
74056 +\fBAverageCounter\fR([IGNORE])
74057 +
74058 +\fBPorts\fR: 1 input, 1 output
74059 +.br
74060 +\fBProcessing\fR: agnostic
74061 +.br
74062 +\fBPackage\fR: standard (core)
74063 +.br
74064 +.SH "DESCRIPTION"
74065 +Passes packets unchanged from its input to its
74066 +output, maintaining statistics information about
74067 +packet count and packet rate using a strict average.
74068 +.PP
74069 +The rate covers only the time between the first and
74070 +most recent packets. 
74071 +.PP
74072 +IGNORE, by default, is 0. If it is greater than 0,
74073 +the first IGNORE number of seconds are ignored in
74074 +the count.
74075 +.PP
74076 +
74077 +.SH "ELEMENT HANDLERS"
74078 +
74079 +
74080 +
74081 +.IP "\fBcount\fR (read-only)" 5
74082 +Returns the number of packets that have passed through since the last reset.
74083 +.IP "" 5
74084 +.IP "\fBbyte_count\fR (read-only)" 5
74085 +Returns the number of packets that have passed through since the last reset.
74086 +.IP "" 5
74087 +.IP "\fBrate\fR (read-only)" 5
74088 +Returns packet arrival rate.
74089 +.IP "" 5
74090 +.IP "\fBbyte_rate\fR (read-only)" 5
74091 +Returns packet arrival rate in bytes per second.  (Beware overflow!)
74092 +.IP "" 5
74093 +.IP "\fBreset\fR (write-only)" 5
74094 +Resets the count and rate to zero.
74095 +.PP
74096 +
74097 diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthMeter.n click-1.6.0-27/inst/share/man/mann/BandwidthMeter.n
74098 --- click-1.6.0/inst/share/man/mann/BandwidthMeter.n    1969-12-31 19:00:00.000000000 -0500
74099 +++ click-1.6.0-27/inst/share/man/mann/BandwidthMeter.n 2009-02-11 14:08:51.000000000 -0500
74100 @@ -0,0 +1,59 @@
74101 +.\" -*- mode: nroff -*-
74102 +.\" Generated by 'click-elem2man' from '../elements/standard/bandwidthmeter.hh'
74103 +.de M
74104 +.IR "\\$1" "(\\$2)\\$3"
74105 +..
74106 +.de RM
74107 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74108 +..
74109 +.TH "BANDWIDTHMETER" n "11/Feb/2009" "Click"
74110 +.SH "NAME"
74111 +BandwidthMeter \- Click element;
74112 +classifies packet stream by arrival rate
74113 +.SH "SYNOPSIS"
74114 +\fBBandwidthMeter\fR(RATE1, RATE2, ..., RATE\fIn\fR)
74115 +
74116 +\fBPorts\fR: 1 input, 2 or more outputs
74117 +.br
74118 +\fBProcessing\fR: push
74119 +.br
74120 +\fBPackage\fR: standard (core)
74121 +.br
74122 +.SH "DESCRIPTION"
74123 +Classifies packet stream based on the rate of packet arrival.  The rate
74124 +is measured in bytes per second using an exponential weighted moving
74125 +average.  (The related 
74126 +.M Meter "n" 
74127 +element measures rates in packets per
74128 +second.)
74129 +.PP
74130 +The configuration string consists of one or more RATE arguments.  Each
74131 +RATE is a bandwidth, such as "384 kbps".  Earlier
74132 +rates in the list must be less than later rates. A 
74133 +.M Meter "n" 
74134 +with \fIn\fR rate
74135 +arguments will have \fIn\fR+1 outputs. It sends packets out the output
74136 +corresponding to the current rate. If the rate is less than RATE1
74137 +packets are sent to output 0; if it is >= RATE1 but < RATE2, packets are
74138 +sent to output 1; and so on. If it is >= RATE\fIn\fR, packets are sent to
74139 +output \fIn\fR.
74140 +.PP
74141 +
74142 +.SH "EXAMPLES"
74143 +This configuration fragment drops the input stream when it is generating
74144 +more than 20,000 bytes per second.
74145 +.PP
74146 +.nf
74147 +\&  ... -> m :: BandwidthMeter(20kBps) -> ...;
74148 +\&  m[1] -> Discard;
74149 +.fi
74150 +.PP
74151 +
74152 +
74153 +
74154 +.SH "SEE ALSO"
74155 +.M Meter n ,
74156 +.M BandwidthShaper n ,
74157 +.M Shaper n ,
74158 +.M RatedSplitter "n" 
74159 +
74160 diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthRatedSplitter.n click-1.6.0-27/inst/share/man/mann/BandwidthRatedSplitter.n
74161 --- click-1.6.0/inst/share/man/mann/BandwidthRatedSplitter.n    1969-12-31 19:00:00.000000000 -0500
74162 +++ click-1.6.0-27/inst/share/man/mann/BandwidthRatedSplitter.n 2009-02-11 14:08:52.000000000 -0500
74163 @@ -0,0 +1,46 @@
74164 +.\" -*- mode: nroff -*-
74165 +.\" Generated by 'click-elem2man' from '../elements/standard/bwratedsplitter.hh'
74166 +.de M
74167 +.IR "\\$1" "(\\$2)\\$3"
74168 +..
74169 +.de RM
74170 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74171 +..
74172 +.TH "BANDWIDTHRATEDSPLITTER" n "11/Feb/2009" "Click"
74173 +.SH "NAME"
74174 +BandwidthRatedSplitter \- Click element;
74175 +splits flow of packets at specified bandwidth rate
74176 +.SH "SYNOPSIS"
74177 +\fBBandwidthRatedSplitter\fR(RATE)
74178 +
74179 +\fBPorts\fR: 1 input, 2 outputs
74180 +.br
74181 +\fBProcessing\fR: Push
74182 +.br
74183 +\fBPackage\fR: standard (core)
74184 +.br
74185 +.SH "DESCRIPTION"
74186 +\fBBandwidthRatedSplitter\fR has two output ports.  All incoming packets up to a
74187 +maximum of RATE are emitted on output port 0.  Any remaining packets are
74188 +emitted on output port 1.  RATE is a bandwidth, such as "384 kbps".
74189 +Unlike 
74190 +.M BandwidthMeter "n" ,
74191 +the base RATE is emitted on output port
74192 +0 even when the input rate is greater than RATE.
74193 +.PP
74194 +
74195 +.SH "ELEMENT HANDLERS"
74196 +
74197 +
74198 +
74199 +.IP "\fBrate\fR (read/write)" 5
74200 +rate of splitting
74201 +.IP "" 5
74202 +.PP
74203 +
74204 +.SH "SEE ALSO"
74205 +.M RatedSplitter n ,
74206 +.M BandwidthMeter n ,
74207 +.M BandwidthShaper n ,
74208 +.M BandwidthRatedUnqueue "n" 
74209 +
74210 diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthRatedUnqueue.n click-1.6.0-27/inst/share/man/mann/BandwidthRatedUnqueue.n
74211 --- click-1.6.0/inst/share/man/mann/BandwidthRatedUnqueue.n     1969-12-31 19:00:00.000000000 -0500
74212 +++ click-1.6.0-27/inst/share/man/mann/BandwidthRatedUnqueue.n  2009-02-11 14:08:51.000000000 -0500
74213 @@ -0,0 +1,32 @@
74214 +.\" -*- mode: nroff -*-
74215 +.\" Generated by 'click-elem2man' from '../elements/standard/bwratedunqueue.hh'
74216 +.de M
74217 +.IR "\\$1" "(\\$2)\\$3"
74218 +..
74219 +.de RM
74220 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74221 +..
74222 +.TH "BANDWIDTHRATEDUNQUEUE" n "11/Feb/2009" "Click"
74223 +.SH "NAME"
74224 +BandwidthRatedUnqueue \- Click element;
74225 +pull-to-push converter
74226 +.SH "SYNOPSIS"
74227 +\fBBandwidthRatedUnqueue\fR(RATE)
74228 +
74229 +\fBPorts\fR: 1 input, 1 output
74230 +.br
74231 +\fBProcessing\fR: Pull inputs, push outputs
74232 +.br
74233 +\fBPackage\fR: standard (core)
74234 +.br
74235 +.SH "DESCRIPTION"
74236 +Pulls packets at the given bandwidth RATE, and pushes them out its single
74237 +output.  RATE is a bandwidth, such as "384 kbps".
74238 +.PP
74239 +
74240 +.SH "SEE ALSO"
74241 +.M RatedUnqueue n ,
74242 +.M Unqueue n ,
74243 +.M BandwidthShaper n ,
74244 +.M BandwidthRatedSplitter "n" 
74245 +
74246 diff -Nurb click-1.6.0/inst/share/man/mann/BandwidthShaper.n click-1.6.0-27/inst/share/man/mann/BandwidthShaper.n
74247 --- click-1.6.0/inst/share/man/mann/BandwidthShaper.n   1969-12-31 19:00:00.000000000 -0500
74248 +++ click-1.6.0-27/inst/share/man/mann/BandwidthShaper.n        2009-02-11 14:08:51.000000000 -0500
74249 @@ -0,0 +1,43 @@
74250 +.\" -*- mode: nroff -*-
74251 +.\" Generated by 'click-elem2man' from '../elements/standard/bandwidthshaper.hh'
74252 +.de M
74253 +.IR "\\$1" "(\\$2)\\$3"
74254 +..
74255 +.de RM
74256 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74257 +..
74258 +.TH "BANDWIDTHSHAPER" n "11/Feb/2009" "Click"
74259 +.SH "NAME"
74260 +BandwidthShaper \- Click element;
74261 +shapes traffic to maximum rate (bytes/s) 
74262 +.SH "SYNOPSIS"
74263 +\fBBandwidthShaper\fR(RATE)
74264 +
74265 +\fBPorts\fR: 1 input, 1 output
74266 +.br
74267 +\fBProcessing\fR: Pull
74268 +.br
74269 +\fBPackage\fR: standard (core)
74270 +.br
74271 +.SH "DESCRIPTION"
74272 +\fBBandwidthShaper\fR is a pull element that allows a maximum bandwidth of
74273 +RATE to pass through.  That is, output traffic is shaped to RATE.
74274 +If a \fBBandwidthShaper\fR receives a large number of
74275 +evenly-spaced pull requests, then it will emit packets at the specified
74276 +RATE with low burstiness.
74277 +.PP
74278 +
74279 +.SH "ELEMENT HANDLERS"
74280 +
74281 +
74282 +
74283 +.IP "\fBrate\fR (read/write)" 5
74284 +Returns or sets the RATE parameter.
74285 +.IP "" 5
74286 +.PP
74287 +
74288 +.SH "SEE ALSO"
74289 +.M Shaper n ,
74290 +.M BandwidthRatedSplitter n ,
74291 +.M BandwidthRatedUnqueue "n" 
74292 +
74293 diff -Nurb click-1.6.0/inst/share/man/mann/Burster.n click-1.6.0-27/inst/share/man/mann/Burster.n
74294 --- click-1.6.0/inst/share/man/mann/Burster.n   1969-12-31 19:00:00.000000000 -0500
74295 +++ click-1.6.0-27/inst/share/man/mann/Burster.n        2009-02-11 14:08:52.000000000 -0500
74296 @@ -0,0 +1,35 @@
74297 +.\" -*- mode: nroff -*-
74298 +.\" Generated by 'click-elem2man' from '../elements/standard/burster.hh'
74299 +.de M
74300 +.IR "\\$1" "(\\$2)\\$3"
74301 +..
74302 +.de RM
74303 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74304 +..
74305 +.TH "BURSTER" n "11/Feb/2009" "Click"
74306 +.SH "NAME"
74307 +Burster \- Click element;
74308 +pull-to-push converter
74309 +.SH "SYNOPSIS"
74310 +\fBBurster\fR(INTERVAL, BURST)
74311 +
74312 +\fBPorts\fR: 1 input, 1 output
74313 +.br
74314 +\fBProcessing\fR: pull inputs, push outputs
74315 +.br
74316 +\fBPackage\fR: standard (core)
74317 +.br
74318 +.SH "DESCRIPTION"
74319 +Pulls BURST packets each INTERVAL (seconds) from its input.
74320 +Pushes them out its single output. The interval can be
74321 +a floating point number.  Default BURST is 8.
74322 +.PP
74323 +There are usually Queues both upstream and downstream
74324 +of \fBBurster\fR elements.
74325 +.PP
74326 +
74327 +.SH "NOTES"
74328 +The UNIX and Linux timers have granularity of about 10
74329 +milliseconds, so this \fBBurster\fR can only produce high packet
74330 +rates by being bursty.
74331 +
74332 diff -Nurb click-1.6.0/inst/share/man/mann/CPUQueue.n click-1.6.0-27/inst/share/man/mann/CPUQueue.n
74333 --- click-1.6.0/inst/share/man/mann/CPUQueue.n  1969-12-31 19:00:00.000000000 -0500
74334 +++ click-1.6.0-27/inst/share/man/mann/CPUQueue.n       2009-02-11 14:08:52.000000000 -0500
74335 @@ -0,0 +1,35 @@
74336 +.\" -*- mode: nroff -*-
74337 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cpuqueue.hh'
74338 +.de M
74339 +.IR "\\$1" "(\\$2)\\$3"
74340 +..
74341 +.de RM
74342 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74343 +..
74344 +.TH "CPUQUEUE" n "11/Feb/2009" "Click"
74345 +.SH "NAME"
74346 +CPUQueue \- Click element;
74347 +stores packets in FIFO queues.
74348 +.SH "SYNOPSIS"
74349 +CPUQueue
74350 +.br
74351 +\fBCPUQueue\fR(CAPACITY)
74352 +
74353 +\fBPorts\fR: 1 input, 1 or more outputs
74354 +.br
74355 +\fBProcessing\fR: push inputs, pull outputs
74356 +.br
74357 +\fBDrivers\fR: linuxmodule
74358 +.br
74359 +\fBPackage\fR: linuxmodule (core)
74360 +.br
74361 +.SH "DESCRIPTION"
74362 +Stores incoming packets in a first-in-first-out queue. Each CPU has its own
74363 +queue. The incoming packet is always enqueued onto the queue of the CPU
74364 +calling the push method. Drops incoming packets if the queue already holds
74365 +CAPACITY packets. The default for CAPACITY is 128.
74366 +.PP
74367 +
74368 +.SH "SEE ALSO"
74369 +.M Queue "n" 
74370 +
74371 diff -Nurb click-1.6.0/inst/share/man/mann/CPUSwitch.n click-1.6.0-27/inst/share/man/mann/CPUSwitch.n
74372 --- click-1.6.0/inst/share/man/mann/CPUSwitch.n 1969-12-31 19:00:00.000000000 -0500
74373 +++ click-1.6.0-27/inst/share/man/mann/CPUSwitch.n      2009-02-11 14:08:52.000000000 -0500
74374 @@ -0,0 +1,32 @@
74375 +.\" -*- mode: nroff -*-
74376 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cpuswitch.hh'
74377 +.de M
74378 +.IR "\\$1" "(\\$2)\\$3"
74379 +..
74380 +.de RM
74381 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74382 +..
74383 +.TH "CPUSWITCH" n "11/Feb/2009" "Click"
74384 +.SH "NAME"
74385 +CPUSwitch \- Click element;
74386 +classifies packets by cpu
74387 +.SH "SYNOPSIS"
74388 +\fBCPUSwitch\fR()
74389 +
74390 +\fBPorts\fR: 1 input, 1 or more outputs
74391 +.br
74392 +\fBProcessing\fR: push
74393 +.br
74394 +\fBDrivers\fR: linuxmodule
74395 +.br
74396 +\fBPackage\fR: linuxmodule (core)
74397 +.br
74398 +.SH "DESCRIPTION"
74399 +Can have any number of outputs.
74400 +Chooses the output on which to emit each packet based on the thread's cpu.
74401 +
74402 +.SH "SEE ALSO"
74403 +.M RoundRobinSwitch n ,
74404 +.M StrideSwitch n ,
74405 +.M HashSwitch "n" 
74406 +
74407 diff -Nurb click-1.6.0/inst/share/man/mann/ChangeUID.n click-1.6.0-27/inst/share/man/mann/ChangeUID.n
74408 --- click-1.6.0/inst/share/man/mann/ChangeUID.n 1969-12-31 19:00:00.000000000 -0500
74409 +++ click-1.6.0-27/inst/share/man/mann/ChangeUID.n      2009-02-11 14:08:51.000000000 -0500
74410 @@ -0,0 +1,42 @@
74411 +.\" -*- mode: nroff -*-
74412 +.\" Generated by 'click-elem2man' from '../elements/userlevel/changeuid.hh'
74413 +.de M
74414 +.IR "\\$1" "(\\$2)\\$3"
74415 +..
74416 +.de RM
74417 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74418 +..
74419 +.TH "CHANGEUID" n "11/Feb/2009" "Click"
74420 +.SH "NAME"
74421 +ChangeUID \- Click element;
74422 +relinquish root privilege
74423 +.SH "SYNOPSIS"
74424 +\fBChangeUID\fR()
74425 +
74426 +\fBPorts\fR: none
74427 +.br
74428 +\fBDrivers\fR: userlevel
74429 +.br
74430 +\fBPackage\fR: userlevel (core)
74431 +.br
74432 +.SH "DESCRIPTION"
74433 +Sets the current process's effective user and group IDs to its real user and
74434 +group IDs, respectively.  This relinquishes any set-uid-root privilege.
74435 +.PP
74436 +
74437 +.SH "NOTES"
74438 +\fBChangeUID\fR's configure phase is set so that it runs immediately after the
74439 +"privileged" elements FromDevice.u and ToDevice.u, but before most other
74440 +elements.  Thus, this configuration:
74441 +.PP
74442 +.nf
74443 +\&   f1 :: FromDevice(eth0) -> ...
74444 +\&   f2 :: FromDump(/tmp/x) -> ...
74445 +\&   ChangeUID()
74446 +.fi
74447 +.PP
74448 +should fail to initialize if the user cannot read file \fI/tmp/x\fR.  However,
74449 +your mileage may vary.  Set-uid-root programs are a bad idea, and Click is no
74450 +exception.
74451 +
74452 +
74453 diff -Nurb click-1.6.0/inst/share/man/mann/ChatterSocket.n click-1.6.0-27/inst/share/man/mann/ChatterSocket.n
74454 --- click-1.6.0/inst/share/man/mann/ChatterSocket.n     1969-12-31 19:00:00.000000000 -0500
74455 +++ click-1.6.0-27/inst/share/man/mann/ChatterSocket.n  2009-02-11 14:08:51.000000000 -0500
74456 @@ -0,0 +1,101 @@
74457 +.\" -*- mode: nroff -*-
74458 +.\" Generated by 'click-elem2man' from '../elements/userlevel/chattersocket.hh'
74459 +.de M
74460 +.IR "\\$1" "(\\$2)\\$3"
74461 +..
74462 +.de RM
74463 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74464 +..
74465 +.TH "CHATTERSOCKET" n "11/Feb/2009" "Click"
74466 +.SH "NAME"
74467 +ChatterSocket \- Click element;
74468 +reports chatter messages to connected sockets
74469 +.SH "SYNOPSIS"
74470 +\fBChatterSocket\fR("TCP", PORTNUMBER [, \fIKEYWORDS\fR])
74471 +.br
74472 +\fBChatterSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR])
74473 +
74474 +\fBPorts\fR: none
74475 +.br
74476 +\fBDrivers\fR: userlevel
74477 +.br
74478 +\fBPackage\fR: userlevel (core)
74479 +.br
74480 +.SH "DESCRIPTION"
74481 +Opens a chatter socket that allows other user-level programs to receive copies
74482 +of router chatter traffic. Depending on its configuration string,
74483 +\fBChatterSocket\fR will listen on TCP port PORTNUMBER, or on a UNIX-domain socket
74484 +named FILENAME.
74485 +.PP
74486 +The "server" (that is, the \fBChatterSocket\fR element) simply echoes any messages
74487 +generated by the router configuration to any existing "clients". The server
74488 +does not read any data from its clients.
74489 +.PP
74490 +When a connection is opened, \fBChatterSocket\fR responds by stating its protocol
74491 +version number with a line like "Click::ChatterSocket/1.0\\r\\n". The current
74492 +version number is 1.0.
74493 +.PP
74494 +\fBChatterSocket\fR broadcasts copies of messages generated by the default
74495 +ErrorHandler or the \f(CWclick_chatter\fR function. Most elements report messages
74496 +or run-time errors using one of these mechanisms.
74497 +.PP
74498 +If a client falls more than 500,000 bytes behind, \fBChatterSocket\fR automatically
74499 +closes its connection.
74500 +.PP
74501 +\fBChatterSocket\fR supports hot-swapping, meaning you can change configurations
74502 +without interrupting existing clients. The hot-swap will succeed only if the
74503 +old \fBChatterSocket\fR and the new \fBChatterSocket\fR have the same element name, and
74504 +the same socket type, port/filename, and chatter channel parameters.
74505 +Additionally, the new \fBChatterSocket\fR must have RETRIES set to 1 or more, since
74506 +the old \fBChatterSocket\fR has already bound the relevant socket.
74507 +.PP
74508 +Keyword arguments are:
74509 +.PP
74510 +
74511 +
74512 +.IP "CHANNEL" 8
74513 +Text word. The socket outputs messages sent to this chatter channel. Default
74514 +is the default channel, which corresponds to \f(CWclick_chatter()\fR.
74515 +.IP "" 8
74516 +Channels help you organize extensive debugging output. For example, you could
74517 +send extremely verbose messages to a `\f(CWverbose\fR' channel, then only connect
74518 +to that channel when you want verbosity.
74519 +.IP "" 8
74520 +To send messages to a particular channel, you should fetch the ErrorHandler
74521 +object corresponding to that channel, using the Router member function
74522 +\f(CWRouter::chatter_channel(const String &channel_name)\fR.
74523 +.IP "" 8
74524 +.IP "QUIET_CHANNEL" 8
74525 +Boolean. Messages sent to a non-default channel are not normally printed on
74526 +standard error. If QUIET_CHANNEL is false, however, the channel's messages do
74527 +go to standard error, along with chatter messages. Default is true.
74528 +.IP "" 8
74529 +.IP "GREETING" 8
74530 +Boolean. Determines whether the \f(CWClick::ChatterSocket/1.0\fR greeting is sent.
74531 +Default is true.
74532 +.IP "" 8
74533 +.IP "RETRIES" 8
74534 +Integer. If greater than 0, \fBChatterSocket\fR won't immediately fail when it can't
74535 +open its socket. Instead, it will attempt to open the socket once a second
74536 +until it succeeds, or until RETRIES unsuccessful attempts (after which it will
74537 +stop the router). Default is 0.
74538 +.IP "" 8
74539 +.IP "RETRY_WARNINGS" 8
74540 +Boolean. If true, \fBChatterSocket\fR will print warning messages every time it
74541 +fails to open a socket. If false, it will print messages only on the final
74542 +failure. Default is true.
74543 +.IP "" 8
74544 +.PP
74545 +
74546 +.SH "EXAMPLES"
74547 +
74548 +.nf
74549 +\&  ChatterSocket(unix, /tmp/clicksocket);
74550 +.fi
74551 +.PP
74552 +
74553 +
74554 +
74555 +.SH "SEE ALSO"
74556 +.M ControlSocket "n" 
74557 +
74558 diff -Nurb click-1.6.0/inst/share/man/mann/CheckARPHeader.n click-1.6.0-27/inst/share/man/mann/CheckARPHeader.n
74559 --- click-1.6.0/inst/share/man/mann/CheckARPHeader.n    1969-12-31 19:00:00.000000000 -0500
74560 +++ click-1.6.0-27/inst/share/man/mann/CheckARPHeader.n 2009-02-11 14:08:51.000000000 -0500
74561 @@ -0,0 +1,71 @@
74562 +.\" -*- mode: nroff -*-
74563 +.\" Generated by 'click-elem2man' from '../elements/ethernet/checkarpheader.hh'
74564 +.de M
74565 +.IR "\\$1" "(\\$2)\\$3"
74566 +..
74567 +.de RM
74568 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74569 +..
74570 +.TH "CHECKARPHEADER" n "11/Feb/2009" "Click"
74571 +.SH "NAME"
74572 +CheckARPHeader \- Click element;
74573 +checks ARP header
74574 +.SH "SYNOPSIS"
74575 +\fBCheckARPHeader\fR([OFFSET, \fIkeywords\fR OFFSET, VERBOSE, DETAILS])
74576 +
74577 +\fBPorts\fR: 1 input, 1-2 outputs
74578 +.br
74579 +\fBProcessing\fR: agnostic, but output 1 is push
74580 +.br
74581 +\fBPackage\fR: ethernet (core)
74582 +.br
74583 +.SH "DESCRIPTION"
74584 +Input packets should have ARP headers starting OFFSET bytes in. Default OFFSET
74585 +is zero. Checks that the packet's length is reasonable.
74586 +.PP
74587 +\fBCheckARPHeader\fR emits valid packets on output 0. Invalid packets are pushed out
74588 +on output 1, unless output 1 was unused; if so, drops invalid packets.
74589 +.PP
74590 +\fBCheckARPHeader\fR prints a message to the console the first time it encounters an
74591 +incorrect ARP packet (but see VERBOSE below).
74592 +.PP
74593 +Keyword arguments are:
74594 +.PP
74595 +
74596 +
74597 +.IP "OFFSET" 5
74598 +Unsigned integer. Byte position at which the ARP header begins. Default is 0.
74599 +.IP "" 5
74600 +.IP "VERBOSE" 5
74601 +Boolean. If it is true, then a message will be printed for every erroneous
74602 +packet, rather than just the first. False by default.
74603 +.IP "" 5
74604 +.IP "DETAILS" 5
74605 +Boolean. If it is true, then \fBCheckARPHeader\fR will maintain detailed counts of
74606 +how many packets were dropped for each possible reason, accessible through the
74607 +\f(CWdrop_details\fR handler. False by default.
74608 +.IP "" 5
74609 +.PP
74610 +
74611 +.SH "NOTES"
74612 +
74613 +
74614 +.SH "ELEMENT HANDLERS"
74615 +
74616 +
74617 +
74618 +.IP "\fBdrops\fR (read-only)" 5
74619 +Returns the number of incorrect packets \fBCheckARPHeader\fR has seen.
74620 +.IP "" 5
74621 +.IP "\fBdrop_details\fR (read-only)" 5
74622 +Returns a text file showing how many erroneous packets \fBCheckARPHeader\fR has seen,
74623 +subdivided by error. Only available if the DETAILS keyword argument was true.
74624 +.IP "" 5
74625 +.PP
74626 +
74627 +.SH "SEE ALSO"
74628 +.M ARPPrint n ,
74629 +.M ARPQuerier n ,
74630 +.M ARPResponder n ,
74631 +.M ARPFaker "n" 
74632 +
74633 diff -Nurb click-1.6.0/inst/share/man/mann/CheckCRC32.n click-1.6.0-27/inst/share/man/mann/CheckCRC32.n
74634 --- click-1.6.0/inst/share/man/mann/CheckCRC32.n        1969-12-31 19:00:00.000000000 -0500
74635 +++ click-1.6.0-27/inst/share/man/mann/CheckCRC32.n     2009-02-11 14:08:51.000000000 -0500
74636 @@ -0,0 +1,31 @@
74637 +.\" -*- mode: nroff -*-
74638 +.\" Generated by 'click-elem2man' from '../elements/standard/checkcrc32.hh'
74639 +.de M
74640 +.IR "\\$1" "(\\$2)\\$3"
74641 +..
74642 +.de RM
74643 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74644 +..
74645 +.TH "CHECKCRC32" n "11/Feb/2009" "Click"
74646 +.SH "NAME"
74647 +CheckCRC32 \- Click element;
74648 +checks packet CRC32s
74649 +.SH "SYNOPSIS"
74650 +\fBCheckCRC32\fR()
74651 +
74652 +\fBPorts\fR: 1 input, 1 output
74653 +.br
74654 +\fBProcessing\fR: agnostic
74655 +.br
74656 +\fBPackage\fR: standard (core)
74657 +.br
74658 +.SH "DESCRIPTION"
74659 +Check that the CRC32 appended by 
74660 +.M SetCRC32 "n" 
74661 +is OK.
74662 +If so, delete the CRC from the packet.
74663 +Otherwise, drop the packet.
74664 +
74665 +.SH "SEE ALSO"
74666 +.M SetCRC32 "n" 
74667 +
74668 diff -Nurb click-1.6.0/inst/share/man/mann/CheckICMPHeader.n click-1.6.0-27/inst/share/man/mann/CheckICMPHeader.n
74669 --- click-1.6.0/inst/share/man/mann/CheckICMPHeader.n   1969-12-31 19:00:00.000000000 -0500
74670 +++ click-1.6.0-27/inst/share/man/mann/CheckICMPHeader.n        2009-02-11 14:08:51.000000000 -0500
74671 @@ -0,0 +1,63 @@
74672 +.\" -*- mode: nroff -*-
74673 +.\" Generated by 'click-elem2man' from '../elements/icmp/checkicmpheader.hh'
74674 +.de M
74675 +.IR "\\$1" "(\\$2)\\$3"
74676 +..
74677 +.de RM
74678 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74679 +..
74680 +.TH "CHECKICMPHEADER" n "11/Feb/2009" "Click"
74681 +.SH "NAME"
74682 +CheckICMPHeader \- Click element;
74683 +checks ICMP header on ICMP packets
74684 +.SH "SYNOPSIS"
74685 +\fBCheckICMPHeader\fR([\fIKEYWORDS\fR])
74686 +
74687 +\fBPorts\fR: 1 input, 1-2 outputs
74688 +.br
74689 +\fBProcessing\fR: agnostic, but output 1 is push
74690 +.br
74691 +\fBPackage\fR: icmp (core)
74692 +.br
74693 +.SH "DESCRIPTION"
74694 +Expects ICMP packets as input. Checks that the packet's length is sensible
74695 +and that its checksum field is valid. Pushes invalid packets out on output
74696 +1, unless output 1 was unused; if so, drops invalid packets.
74697 +.PP
74698 +Prints a message to the console the first time it encounters an incorrect IP
74699 +packet (but see VERBOSE below).
74700 +.PP
74701 +Keyword arguments are:
74702 +.PP
74703 +
74704 +
74705 +.IP "VERBOSE" 5
74706 +Boolean. If it is true, then a message will be printed for every erroneous
74707 +packet, rather than just the first. False by default.
74708 +.IP "" 5
74709 +.IP "DETAILS" 5
74710 +Boolean. If it is true, then \fBCheckICMPHeader\fR will maintain detailed counts of
74711 +how many packets were dropped for each possible reason, accessible through the
74712 +\f(CWdrop_details\fR handler. False by default.
74713 +.IP "" 5
74714 +.PP
74715 +
74716 +.SH "ELEMENT HANDLERS"
74717 +
74718 +
74719 +
74720 +.IP "\fBdrops\fR (read-only)" 5
74721 +Returns the number of incorrect packets \fBCheckICMPHeader\fR has seen.
74722 +.IP "" 5
74723 +.IP "\fBdrop_details\fR (read-only)" 5
74724 +Returns a text file showing how many erroneous packets \fBCheckICMPHeader\fR has seen,
74725 +subdivided by error. Only available if the DETAILS keyword argument was true.
74726 +.IP "" 5
74727 +.PP
74728 +
74729 +.SH "SEE ALSO"
74730 +.M CheckIPHeader n ,
74731 +.M CheckTCPHeader n ,
74732 +.M CheckUDPHeader n ,
74733 +.M MarkIPHeader "n" 
74734 +
74735 diff -Nurb click-1.6.0/inst/share/man/mann/CheckIPHeader.n click-1.6.0-27/inst/share/man/mann/CheckIPHeader.n
74736 --- click-1.6.0/inst/share/man/mann/CheckIPHeader.n     1969-12-31 19:00:00.000000000 -0500
74737 +++ click-1.6.0-27/inst/share/man/mann/CheckIPHeader.n  2009-02-11 14:08:51.000000000 -0500
74738 @@ -0,0 +1,119 @@
74739 +.\" -*- mode: nroff -*-
74740 +.\" Generated by 'click-elem2man' from '../elements/ip/checkipheader.hh'
74741 +.de M
74742 +.IR "\\$1" "(\\$2)\\$3"
74743 +..
74744 +.de RM
74745 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74746 +..
74747 +.TH "CHECKIPHEADER" n "11/Feb/2009" "Click"
74748 +.SH "NAME"
74749 +CheckIPHeader \- Click element;
74750 +checks IP header
74751 +.SH "SYNOPSIS"
74752 +\fBCheckIPHeader\fR([OFFSET, \fIkeywords\fR OFFSET, INTERFACES, BADSRC,
74753 +.br
74754 +.nf
74755 +\&                       GOODDST, CHECKSUM, VERBOSE, DETAILS])
74756 +.fi
74757 +.PP
74758 +
74759 +
74760 +
74761 +\fBPorts\fR: 1 input, 1-2 outputs
74762 +.br
74763 +\fBProcessing\fR: agnostic, but output 1 is push
74764 +.br
74765 +\fBPackage\fR: ip (core)
74766 +.br
74767 +.SH "DESCRIPTION"
74768 +Input packets should have IP headers starting OFFSET bytes in. Default OFFSET
74769 +is zero. Checks that the packet's length is reasonable, and that the IP
74770 +version, header length, length, and checksum fields are valid. Checks that the
74771 +IP source address is a legal unicast address, or that the packet is destined
74772 +for one of this machine's addresses (see below). Shortens packets to the IP
74773 +length, if the IP length is shorter than the nominal packet length (due to
74774 +Ethernet padding, for example). Also sets the destination IP address
74775 +annotation to the actual destination IP address.
74776 +.PP
74777 +\fBCheckIPHeader\fR emits valid packets on output 0. Invalid packets are pushed out
74778 +on output 1, unless output 1 was unused; if so, drops invalid packets.
74779 +.PP
74780 +\fBCheckIPHeader\fR checks packets' source addresses for validity if one or more of
74781 +the INTERFACES, BADSRC, and GOODDST keyword arguments are supplied (RFC1812
74782 +5.3.7).
74783 +.PP
74784 +\fBCheckIPHeader\fR prints a message to the console the first time it encounters an
74785 +incorrect IP packet (but see VERBOSE below).
74786 +.PP
74787 +Keyword arguments are:
74788 +.PP
74789 +
74790 +
74791 +.IP "CHECKSUM" 5
74792 +Boolean. If true, then check each packet's checksum for validity; if false, do
74793 +not check the checksum. Default is true.
74794 +.IP "" 5
74795 +.IP "OFFSET" 5
74796 +Unsigned integer. Byte position at which the IP header begins. Default is 0.
74797 +.IP "" 5
74798 +.IP "BADSRC" 5
74799 +Space-separated list of IP addresses. \fBCheckIPHeader\fR will drop packets whose
74800 +source address is on this list (but see GOODDST below). Default is empty.
74801 +.IP "" 5
74802 +.IP "GOODDST" 5
74803 +Space-separated list of IP addresses. \fBCheckIPHeader\fR exempts packets whose
74804 +destination address is on this list from BADSRC processing. Default is empty.
74805 +.IP "" 5
74806 +.IP "INTERFACES" 5
74807 +Space-separated list of IP addresses with network prefixes, meant to represent
74808 +this router's interface addresses. This argument specifies both BADSRC and
74809 +GOODDST. Specifically, the argument "INTERFACES 18.26.4.9/24 18.32.9.44/28"
74810 +acts like a BADSRC of "18.26.4.255 18.32.9.47 0.0.0.0 255.255.255.255" -- the
74811 +set of broadcast addresses for this router -- and a GOODDST of "18.26.4.9
74812 +18.32.9.44". Default is not given.
74813 +.IP "" 5
74814 +.IP "VERBOSE" 5
74815 +Boolean. If it is true, then a message will be printed for every erroneous
74816 +packet, rather than just the first. False by default.
74817 +.IP "" 5
74818 +.IP "DETAILS" 5
74819 +Boolean. If it is true, then \fBCheckIPHeader\fR will maintain detailed counts of
74820 +how many packets were dropped for each possible reason, accessible through the
74821 +\f(CWdrop_details\fR handler. False by default.
74822 +.IP "" 5
74823 +.PP
74824 +
74825 +.SH "NOTES"
74826 +\fBCheckIPHeader\fR supports an old configuration syntax:
74827 +.PP
74828 +\fBCheckIPHeader\fR([BADSRC2, OFFSET, \fIkeywords\fR])
74829 +.PP
74830 +The BADSRC2 argument behaves like the BADSRC keyword, except that if you use
74831 +this syntax, 0.0.0.0 and 255.255.255.255 considered bad addresses in addition
74832 +to those explicitly in the list. This syntax is deprecated and should not be
74833 +used in new configurations.
74834 +.PP
74835 +
74836 +.SH "ELEMENT HANDLERS"
74837 +
74838 +
74839 +
74840 +.IP "\fBdrops\fR (read-only)" 5
74841 +Returns the number of incorrect packets \fBCheckIPHeader\fR has seen.
74842 +.IP "" 5
74843 +.IP "\fBdrop_details\fR (read-only)" 5
74844 +Returns a text file showing how many erroneous packets \fBCheckIPHeader\fR has seen,
74845 +subdivided by error. Only available if the DETAILS keyword argument was true.
74846 +.IP "" 5
74847 +.PP
74848 +
74849 +.SH "SEE ALSO"
74850 +.M CheckIPHeader2 n ,
74851 +.M MarkIPHeader n ,
74852 +.M SetIPChecksum n ,
74853 +.M StripIPHeader n ,
74854 +.M CheckTCPHeader n ,
74855 +.M CheckUDPHeader n ,
74856 +.M CheckICMPHeader "n" 
74857 +
74858 diff -Nurb click-1.6.0/inst/share/man/mann/CheckIPHeader2.n click-1.6.0-27/inst/share/man/mann/CheckIPHeader2.n
74859 --- click-1.6.0/inst/share/man/mann/CheckIPHeader2.n    1969-12-31 19:00:00.000000000 -0500
74860 +++ click-1.6.0-27/inst/share/man/mann/CheckIPHeader2.n 2009-02-11 14:08:52.000000000 -0500
74861 @@ -0,0 +1,33 @@
74862 +.\" -*- mode: nroff -*-
74863 +.\" Generated by 'click-elem2man' from '../elements/ip/checkipheader2.hh'
74864 +.de M
74865 +.IR "\\$1" "(\\$2)\\$3"
74866 +..
74867 +.de RM
74868 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74869 +..
74870 +.TH "CHECKIPHEADER2" n "11/Feb/2009" "Click"
74871 +.SH "NAME"
74872 +CheckIPHeader2 \- Click element;
74873 +checks IP header, no checksum
74874 +.SH "SYNOPSIS"
74875 +\fBCheckIPHeader2\fR([OFFSET, \fIkeywords\fR])
74876 +
74877 +\fBPorts\fR: 1 input, 1-2 outputs
74878 +.br
74879 +\fBProcessing\fR: agnostic, but output 1 is push
74880 +.br
74881 +\fBPackage\fR: ip (core)
74882 +.br
74883 +.SH "DESCRIPTION"
74884 +This element behaves exactly like 
74885 +.M CheckIPHeader "n" ,
74886 +except that it does not by
74887 +default check packets' IP checksums.
74888 +.PP
74889 +
74890 +.SH "SEE ALSO"
74891 +.M CheckIPHeader n ,
74892 +.M StripIPHeader n ,
74893 +.M MarkIPHeader "n" 
74894 +
74895 diff -Nurb click-1.6.0/inst/share/man/mann/CheckLength.n click-1.6.0-27/inst/share/man/mann/CheckLength.n
74896 --- click-1.6.0/inst/share/man/mann/CheckLength.n       1969-12-31 19:00:00.000000000 -0500
74897 +++ click-1.6.0-27/inst/share/man/mann/CheckLength.n    2009-02-11 14:08:52.000000000 -0500
74898 @@ -0,0 +1,26 @@
74899 +.\" -*- mode: nroff -*-
74900 +.\" Generated by 'click-elem2man' from '../elements/standard/checklength.hh'
74901 +.de M
74902 +.IR "\\$1" "(\\$2)\\$3"
74903 +..
74904 +.de RM
74905 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74906 +..
74907 +.TH "CHECKLENGTH" n "11/Feb/2009" "Click"
74908 +.SH "NAME"
74909 +CheckLength \- Click element;
74910 +drops large packets
74911 +.SH "SYNOPSIS"
74912 +\fBCheckLength\fR(LENGTH)
74913 +
74914 +\fBPorts\fR: 1 input, 1-2 outputs
74915 +.br
74916 +\fBProcessing\fR: agnostic, but output 1 is push
74917 +.br
74918 +\fBPackage\fR: standard (core)
74919 +.br
74920 +.SH "DESCRIPTION"
74921 +\fBCheckLength\fR checks every packet's length against LENGTH. If the packet is
74922 +no larger than LENGTH, it is sent to output 0; otherwise, it is sent to
74923 +output 1 (or dropped if there is no output 1).
74924 +
74925 diff -Nurb click-1.6.0/inst/share/man/mann/CheckPaint.n click-1.6.0-27/inst/share/man/mann/CheckPaint.n
74926 --- click-1.6.0/inst/share/man/mann/CheckPaint.n        1969-12-31 19:00:00.000000000 -0500
74927 +++ click-1.6.0-27/inst/share/man/mann/CheckPaint.n     2009-02-11 14:08:51.000000000 -0500
74928 @@ -0,0 +1,31 @@
74929 +.\" -*- mode: nroff -*-
74930 +.\" Generated by 'click-elem2man' from '../elements/standard/checkpaint.hh'
74931 +.de M
74932 +.IR "\\$1" "(\\$2)\\$3"
74933 +..
74934 +.de RM
74935 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74936 +..
74937 +.TH "CHECKPAINT" n "11/Feb/2009" "Click"
74938 +.SH "NAME"
74939 +CheckPaint \- Click element;
74940 +checks packets' paint annotation
74941 +.SH "SYNOPSIS"
74942 +\fBCheckPaint\fR(COLOR)
74943 +
74944 +\fBPorts\fR: 1 input, 1-2 outputs
74945 +.br
74946 +\fBProcessing\fR: agnostic, but output 1 is push
74947 +.br
74948 +\fBPackage\fR: standard (core)
74949 +.br
74950 +.SH "DESCRIPTION"
74951 +Checks that incoming packets have paint annotation equal to COLOR. If their
74952 +paints are not equal to COLOR, then they are dropped or emitted on output 1,
74953 +depending on how many outputs were used.
74954 +.PP
74955 +
74956 +.SH "SEE ALSO"
74957 +.M Paint n ,
74958 +.M PaintTee "n" 
74959 +
74960 diff -Nurb click-1.6.0/inst/share/man/mann/CheckTCPHeader.n click-1.6.0-27/inst/share/man/mann/CheckTCPHeader.n
74961 --- click-1.6.0/inst/share/man/mann/CheckTCPHeader.n    1969-12-31 19:00:00.000000000 -0500
74962 +++ click-1.6.0-27/inst/share/man/mann/CheckTCPHeader.n 2009-02-11 14:08:51.000000000 -0500
74963 @@ -0,0 +1,64 @@
74964 +.\" -*- mode: nroff -*-
74965 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/checktcpheader.hh'
74966 +.de M
74967 +.IR "\\$1" "(\\$2)\\$3"
74968 +..
74969 +.de RM
74970 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
74971 +..
74972 +.TH "CHECKTCPHEADER" n "11/Feb/2009" "Click"
74973 +.SH "NAME"
74974 +CheckTCPHeader \- Click element;
74975 +checks TCP header on TCP/IP packets
74976 +.SH "SYNOPSIS"
74977 +\fBCheckTCPHeader\fR([\fIKEYWORDS\fR])
74978 +
74979 +\fBPorts\fR: 1 input, 1-2 outputs
74980 +.br
74981 +\fBProcessing\fR: agnostic, but output 1 is push
74982 +.br
74983 +\fBPackage\fR: tcpudp (core)
74984 +.br
74985 +.SH "DESCRIPTION"
74986 +Expects TCP/IP packets as input. Checks that the TCP header length and
74987 +checksum fields are valid. Pushes invalid packets out on output 1, unless
74988 +output 1 was unused; if so, drops invalid packets.
74989 +.PP
74990 +Prints a message to the console the first time it encounters an incorrect
74991 +packet (but see VERBOSE below).
74992 +.PP
74993 +Keyword arguments are:
74994 +.PP
74995 +
74996 +
74997 +.IP "VERBOSE" 5
74998 +Boolean. If it is true, then a message will be printed for every erroneous
74999 +packet, rather than just the first. False by default.
75000 +.IP "" 5
75001 +.IP "DETAILS" 5
75002 +Boolean. If it is true, then \fBCheckTCPHeader\fR will maintain detailed counts of
75003 +how many packets were dropped for each possible reason, accessible through the
75004 +\f(CWdrop_details\fR handler. False by default.
75005 +.IP "" 5
75006 +.PP
75007 +
75008 +.SH "ELEMENT HANDLERS"
75009 +
75010 +
75011 +
75012 +.IP "\fBdrops\fR (read-only)" 5
75013 +Returns the number of incorrect packets \fBCheckTCPHeader\fR has seen.
75014 +.IP "" 5
75015 +.IP "\fBdrop_details\fR (read-only)" 5
75016 +Returns a text file showing how many erroneous packets \fBCheckTCPHeader\fR has
75017 +seen, subdivided by error. Only available if the DETAILS keyword argument was
75018 +true.
75019 +.IP "" 5
75020 +.PP
75021 +
75022 +.SH "SEE ALSO"
75023 +.M CheckIPHeader n ,
75024 +.M CheckUDPHeader n ,
75025 +.M CheckICMPHeader n ,
75026 +.M MarkIPHeader "n" 
75027 +
75028 diff -Nurb click-1.6.0/inst/share/man/mann/CheckUDPHeader.n click-1.6.0-27/inst/share/man/mann/CheckUDPHeader.n
75029 --- click-1.6.0/inst/share/man/mann/CheckUDPHeader.n    1969-12-31 19:00:00.000000000 -0500
75030 +++ click-1.6.0-27/inst/share/man/mann/CheckUDPHeader.n 2009-02-11 14:08:51.000000000 -0500
75031 @@ -0,0 +1,64 @@
75032 +.\" -*- mode: nroff -*-
75033 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/checkudpheader.hh'
75034 +.de M
75035 +.IR "\\$1" "(\\$2)\\$3"
75036 +..
75037 +.de RM
75038 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75039 +..
75040 +.TH "CHECKUDPHEADER" n "11/Feb/2009" "Click"
75041 +.SH "NAME"
75042 +CheckUDPHeader \- Click element;
75043 +checks UDP header on UDP/IP packets
75044 +.SH "SYNOPSIS"
75045 +\fBCheckUDPHeader\fR([\fIKEYWORDS\fR])
75046 +
75047 +\fBPorts\fR: 1 input, 1-2 outputs
75048 +.br
75049 +\fBProcessing\fR: agnostic, but output 1 is push
75050 +.br
75051 +\fBPackage\fR: tcpudp (core)
75052 +.br
75053 +.SH "DESCRIPTION"
75054 +Expects UDP/IP packets as input. Checks that the UDP header length and
75055 +checksum fields are valid. Pushes invalid packets out on output 1, unless
75056 +output 1 was unused; if so, drops invalid packets.
75057 +.PP
75058 +Prints a message to the console the first time it encounters an incorrect
75059 +packet (but see VERBOSE below).
75060 +.PP
75061 +Keyword arguments are:
75062 +.PP
75063 +
75064 +
75065 +.IP "VERBOSE" 5
75066 +Boolean. If it is true, then a message will be printed for every erroneous
75067 +packet, rather than just the first. False by default.
75068 +.IP "" 5
75069 +.IP "DETAILS" 5
75070 +Boolean. If it is true, then \fBCheckUDPHeader\fR will maintain detailed counts of
75071 +how many packets were dropped for each possible reason, accessible through the
75072 +\f(CWdrop_details\fR handler. False by default.
75073 +.IP "" 5
75074 +.PP
75075 +
75076 +.SH "ELEMENT HANDLERS"
75077 +
75078 +
75079 +
75080 +.IP "\fBdrops\fR (read-only)" 5
75081 +Returns the number of incorrect packets \fBCheckUDPHeader\fR has seen.
75082 +.IP "" 5
75083 +.IP "\fBdrop_details\fR (read-only)" 5
75084 +Returns a text file showing how many erroneous packets \fBCheckUDPHeader\fR has
75085 +seen, subdivided by error. Only available if the DETAILS keyword argument was
75086 +true.
75087 +.IP "" 5
75088 +.PP
75089 +
75090 +.SH "SEE ALSO"
75091 +.M CheckIPHeader n ,
75092 +.M CheckTCPHeader n ,
75093 +.M CheckICMPHeader n ,
75094 +.M MarkIPHeader "n" 
75095 +
75096 diff -Nurb click-1.6.0/inst/share/man/mann/Classifier.n click-1.6.0-27/inst/share/man/mann/Classifier.n
75097 --- click-1.6.0/inst/share/man/mann/Classifier.n        1969-12-31 19:00:00.000000000 -0500
75098 +++ click-1.6.0-27/inst/share/man/mann/Classifier.n     2009-02-11 14:08:52.000000000 -0500
75099 @@ -0,0 +1,105 @@
75100 +.\" -*- mode: nroff -*-
75101 +.\" Generated by 'click-elem2man' from '../elements/standard/classifier.hh'
75102 +.de M
75103 +.IR "\\$1" "(\\$2)\\$3"
75104 +..
75105 +.de RM
75106 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75107 +..
75108 +.TH "CLASSIFIER" n "11/Feb/2009" "Click"
75109 +.SH "NAME"
75110 +Classifier \- Click element;
75111 +classifies packets by contents
75112 +.SH "SYNOPSIS"
75113 +\fBClassifier\fR(pattern1, ..., patternN)
75114 +
75115 +\fBPorts\fR: 1 input, any number of outputs
75116 +.br
75117 +\fBProcessing\fR: push
75118 +.br
75119 +\fBPackage\fR: standard (core)
75120 +.br
75121 +.SH "DESCRIPTION"
75122 +Classifies packets. The \fBClassifier\fR has N outputs, each associated with the
75123 +corresponding pattern from the configuration string.
75124 +A pattern is a set of clauses, where each clause is either "offset/value"
75125 +or "offset/value%mask". A pattern matches if the packet has the indicated
75126 +value at each offset.
75127 +.PP
75128 +The clauses in each pattern are separated
75129 +by spaces. A clause consists of the offset, "/", the value, and (optionally)
75130 +"%" and a mask. The offset is in decimal. The value and mask are in hex.
75131 +The length of the value is implied by the number of hex digits, which must
75132 +be even. "?" is also allowed as a "hex digit"; it means "don't care about
75133 +the value of this nibble".
75134 +.PP
75135 +If present, the mask must have the same number of hex digits as the value.
75136 +The matcher will only check bits that are 1 in the mask.
75137 +.PP
75138 +A clause may be preceded by "!", in which case the clause must NOT match
75139 +the packet.
75140 +.PP
75141 +As a special case, a pattern consisting of "-" matches every packet.
75142 +.PP
75143 +The patterns are scanned in order, and the packet is sent to the output
75144 +corresponding to the first matching pattern. Thus more specific patterns
75145 +should come before less specific ones. You will get a warning if no packet
75146 +could ever match a pattern. Usually, this is because an earlier pattern is
75147 +more general, or because your pattern is contradictory (`12/0806 12/0800').
75148 +.PP
75149 +
75150 +.SH "NOTES"
75151 +The 
75152 +.M IPClassifier "n" 
75153 +and 
75154 +.M IPFilter "n" 
75155 +elements have a friendlier syntax if you are
75156 +classifying IP packets.
75157 +.PP
75158 +
75159 +.SH "EXAMPLES"
75160 +For example,
75161 +.PP
75162 +.nf
75163 +\&  Classifier(12/0806 20/0001,
75164 +\&             12/0806 20/0002,
75165 +\&             12/0800,
75166 +\&             -);
75167 +.fi
75168 +.PP
75169 +creates an element with four outputs intended to process
75170 +Ethernet packets.
75171 +ARP requests are sent to output 0, ARP replies are sent to
75172 +output 1, IP packets to output 2, and all others to output 3.
75173 +.PP
75174 +
75175 +
75176 +.SH "ELEMENT HANDLERS"
75177 +
75178 +
75179 +
75180 +.IP "\fBprogram\fR (read-only)" 5
75181 +Returns a human-readable definition of the program the \fBClassifier\fR element
75182 +is using to classify packets. At each step in the program, four bytes
75183 +of packet data are ANDed with a mask and compared against four bytes of
75184 +classifier pattern.
75185 +.IP "" 5
75186 +The \fBClassifier\fR patterns above compile into the following program:
75187 +.IP "" 5
75188 +.nf
75189 +\&  0  12/08060000%ffff0000  yes->step 1  no->step 3
75190 +\&  1  20/00010000%ffff0000  yes->[0]  no->step 2
75191 +\&  2  20/00020000%ffff0000  yes->[1]  no->[3]
75192 +\&  3  12/08000000%ffff0000  yes->[2]  no->[3]
75193 +\&  safe length 22
75194 +\&  alignment offset 0
75195 +.fi
75196 +.IP "" 5
75197 +
75198 +
75199 +.PP
75200 +
75201 +.SH "SEE ALSO"
75202 +.M IPClassifier n ,
75203 +.M IPFilter "n" 
75204 +
75205 diff -Nurb click-1.6.0/inst/share/man/mann/CompareBlock.n click-1.6.0-27/inst/share/man/mann/CompareBlock.n
75206 --- click-1.6.0/inst/share/man/mann/CompareBlock.n      1969-12-31 19:00:00.000000000 -0500
75207 +++ click-1.6.0-27/inst/share/man/mann/CompareBlock.n   2009-02-11 14:08:51.000000000 -0500
75208 @@ -0,0 +1,62 @@
75209 +.\" -*- mode: nroff -*-
75210 +.\" Generated by 'click-elem2man' from '../elements/standard/compblock.hh'
75211 +.de M
75212 +.IR "\\$1" "(\\$2)\\$3"
75213 +..
75214 +.de RM
75215 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75216 +..
75217 +.TH "COMPAREBLOCK" n "11/Feb/2009" "Click"
75218 +.SH "NAME"
75219 +CompareBlock \- Click element;
75220 +drops packets out of rate range
75221 +.SH "SYNOPSIS"
75222 +\fBCompareBlock\fR(FWD_WEIGHT, REV_WEIGHT, THRESH)
75223 +
75224 +\fBPorts\fR: 1 input, 2 outputs
75225 +.br
75226 +\fBProcessing\fR: agnostic
75227 +.br
75228 +\fBPackage\fR: standard (core)
75229 +.br
75230 +.SH "DESCRIPTION"
75231 +FWD_WEIGHT, REV_WEIGHT, and THRESH are integers
75232 +.PP
75233 +Splits packets based on the fwd_rate_anno and rev_rate_anno rate annotations
75234 +set by 
75235 +.M IPRateMonitor "n" .
75236 +If either annotation is greater than THRESH,
75237 +and FWD_WEIGHT*fwd_rate_anno > REV_WEIGHT*rev_rate_anno, 
75238 +the packet is pushed on output 1, otherwise on output 0.
75239 +.PP
75240 +
75241 +.SH "EXAMPLES"
75242 +
75243 +.nf
75244 +\&  b :: CompareBlock(5, 2, 100);
75245 +.fi
75246 +.PP
75247 +if (5*fwd_rate > 2*rev_rate) AND (fwd_rate > 100 or rev_rate > 100), send
75248 +packet out on output 1, otherwise on output 0.
75249 +.PP
75250 +
75251 +
75252 +.SH "ELEMENT HANDLERS"
75253 +
75254 +
75255 +
75256 +.IP "\fBfwd_weight\fR (read/write)" 5
75257 +value of FWD_WEIGHT
75258 +.IP "" 5
75259 +.IP "\fBrev_weight\fR (read/write)" 5
75260 +value of REV_WEIGHT
75261 +.IP "" 5
75262 +.IP "\fBthresh\fR (read/write)" 5
75263 +value of THRESH
75264 +.IP "" 5
75265 +.PP
75266 +
75267 +.SH "SEE ALSO"
75268 +.M Block n ,
75269 +.M IPRateMonitor "n" 
75270 +
75271 diff -Nurb click-1.6.0/inst/share/man/mann/ControlSocket.n click-1.6.0-27/inst/share/man/mann/ControlSocket.n
75272 --- click-1.6.0/inst/share/man/mann/ControlSocket.n     1969-12-31 19:00:00.000000000 -0500
75273 +++ click-1.6.0-27/inst/share/man/mann/ControlSocket.n  2009-02-11 14:08:51.000000000 -0500
75274 @@ -0,0 +1,181 @@
75275 +.\" -*- mode: nroff -*-
75276 +.\" Generated by 'click-elem2man' from '../elements/userlevel/controlsocket.hh'
75277 +.de M
75278 +.IR "\\$1" "(\\$2)\\$3"
75279 +..
75280 +.de RM
75281 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75282 +..
75283 +.TH "CONTROLSOCKET" n "11/Feb/2009" "Click"
75284 +.SH "NAME"
75285 +ControlSocket \- Click element;
75286 +opens control sockets for other programs
75287 +.SH "SYNOPSIS"
75288 +\fBControlSocket\fR("TCP", PORTNUMBER [, \fIKEYWORDS\fR])
75289 +.br
75290 +\fBControlSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR])
75291 +
75292 +\fBPorts\fR: none
75293 +.br
75294 +\fBDrivers\fR: userlevel
75295 +.br
75296 +\fBPackage\fR: userlevel (core)
75297 +.br
75298 +.SH "DESCRIPTION"
75299 +Opens a control socket that allows other user-level programs to call read or
75300 +write handlers on the router. Depending on its configuration string,
75301 +\fBControlSocket\fR will listen on TCP port PORTNUMBER, or on a UNIX-domain socket
75302 +named FILENAME. With the PROXY keyword argument, you can make \fBControlSocket\fR speak to
75303 +a kernel driver; see below.
75304 +.PP
75305 +The "server" (that is, the \fBControlSocket\fR element) speaks a relatively
75306 +simple line-based protocol. Commands sent to the server are single lines of
75307 +text; they consist of words separated by spaces. The server responds to
75308 +every command with at least one message line followed optionally by some
75309 +data. Message lines start with a three-digit response code, as in FTP. When
75310 +multiple message lines are sent in response to a single command, all but
75311 +the last begin with the response code and a hyphen (as in "200-Hello!");
75312 +the last line begins with the response code and a space (as in "200
75313 +Hello!").
75314 +.PP
75315 +The server will accept lines terminated by CR, LF, or CRLF. Its response
75316 +lines are always terminated by CRLF.
75317 +.PP
75318 +When a connection is opened, the server responds by stating its protocol
75319 +version number with a line like "Click::ControlSocket/1.1". The current
75320 +version number is 1.1. Changes in minor version number will only add commands
75321 +and functionality to this specification, not change existing functionality.
75322 +.PP
75323 +\fBControlSocket\fR supports hot-swapping, meaning you can change configurations
75324 +without interrupting existing clients. The hot-swap will succeed only if the
75325 +old \fBControlSocket\fR and the new \fBControlSocket\fR have the same element name, and
75326 +the same socket type and port/filename parameters. Additionally, the new
75327 +\fBControlSocket\fR must have RETRIES set to 1 or more, since the old \fBControlSocket\fR
75328 +has already bound the relevant socket.
75329 +.PP
75330 +Keyword arguments are:
75331 +.PP
75332 +
75333 +
75334 +.IP "READONLY" 8
75335 +Boolean.  Disallows write handlers if true (it is false by
75336 +default). 
75337 +.IP "" 8
75338 +.IP "PROXY" 8
75339 +String. Specifies an element proxy. When a user requests the value of handler
75340 +E.H, \fBControlSocket\fR will actually return the value of `PROXY.E.H'. This is
75341 +useful with elements like 
75342 +.M KernelHandlerProxy "n" .
75343 +Default is empty (no proxy).
75344 +.IP "" 8
75345 +.IP "VERBOSE" 8
75346 +Boolean. When true, \fBControlSocket\fR will print messages whenever it accepts a
75347 +new connection or drops an old one. Default is false.
75348 +.IP "" 8
75349 +.IP "RETRIES" 8
75350 +Integer. If greater than 0, \fBControlSocket\fR won't immediately fail when it can't
75351 +open its socket. Instead, it will attempt to open the socket once a second
75352 +until it succeeds, or until RETRIES unsuccessful attempts (after which it will
75353 +stop the router). Default is 0.
75354 +.IP "" 8
75355 +.IP "RETRY_WARNINGS" 8
75356 +Boolean. If true, \fBControlSocket\fR will print warning messages every time it
75357 +fails to open a socket. If false, it will print messages only on the final
75358 +failure. Default is true.
75359 +.IP "" 8
75360 +.PP
75361 +
75362 +.SH "SERVER COMMANDS"
75363 +The server currently supports the following six commands. Many of the commands
75364 +take a \fIhandler\fR argument. These arguments name handlers, and take one of
75365 +three forms: \f(CW\fIelementname\fR.\fIhandlername\fR\fR names a particular element's
75366 +handler; \f(CW\fIelementnumber\fR.\fIhandlername\fR\fR also names an element handler, but
75367 +the element is identified by index, starting from 1; and \f(CW\fIhandlername\fR\fR
75368 +names a global handler. (There are seven global read handlers, named
75369 +\f(CWversion\fR, \f(CWlist\fR, \f(CWclasses\fR, \f(CWconfig\fR, \f(CWflatconfig\fR, \f(CWpackages\fR, and
75370 +\f(CWrequirements\fR. See click.o(8) for more information.)
75371 +.PP
75372 +
75373 +
75374 +.IP "READ \fIhandler\fR [\fIparams...\fR]" 5
75375 +Call a read \fIhandler\fR, passing the \fIparams\fR, if any,
75376 +as arguments, and return the results.
75377 +On success, responds with a "success" message (response
75378 +code 2xy) followed by a line like "DATA \fIn\fR". Here, \fIn\fR is a
75379 +decimal integer indicating the length of the read handler data. The \fIn\fR
75380 +bytes immediately following (the CRLF that terminates) the DATA line are
75381 +the handler's results.
75382 +.IP "" 5
75383 +.IP "WRITE \fIhandler\fR \fIparams...\fR" 5
75384 +Call a write \fIhandler\fR, passing the \fIparams\fR, if any, as arguments.
75385 +.IP "" 5
75386 +.IP "WRITEDATA \fIhandler\fR \fIn\fR" 5
75387 +Call a write \fIhandler\fR. The arguments to pass are the \fIn\fR bytes immediately
75388 +following (the CRLF that terminates) the WRITEDATA line.
75389 +.IP "" 5
75390 +.IP "CHECKREAD \fIhandler\fR" 5
75391 +Checks whether a \fIhandler\fR exists and is readable. The return status is 200
75392 +for readable handlers, and an appropriate error status for non-readable
75393 +handlers or nonexistent handlers.
75394 +.IP "" 5
75395 +.IP "CHECKWRITE \fIhandler\fR" 5
75396 +Checks whether a \fIhandler\fR exists and is writable.
75397 +.IP "" 5
75398 +.IP "LLRPC \fIllrpc\fR [\fIn\fR]" 5
75399 +Call an LLRPC \fIllrpc\fR and return the results. \fILlrpc\fR should have the form
75400 +\f(CW\fIelement\fR#\fIhexnumber\fR\fR. The \f(CW\fIhexnumber\fR\fR is the LLRPC number, from
75401 +\f(CW<click/llrpc.h>\fR, in hexadecimal network format. Translate \f(CWCLICK_LLRPC\fR
75402 +constants to network format by calling
75403 +\f(CWCLICK_LLRPC_HTON(CLICK_LLRPC_...)\fR. If \fIn\fR is given, then the \fIn\fR bytes
75404 +immediately following (the CRLF that terminates) the LLRPC line are passed in
75405 +as an argument. The results are returned after a "DATA \fInn\fR" line, as in
75406 +READ.
75407 +.IP "" 5
75408 +\fBControlSocket\fR will not call an LLRPC unless it can determine (from the command
75409 +number) how much data the LLRPC expects and returns. (Only "flat" LLRPCs may
75410 +be called; they are declared using the _CLICK_IOC_[RWS]F macros.)
75411 +.IP "" 5
75412 +.IP "QUIT" 5
75413 +Close the connection.
75414 +.IP "" 5
75415 +.PP
75416 +The server's response codes follow this pattern.
75417 +.PP
75418 +
75419 +.IP "2xy" 5
75420 +The command succeeded.
75421 +.IP "" 5
75422 +.IP "5xy" 5
75423 +The command failed.
75424 +.IP "" 5
75425 +.PP
75426 +Here are some of the particular error messages:
75427 +.PP
75428 +.nf
75429 +\&  200 OK.
75430 +\&  220 OK, but the handler reported some warnings.
75431 +\&  500 Syntax error.
75432 +\&  501 Unimplemented command.
75433 +\&  510 No such element.
75434 +\&  511 No such handler.
75435 +\&  520 Handler error.
75436 +\&  530 Permission denied.
75437 +\&  540 No router installed.
75438 +.fi
75439 +.PP
75440 +\fBControlSocket\fR is only available in user-level processes.
75441 +.PP
75442 +
75443 +.SH "EXAMPLES"
75444 +
75445 +.nf
75446 +\&  ControlSocket(unix, /tmp/clicksocket);
75447 +.fi
75448 +.PP
75449 +
75450 +
75451 +
75452 +.SH "SEE ALSO"
75453 +.M ChatterSocket n ,
75454 +.M KernelHandlerProxy "n" 
75455 +
75456 diff -Nurb click-1.6.0/inst/share/man/mann/Counter.n click-1.6.0-27/inst/share/man/mann/Counter.n
75457 --- click-1.6.0/inst/share/man/mann/Counter.n   1969-12-31 19:00:00.000000000 -0500
75458 +++ click-1.6.0-27/inst/share/man/mann/Counter.n        2009-02-11 14:08:51.000000000 -0500
75459 @@ -0,0 +1,81 @@
75460 +.\" -*- mode: nroff -*-
75461 +.\" Generated by 'click-elem2man' from '../elements/standard/counter.hh'
75462 +.de M
75463 +.IR "\\$1" "(\\$2)\\$3"
75464 +..
75465 +.de RM
75466 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75467 +..
75468 +.TH "COUNTER" n "11/Feb/2009" "Click"
75469 +.SH "NAME"
75470 +Counter \- Click element;
75471 +measures packet count and rate
75472 +.SH "SYNOPSIS"
75473 +\fBCounter\fR([\fIkeywords COUNT_CALL, BYTE_COUNT_CALL\fR])
75474 +
75475 +\fBPorts\fR: 1 input, 1 output
75476 +.br
75477 +\fBProcessing\fR: agnostic
75478 +.br
75479 +\fBPackage\fR: standard (core)
75480 +.br
75481 +.SH "DESCRIPTION"
75482 +Passes packets unchanged from its input to its output, maintaining statistics
75483 +information about packet count and packet rate.
75484 +.PP
75485 +Keyword arguments are:
75486 +.PP
75487 +
75488 +
75489 +.IP "COUNT_CALL" 8
75490 +Argument is `\fIN\fR \fIHANDLER\fR [\fIVALUE\fR]'. When the packet count reaches \fIN\fR,
75491 +call the write handler \fIHANDLER\fR with value \fIVALUE\fR.
75492 +.IP "" 8
75493 +.IP "BYTE_COUNT_CALL" 8
75494 +Argument is `\fIN\fR \fIHANDLER\fR [\fIVALUE\fR]'. When the byte count reaches or
75495 +exceeds \fIN\fR, call the write handler \fIHANDLER\fR with value \fIVALUE\fR.
75496 +.IP "" 8
75497 +.PP
75498 +
75499 +.SH "ELEMENT HANDLERS"
75500 +
75501 +
75502 +
75503 +.IP "\fBcount\fR (read-only)" 5
75504 +Returns the number of packets that have passed through since the last reset.
75505 +.IP "" 5
75506 +.IP "\fBbyte_count\fR (read-only)" 5
75507 +Returns the number of bytes that have passed through since the last reset.
75508 +.IP "" 5
75509 +.IP "\fBrate\fR (read-only)" 5
75510 +Returns the recent arrival rate, measured by exponential
75511 +weighted moving average, in packets per second.
75512 +.IP "" 5
75513 +.IP "\fBreset_counts\fR (write-only)" 5
75514 +Resets the counts and rates to zero.
75515 +.IP "" 5
75516 +.IP "\fBreset\fR (write-only)" 5
75517 +Same as 'reset_counts'.
75518 +.IP "" 5
75519 +.IP "\fBcount_call\fR (write-only)" 5
75520 +Writes a new COUNT_CALL argument. The handler can be omitted.
75521 +.IP "" 5
75522 +.IP "\fBbyte_count_call\fR (write-only)" 5
75523 +Writes a new BYTE_COUNT_CALL argument. The handler can be omitted.
75524 +.IP "" 5
75525 +.IP "\fBCLICK_LLRPC_GET_RATE\fR (llrpc)" 5
75526 +Argument is a pointer to an integer that must be 0.  Returns the recent
75527 +arrival rate (measured by exponential weighted moving average) in
75528 +packets per second. 
75529 +.IP "" 5
75530 +.IP "\fBCLICK_LLRPC_GET_COUNT\fR (llrpc)" 5
75531 +Argument is a pointer to an integer that must be 0 (packet count) or 1 (byte
75532 +count). Returns the current packet or byte count.
75533 +.IP "" 5
75534 +.IP "\fBCLICK_LLRPC_GET_COUNTS\fR (llrpc)" 5
75535 +Argument is a pointer to a click_llrpc_counts_st structure (see
75536 +<click/llrpc.h>). The \f(CWkeys\fR components must be 0 (packet count) or 1 (byte
75537 +count). Stores the corresponding counts in the corresponding \f(CWvalues\fR
75538 +components.
75539 +.PP
75540 +
75541 diff -Nurb click-1.6.0/inst/share/man/mann/CycleCountAccum.n click-1.6.0-27/inst/share/man/mann/CycleCountAccum.n
75542 --- click-1.6.0/inst/share/man/mann/CycleCountAccum.n   1969-12-31 19:00:00.000000000 -0500
75543 +++ click-1.6.0-27/inst/share/man/mann/CycleCountAccum.n        2009-02-11 14:08:51.000000000 -0500
75544 @@ -0,0 +1,60 @@
75545 +.\" -*- mode: nroff -*-
75546 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/cyclecountaccum.hh'
75547 +.de M
75548 +.IR "\\$1" "(\\$2)\\$3"
75549 +..
75550 +.de RM
75551 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75552 +..
75553 +.TH "CYCLECOUNTACCUM" n "11/Feb/2009" "Click"
75554 +.SH "NAME"
75555 +CycleCountAccum \- Click element;
75556 +collects differences in cycle counters
75557 +.SH "SYNOPSIS"
75558 +\fBCycleCountAccum\fR()
75559 +
75560 +\fBPorts\fR: 1 input, 1 output
75561 +.br
75562 +\fBProcessing\fR: agnostic
75563 +.br
75564 +\fBDrivers\fR: linuxmodule
75565 +.br
75566 +\fBPackage\fR: linuxmodule (core)
75567 +.br
75568 +.SH "DESCRIPTION"
75569 +Incoming packets should have their cycle counter annotation set.  Measures the
75570 +current value of the cycle counter, and keeps track of the total accumulated
75571 +difference.  Packets whose cycle counter annotations are zero are not added to
75572 +the count or difference.
75573 +.PP
75574 +
75575 +.SH "NOTES"
75576 +A packet has room for either exactly one cycle count or exactly one
75577 +performance metric.
75578 +.PP
75579 +
75580 +.SH "ELEMENT HANDLERS"
75581 +
75582 +
75583 +
75584 +.IP "\fBcount\fR (read-only)" 5
75585 +Returns the number of packets that have passed.
75586 +.IP "" 5
75587 +.IP "\fBcycles\fR (read-only)" 5
75588 +Returns the accumulated cycles for all passing packets.
75589 +.IP "" 5
75590 +.IP "\fBzero_count\fR (read-only)" 5
75591 +Returns the number of packets with zero-valued cycle counter annotations that
75592 +have passed.  These aren't included in the \f(CWcount\fR.
75593 +.IP "" 5
75594 +.IP "\fBreset_counts\fR (write-only)" 5
75595 +Resets \f(CWcount\fR, \f(CWcycles\fR, and \f(CWzero_count\fR counters to zero when written.
75596 +.IP "" 5
75597 +.PP
75598 +
75599 +.SH "SEE ALSO"
75600 +.M SetCycleCount n ,
75601 +.M RoundTripCycleCount n ,
75602 +.M SetPerfCount n ,
75603 +.M PerfCountAccum "n" 
75604 +
75605 diff -Nurb click-1.6.0/inst/share/man/mann/DRRSched.n click-1.6.0-27/inst/share/man/mann/DRRSched.n
75606 --- click-1.6.0/inst/share/man/mann/DRRSched.n  1969-12-31 19:00:00.000000000 -0500
75607 +++ click-1.6.0-27/inst/share/man/mann/DRRSched.n       2009-02-11 14:08:51.000000000 -0500
75608 @@ -0,0 +1,40 @@
75609 +.\" -*- mode: nroff -*-
75610 +.\" Generated by 'click-elem2man' from '../elements/standard/drr.hh'
75611 +.de M
75612 +.IR "\\$1" "(\\$2)\\$3"
75613 +..
75614 +.de RM
75615 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75616 +..
75617 +.TH "DRRSCHED" n "11/Feb/2009" "Click"
75618 +.SH "NAME"
75619 +DRRSched \- Click element;
75620 +pulls from inputs with deficit round robin scheduling
75621 +.SH "SYNOPSIS"
75622 +DRRSched
75623 +
75624 +\fBPorts\fR: one output, zero or more inputs
75625 +.br
75626 +\fBProcessing\fR: pull
75627 +.br
75628 +\fBPackage\fR: standard (core)
75629 +.br
75630 +.SH "DESCRIPTION"
75631 +Schedules packets with deficit round robin scheduling, from
75632 +Shreedhar and Varghese's SIGCOMM 1995 paper "Efficient Fair
75633 +Queuing using Deficit Round Robin."
75634 +.PP
75635 +The inputs usually come from Queues or other pull schedulers.
75636 +\fBDRRSched\fR uses notification to avoid pulling from empty inputs.
75637 +.PP
75638 +
75639 +.SH "NOTES"
75640 +\fBDRRSched\fR is a notifier signal, active iff any of the upstream notifiers
75641 +are active.
75642 +.PP
75643 +
75644 +.SH "SEE ALSO"
75645 +.M PrioSched n ,
75646 +.M StrideSched n ,
75647 +.M RoundRobinSched "n" 
75648 +
75649 diff -Nurb click-1.6.0/inst/share/man/mann/DecIPTTL.n click-1.6.0-27/inst/share/man/mann/DecIPTTL.n
75650 --- click-1.6.0/inst/share/man/mann/DecIPTTL.n  1969-12-31 19:00:00.000000000 -0500
75651 +++ click-1.6.0-27/inst/share/man/mann/DecIPTTL.n       2009-02-11 14:08:52.000000000 -0500
75652 @@ -0,0 +1,47 @@
75653 +.\" -*- mode: nroff -*-
75654 +.\" Generated by 'click-elem2man' from '../elements/ip/decipttl.hh'
75655 +.de M
75656 +.IR "\\$1" "(\\$2)\\$3"
75657 +..
75658 +.de RM
75659 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75660 +..
75661 +.TH "DECIPTTL" n "11/Feb/2009" "Click"
75662 +.SH "NAME"
75663 +DecIPTTL \- Click element;
75664 +decrements IP time-to-live, drops dead packets
75665 +.SH "SYNOPSIS"
75666 +DecIPTTL
75667 +
75668 +\fBPorts\fR: 1 input, 1-2 outputs
75669 +.br
75670 +\fBProcessing\fR: agnostic, but output 1 is push
75671 +.br
75672 +\fBPackage\fR: ip (core)
75673 +.br
75674 +.SH "DESCRIPTION"
75675 +Expects IP packet as input.
75676 +If the ttl is <= 1 (i.e. has expired),
75677 +\fBDecIPTTL\fR sends the packet to output 1 (or discards it if there is no
75678 +output 1).
75679 +Otherwise it decrements the ttl, re-calculates the checksum,
75680 +and sends the packet to output 0.
75681 +.PP
75682 +Ordinarily output 1 is connected to an ICMP error packet generator.
75683 +.PP
75684 +
75685 +.SH "EXAMPLES"
75686 +This is a typical IP input processing sequence:
75687 +.PP
75688 +.nf
75689 +\&  ... -> CheckIPHeader -> dt::DecIPTTL -> ...
75690 +\&  dt[1] -> ICMPError(18.26.4.24, 11, 0) -> ...
75691 +.fi
75692 +.PP
75693 +
75694 +
75695 +
75696 +.SH "SEE ALSO"
75697 +.M ICMPError n ,
75698 +.M CheckIPHeader "n" 
75699 +
75700 diff -Nurb click-1.6.0/inst/share/man/mann/DelayShaper.n click-1.6.0-27/inst/share/man/mann/DelayShaper.n
75701 --- click-1.6.0/inst/share/man/mann/DelayShaper.n       1969-12-31 19:00:00.000000000 -0500
75702 +++ click-1.6.0-27/inst/share/man/mann/DelayShaper.n    2009-02-11 14:08:52.000000000 -0500
75703 @@ -0,0 +1,54 @@
75704 +.\" -*- mode: nroff -*-
75705 +.\" Generated by 'click-elem2man' from '../elements/standard/delayshaper.hh'
75706 +.de M
75707 +.IR "\\$1" "(\\$2)\\$3"
75708 +..
75709 +.de RM
75710 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75711 +..
75712 +.TH "DELAYSHAPER" n "11/Feb/2009" "Click"
75713 +.SH "NAME"
75714 +DelayShaper \- Click element;
75715 +shapes traffic to meet delay requirements
75716 +.SH "SYNOPSIS"
75717 +\fBDelayShaper\fR(DELAY)
75718 +
75719 +\fBPorts\fR: 1 input, 1 output
75720 +.br
75721 +\fBProcessing\fR: pull
75722 +.br
75723 +\fBPackage\fR: standard (core)
75724 +.br
75725 +.SH "DESCRIPTION"
75726 +Pulls packets from the single input port. Delays them for at least DELAY
75727 +seconds, with microsecond precision. A packet with timestamp T will be emitted
75728 +no earlier than time (T + DELAY). On output, the packet's timestamp is set to
75729 +the current time.
75730 +.PP
75731 +Differs from 
75732 +.M DelayUnqueue "n" 
75733 +in that both its input and output are pull. Packets
75734 +being delayed are enqueued until the necessary time has passed. At most one
75735 +packet is enqueued at a time. 
75736 +.M DelayUnqueue "n" 
75737 +returns null for every pull request
75738 +until the enqueued packet is ready.
75739 +.PP
75740 +.M SetTimestamp "n" 
75741 +element can be used to stamp the packet.
75742 +.PP
75743 +
75744 +.SH "ELEMENT HANDLERS"
75745 +
75746 +
75747 +
75748 +.IP "\fBdelay\fR (read/write)" 5
75749 +Returns or sets the DELAY parameter.
75750 +.IP "" 5
75751 +.PP
75752 +
75753 +.SH "SEE ALSO"
75754 +.M BandwidthShaper n ,
75755 +.M DelayUnqueue n ,
75756 +.M SetTimestamp "n" 
75757 +
75758 diff -Nurb click-1.6.0/inst/share/man/mann/DelayUnqueue.n click-1.6.0-27/inst/share/man/mann/DelayUnqueue.n
75759 --- click-1.6.0/inst/share/man/mann/DelayUnqueue.n      1969-12-31 19:00:00.000000000 -0500
75760 +++ click-1.6.0-27/inst/share/man/mann/DelayUnqueue.n   2009-02-11 14:08:51.000000000 -0500
75761 @@ -0,0 +1,40 @@
75762 +.\" -*- mode: nroff -*-
75763 +.\" Generated by 'click-elem2man' from '../elements/standard/delayunqueue.hh'
75764 +.de M
75765 +.IR "\\$1" "(\\$2)\\$3"
75766 +..
75767 +.de RM
75768 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75769 +..
75770 +.TH "DELAYUNQUEUE" n "11/Feb/2009" "Click"
75771 +.SH "NAME"
75772 +DelayUnqueue \- Click element;
75773 +delay inducing pull-to-push converter
75774 +.SH "SYNOPSIS"
75775 +\fBDelayUnqueue\fR(DELAY)
75776 +
75777 +\fBPorts\fR: 1 input, 1 output
75778 +.br
75779 +\fBProcessing\fR: pull inputs, push outputs
75780 +.br
75781 +\fBPackage\fR: standard (core)
75782 +.br
75783 +.SH "DESCRIPTION"
75784 +Pulls packets from the single input port. Delays them for at least DELAY
75785 +seconds, with microsecond precision. A packet with timestamp T will be emitted
75786 +no earlier than time (T + DELAY). On output, the packet's timestamp is set to
75787 +the current time.
75788 +.PP
75789 +\fBDelayUnqueue\fR listens for upstream notification, such as that available from
75790 +.M Queue "n" .
75791 +.PP
75792 +
75793 +.SH "SEE ALSO"
75794 +.M Queue n ,
75795 +.M Unqueue n ,
75796 +.M RatedUnqueue n ,
75797 +.M BandwidthRatedUnqueue n ,
75798 +.M LinkUnqueue n ,
75799 +.M DelayShaper n ,
75800 +.M SetTimestamp "n" 
75801 +
75802 diff -Nurb click-1.6.0/inst/share/man/mann/DirectIPLookup.n click-1.6.0-27/inst/share/man/mann/DirectIPLookup.n
75803 --- click-1.6.0/inst/share/man/mann/DirectIPLookup.n    1969-12-31 19:00:00.000000000 -0500
75804 +++ click-1.6.0-27/inst/share/man/mann/DirectIPLookup.n 2009-02-11 14:08:51.000000000 -0500
75805 @@ -0,0 +1,98 @@
75806 +.\" -*- mode: nroff -*-
75807 +.\" Generated by 'click-elem2man' from '../elements/ip/directiplookup.hh'
75808 +.de M
75809 +.IR "\\$1" "(\\$2)\\$3"
75810 +..
75811 +.de RM
75812 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75813 +..
75814 +.TH "DIRECTIPLOOKUP" n "11/Feb/2009" "Click"
75815 +.SH "NAME"
75816 +DirectIPLookup \- Click element;
75817 +IP routing lookup using direct-indexed tables
75818 +.SH "SYNOPSIS"
75819 +\fBDirectIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
75820 +
75821 +\fBPorts\fR: 1 input, any number of outputs
75822 +.br
75823 +\fBProcessing\fR: push
75824 +.br
75825 +\fBDrivers\fR: userlevel, bsdmodule
75826 +.br
75827 +\fBPackage\fR: ip (core)
75828 +.br
75829 +.SH "DESCRIPTION"
75830 +Expects a destination IP address annotation with each packet. Looks up that
75831 +address in its routing table, using longest-prefix-match, sets the destination
75832 +annotation to the corresponding GW (if specified), and emits the packet on the
75833 +indicated OUTput port.
75834 +.PP
75835 +Each argument is a route, specifying a destination and mask, an optional
75836 +gateway IP address, and an output port.  No destination-mask pair should occur
75837 +more than once.
75838 +.PP
75839 +\fBDirectIPLookup\fR is optimized for lookup speed at the expense of extensive RAM
75840 +usage. Each longest-prefix lookup is accomplished in one to maximum two DRAM
75841 +accesses, regardless on the number of routing table entries. Individual
75842 +entries can be dynamically added to or removed from the routing table with
75843 +relatively low CPU overhead, allowing for high update rates.
75844 +.PP
75845 +\fBDirectIPLookup\fR implements the \fIDIR-24-8-BASIC\fR lookup scheme described by
75846 +Gupta, Lin, and McKeown in the paper cited below.
75847 +.PP
75848 +
75849 +.SH "ELEMENT HANDLERS"
75850 +
75851 +
75852 +
75853 +.IP "\fBtable\fR (read-only)" 5
75854 +Outputs a human-readable version of the current routing table.
75855 +.IP "" 5
75856 +.IP "\fBlookup\fR (read-only)" 5
75857 +Reports the OUTput port and GW corresponding to an address.
75858 +.IP "" 5
75859 +.IP "\fBadd\fR (write-only)" 5
75860 +Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'.
75861 +Fails if a route for \f(CWADDR/MASK\fR already exists.
75862 +.IP "" 5
75863 +.IP "\fBset\fR (write-only)" 5
75864 +Sets a route, whether or not a route for the same prefix already exists.
75865 +.IP "" 5
75866 +.IP "\fBremove\fR (write-only)" 5
75867 +Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'.
75868 +.IP "" 5
75869 +.IP "\fBctrl\fR (write-only)" 5
75870 +Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to
75871 +add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply
75872 +multiple commands, one per line; all commands are executed as one atomic
75873 +operation.
75874 +.IP "" 5
75875 +.IP "\fBflush\fR (write-only)" 5
75876 +Clears the entire routing table in a single atomic operation.
75877 +.IP "" 5
75878 +.PP
75879 +
75880 +.SH "NOTES"
75881 +See 
75882 +.M IPRouteTable "n" 
75883 +for a performance comparison of the various IP routing
75884 +elements.
75885 +.PP
75886 +\fBDirectIPLookup\fR's memory allocation does not work in the Linux kernel, because
75887 +Linux uses a special function vmalloc() to allocate huge objects.  A useful
75888 +project would be to make \fBDirectIPLookup\fR suitable for the Linux kernel module,
75889 +by changing its memory allocation to use vmalloc().
75890 +.PP
75891 +
75892 +.SH "SEE ALSO"
75893 +.M IPRouteTable n ,
75894 +.M RangeIPLookup n ,
75895 +.M RadixIPLookup n ,
75896 +.M StaticIPLookup n ,
75897 +.M LinearIPLookup n ,
75898 +.M SortedIPLookup n ,
75899 +.M LinuxIPLookup n 
75900 +.PP
75901 +Pankaj Gupta, Steven Lin, and Nick McKeown.  "Routing Lookups in Hardware at
75902 +Memory Access Speeds".  In Proc. IEEE Infocom 1998, Vol. 3, pp. 1240-1247.
75903 +
75904 diff -Nurb click-1.6.0/inst/share/man/mann/Discard.n click-1.6.0-27/inst/share/man/mann/Discard.n
75905 --- click-1.6.0/inst/share/man/mann/Discard.n   1969-12-31 19:00:00.000000000 -0500
75906 +++ click-1.6.0-27/inst/share/man/mann/Discard.n        2009-02-11 14:08:51.000000000 -0500
75907 @@ -0,0 +1,43 @@
75908 +.\" -*- mode: nroff -*-
75909 +.\" Generated by 'click-elem2man' from '../elements/standard/discard.hh'
75910 +.de M
75911 +.IR "\\$1" "(\\$2)\\$3"
75912 +..
75913 +.de RM
75914 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75915 +..
75916 +.TH "DISCARD" n "11/Feb/2009" "Click"
75917 +.SH "NAME"
75918 +Discard \- Click element;
75919 +drops all packets
75920 +.SH "SYNOPSIS"
75921 +\fBDiscard\fR
75922 +
75923 +\fBPorts\fR: 1 input, no outputs
75924 +.br
75925 +\fBProcessing\fR: agnostic
75926 +.br
75927 +\fBPackage\fR: standard (core)
75928 +.br
75929 +.SH "DESCRIPTION"
75930 +Discards all packets received on its single input. If used in a pull context,
75931 +it initiates pulls whenever packets are available, and listens for activity
75932 +notification, such as that available from 
75933 +.M Queue "n" .
75934 +.PP
75935 +
75936 +.SH "ELEMENT HANDLERS"
75937 +
75938 +
75939 +
75940 +.IP "\fBcount\fR (read-only)" 5
75941 +Returns the number of packets discarded.
75942 +.IP "" 5
75943 +.IP "\fBreset_counts\fR (write-only)" 5
75944 +Resets "count" to 0.
75945 +.IP "" 5
75946 +.PP
75947 +
75948 +.SH "SEE ALSO"
75949 +.M Queue "n" 
75950 +
75951 diff -Nurb click-1.6.0/inst/share/man/mann/DiscardNoFree.n click-1.6.0-27/inst/share/man/mann/DiscardNoFree.n
75952 --- click-1.6.0/inst/share/man/mann/DiscardNoFree.n     1969-12-31 19:00:00.000000000 -0500
75953 +++ click-1.6.0-27/inst/share/man/mann/DiscardNoFree.n  2009-02-11 14:08:52.000000000 -0500
75954 @@ -0,0 +1,25 @@
75955 +.\" -*- mode: nroff -*-
75956 +.\" Generated by 'click-elem2man' from '../elements/standard/discardnofree.hh'
75957 +.de M
75958 +.IR "\\$1" "(\\$2)\\$3"
75959 +..
75960 +.de RM
75961 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75962 +..
75963 +.TH "DISCARDNOFREE" n "11/Feb/2009" "Click"
75964 +.SH "NAME"
75965 +DiscardNoFree \- Click element;
75966 +drops all packets, but does not free any of them.
75967 +.SH "SYNOPSIS"
75968 +DiscardNoFree
75969 +
75970 +\fBPorts\fR: 1 input, no outputs
75971 +.br
75972 +\fBProcessing\fR: agnostic
75973 +.br
75974 +\fBPackage\fR: standard (core)
75975 +.br
75976 +.SH "DESCRIPTION"
75977 +Discards all packets received on its single input, but does not free any of
75978 +them. Only useful for benchmarking.
75979 +
75980 diff -Nurb click-1.6.0/inst/share/man/mann/DriverManager.n click-1.6.0-27/inst/share/man/mann/DriverManager.n
75981 --- click-1.6.0/inst/share/man/mann/DriverManager.n     1969-12-31 19:00:00.000000000 -0500
75982 +++ click-1.6.0-27/inst/share/man/mann/DriverManager.n  2009-02-11 14:08:52.000000000 -0500
75983 @@ -0,0 +1,55 @@
75984 +.\" -*- mode: nroff -*-
75985 +.\" Generated by 'click-elem2man' from '../elements/standard/drivermanager.hh'
75986 +.de M
75987 +.IR "\\$1" "(\\$2)\\$3"
75988 +..
75989 +.de RM
75990 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
75991 +..
75992 +.TH "DRIVERMANAGER" n "11/Feb/2009" "Click"
75993 +.SH "NAME"
75994 +DriverManager \- Click element;
75995 +a 
75996 +.M Script "n" 
75997 +that manages driver stop events
75998 +.SH "SYNOPSIS"
75999 +\fBDriverManager\fR(INSTRUCTIONS...)
76000 +
76001 +\fBPorts\fR: none
76002 +.br
76003 +\fBPackage\fR: standard (core)
76004 +.br
76005 +.SH "DESCRIPTION"
76006 +\fBDriverManager\fR is simply a 
76007 +.M Script "n" 
76008 +element whose default TYPE is "\f(CWDRIVER\fR".
76009 +.PP
76010 +Click \fIdriver stop events\fR suggest that the driver should stop processing.
76011 +Any element can register a driver stop event; for instance, trace processing
76012 +elements can stop the driver when they finish a trace file.  You generally
76013 +request this functionality by supplying a 'STOP true' keyword argument.
76014 +.PP
76015 +Driver stop events normally stop the driver: the user-level driver calls
76016 +\f(CWexit(0)\fR, or the kernel driver kills the relevant kernel threads.  The
76017 +\fBDriverManager\fR element changes this behavior.  When a driver stop event occurs,
76018 +the router steps through the \fBDriverManager\fR's script by calling its \f(CWstep\fR
76019 +handler.  The driver exits only when the script ends or a \f(CWstop\fR instruction
76020 +is executed.
76021 +.PP
76022 +For example, the following \fBDriverManager\fR element ensures that an element,
76023 +\f(CWk\fR, has time to clean itself up before the driver is stopped. It waits for
76024 +the first driver stop event, then calls \f(CWk\fR's \f(CWcleanup\fR handler, waits for a
76025 +tenth of a second, and stops the driver.
76026 +.PP
76027 +.nf
76028 +\&  DriverManager(pause, write k.cleanup, wait 0.1s, stop);
76029 +.fi
76030 +.PP
76031 +Use this idiom when one of your elements must emit a last packet or two before
76032 +the router configuration is destroyed.
76033 +.PP
76034 +
76035 +
76036 +.SH "SEE ALSO"
76037 +.M Script "n" 
76038 +
76039 diff -Nurb click-1.6.0/inst/share/man/mann/DropBroadcasts.n click-1.6.0-27/inst/share/man/mann/DropBroadcasts.n
76040 --- click-1.6.0/inst/share/man/mann/DropBroadcasts.n    1969-12-31 19:00:00.000000000 -0500
76041 +++ click-1.6.0-27/inst/share/man/mann/DropBroadcasts.n 2009-02-11 14:08:51.000000000 -0500
76042 @@ -0,0 +1,32 @@
76043 +.\" -*- mode: nroff -*-
76044 +.\" Generated by 'click-elem2man' from '../elements/standard/dropbroadcasts.hh'
76045 +.de M
76046 +.IR "\\$1" "(\\$2)\\$3"
76047 +..
76048 +.de RM
76049 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76050 +..
76051 +.TH "DROPBROADCASTS" n "11/Feb/2009" "Click"
76052 +.SH "NAME"
76053 +DropBroadcasts \- Click element;
76054 +drops link-level broadcast and multicast packets
76055 +.SH "SYNOPSIS"
76056 +DropBroadcasts
76057 +
76058 +\fBPorts\fR: 1 input, 1-2 outputs
76059 +.br
76060 +\fBProcessing\fR: agnostic, but output 1 is push
76061 +.br
76062 +\fBPackage\fR: standard (core)
76063 +.br
76064 +.SH "DESCRIPTION"
76065 +Drop packets that arrived as link-level broadcast or multicast.
76066 +Used to implement the requirement that IP routers not forward
76067 +link-level broadcasts.
76068 +Looks at the packet_type_anno annotation, which 
76069 +.M FromDevice "n" 
76070 +sets.
76071 +
76072 +.SH "SEE ALSO"
76073 +.M FromDevice "n" 
76074 +
76075 diff -Nurb click-1.6.0/inst/share/man/mann/DynamicUDPIPEncap.n click-1.6.0-27/inst/share/man/mann/DynamicUDPIPEncap.n
76076 --- click-1.6.0/inst/share/man/mann/DynamicUDPIPEncap.n 1969-12-31 19:00:00.000000000 -0500
76077 +++ click-1.6.0-27/inst/share/man/mann/DynamicUDPIPEncap.n      2009-02-11 14:08:51.000000000 -0500
76078 @@ -0,0 +1,56 @@
76079 +.\" -*- mode: nroff -*-
76080 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/dynudpipencap.hh'
76081 +.de M
76082 +.IR "\\$1" "(\\$2)\\$3"
76083 +..
76084 +.de RM
76085 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76086 +..
76087 +.TH "DYNAMICUDPIPENCAP" n "11/Feb/2009" "Click"
76088 +.SH "NAME"
76089 +DynamicUDPIPEncap \- Click element;
76090 +encapsulates packets in dynamic UDP/IP headers
76091 +.SH "SYNOPSIS"
76092 +\fBDynamicUDPIPEncap\fR(SRC, SPORT, DST, DPORT [, CHECKSUM, INTERVAL])
76093 +
76094 +\fBPorts\fR: 1 input, 1 output
76095 +.br
76096 +\fBProcessing\fR: agnostic
76097 +.br
76098 +\fBPackage\fR: tcpudp (core)
76099 +.br
76100 +.SH "DESCRIPTION"
76101 +Encapsulates each incoming packet in a UDP/IP packet
76102 +with source address SRC, source port SPORT,
76103 +destination address DADDR, and destination port
76104 +DPORT. The UDP checksum is calculated if CHECKSUM? is
76105 +true; it is true by default. SPORT and DPORT are
76106 +incremented by 1 every INTERVAL number of packets. By
76107 +default, INTERVAL is 0, which means do not increment.
76108 +This is the same element as 
76109 +.M UDPIPEncap "n" ,
76110 +except for
76111 +the INTERVAL functionality.
76112 +.PP
76113 +The \fBDynamicUDPIPEncap\fR element adds both a UDP header
76114 +and an IP header.
76115 +.PP
76116 +The 
76117 +.M Strip "n" 
76118 +element can be used by the receiver to get
76119 +rid of the encapsulation header.
76120 +
76121 +.SH "EXAMPLES"
76122 +
76123 +.nf
76124 +\&  DynamicUDPIPEncap(1.0.0.1, 1234, 2.0.0.2, 1234, 1, 10)
76125 +.fi
76126 +.PP
76127 +
76128 +
76129 +
76130 +.SH "SEE ALSO"
76131 +.M Strip n ,
76132 +.M IPEncap n ,
76133 +.M UDPIPEncap "n" 
76134 +
76135 diff -Nurb click-1.6.0/inst/share/man/mann/EnsureEther.n click-1.6.0-27/inst/share/man/mann/EnsureEther.n
76136 --- click-1.6.0/inst/share/man/mann/EnsureEther.n       1969-12-31 19:00:00.000000000 -0500
76137 +++ click-1.6.0-27/inst/share/man/mann/EnsureEther.n    2009-02-11 14:08:51.000000000 -0500
76138 @@ -0,0 +1,49 @@
76139 +.\" -*- mode: nroff -*-
76140 +.\" Generated by 'click-elem2man' from '../elements/ethernet/ensureether.hh'
76141 +.de M
76142 +.IR "\\$1" "(\\$2)\\$3"
76143 +..
76144 +.de RM
76145 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76146 +..
76147 +.TH "ENSUREETHER" n "11/Feb/2009" "Click"
76148 +.SH "NAME"
76149 +EnsureEther \- Click element;
76150 +ensures that IP packets are Ethernet encapsulated
76151 +.SH "SYNOPSIS"
76152 +\fBEnsureEther\fR([ETHERTYPE, SRC, DST])
76153 +
76154 +\fBPorts\fR: 1 input, 1 output
76155 +.br
76156 +\fBProcessing\fR: agnostic
76157 +.br
76158 +\fBPackage\fR: ethernet (core)
76159 +.br
76160 +.SH "DESCRIPTION"
76161 +Ensures that IP packets are encapsulated in an Ethernet header. Non-IP
76162 +packets, and IP packets that look Ethernet-encapsulated, are emitted on the
76163 +first output unchanged. Other IP packets are encapsulated in an Ethernet
76164 +header before being emitted. If the IP packet looks like it had an Ethernet
76165 +header that was stripped off, then that header is used. Otherwise, the header
76166 +specified by the arguments is prepended to the packet.
76167 +.PP
76168 +
76169 +.SH "EXAMPLES"
76170 +Encapsulate packets in an Ethernet header with type
76171 +ETHERTYPE_IP (0x0800), source address 1:1:1:1:1:1, and
76172 +destination address 2:2:2:2:2:2:
76173 +.PP
76174 +.nf
76175 +\&  EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2)
76176 +.fi
76177 +.PP
76178 +
76179 +
76180 +
76181 +.SH "NOTES"
76182 +For IP packets you probably want to use ARPQuerier instead.
76183 +.PP
76184 +
76185 +.SH "SEE ALSO"
76186 +.M EtherEncap "n" 
76187 +
76188 diff -Nurb click-1.6.0/inst/share/man/mann/Error.n click-1.6.0-27/inst/share/man/mann/Error.n
76189 --- click-1.6.0/inst/share/man/mann/Error.n     1969-12-31 19:00:00.000000000 -0500
76190 +++ click-1.6.0-27/inst/share/man/mann/Error.n  2009-02-11 14:08:51.000000000 -0500
76191 @@ -0,0 +1,30 @@
76192 +.\" -*- mode: nroff -*-
76193 +.\" Generated by 'click-elem2man' from '../include/click/standard/errorelement.hh'
76194 +.de M
76195 +.IR "\\$1" "(\\$2)\\$3"
76196 +..
76197 +.de RM
76198 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76199 +..
76200 +.TH "ERROR" n "11/Feb/2009" "Click"
76201 +.SH "NAME"
76202 +Error \- Click element;
76203 +always fails
76204 +.SH "SYNOPSIS"
76205 +\fBError\fR(...)
76206 +
76207 +\fBPorts\fR: any number of inputs, any number of outputs
76208 +.br
76209 +\fBProcessing\fR: agnostic
76210 +.br
76211 +\fBPackage\fR: standard (core)
76212 +.br
76213 +.SH "DESCRIPTION"
76214 +The \fBError\fR element always fails to initialize. It has any number of inputs
76215 +and outputs, and accepts any configuration string without complaint. It is
76216 +useful to prevent a router from initializing while avoiding
76217 +spurious error messages about bad configuration strings or connections.
76218 +
76219 +.SH "SEE ALSO"
76220 +.M Message "n" 
76221 +
76222 diff -Nurb click-1.6.0/inst/share/man/mann/EtherEncap.n click-1.6.0-27/inst/share/man/mann/EtherEncap.n
76223 --- click-1.6.0/inst/share/man/mann/EtherEncap.n        1969-12-31 19:00:00.000000000 -0500
76224 +++ click-1.6.0-27/inst/share/man/mann/EtherEncap.n     2009-02-11 14:08:51.000000000 -0500
76225 @@ -0,0 +1,60 @@
76226 +.\" -*- mode: nroff -*-
76227 +.\" Generated by 'click-elem2man' from '../elements/ethernet/etherencap.hh'
76228 +.de M
76229 +.IR "\\$1" "(\\$2)\\$3"
76230 +..
76231 +.de RM
76232 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76233 +..
76234 +.TH "ETHERENCAP" n "11/Feb/2009" "Click"
76235 +.SH "NAME"
76236 +EtherEncap \- Click element;
76237 +encapsulates packets in Ethernet header
76238 +.SH "SYNOPSIS"
76239 +\fBEtherEncap\fR(ETHERTYPE, SRC, DST)
76240 +
76241 +\fBPorts\fR: 1 input, 1 output
76242 +.br
76243 +\fBProcessing\fR: agnostic
76244 +.br
76245 +\fBPackage\fR: ethernet (core)
76246 +.br
76247 +.SH "DESCRIPTION"
76248 +Encapsulates each packet in the Ethernet header specified by its arguments.
76249 +ETHERTYPE should be in host order.
76250 +.PP
76251 +
76252 +.SH "EXAMPLES"
76253 +Encapsulate packets in an Ethernet header with type
76254 +ETHERTYPE_IP (0x0800), source address 1:1:1:1:1:1, and
76255 +destination address 2:2:2:2:2:2:
76256 +.PP
76257 +.nf
76258 +\&  EtherEncap(0x0800, 1:1:1:1:1:1, 2:2:2:2:2:2)
76259 +.fi
76260 +.PP
76261 +
76262 +
76263 +
76264 +.SH "NOTES"
76265 +For IP packets you probably want to use 
76266 +.M ARPQuerier "n" 
76267 +instead.
76268 +.PP
76269 +
76270 +.SH "ELEMENT HANDLERS"
76271 +
76272 +
76273 +
76274 +.IP "\fBsrc\fR (read/write)" 5
76275 +Returns or sets the SRC parameter.
76276 +.IP "" 5
76277 +.IP "\fBdst\fR (read/write)" 5
76278 +Returns or sets the DST parameter.
76279 +.IP "" 5
76280 +.PP
76281 +
76282 +.SH "SEE ALSO"
76283 +.M ARPQuerier n ,
76284 +.M EnsureEther "n" 
76285 +
76286 diff -Nurb click-1.6.0/inst/share/man/mann/EtherMirror.n click-1.6.0-27/inst/share/man/mann/EtherMirror.n
76287 --- click-1.6.0/inst/share/man/mann/EtherMirror.n       1969-12-31 19:00:00.000000000 -0500
76288 +++ click-1.6.0-27/inst/share/man/mann/EtherMirror.n    2009-02-11 14:08:51.000000000 -0500
76289 @@ -0,0 +1,25 @@
76290 +.\" -*- mode: nroff -*-
76291 +.\" Generated by 'click-elem2man' from '../elements/ethernet/ethermirror.hh'
76292 +.de M
76293 +.IR "\\$1" "(\\$2)\\$3"
76294 +..
76295 +.de RM
76296 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76297 +..
76298 +.TH "ETHERMIRROR" n "11/Feb/2009" "Click"
76299 +.SH "NAME"
76300 +EtherMirror \- Click element;
76301 +swaps Ethernet source and destination
76302 +.SH "SYNOPSIS"
76303 +\fBEtherMirror\fR()
76304 +
76305 +\fBPorts\fR: 1 input, 1 output
76306 +.br
76307 +\fBProcessing\fR: agnostic
76308 +.br
76309 +\fBPackage\fR: ethernet (core)
76310 +.br
76311 +.SH "DESCRIPTION"
76312 +Incoming packets are Ethernet. Their source and destination Ethernet
76313 +addresses are swapped before they are output.
76314 +
76315 diff -Nurb click-1.6.0/inst/share/man/mann/FTPPortMapper.n click-1.6.0-27/inst/share/man/mann/FTPPortMapper.n
76316 --- click-1.6.0/inst/share/man/mann/FTPPortMapper.n     1969-12-31 19:00:00.000000000 -0500
76317 +++ click-1.6.0-27/inst/share/man/mann/FTPPortMapper.n  2009-02-11 14:08:51.000000000 -0500
76318 @@ -0,0 +1,111 @@
76319 +.\" -*- mode: nroff -*-
76320 +.\" Generated by 'click-elem2man' from '../elements/app/ftpportmapper.hh'
76321 +.de M
76322 +.IR "\\$1" "(\\$2)\\$3"
76323 +..
76324 +.de RM
76325 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76326 +..
76327 +.TH "FTPPORTMAPPER" n "11/Feb/2009" "Click"
76328 +.SH "NAME"
76329 +FTPPortMapper \- Click element;
76330 +manipulates 
76331 +.M IPRewriter "n" 
76332 +for FTP
76333 +.SH "SYNOPSIS"
76334 +\fBFTPPortMapper\fR(CONTROL_REWRITER, DATA_REWRITER, PATTERN FOUTPUT ROUTPUT)
76335 +
76336 +\fBPorts\fR: 1 input, 1 output
76337 +.br
76338 +\fBProcessing\fR: agnostic
76339 +.br
76340 +\fBPackage\fR: app (core)
76341 +.br
76342 +.SH "DESCRIPTION"
76343 +Expects FTP control packets. Watches packets for PORT commands and installs
76344 +corresponding mappings into the specified 
76345 +.M IPRewriter "n" .
76346 +This makes FTP
76347 +possible through a NAT-like 
76348 +.M IPRewriter "n" 
76349 +setup.
76350 +.PP
76351 +CONTROL_REWRITER and DATA_REWRITER are the names of 
76352 +.M IPRewriter "n" -like
76353 +elements. CONTROL_REWRITER must be a 
76354 +.M TCPRewriter "n" 
76355 +element, through which the
76356 +FTP control packets are passed. Packets from \fBFTPPortMapper\fR must pass
76357 +downstream through CONTROL_REWRITER. DATA_REWRITER can be any
76358 +.M IPRewriter "n" -like
76359 +element; packets from the FTP data port must pass through
76360 +DATA_REWRITER. CONTROL_REWRITER and DATA_REWRITER might be the same
76361 +element.
76362 +.PP
76363 +PATTERN is a pattern specification -- either a pattern name (see
76364 +.M IPRewriterPatterns "n" )
76365 +or a `SADDR SPORT DADDR DPORT' quadruple. See
76366 +.M IPRewriter "n" 
76367 +for more information. The address and port specified in the
76368 +PORT command correspond to `SADDR' and `SPORT' in the pattern. If a new
76369 +SADDR and SPORT are chosen, then the PORT command is rewritten to reflect
76370 +the new SADDR and SPORT.
76371 +.PP
76372 +In summary: Assume that an FTP packet with source address and port
76373 +1.0.0.2:6587 and destination address and port 2.0.0.2:21 contains a command
76374 +`PORT 1,0,0,2,3,9' (that is, 1.0.0.2:777). Furthermore assume that the
76375 +PATTERN is `1.0.0.1 9000-14000 - -'. Then \fBFTPPortMapper\fR performs the
76376 +following actions:
76377 +.PP
76378 +
76379 +
76380 +.IP "*" 3
76381 +Creates a new mapping using the PATTERN. Say it returns 9000 as the new
76382 +source port.
76383 +.IP "" 3
76384 +.IP "*" 3
76385 +Installs the following mappings into the rewriter:
76386 +.IP "" 3
76387 +.RS 3
76388 +
76389 +.IP "1." 3
76390 +(1.0.0.2, 777, 2.0.0.2, 20) => (1.0.0.1, 9000, 2.0.0.2, 20) with output
76391 +port FOUTPUT.
76392 +.IP "" 3
76393 +.IP "2." 3
76394 +(2.0.0.2, 20, 1.0.0.1, 9000) => (2.0.0.2, 20, 1.0.0.2, 777) with output
76395 +port ROUTPUT.
76396 +.IP "" 3
76397 +.RE
76398 +.IP "" 3
76399 +
76400 +.IP "*" 3
76401 +Rewrites the PORT command to `PORT 1,0,0,1,35,40' (that is,
76402 +1.0.0.1:9000).
76403 +.IP "" 3
76404 +.IP "*" 3
76405 +Updates the packet's IP and TCP checksums.
76406 +.IP "" 3
76407 +.IP "*" 3
76408 +Updates the downstream CONTROL_REWRITER to reflect the change in
76409 +sequence numbers introduced by the new PORT command. (The modified packet
76410 +containing the new PORT command will likely have a different length than
76411 +the original packet, so some sequence number patching is required.)
76412 +.IP "" 3
76413 +.IP "*" 3
76414 +Does \fInot\fR change the control packet header's addresses or port numbers.
76415 +.IP "" 3
76416 +.PP
76417 +For a PORT command to be recognized, it must be completely contained within
76418 +one packet, and it must be the first command in the packet. This is usually
76419 +the case. Also, the destination FTP data port is always assumed to be one
76420 +less than the destination FTP control port, which is read as the packet's
76421 +destination port number. This is also usually the case.
76422 +.PP
76423 +.SH "SEE ALSO"
76424 +.M IPRewriter n ,
76425 +.M TCPRewriter n ,
76426 +.M IPRewriterPatterns n 
76427 +.PP
76428 +RFC 959, File Transfer Protocol (FTP)
76429 +
76430 diff -Nurb click-1.6.0/inst/share/man/mann/FastTCPFlows.n click-1.6.0-27/inst/share/man/mann/FastTCPFlows.n
76431 --- click-1.6.0/inst/share/man/mann/FastTCPFlows.n      1969-12-31 19:00:00.000000000 -0500
76432 +++ click-1.6.0-27/inst/share/man/mann/FastTCPFlows.n   2009-02-11 14:08:51.000000000 -0500
76433 @@ -0,0 +1,86 @@
76434 +.\" -*- mode: nroff -*-
76435 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fasttcpflows.hh'
76436 +.de M
76437 +.IR "\\$1" "(\\$2)\\$3"
76438 +..
76439 +.de RM
76440 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76441 +..
76442 +.TH "FASTTCPFLOWS" n "11/Feb/2009" "Click"
76443 +.SH "NAME"
76444 +FastTCPFlows \- Click element;
76445 +creates packets flows with static TCP/IP/Ethernet headers
76446 +.SH "SYNOPSIS"
76447 +\fBFastTCPFlows\fR(RATE, LIMIT, LEN,
76448 +.br
76449 +.nf
76450 +\&             SETHADDR, SIPADDR,N<>
76451 +\&             DETHADDR, DIPADDR,N<>
76452 +\&             FLOWS, FLOWSIZE [, ACTIVE])
76453 +.fi
76454 +.PP
76455 +
76456 +
76457 +\fBPorts\fR: no inputs, 1 output
76458 +.br
76459 +\fBProcessing\fR: pull
76460 +.br
76461 +\fBDrivers\fR: linuxmodule
76462 +.br
76463 +\fBPackage\fR: linuxmodule (core)
76464 +.br
76465 +.SH "DESCRIPTION"
76466 +\fBFastTCPFlows\fR is a benchmark tool. At initialization time, \fBFastTCPFlows\fR
76467 +creates FLOWS number of fake TCP/IP packets of length LEN (min 60), with
76468 +source ethernet address SETHADDR, source IP address SIPADDR, destination
76469 +ethernet address DETHADDR, and destination IP address DIPADDR. Source and
76470 +destination ports are randomly generated. The TCP checksum is calculated.
76471 +Each time the \fBFastTCPFlows\fR element is called, it selects a flow, increments
76472 +the reference count on the skbuff created and returns the skbuff object w/o
76473 +copying or cloning. Therefore, the packet returned by \fBFastTCPFlows\fR should
76474 +not be modified.
76475 +.PP
76476 +\fBFastTCPFlows\fR sents packets at RATE packets per second. It will send LIMIT
76477 +number of packets in total. Each flow is limited to FLOWSIZE number of
76478 +packets. After FLOWSIZE number of packets are sent, the sort and dst port
76479 +will be modified. FLOWSIZE must be greater than or equal to 3. For each
76480 +flow, a SYN packet, a DATA packet, and a FIN packet are sent. These packets
76481 +have the invalid sequence numbers, in order to avoid recomputing checksum.
76482 +.PP
76483 +After \fBFastTCPFlows\fR has sent LIMIT packets, it will calculate the average
76484 +send rate (packets per second) between the first and last packets sent and
76485 +make that available in the rate handler.
76486 +.PP
76487 +By default \fBFastTCPFlows\fR is ACTIVE.
76488 +.PP
76489 +
76490 +.SH "ELEMENT HANDLERS"
76491 +
76492 +
76493 +
76494 +.IP "\fBcount\fR (read-only)" 5
76495 +Returns the total number of packets that have been generated.
76496 +.IP "" 5
76497 +.IP "\fBrate\fR (read/write)" 5
76498 +Returns or sets the RATE parameter.
76499 +.IP "" 5
76500 +.IP "\fBreset\fR (write)" 5
76501 +Reset and restart.
76502 +.IP "" 5
76503 +.IP "\fBactive\fR (write)" 5
76504 +Change ACTIVE
76505 +.IP "" 5
76506 +.PP
76507 +
76508 +.SH "EXAMPLES"
76509 +
76510 +.nf
76511 +\& FastTCPFlows(100000, 500000, 60, 
76512 +\&              0:0:0:0:0:0, 1.0.0.1, 1234, 
76513 +\&              1:1:1:1:1:1, 2.0.0.2, 1234,
76514 +\&              100, 10) 
76515 +\&   -> ToDevice;
76516 +.fi
76517 +.PP
76518 +
76519 +
76520 diff -Nurb click-1.6.0/inst/share/man/mann/FastUDPFlows.n click-1.6.0-27/inst/share/man/mann/FastUDPFlows.n
76521 --- click-1.6.0/inst/share/man/mann/FastUDPFlows.n      1969-12-31 19:00:00.000000000 -0500
76522 +++ click-1.6.0-27/inst/share/man/mann/FastUDPFlows.n   2009-02-11 14:08:52.000000000 -0500
76523 @@ -0,0 +1,84 @@
76524 +.\" -*- mode: nroff -*-
76525 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fastudpflows.hh'
76526 +.de M
76527 +.IR "\\$1" "(\\$2)\\$3"
76528 +..
76529 +.de RM
76530 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76531 +..
76532 +.TH "FASTUDPFLOWS" n "11/Feb/2009" "Click"
76533 +.SH "NAME"
76534 +FastUDPFlows \- Click element;
76535 +creates packets flows with static UDP/IP/Ethernet headers
76536 +.SH "SYNOPSIS"
76537 +\fBFastUDPFlows\fR(RATE, LIMIT, LEN,
76538 +.br
76539 +.nf
76540 +\&             SETHADDR, SIPADDR,N<>
76541 +\&             DETHADDR, DIPADDR,N<>
76542 +\&             FLOWS, FLOWSIZE [, CHECKSUM?, ACTIVE])
76543 +.fi
76544 +.PP
76545 +
76546 +
76547 +\fBPorts\fR: no inputs, 1 output
76548 +.br
76549 +\fBProcessing\fR: pull
76550 +.br
76551 +\fBDrivers\fR: linuxmodule
76552 +.br
76553 +\fBPackage\fR: linuxmodule (core)
76554 +.br
76555 +.SH "DESCRIPTION"
76556 +\fBFastUDPFlows\fR is a benchmark tool. At initialization time, \fBFastUDPFlows\fR
76557 +creates FLOWS number of UDP/IP packets of length LEN (min 60), with source
76558 +ethernet address SETHADDR, source IP address SIPADDR, destination ethernet
76559 +address DETHADDR, and destination IP address DIPADDR. Source and
76560 +destination ports are randomly generated. The UDP checksum is calculated if
76561 +CHECKSUM? is true; it is true by default. Each time the \fBFastUDPFlows\fR
76562 +element is called, it selects a flow, increments the reference count on the
76563 +skbuff created and returns the skbuff object w/o copying or cloning.
76564 +Therefore, the packet returned by \fBFastUDPFlows\fR should not be modified.
76565 +.PP
76566 +\fBFastUDPFlows\fR sents packets at RATE packets per second. It will send LIMIT
76567 +number of packets in total. Each flow is limited to FLOWSIZE number of
76568 +packets. After FLOWSIZE number of packets are sent, the sort and dst port
76569 +will be modified.
76570 +.PP
76571 +After \fBFastUDPFlows\fR has sent LIMIT packets, it will calculate the average
76572 +send rate (packets per second) between the first and last packets sent and
76573 +make that available in the rate handler.
76574 +.PP
76575 +By default \fBFastUDPFlows\fR is ACTIVE.
76576 +.PP
76577 +
76578 +.SH "ELEMENT HANDLERS"
76579 +
76580 +
76581 +
76582 +.IP "\fBcount\fR (read-only)" 5
76583 +Returns the total number of packets that have been generated.
76584 +.IP "" 5
76585 +.IP "\fBrate\fR (read/write)" 5
76586 +Returns or sets the RATE parameter.
76587 +.IP "" 5
76588 +.IP "\fBreset\fR (write)" 5
76589 +Reset and restart.
76590 +.IP "" 5
76591 +.IP "\fBactive\fR (write)" 5
76592 +Change ACTIVE
76593 +.IP "" 5
76594 +.PP
76595 +
76596 +.SH "EXAMPLES"
76597 +
76598 +.nf
76599 +\& FastUDPFlows(100000, 500000, 60, 
76600 +\&              0:0:0:0:0:0, 1.0.0.1, 1234, 
76601 +\&              1:1:1:1:1:1, 2.0.0.2, 1234,
76602 +\&              100, 10) 
76603 +\&   -> ToDevice;
76604 +.fi
76605 +.PP
76606 +
76607 +
76608 diff -Nurb click-1.6.0/inst/share/man/mann/FastUDPSource.n click-1.6.0-27/inst/share/man/mann/FastUDPSource.n
76609 --- click-1.6.0/inst/share/man/mann/FastUDPSource.n     1969-12-31 19:00:00.000000000 -0500
76610 +++ click-1.6.0-27/inst/share/man/mann/FastUDPSource.n  2009-02-11 14:08:51.000000000 -0500
76611 @@ -0,0 +1,81 @@
76612 +.\" -*- mode: nroff -*-
76613 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fastudpsrc.hh'
76614 +.de M
76615 +.IR "\\$1" "(\\$2)\\$3"
76616 +..
76617 +.de RM
76618 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76619 +..
76620 +.TH "FASTUDPSOURCE" n "11/Feb/2009" "Click"
76621 +.SH "NAME"
76622 +FastUDPSource \- Click element;
76623 +creates packets with static UDP/IP/Ethernet headers
76624 +.SH "SYNOPSIS"
76625 +\fBFastUDPSource\fR(RATE, LIMIT, LEN, SETHADDR, SIPADDR, SPORT, DETHADDR, DIPADDR, DPORT [, CHECKSUM?, INTERVAL, ACTIVE])
76626 +
76627 +\fBPorts\fR: no inputs, 1 output
76628 +.br
76629 +\fBProcessing\fR: pull
76630 +.br
76631 +\fBDrivers\fR: linuxmodule
76632 +.br
76633 +\fBPackage\fR: linuxmodule (core)
76634 +.br
76635 +.SH "DESCRIPTION"
76636 +\fBFastUDPSource\fR is a benchmark tool. At initialization
76637 +time, \fBFastUDPSource\fR creates a UDP/IP packet of length
76638 +LEN (min 60), with source ethernet address SETHADDR,
76639 +source IP address SIPADDR, source port SPORT,
76640 +destination ethernet address DETHADDR, destination IP
76641 +address DIPADDR, and destination port DPORT. The UDP
76642 +checksum is calculated if CHECKSUM? is true; it is
76643 +true by default. Each time the \fBFastUDPSource\fR element
76644 +is called, it increments the reference count on the
76645 +skbuff created and returns the skbuff object w/o
76646 +copying or cloning. Therefore, the packet returned by
76647 +\fBFastUDPSource\fR should not be modified.
76648 +.PP
76649 +\fBFastUDPSource\fR sents packets at RATE packets per
76650 +second. It will send LIMIT number of packets in
76651 +total.
76652 +.PP
76653 +After \fBFastUDPSource\fR has sent LIMIT packets, it will
76654 +calculate the average send rate (packets per second)
76655 +between the first and last packets sent and make that
76656 +available in the rate handler.
76657 +.PP
76658 +By default \fBFastUDPSource\fR is ACTIVE.
76659 +.PP
76660 +PACKET is zero by default. If it is not 0, after
76661 +PACKET number of packets, both sport and dport will
76662 +be incremented by 1. Checksum will be recomputed.
76663 +.PP
76664 +
76665 +.SH "ELEMENT HANDLERS"
76666 +
76667 +
76668 +
76669 +.IP "\fBcount\fR (read-only)" 5
76670 +Returns the total number of packets that have been generated.
76671 +.IP "" 5
76672 +.IP "\fBrate\fR (read/write)" 5
76673 +Returns or sets the RATE parameter.
76674 +.IP "" 5
76675 +.IP "\fBreset\fR (write)" 5
76676 +Reset and restart.
76677 +.IP "" 5
76678 +.IP "\fBactive\fR (write)" 5
76679 +Change ACTIVE
76680 +.IP "" 5
76681 +.PP
76682 +
76683 +.SH "EXAMPLES"
76684 +
76685 +.nf
76686 +\& FastUDPSource(100000, 500000, 60, 0:0:0:0:0:0, 1.0.0.1, 1234, 
76687 +\&                                   1:1:1:1:1:1, 2.0.0.2, 1234) 
76688 +\&   -> ToDevice;
76689 +.fi
76690 +.PP
76691 +
76692 +
76693 diff -Nurb click-1.6.0/inst/share/man/mann/FixIPSrc.n click-1.6.0-27/inst/share/man/mann/FixIPSrc.n
76694 --- click-1.6.0/inst/share/man/mann/FixIPSrc.n  1969-12-31 19:00:00.000000000 -0500
76695 +++ click-1.6.0-27/inst/share/man/mann/FixIPSrc.n       2009-02-11 14:08:51.000000000 -0500
76696 @@ -0,0 +1,41 @@
76697 +.\" -*- mode: nroff -*-
76698 +.\" Generated by 'click-elem2man' from '../elements/ip/fixipsrc.hh'
76699 +.de M
76700 +.IR "\\$1" "(\\$2)\\$3"
76701 +..
76702 +.de RM
76703 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76704 +..
76705 +.TH "FIXIPSRC" n "11/Feb/2009" "Click"
76706 +.SH "NAME"
76707 +FixIPSrc \- Click element;
76708 +sets IP source field if requested by annotation
76709 +.SH "SYNOPSIS"
76710 +\fBFixIPSrc\fR(IPADDR)
76711 +
76712 +\fBPorts\fR: 1 input, 1 output
76713 +.br
76714 +\fBProcessing\fR: agnostic
76715 +.br
76716 +\fBPackage\fR: ip (core)
76717 +.br
76718 +.SH "DESCRIPTION"
76719 +Expects an IP packet as input. If its Fix IP Source annotation is set, then
76720 +changes its IP source address field to IPADDR and recomputes the checksum.
76721 +Used by elements such as 
76722 +.M ICMPError "n" 
76723 +that are required by standards to use
76724 +the IP address on the outgoing interface as the source. Such elements must
76725 +set ip_src to something reasonable in case the outgoing interface has no IP
76726 +address.
76727 +.PP
76728 +Also clears the Fix IP Source annotation.
76729 +.PP
76730 +
76731 +.SH "NOTES"
76732 +The Fix IP Source annotation is stored as user annotation 3.
76733 +.PP
76734 +
76735 +.SH "SEE ALSO"
76736 +.M ICMPError "n" 
76737 +
76738 diff -Nurb click-1.6.0/inst/share/man/mann/FromDevice.n click-1.6.0-27/inst/share/man/mann/FromDevice.n
76739 --- click-1.6.0/inst/share/man/mann/FromDevice.n        1969-12-31 19:00:00.000000000 -0500
76740 +++ click-1.6.0-27/inst/share/man/mann/FromDevice.n     2009-02-11 14:08:51.000000000 -0500
76741 @@ -0,0 +1,89 @@
76742 +.\" -*- mode: nroff -*-
76743 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fromdevice.hh'
76744 +.de M
76745 +.IR "\\$1" "(\\$2)\\$3"
76746 +..
76747 +.de RM
76748 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76749 +..
76750 +.TH "FROMDEVICE" n "11/Feb/2009" "Click"
76751 +.SH "NAME"
76752 +FromDevice \- Click element;
76753 +reads packets from network device (Linux kernel)
76754 +.SH "SYNOPSIS"
76755 +\fBFromDevice\fR(DEVNAME [, \fIkeywords\fR PROMISC, BURST, TIMESTAMP...])
76756 +
76757 +\fBPorts\fR: no inputs, 1 output
76758 +.br
76759 +\fBProcessing\fR: push
76760 +.br
76761 +\fBDrivers\fR: linuxmodule
76762 +.br
76763 +\fBPackage\fR: linuxmodule (core)
76764 +.br
76765 +.SH "DESCRIPTION"
76766 +This manual page describes the Linux kernel module version of the \fBFromDevice\fR
76767 +element. For the user-level element, read the 
76768 +.M FromDevice.u "n" 
76769 +manual page.
76770 +.PP
76771 +Intercepts all packets received by the Linux network interface named DEVNAME
76772 +and pushes them out output 0. The packets include the link-level header.
76773 +DEVNAME may also be an Ethernet address, in which case \fBFromDevice\fR searches for
76774 +a device with that address.
76775 +.PP
76776 +\fBFromDevice\fR receives packets at interrupt time. As this happens, \fBFromDevice\fR
76777 +simply stores the packets in an internal queue. Later, in the Click kernel
76778 +thread -- that is, not at interrupt time -- \fBFromDevice\fR emits packets from that
76779 +queue as it is scheduled by the driver. It emits at most BURST packets per
76780 +scheduling; BURST is 8 by default.
76781 +.PP
76782 +Keyword arguments are:
76783 +.PP
76784 +
76785 +
76786 +.IP "PROMISC" 8
76787 +Boolean.  If true, the device is put into promiscuous mode while \fBFromDevice\fR is
76788 +active.  Default is false.
76789 +.IP "" 8
76790 +.IP "BURST" 8
76791 +Unsigned integer.  Sets the BURST parameter.
76792 +.IP "" 8
76793 +.IP "TIMESTAMP" 8
76794 +Boolean.  If true, then ensure that received packets have correctly-set
76795 +timestamp annotations.  Default is true.
76796 +.IP "" 8
76797 +.IP "QUIET" 8
76798 +Boolean.  If true, then suppress device up/down messages.  Default is false.
76799 +.IP "" 8
76800 +.IP "ALLOW_NONEXISTENT" 8
76801 +Allow nonexistent devices. If true, and no device named DEVNAME exists when
76802 +the router is initialized, then \fBFromDevice\fR will report a warning (rather than
76803 +an error). Later, while the router is running, if a device named DEVNAME
76804 +appears, \fBFromDevice\fR will seamlessly begin outputing its packets. Default is
76805 +false.
76806 +.IP "" 8
76807 +.PP
76808 +
76809 +.SH "NOTES"
76810 +Linux won't see any packets from the device. If you want Linux to process
76811 +packets, you should hand them to 
76812 +.M ToHost "n" .
76813 +.PP
76814 +\fBFromDevice\fR accesses packets the same way Linux does: through interrupts.
76815 +This is bad for performance. If you care about performance and have a
76816 +polling-capable device, use 
76817 +.M PollDevice "n" 
76818 +instead.
76819 +.PP
76820 +Linux device drivers, and thus \fBFromDevice\fR, should set packets' timestamp,
76821 +packet-type, and device annotations.
76822 +.PP
76823 +
76824 +.SH "SEE ALSO"
76825 +.M PollDevice n ,
76826 +.M ToDevice n ,
76827 +.M FromHost n ,
76828 +.M ToHost n ,
76829 +.M FromDevice.u "n" 
76830 +
76831 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
76832 --- click-1.6.0/inst/share/man/mann/FromDevice.u.n      1969-12-31 19:00:00.000000000 -0500
76833 +++ click-1.6.0-27/inst/share/man/mann/FromDevice.u.n   2009-02-11 14:08:52.000000000 -0500
76834 @@ -0,0 +1,133 @@
76835 +.\" -*- mode: nroff -*-
76836 +.\" Generated by 'click-elem2man' from '../elements/userlevel/fromdevice.hh'
76837 +.de M
76838 +.IR "\\$1" "(\\$2)\\$3"
76839 +..
76840 +.de RM
76841 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76842 +..
76843 +.TH "FROMDEVICE.U" n "11/Feb/2009" "Click"
76844 +.SH "NAME"
76845 +FromDevice.u \- Click element;
76846 +reads packets from network device (user-level)
76847 +.SH "SYNOPSIS"
76848 +\fBFromDevice\fR(DEVNAME [, \fIkeywords\fR SNIFFER, PROMISC, SNAPLEN, FORCE_IP, CAPTURE, BPF_FILTER, OUTBOUND])
76849 +
76850 +\fBPorts\fR: no inputs, 1 output
76851 +.br
76852 +\fBProcessing\fR: push
76853 +.br
76854 +\fBDrivers\fR: userlevel
76855 +.br
76856 +\fBPackage\fR: userlevel (core)
76857 +.br
76858 +.SH "DESCRIPTION"
76859 +This manual page describes the user-level version of the \fBFromDevice\fR
76860 +element. For the Linux kernel module element, read the 
76861 +.M FromDevice n 
76862 +manual
76863 +page.
76864 +.PP
76865 +Reads packets from the kernel that were received on the network controller
76866 +named DEVNAME.
76867 +.PP
76868 +User-level \fBFromDevice\fR behaves like a packet sniffer by default.  Packets
76869 +emitted by \fBFromDevice\fR are also received and processed by the kernel.  Thus, it
76870 +doesn't usually make sense to run a router with user-level Click, since each
76871 +packet will get processed twice (once by Click, once by the kernel).  Install
76872 +firewalling rules in your kernel if you want to prevent this, for instance
76873 +using the 
76874 +.M KernelFilter "n" 
76875 +element or \fBFromDevice\fR's SNIFFER false argument.
76876 +.PP
76877 +Under Linux, a \fBFromDevice\fR element will not receive packets sent by a
76878 +ToDevice element for the same device. Under other operating systems, your
76879 +mileage may vary.
76880 +.PP
76881 +Sets the packet type annotation appropriately. Also sets the timestamp
76882 +annotation to the time the kernel reports that the packet was received.
76883 +.PP
76884 +Keyword arguments are:
76885 +.PP
76886 +
76887 +
76888 +.IP "SNIFFER" 8
76889 +Boolean.  Specifies whether \fBFromDevice\fR should run in sniffer mode.  In
76890 +non-sniffer mode, \fBFromDevice\fR installs 
76891 +.M KernelFilter "n" 
76892 +filtering rules to block
76893 +the kernel from handling any packets arriving on device DEVNAME.  Default is
76894 +true (sniffer mode).
76895 +.IP "" 8
76896 +.IP "PROMISC" 8
76897 +Boolean.  \fBFromDevice\fR puts the device in promiscuous mode if PROMISC is true.
76898 +The default is false.
76899 +.IP "" 8
76900 +.IP "SNAPLEN" 8
76901 +Unsigned.  On some systems, packets larger than SNAPLEN will be truncated.
76902 +Defaults to 2046.
76903 +.IP "" 8
76904 +.IP "FORCE_IP" 8
76905 +Boolean. If true, then output only IP packets. (Any link-level header remains,
76906 +but the IP header annotation has been set appropriately.) Default is false.
76907 +.IP "" 8
76908 +.IP "CAPTURE" 8
76909 +Word.  Defines the capture method \fBFromDevice\fR will use to read packets from the
76910 +kernel.  Linux targets generally support PCAP and LINUX; other targets support
76911 +only PCAP.  Defaults to LINUX on Linux targets (unless you give a BPF_FILTER),
76912 +and PCAP elsewhere.
76913 +.IP "" 8
76914 +.IP "BPF_FILTER" 8
76915 +String.  A BPF filter expression used to select the interesting packets.
76916 +Default is the empty string, which means all packets.  If CAPTURE is not PCAP,
76917 +then any filter expression is ignored with a warning.
76918 +.IP "" 8
76919 +.IP "OUTBOUND" 8
76920 +Boolean. If true, then emit packets that the kernel sends to the given
76921 +interface, as well as packets that the kernel receives from it. Default is
76922 +false.
76923 +.IP "" 8
76924 +.PP
76925 +
76926 +.SH "EXAMPLES"
76927 +
76928 +.nf
76929 +\&  FromDevice(eth0) -> ...
76930 +.fi
76931 +.PP
76932 +
76933 +
76934 +
76935 +.SH "NOTES"
76936 +\fBFromDevice\fR sets packets' extra length annotations as appropriate.
76937 +.PP
76938 +
76939 +.SH "ELEMENT HANDLERS"
76940 +
76941 +
76942 +
76943 +.IP "\fBcount\fR (read-only)" 5
76944 +Returns the number of packets read by the device.
76945 +.IP "" 5
76946 +.IP "\fBreset_counts\fR (write-only)" 5
76947 +Resets "count" to zero.
76948 +.IP "" 5
76949 +.IP "\fBkernel_drops\fR (read-only)" 5
76950 +Returns the number of packets dropped by the kernel, probably due to memory
76951 +constraints, before \fBFromDevice\fR could get them. This may be an integer; the
76952 +notation \f(CW"<\fId\fR"\fR, meaning at most \f(CW\fId\fR\fR drops; or \f(CW"??"\fR, meaning the
76953 +number of drops is not known.
76954 +.IP "" 5
76955 +.IP "\fBencap\fR (read-only)" 5
76956 +Returns a string indicating the encapsulation type on this link. Can be
76957 +`\f(CWIP\fR', `\f(CWETHER\fR', or `\f(CWFDDI\fR', for example.
76958 +.IP "" 5
76959 +.PP
76960 +
76961 +.SH "SEE ALSO"
76962 +.M ToDevice.u n ,
76963 +.M FromDump n ,
76964 +.M ToDump n ,
76965 +.M KernelFilter n ,
76966 +\fBFromDevice\fR(n)
76967 +
76968 diff -Nurb click-1.6.0/inst/share/man/mann/FromDump.n click-1.6.0-27/inst/share/man/mann/FromDump.n
76969 --- click-1.6.0/inst/share/man/mann/FromDump.n  1969-12-31 19:00:00.000000000 -0500
76970 +++ click-1.6.0-27/inst/share/man/mann/FromDump.n       2009-02-11 14:08:51.000000000 -0500
76971 @@ -0,0 +1,176 @@
76972 +.\" -*- mode: nroff -*-
76973 +.\" Generated by 'click-elem2man' from '../elements/userlevel/fromdump.hh'
76974 +.de M
76975 +.IR "\\$1" "(\\$2)\\$3"
76976 +..
76977 +.de RM
76978 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
76979 +..
76980 +.TH "FROMDUMP" n "11/Feb/2009" "Click"
76981 +.SH "NAME"
76982 +FromDump \- Click element;
76983 +reads packets from a tcpdump file
76984 +.SH "SYNOPSIS"
76985 +\fBFromDump\fR(FILENAME [, \fIkeywords\fR TIMING, STOP, SAMPLE, FORCE_IP, START, START_AFTER, END, END_AFTER, INTERVAL, END_CALL, FILEPOS])
76986 +
76987 +\fBPorts\fR: no inputs, 1-2 outputs
76988 +.br
76989 +\fBProcessing\fR: agnostic, but output 1 is push
76990 +.br
76991 +\fBDrivers\fR: userlevel, ns
76992 +.br
76993 +\fBPackage\fR: userlevel (core)
76994 +.br
76995 +.SH "DESCRIPTION"
76996 +Reads packets from a file produced by `tcpdump -w FILENAME' or 
76997 +.M ToDump "n" .
76998 +Pushes
76999 +them out the output, and optionally stops the driver when there are no more
77000 +packets. If TIMING is true, then \fBFromDump\fR tries to maintain the timing of the
77001 +original packet stream. TIMING is false by default.
77002 +.PP
77003 +\fBFromDump\fR also transparently reads gzip- and bzip2-compressed tcpdump files, if
77004 +you have zcat(1) and bzcat(1) installed.
77005 +.PP
77006 +Keyword arguments are:
77007 +.PP
77008 +
77009 +
77010 +.IP "SAMPLE" 8
77011 +Unsigned real number between 0 and 1. \fBFromDump\fR will output each packet with
77012 +probability SAMPLE. Default is 1. \fBFromDump\fR uses fixed-point arithmetic, so the
77013 +actual sampling probability may differ substantially from the requested
77014 +sampling probability. Use the \f(CWsampling_prob\fR handler to find out the actual
77015 +probability.
77016 +.IP "" 8
77017 +.IP "FORCE_IP" 8
77018 +Boolean. If true, then \fBFromDump\fR will emit only IP packets with their IP header
77019 +annotations correctly set. (If \fBFromDump\fR has two outputs, non-IP packets are
77020 +pushed out on output 1; otherwise, they are dropped.) Default is false.
77021 +.IP "" 8
77022 +.IP "STOP" 8
77023 +Boolean.  If true, then \fBFromDump\fR will ask the router to stop when it is done
77024 +reading its tcpdump file (or the END time is reached).  Default is false.
77025 +.IP "" 8
77026 +.IP "START" 8
77027 +Absolute time in seconds since the epoch. \fBFromDump\fR will output packets with
77028 +timestamps after that time.
77029 +.IP "" 8
77030 +.IP "START_AFTER" 8
77031 +Argument is relative time in seconds (or supply a suffix like `min', `h').
77032 +\fBFromDump\fR will skip the first \fIT\fR seconds in the log.
77033 +.IP "" 8
77034 +.IP "END" 8
77035 +Absolute time in seconds since the epoch. \fBFromDump\fR will stop when encountering
77036 +a packet with timestamp at or after that time.
77037 +.IP "" 8
77038 +.IP "END_AFTER" 8
77039 +Argument is relative time in seconds (or supply a suffix like `min', `h').
77040 +\fBFromDump\fR will stop at the first packet whose timestamp is at least \fIT\fR
77041 +seconds after the first timestamp in the log.
77042 +.IP "" 8
77043 +.IP "INTERVAL" 8
77044 +Argument is relative time in seconds (or supply a suffix like `min', `h').
77045 +\fBFromDump\fR will stop at the first packet whose timestamp is at least \fIT\fR
77046 +seconds after the first packet output.
77047 +.IP "" 8
77048 +.IP "END_CALL" 8
77049 +Specify a handler to call once the end time is reached, or the dump runs out
77050 +of packets.  This defaults to '\fIFromDump\fR.active false'.  END_CALL and STOP
77051 +are mutually exclusive.
77052 +.IP "" 8
77053 +.IP "TIMING" 8
77054 +Boolean. Same as the TIMING argument.
77055 +.IP "" 8
77056 +.IP "ACTIVE" 8
77057 +Boolean. If false, then \fBFromDump\fR will not emit packets (until the `\f(CWactive\fR'
77058 +handler is written). Default is true.
77059 +.IP "" 8
77060 +.IP "MMAP" 8
77061 +Boolean. If true, then \fBFromDump\fR will use 
77062 +.M mmap 2 
77063 +to access the tcpdump file.
77064 +This can result in slightly better performance on some machines. \fBFromDump\fR's
77065 +regular file discipline is pretty optimized, so the difference is often small
77066 +in practice. Default is true on most operating systems, but false on Linux.
77067 +.IP "" 8
77068 +.IP "FILEPOS" 8
77069 +File offset. If supplied, then \fBFromDump\fR will start emitting packets from
77070 +this (uncompressed) file position. This is dangerous; there's no cheap way
77071 +to check whether you got the offset wrong, and if you did get it wrong,
77072 +\fBFromDump\fR will emit garbage.
77073 +.IP "" 8
77074 +.PP
77075 +You can supply at most one of START and START_AFTER, and at most one of END,
77076 +END_AFTER, and INTERVAL.
77077 +.PP
77078 +Only available in user-level processes.
77079 +.PP
77080 +.SH "NOTES"
77081 +By default, `tcpdump -w FILENAME' dumps only the first 68 bytes of
77082 +each packet. You probably want to run `tcpdump -w FILENAME -s 2000' or some
77083 +such.
77084 +.PP
77085 +\fBFromDump\fR sets packets' extra length annotations to any additional length
77086 +recorded in the dump.
77087 +.PP
77088 +\fBFromDump\fR is a notifier signal, active when the element is active and the dump
77089 +contains more packets.
77090 +.PP
77091 +If \fBFromDump\fR uses mmap, then a corrupt file might cause Click to crash with a
77092 +segmentation violation.
77093 +.PP
77094 +
77095 +.SH "ELEMENT HANDLERS"
77096 +
77097 +
77098 +
77099 +.IP "\fBcount\fR (read-only)" 5
77100 +Returns the number of packets output so far.
77101 +.IP "" 5
77102 +.IP "\fBreset_counts\fR (write-only)" 5
77103 +Resets "count" to 0.
77104 +.IP "" 5
77105 +.IP "\fBsampling_prob\fR (read-only)" 5
77106 +Returns the sampling probability (see the SAMPLE keyword argument).
77107 +.IP "" 5
77108 +.IP "\fBactive\fR (read/write)" 5
77109 +Value is a Boolean.
77110 +.IP "" 5
77111 +.IP "\fBencap\fR (read-only)" 5
77112 +Returns the file's encapsulation type.
77113 +.IP "" 5
77114 +.IP "\fBfilename\fR (read-only)" 5
77115 +Returns the filename supplied to \fBFromDump\fR.
77116 +.IP "" 5
77117 +.IP "\fBfilesize\fR (read-only)" 5
77118 +Returns the length of the \fBFromDump\fR file, in bytes, or "-" if that length
77119 +cannot be determined (because the file was compressed, for example).
77120 +.IP "" 5
77121 +.IP "\fBfilepos\fR (read/write)" 5
77122 +Returns or sets \fBFromDump\fR's position in the (uncompressed) file, in bytes.
77123 +.IP "" 5
77124 +.IP "\fBpacket_filepos\fR (read-only)" 5
77125 +Returns the (uncompressed) file position of the last packet emitted, in bytes.
77126 +This handler is useful for elements like 
77127 +.M AggregateIPFlows "n" 
77128 +that can record
77129 +statistics about portions of a trace; with packet_filepos, they can note
77130 +exactly where the relevant portion begins.
77131 +.IP "" 5
77132 +.IP "\fBextend_interval\fR (write-only)" 5
77133 +Text is a time interval. If END_TIME or one of its cousins was specified, then
77134 +writing to this handler extends END_TIME by that many seconds. Also, ACTIVE is
77135 +set to true.
77136 +.IP "" 5
77137 +.PP
77138 +
77139 +.SH "SEE ALSO"
77140 +.M ToDump n ,
77141 +.M FromDevice.u n ,
77142 +.M ToDevice.u n ,
77143 +.M tcpdump 1 ,
77144 +.M mmap 2 ,
77145 +.M AggregateIPFlows n ,
77146 +.M FromTcpdump "n" 
77147 +
77148 diff -Nurb click-1.6.0/inst/share/man/mann/FromHost.n click-1.6.0-27/inst/share/man/mann/FromHost.n
77149 --- click-1.6.0/inst/share/man/mann/FromHost.n  1969-12-31 19:00:00.000000000 -0500
77150 +++ click-1.6.0-27/inst/share/man/mann/FromHost.n       2009-02-11 14:08:52.000000000 -0500
77151 @@ -0,0 +1,83 @@
77152 +.\" -*- mode: nroff -*-
77153 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/fromhost.hh'
77154 +.de M
77155 +.IR "\\$1" "(\\$2)\\$3"
77156 +..
77157 +.de RM
77158 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77159 +..
77160 +.TH "FROMHOST" n "11/Feb/2009" "Click"
77161 +.SH "NAME"
77162 +FromHost \- Click element;
77163 +reads packets from Linux
77164 +.SH "SYNOPSIS"
77165 +\fBFromHost\fR(DEVNAME, ADDR/MASK [, \fIKEYWORDS\fR])
77166 +
77167 +\fBPorts\fR: no inputs, 1 output
77168 +.br
77169 +\fBProcessing\fR: push
77170 +.br
77171 +\fBDrivers\fR: linuxmodule
77172 +.br
77173 +\fBPackage\fR: linuxmodule (core)
77174 +.br
77175 +.SH "DESCRIPTION"
77176 +Captures packets orginating from the Linux kernel and pushes them on output
77177 +0. Output packets have Ethernet headers; only the protocol field is
77178 +interesting.
77179 +.PP
77180 +Installs a fake interface called DEVNAME, and changes the routing table so
77181 +that every packet destined for ADDR/MASK is sent through that interface.
77182 +The packet then leaves on output 0. The device's native address is ADDR.
77183 +.PP
77184 +After the fake device is created, the effect of bringing up the interface
77185 +and changing the routing table is analogous to:
77186 +.PP
77187 +.nf
77188 +\&  % /sbin/ifconfig DEVNAME up
77189 +\&  % /sbin/route add -net ADDR netmask MASK DEVNAME
77190 +.fi
77191 +.PP
77192 +This element is only available in the Linux kernel module.
77193 +.PP
77194 +Keyword arguments are:
77195 +.PP
77196 +
77197 +
77198 +
77199 +.IP "ETHER" 8
77200 +Ethernet address. Specifies the fake device's Ethernet address. Default is
77201 +00:01:02:03:04:05.
77202 +.IP "" 8
77203 +.PP
77204 +
77205 +.SH "NOTES"
77206 +Linux will send ARP queries to the fake device. You must respond to these
77207 +queries in order to receive any IP packets, but you can obviously respond
77208 +with any Ethernet address you'd like. Here is one common idiom:
77209 +.PP
77210 +.nf
77211 +\&  FromHost(fake0, 192.0.0.1/8)
77212 +\&    -> fromhost_cl :: Classifier(12/0806, 12/0800);
77213 +\&  fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> ToHost;
77214 +\&  fromhost_cl[1] -> ... // IP packets
77215 +.fi
77216 +.PP
77217 +
77218 +
77219 +
77220 +.SH "EXAMPLES"
77221 +
77222 +.nf
77223 +\&  FromHost(fake0, 192.0.0.1/8) -> ...;
77224 +.fi
77225 +.PP
77226 +
77227 +
77228 +
77229 +.SH "SEE ALSO"
77230 +.M ToHost n ,
77231 +.M FromDevice n ,
77232 +.M PollDevice n ,
77233 +.M ToDevice "n" 
77234 +
77235 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
77236 --- click-1.6.0/inst/share/man/mann/FromHost.u.n        1969-12-31 19:00:00.000000000 -0500
77237 +++ click-1.6.0-27/inst/share/man/mann/FromHost.u.n     2009-02-11 14:08:51.000000000 -0500
77238 @@ -0,0 +1,95 @@
77239 +.\" -*- mode: nroff -*-
77240 +.\" Generated by 'click-elem2man' from '../elements/userlevel/fromhost.hh'
77241 +.de M
77242 +.IR "\\$1" "(\\$2)\\$3"
77243 +..
77244 +.de RM
77245 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77246 +..
77247 +.TH "FROMHOST.U" n "11/Feb/2009" "Click"
77248 +.SH "NAME"
77249 +FromHost.u \- Click element;
77250 +interface to /dev/net/tun or ethertap (user-level)
77251 +.SH "SYNOPSIS"
77252 +\fBFromHost\fR(DEVNAME [, DST, GATEWAY, HEADROOM] [, \fIKEYWORDS\fR])
77253 +
77254 +\fBPorts\fR: no inputs, 1 output
77255 +.br
77256 +\fBProcessing\fR: push
77257 +.br
77258 +\fBDrivers\fR: userlevel
77259 +.br
77260 +\fBPackage\fR: userlevel (core)
77261 +.br
77262 +.SH "DESCRIPTION"
77263 +Reads packets from and writes packets through the universal TUN/TAP
77264 +module in Linux (the /dev/net/tun device).  This allows a
77265 +user-level Click to hand packets to the virtual ethernet
77266 +device. \fBFromHost\fR will also transfer packets from the virtual
77267 +ethernet device.
77268 +.PP
77269 +To use this element your kernel config must support CONFIG_TUN and
77270 +CONFIG_ETHERTAP.  Either modules (tun.o) or compiled in should work.
77271 +.PP
77272 +\fBFromHost\fR allocates a /dev/net/tun device (this might fail) and runs
77273 +.M ifconfig 8 
77274 +to set the interface's local (i.e., kernel) address and netmask
77275 +to DST, which must be an IP prefix such as 18.26.4.9/24.  If DST is not
77276 +specified, then \fBFromHost\fR
77277 +assumes the tunnel has already been configured to the correct address.  If
77278 +a nonzero GATEWAY IP address (which must be on the same network as the tun)
77279 +is specified, then \fBFromHost\fR tries to set up a default route through that
77280 +host.  HEADROOM is the number of bytes left empty before the packet data
77281 +(to leave room for additional encapsulation headers). Default HEADROOM is
77282 +0.
77283 +.PP
77284 +Keyword arguments are:
77285 +.PP
77286 +
77287 +
77288 +.IP "ETHER" 8
77289 +Ethernet address. Specifies the fake device's Ethernet address. Default is
77290 +not specified, in which case the fake device's address is whatever the
77291 +kernel chooses.
77292 +.IP "" 8
77293 +.PP
77294 +
77295 +.SH "NOTES"
77296 +Linux will send ARP queries to the fake device. You must respond to these
77297 +queries in order to receive any IP packets, but you can obviously respond
77298 +with any Ethernet address you'd like. Here is one common idiom:
77299 +.PP
77300 +.nf
77301 +\& tap0 :: FromHost(fake, 192.0.0.1/8)
77302 +\&     -> fromhost_cl :: Classifier(12/0806, 12/0800);
77303 +\& fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> tap0;
77304 +\& fromhost_cl[1] -> ... // IP packets
77305 +.fi
77306 +.PP
77307 +
77308 +
77309 +
77310 +.SH "EXAMPLES"
77311 +
77312 +.nf
77313 +\& FromHost(fake, 192.0.0.1/8) -> ...;
77314 +.fi
77315 +.PP
77316 +An error like "open /dev/net/tun: No such file or directory" usually means
77317 +that you have not enabled tunnel support in your kernel.
77318 +.PP
77319 +
77320 +
77321 +.SH "ELEMENT HANDLERS"
77322 +
77323 +
77324 +
77325 +.IP "\fBdev_name\fR (read-only)" 5
77326 +Returns the name of the device that this element is using.
77327 +.IP "" 5
77328 +.PP
77329 +
77330 +.SH "SEE ALSO"
77331 +.M ToHost.u n ,
77332 +.M ifconfig 8 
77333 +
77334 diff -Nurb click-1.6.0/inst/share/man/mann/FromRawSocket.n click-1.6.0-27/inst/share/man/mann/FromRawSocket.n
77335 --- click-1.6.0/inst/share/man/mann/FromRawSocket.n     1969-12-31 19:00:00.000000000 -0500
77336 +++ click-1.6.0-27/inst/share/man/mann/FromRawSocket.n  2009-02-11 14:08:51.000000000 -0500
77337 @@ -0,0 +1,60 @@
77338 +.\" -*- mode: nroff -*-
77339 +.\" Generated by 'click-elem2man' from '../elements/userlevel/fromrawsocket.hh'
77340 +.de M
77341 +.IR "\\$1" "(\\$2)\\$3"
77342 +..
77343 +.de RM
77344 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77345 +..
77346 +.TH "FROMRAWSOCKET" n "11/Feb/2009" "Click"
77347 +.SH "NAME"
77348 +FromRawSocket \- Click element;
77349 +reads raw IP packets from safe raw socket (user-level)
77350 +.SH "SYNOPSIS"
77351 +\fBFromRawSocket\fR("TCP", <TCP source port number> [, \fIKEYWORDS\fR])
77352 +.br
77353 +\fBFromRawSocket\fR("UDP", <UDP source port number> [, \fIKEYWORDS\fR])
77354 +.br
77355 +\fBFromRawSocket\fR("GRE", <GRE key or PPTP call ID> [, \fIKEYWORDS\fR])
77356 +.br
77357 +\fBFromRawSocket\fR("ICMP", <ICMP identifier> [, \fIKEYWORDS\fR])
77358 +
77359 +\fBPorts\fR: at most 1 input, at most 1 output
77360 +.br
77361 +\fBProcessing\fR: push
77362 +.br
77363 +\fBDrivers\fR: userlevel
77364 +.br
77365 +\fBPackage\fR: userlevel (core)
77366 +.br
77367 +.SH "DESCRIPTION"
77368 +Reads data from a raw IPv4 socket. The raw IPv4 socket may optionally
77369 +be bound to a source port number in the case of TCP/UDP, a GRE key or
77370 +PPTP call ID in the case of GRE, or an identifier in the case of
77371 +ICMP. Binding a port to a raw IPv4 socket to reserve it and suppress
77372 +TCP RST and ICMP Unreachable errors, is specific to PlanetLab Linux.
77373 +.PP
77374 +This element exists only for backward compatibility. See the more
77375 +general 
77376 +.M RawSocket "n" 
77377 +implementation for details, and for supported
77378 +keyword arguments. A \fBFromRawSocket\fR is equivalent to a 
77379 +.M RawSocket "n" 
77380 +with
77381 +no inputs.
77382 +.PP
77383 +
77384 +.SH "EXAMPLES"
77385 +
77386 +.nf
77387 +\&  FromRawSocket(UDP, 53) -> ...
77388 +.fi
77389 +.PP
77390 +
77391 +
77392 +
77393 +.SH "SEE ALSO"
77394 +.M ToRawSocket n ,
77395 +.M RawSocket n ,
77396 +.M Socket "n" 
77397 +
77398 diff -Nurb click-1.6.0/inst/share/man/mann/FromSocket.n click-1.6.0-27/inst/share/man/mann/FromSocket.n
77399 --- click-1.6.0/inst/share/man/mann/FromSocket.n        1969-12-31 19:00:00.000000000 -0500
77400 +++ click-1.6.0-27/inst/share/man/mann/FromSocket.n     2009-02-11 14:08:51.000000000 -0500
77401 @@ -0,0 +1,58 @@
77402 +.\" -*- mode: nroff -*-
77403 +.\" Generated by 'click-elem2man' from '../elements/userlevel/fromsocket.hh'
77404 +.de M
77405 +.IR "\\$1" "(\\$2)\\$3"
77406 +..
77407 +.de RM
77408 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77409 +..
77410 +.TH "FROMSOCKET" n "11/Feb/2009" "Click"
77411 +.SH "NAME"
77412 +FromSocket \- Click element;
77413 +reads data from socket (user-level)
77414 +.SH "SYNOPSIS"
77415 +\fBFromSocket\fR("TCP", IP, PORTNUMBER [, \fIKEYWORDS\fR])
77416 +.br
77417 +\fBFromSocket\fR("UDP", IP, PORTNUMBER [, \fIKEYWORDS\fR])
77418 +.br
77419 +\fBFromSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR])
77420 +.br
77421 +\fBFromSocket\fR("UNIX_DGRAM", FILENAME [, \fIKEYWORDS\fR])
77422 +
77423 +\fBPorts\fR: at most 1 input, at most 1 output
77424 +.br
77425 +\fBProcessing\fR: push
77426 +.br
77427 +\fBDrivers\fR: userlevel
77428 +.br
77429 +\fBPackage\fR: userlevel (core)
77430 +.br
77431 +.SH "DESCRIPTION"
77432 +Reads data from the specified socket. Packets received from the remote
77433 +host or process are emitted on the output.
77434 +.PP
77435 +This element exists only for backward compatibility. See the more
77436 +general 
77437 +.M Socket "n" 
77438 +implementation for details, and for supported keyword
77439 +arguments. A \fBFromSocket\fR is equivalent to a 
77440 +.M Socket "n" 
77441 +with the CLIENT
77442 +keyword set to FALSE or a 
77443 +.M Socket "n" 
77444 +with no inputs.
77445 +.PP
77446 +
77447 +.SH "EXAMPLES"
77448 +
77449 +.nf
77450 +\&  FromSocket(TCP, 0.0.0.0, 80) -> ...
77451 +.fi
77452 +.PP
77453 +
77454 +
77455 +
77456 +.SH "SEE ALSO"
77457 +.M ToSocket n ,
77458 +.M Socket "n" 
77459 +
77460 diff -Nurb click-1.6.0/inst/share/man/mann/FrontDropQueue.n click-1.6.0-27/inst/share/man/mann/FrontDropQueue.n
77461 --- click-1.6.0/inst/share/man/mann/FrontDropQueue.n    1969-12-31 19:00:00.000000000 -0500
77462 +++ click-1.6.0-27/inst/share/man/mann/FrontDropQueue.n 2009-02-11 14:08:51.000000000 -0500
77463 @@ -0,0 +1,62 @@
77464 +.\" -*- mode: nroff -*-
77465 +.\" Generated by 'click-elem2man' from '../elements/standard/frontdropqueue.hh'
77466 +.de M
77467 +.IR "\\$1" "(\\$2)\\$3"
77468 +..
77469 +.de RM
77470 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77471 +..
77472 +.TH "FRONTDROPQUEUE" n "11/Feb/2009" "Click"
77473 +.SH "NAME"
77474 +FrontDropQueue \- Click element;
77475 +stores packets in drop-from-front FIFO queue
77476 +.SH "SYNOPSIS"
77477 +FrontDropQueue
77478 +.br
77479 +\fBFrontDropQueue\fR(CAPACITY)
77480 +
77481 +\fBPorts\fR: 1 input, 1 output
77482 +.br
77483 +\fBProcessing\fR: push inputs, pull outputs
77484 +.br
77485 +\fBPackage\fR: standard (core)
77486 +.br
77487 +.SH "DESCRIPTION"
77488 +Stores incoming packets in a first-in-first-out queue. Drops the head packet
77489 +before inserting the incoming packet if the queue already holds CAPACITY
77490 +packets. The default for CAPACITY is 1000.
77491 +.PP
77492 +
77493 +.SH "ELEMENT HANDLERS"
77494 +
77495 +
77496 +
77497 +.IP "\fBlength\fR (read-only)" 5
77498 +Returns the current number of packets in the queue.
77499 +.IP "" 5
77500 +.IP "\fBhighwater_length\fR (read-only)" 5
77501 +Returns the maximum number of packets that have ever been in the queue at once.
77502 +.IP "" 5
77503 +.IP "\fBcapacity\fR (read/write)" 5
77504 +Returns or sets the queue's capacity.
77505 +.IP "" 5
77506 +.IP "\fBdrops\fR (read-only)" 5
77507 +Returns the number of packets dropped by the 
77508 +.M Queue "n" 
77509 +so far.
77510 +.IP "" 5
77511 +.IP "\fBreset_counts\fR (write-only)" 5
77512 +When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters.
77513 +.IP "" 5
77514 +.IP "\fBreset\fR (write-only)" 5
77515 +When written, drops all packets in the 
77516 +.M Queue "n" .
77517 +.IP "" 5
77518 +.PP
77519 +
77520 +.SH "SEE ALSO"
77521 +.M Queue n ,
77522 +.M SimpleQueue n ,
77523 +.M MixedQueue n ,
77524 +.M RED "n" 
77525 +
77526 diff -Nurb click-1.6.0/inst/share/man/mann/GetIPAddress.n click-1.6.0-27/inst/share/man/mann/GetIPAddress.n
77527 --- click-1.6.0/inst/share/man/mann/GetIPAddress.n      1969-12-31 19:00:00.000000000 -0500
77528 +++ click-1.6.0-27/inst/share/man/mann/GetIPAddress.n   2009-02-11 14:08:51.000000000 -0500
77529 @@ -0,0 +1,41 @@
77530 +.\" -*- mode: nroff -*-
77531 +.\" Generated by 'click-elem2man' from '../elements/ip/getipaddress.hh'
77532 +.de M
77533 +.IR "\\$1" "(\\$2)\\$3"
77534 +..
77535 +.de RM
77536 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77537 +..
77538 +.TH "GETIPADDRESS" n "11/Feb/2009" "Click"
77539 +.SH "NAME"
77540 +GetIPAddress \- Click element;
77541 +sets destination IP address annotation from packet data
77542 +.SH "SYNOPSIS"
77543 +\fBGetIPAddress\fR(OFFSET)
77544 +
77545 +\fBPorts\fR: 1 input, 1 output
77546 +.br
77547 +\fBProcessing\fR: agnostic
77548 +.br
77549 +\fBPackage\fR: ip (core)
77550 +.br
77551 +.SH "DESCRIPTION"
77552 +Copies 4 bytes from the packet, starting at OFFSET, to the destination IP
77553 +address annotation. OFFSET is usually 16, to fetch the destination address
77554 +from an IP packet.
77555 +.PP
77556 +
77557 +.SH "NOTES"
77558 +The destination address annotation is used by elements
77559 +that need to know where the packet is going.
77560 +Such elements include 
77561 +.M ARPQuerier "n" 
77562 +and LookupIPRoute.
77563 +.PP
77564 +
77565 +.SH "SEE ALSO"
77566 +.M ARPQuerier n ,
77567 +.M StaticIPLookup n ,
77568 +.M SetIPAddress n ,
77569 +.M StoreIPAddress "n" 
77570 +
77571 diff -Nurb click-1.6.0/inst/share/man/mann/HashSwitch.n click-1.6.0-27/inst/share/man/mann/HashSwitch.n
77572 --- click-1.6.0/inst/share/man/mann/HashSwitch.n        1969-12-31 19:00:00.000000000 -0500
77573 +++ click-1.6.0-27/inst/share/man/mann/HashSwitch.n     2009-02-11 14:08:52.000000000 -0500
77574 @@ -0,0 +1,44 @@
77575 +.\" -*- mode: nroff -*-
77576 +.\" Generated by 'click-elem2man' from '../elements/standard/hashswitch.hh'
77577 +.de M
77578 +.IR "\\$1" "(\\$2)\\$3"
77579 +..
77580 +.de RM
77581 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77582 +..
77583 +.TH "HASHSWITCH" n "11/Feb/2009" "Click"
77584 +.SH "NAME"
77585 +HashSwitch \- Click element;
77586 +classifies packets by hash of contents
77587 +.SH "SYNOPSIS"
77588 +\fBHashSwitch\fR(OFFSET, LENGTH)
77589 +
77590 +\fBPorts\fR: 1 input, 1 or more outputs
77591 +.br
77592 +\fBProcessing\fR: push
77593 +.br
77594 +\fBPackage\fR: standard (core)
77595 +.br
77596 +.SH "DESCRIPTION"
77597 +Can have any number of outputs.
77598 +Chooses the output on which to emit each packet based on
77599 +a hash of the LENGTH bytes starting at OFFSET.
77600 +Could be used for stochastic fair queuing.
77601 +
77602 +.SH "EXAMPLES"
77603 +This element expects IP packets and chooses the output
77604 +based on a hash of the IP destination address:
77605 +.PP
77606 +.nf
77607 +\&  HashSwitch(16, 4)
77608 +.fi
77609 +.PP
77610 +
77611 +
77612 +
77613 +.SH "SEE ALSO"
77614 +.M Switch n ,
77615 +.M RoundRobinSwitch n ,
77616 +.M StrideSwitch n ,
77617 +.M RandomSwitch "n" 
77618 +
77619 diff -Nurb click-1.6.0/inst/share/man/mann/HostEtherFilter.n click-1.6.0-27/inst/share/man/mann/HostEtherFilter.n
77620 --- click-1.6.0/inst/share/man/mann/HostEtherFilter.n   1969-12-31 19:00:00.000000000 -0500
77621 +++ click-1.6.0-27/inst/share/man/mann/HostEtherFilter.n        2009-02-11 14:08:52.000000000 -0500
77622 @@ -0,0 +1,49 @@
77623 +.\" -*- mode: nroff -*-
77624 +.\" Generated by 'click-elem2man' from '../elements/ethernet/hostetherfilter.hh'
77625 +.de M
77626 +.IR "\\$1" "(\\$2)\\$3"
77627 +..
77628 +.de RM
77629 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77630 +..
77631 +.TH "HOSTETHERFILTER" n "11/Feb/2009" "Click"
77632 +.SH "NAME"
77633 +HostEtherFilter \- Click element;
77634 +drops Ethernet packets sent to other machines
77635 +.SH "SYNOPSIS"
77636 +\fBHostEtherFilter\fR(ETHER [, DROP_OWN, DROP_OTHER, \fIKEYWORDS\fR])
77637 +
77638 +\fBPorts\fR: 1 input, 1-2 outputs
77639 +.br
77640 +\fBProcessing\fR: agnostic, but output 1 is push
77641 +.br
77642 +\fBPackage\fR: ethernet (core)
77643 +.br
77644 +.SH "DESCRIPTION"
77645 +Expects Ethernet packets as input. Acts basically like Ethernet input hardware
77646 +for a device with address ETHER.
77647 +.PP
77648 +In particular, \fBHostEtherFilter\fR sets each packet's packet type annotation to
77649 +HOST, BROADCAST, MULTICAST, or OTHERHOST based on its Ethernet destination
77650 +address. Emits most packets on the first output. If DROP_OWN is true, drops
77651 +packets whose source address is ETHER; defaults to false. If DROP_OTHER is
77652 +true, drops packets sent to hosts other than ETHER (that is, packets with
77653 +unicast destination addresses not equal to ETHER); defaults to true. If the
77654 +element has two outputs, filtered packets are emitted on the second output
77655 +rather than dropped.
77656 +.PP
77657 +Keyword arguments are:
77658 +.PP
77659 +
77660 +
77661 +.IP "DROP_OWN" 8
77662 +Same as the DROP_OWN parameter.
77663 +.IP "" 8
77664 +.IP "DROP_OTHER" 8
77665 +Same as the DROP_OTHER parameter.
77666 +.IP "" 8
77667 +.IP "OFFSET" 8
77668 +The ethernet header starts OFFSET bytes into the packet. Default OFFSET is 0.
77669 +.IP "" 8
77670 +.PP
77671 +
77672 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPError.n click-1.6.0-27/inst/share/man/mann/ICMPError.n
77673 --- click-1.6.0/inst/share/man/mann/ICMPError.n 1969-12-31 19:00:00.000000000 -0500
77674 +++ click-1.6.0-27/inst/share/man/mann/ICMPError.n      2009-02-11 14:08:51.000000000 -0500
77675 @@ -0,0 +1,102 @@
77676 +.\" -*- mode: nroff -*-
77677 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmperror.hh'
77678 +.de M
77679 +.IR "\\$1" "(\\$2)\\$3"
77680 +..
77681 +.de RM
77682 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77683 +..
77684 +.TH "ICMPERROR" n "11/Feb/2009" "Click"
77685 +.SH "NAME"
77686 +ICMPError \- Click element;
77687 +generates ICMP error packets
77688 +.SH "SYNOPSIS"
77689 +\fBICMPError\fR(SRC, TYPE [, CODE, \fIkeywords\fR BADADDRS, MTU])
77690 +
77691 +\fBPorts\fR: 1 input, 1 output
77692 +.br
77693 +\fBProcessing\fR: agnostic
77694 +.br
77695 +\fBPackage\fR: icmp (core)
77696 +.br
77697 +.SH "DESCRIPTION"
77698 +Generate an ICMP error packet, with specified TYPE and CODE,
77699 +in response to an incoming IP packet. The output is an IP/ICMP packet.
77700 +The ICMP packet's IP source address is set to SRC.
77701 +The error packet will include (as payload)
77702 +the original packet's IP header and an initial segment of its
77703 +IP payload. \fBICMPError\fR sets the packet destination IP and
77704 +fix_ip_src annotations.
77705 +.PP
77706 +TYPE and CODE may be integers between 0 and 255 or mnemonic names; CODE
77707 +defaults to 0. Valid named TYPEs are `unreachable' [3], `sourcequench' [4],
77708 +`redirect' [5], `timeexceeded' [11], and `parameterproblem' [12]. Valid
77709 +named CODEs are `net' [0], `host' [1], `protocol' [2], `port' [3], and
77710 +`needfrag' [4] for `unreachable'; `net' [0] and `host' [1] for `redirect';
77711 +`transit' [0] and `reassembly' [1] for `timeexceeded'; and `erroratptr'
77712 +[0], `missingopt' [1], and `length' [2] for `parameterproblem'.
77713 +.PP
77714 +The intent is that elements that give rise to errors, like 
77715 +.M DecIPTTL "n" ,
77716 +should have two outputs, one of which is connected to an \fBICMPError\fR.
77717 +Perhaps the \fBICMPError\fR should be followed by a rate limiting
77718 +element.
77719 +.PP
77720 +\fBICMPError\fR never generates a packet in response to an ICMP error packet, a
77721 +fragment, or a link broadcast. The BADADDRS keyword argument supplies an
77722 +optional list of bad IP addresses; if it is present, then \fBICMPError\fR doesn't
77723 +generate packets in response to packets with one of those addresses as
77724 +either source or destination.
77725 +.PP
77726 +The output of \fBICMPError\fR should be connected to the routing lookup
77727 +machinery, much as if the ICMP errors came from a hardware interface.
77728 +.PP
77729 +If TYPE is 12 (`parameterproblem') and CODE is 0 (`erroratptr'), \fBICMPError\fR
77730 +takes the error pointer from the packet's ICMP parameter problem
77731 +annotation. The 
77732 +.M IPGWOptions "n" 
77733 +element sets the annotation.
77734 +.PP
77735 +If TYPE is 5 (`redirect'), produces an ICMP redirect message. The gateway
77736 +address is taken from the destination annotation. Usually a Paint-PaintTee
77737 +element pair hands the packet to a redirect \fBICMPError\fR. RFC1812 says only
77738 +code 1 (`host') should be used.
77739 +.PP
77740 +If TYPE is 3 ('unreachable') and CODE is 4 ('needfrag'), produces
77741 +an ICMP unreachable message containing the MTU of the next-hop
77742 +interface, specified by the PMTU keyword. This error should be
77743 +returned to the sender of an IP packet with the DF bit set, that is
77744 +longer than the next-hop MTU, to support Path MTU Discovery.
77745 +.PP
77746 +If the input packet has a source route option, the output packet will also
77747 +have a source route option, containing the routers from the input source
77748 +route, reversed.
77749 +.PP
77750 +Will not generate a packet larger than MTU, which defaults to 576.
77751 +.PP
77752 +
77753 +.SH "EXAMPLES"
77754 +This configuration fragment produces ICMP Time Exceeded error
77755 +messages in response to TTL expirations, but limits the
77756 +rate at which such messages can be sent to 10 per second:
77757 +.PP
77758 +.nf
77759 +\&  dt : DecIPTTL;
77760 +\&  dt[1] -> ICMPError(18.26.4.24, timeexceeded) -> m :: RatedSplitter(10) -> ...
77761 +\&  m[1] -> Discard;
77762 +.fi
77763 +.PP
77764 +
77765 +
77766 +
77767 +.SH "NOTES"
77768 +\fBICMPError\fR can't decide if the packet's source or destination address is an
77769 +IP directed broadcast address; it is supposed to ignore packets with such
77770 +addresses.
77771 +.PP
77772 +
77773 +.SH "SEE ALSO"
77774 +.M DecIPTTL n ,
77775 +.M FixIPSrc n ,
77776 +.M IPGWOptions "n" 
77777 +
77778 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingEncap.n click-1.6.0-27/inst/share/man/mann/ICMPPingEncap.n
77779 --- click-1.6.0/inst/share/man/mann/ICMPPingEncap.n     1969-12-31 19:00:00.000000000 -0500
77780 +++ click-1.6.0-27/inst/share/man/mann/ICMPPingEncap.n  2009-02-11 14:08:51.000000000 -0500
77781 @@ -0,0 +1,54 @@
77782 +.\" -*- mode: nroff -*-
77783 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingencap.hh'
77784 +.de M
77785 +.IR "\\$1" "(\\$2)\\$3"
77786 +..
77787 +.de RM
77788 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77789 +..
77790 +.TH "ICMPPINGENCAP" n "11/Feb/2009" "Click"
77791 +.SH "NAME"
77792 +ICMPPingEncap \- Click element;
77793 +encapsulates packets in ICMP ping headers
77794 +.SH "SYNOPSIS"
77795 +\fBICMPPingEncap\fR(SRC, DST [, \fIkeyword\fR IDENTIFIER])
77796 +
77797 +\fBPorts\fR: 1 input, 1 output
77798 +.br
77799 +\fBProcessing\fR: agnostic
77800 +.br
77801 +\fBPackage\fR: icmp (core)
77802 +.br
77803 +.SH "DESCRIPTION"
77804 +Encapsulates input packets in an ICMP ping header with source IP address SRC
77805 +and destination IP address DST.  Advances the "sequence" field by one for
77806 +each packet.  (The sequence field is stored in network byte order in the
77807 +packet.)
77808 +.PP
77809 +Keyword arguments are:
77810 +.PP
77811 +
77812 +
77813 +.IP "IDENTIFIER" 8
77814 +Integer. Determines the ICMP identifier field in emitted pings. Default is
77815 +0.
77816 +.IP "" 8
77817 +.PP
77818 +
77819 +.SH "ELEMENT HANDLERS"
77820 +
77821 +
77822 +
77823 +.IP "\fBsrc\fR (read/write)" 5
77824 +Returns or sets the SRC argument.
77825 +.IP "" 5
77826 +.IP "\fBdst\fR (read/write)" 5
77827 +Returns or sets the DST argument.
77828 +.IP "" 5
77829 +.PP
77830 +
77831 +.SH "SEE ALSO"
77832 +.M ICMPPingSource n ,
77833 +.M ICMPPingResponder n ,
77834 +.M ICMPPingRewriter "n" 
77835 +
77836 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingResponder.n click-1.6.0-27/inst/share/man/mann/ICMPPingResponder.n
77837 --- click-1.6.0/inst/share/man/mann/ICMPPingResponder.n 1969-12-31 19:00:00.000000000 -0500
77838 +++ click-1.6.0-27/inst/share/man/mann/ICMPPingResponder.n      2009-02-11 14:08:51.000000000 -0500
77839 @@ -0,0 +1,39 @@
77840 +.\" -*- mode: nroff -*-
77841 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingresponder.hh'
77842 +.de M
77843 +.IR "\\$1" "(\\$2)\\$3"
77844 +..
77845 +.de RM
77846 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77847 +..
77848 +.TH "ICMPPINGRESPONDER" n "11/Feb/2009" "Click"
77849 +.SH "NAME"
77850 +ICMPPingResponder \- Click element;
77851 +responds to ICMP echo requests
77852 +.SH "SYNOPSIS"
77853 +\fBICMPPingResponder\fR()
77854 +
77855 +\fBPorts\fR: 1 input, 1-2 outputs
77856 +.br
77857 +\fBProcessing\fR: agnostic, but output 1 is push
77858 +.br
77859 +\fBPackage\fR: icmp (core)
77860 +.br
77861 +.SH "DESCRIPTION"
77862 +Respond to ICMP echo requests. Incoming packets must have their IP header
77863 +annotations set. The corresponding reply is generated for any ICMP echo
77864 +request and emitted on output 0. The reply's destination IP address annotation
77865 +is set appropriately, its paint annotation is cleared, and its timestamp is
77866 +set to the current time. Other annotations are copied from the input packet.
77867 +IP packets other than ICMP echo requests are emitted on the second output, if
77868 +there are two outputs; otherwise, they are dropped.
77869 +.PP
77870 +
77871 +.SH "BUGS"
77872 +\fBICMPPingResponder\fR does not pay attention to source route options; it should.
77873 +.PP
77874 +
77875 +.SH "SEE ALSO"
77876 +.M ICMPSendPings n ,
77877 +.M ICMPError "n" 
77878 +
77879 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingRewriter.n click-1.6.0-27/inst/share/man/mann/ICMPPingRewriter.n
77880 --- click-1.6.0/inst/share/man/mann/ICMPPingRewriter.n  1969-12-31 19:00:00.000000000 -0500
77881 +++ click-1.6.0-27/inst/share/man/mann/ICMPPingRewriter.n       2009-02-11 14:08:52.000000000 -0500
77882 @@ -0,0 +1,66 @@
77883 +.\" -*- mode: nroff -*-
77884 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmppingrewriter.hh'
77885 +.de M
77886 +.IR "\\$1" "(\\$2)\\$3"
77887 +..
77888 +.de RM
77889 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77890 +..
77891 +.TH "ICMPPINGREWRITER" n "11/Feb/2009" "Click"
77892 +.SH "NAME"
77893 +ICMPPingRewriter \- Click element;
77894 +rewrites ICMP echo requests and replies
77895 +.SH "SYNOPSIS"
77896 +\fBICMPPingRewriter\fR(SRC, DST, \fIkeywords\fR DST_ANNO)
77897 +
77898 +\fBPorts\fR: 1-2 inputs, 1-2 outputs
77899 +.br
77900 +\fBProcessing\fR: push
77901 +.br
77902 +\fBPackage\fR: icmp (core)
77903 +.br
77904 +.SH "DESCRIPTION"
77905 +Rewrites ICMP echo requests and replies by changing their source and/or
77906 +destination addresses. This lets pings pass through a NAT gateway.
77907 +.PP
77908 +Expects ICMP echo requests and echo replies. Each ICMP echo request is
77909 +rewritten to have source IP address SRC and destination IP address DST.
77910 +However, if either address is a single dash `\f(CW-\fR', the corresponding field in
77911 +the IP header won't be changed. The ICMP `identifier' field is also rewritten
77912 +to a unique number. Replies to the rewritten request are themselves rewritten;
77913 +the rewritten replies look like they were responding to the original request.
77914 +\fBICMPPingRewriter\fR optionally changes destination IP address annotations; see
77915 +the DST_ANNO keyword argument below.
77916 +.PP
77917 +\fBICMPPingRewriter\fR actually keeps a table of mappings. Each mapping changes
77918 +a given (source address, destination address, identifier) triple into another
77919 +triple. Say that \fBICMPPingRewriter\fR receives a request packet with triple
77920 +(\fIsrc\fR, \fIdst\fR, \fIident\fR), and chooses for it a new triple, (\fIsrc2\fR,
77921 +\fIdst2\fR, \fIident2\fR). The rewriter will then store two mappings in the table.
77922 +The first mapping changes requests (\fIsrc\fR, \fIdst\fR, \fIident\fR) into requests
77923 +(\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.
77924 +.PP
77925 +\fBICMPPingRewriter\fR may have one or two outputs. If it has two outputs,
77926 +then requests are emitted on output 0, replies on output 1. Otherwise,
77927 +all packets are emitted on output 0.
77928 +.PP
77929 +It may also have one or two inputs. They differ in how unexpected packets
77930 +are handled. On the first input, echo requests with no corresponding
77931 +mapping cause new mappings to be created, while echo replies with no
77932 +corresponding mapping are passed along unchanged. On the second input,
77933 +echo requests or replies with no corresponding mapping are simply dropped.
77934 +.PP
77935 +Keyword arguments are:
77936 +.PP
77937 +
77938 +
77939 +.IP "DST_ANNO" 8
77940 +Boolean. If true, then set the destination IP address annotation on passing
77941 +packets to the rewritten destination address. Default is true.
77942 +.IP "" 8
77943 +.PP
77944 +
77945 +.SH "SEE ALSO"
77946 +.M IPRewriter n ,
77947 +.M ICMPPingResponder "n" 
77948 +
77949 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPPingSource.n click-1.6.0-27/inst/share/man/mann/ICMPPingSource.n
77950 --- click-1.6.0/inst/share/man/mann/ICMPPingSource.n    1969-12-31 19:00:00.000000000 -0500
77951 +++ click-1.6.0-27/inst/share/man/mann/ICMPPingSource.n 2009-02-11 14:08:51.000000000 -0500
77952 @@ -0,0 +1,106 @@
77953 +.\" -*- mode: nroff -*-
77954 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmpsendpings.hh'
77955 +.de M
77956 +.IR "\\$1" "(\\$2)\\$3"
77957 +..
77958 +.de RM
77959 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
77960 +..
77961 +.TH "ICMPPINGSOURCE" n "11/Feb/2009" "Click"
77962 +.SH "NAME"
77963 +ICMPPingSource \- Click element;
77964 +periodically sends ICMP echo requests
77965 +.SH "SYNOPSIS"
77966 +\fBICMPPingSource\fR(SADDR, DADDR [, \fIkeywords\fR INTERVAL, IDENTIFIER, LIMIT, DATA, ACTIVE])
77967 +
77968 +\fBPorts\fR: at most 1 input, 1 output
77969 +.br
77970 +\fBPackage\fR: icmp (core)
77971 +.br
77972 +.SH "DESCRIPTION"
77973 +Periodically emits ping packets with source IP address SRC and destination
77974 +address DST.  Advances the "sequence" field by one each time.  (The sequence
77975 +field is stored in network byte order in the packet.)  When its output is
77976 +pull, generates a ping packet on every pull.
77977 +.PP
77978 +\fBICMPPingSource\fR's optional input accepts replies to the pings it sends.  If you
77979 +send replies to this input, \fBICMPPingSource\fR will print reply reports and keep
77980 +loss and RTT statistics like the ping(1) program.  You can access those
77981 +stistics with the "\f(CWsummary\fR" handler.
77982 +.PP
77983 +Keyword arguments are:
77984 +.PP
77985 +
77986 +
77987 +.IP "INTERVAL" 8
77988 +Amount of time between pings, in seconds. Default is 1.
77989 +.IP "" 8
77990 +.IP "IDENTIFIER" 8
77991 +Integer. Determines the ICMP identifier field in emitted pings. Default is
77992 +0.
77993 +.IP "" 8
77994 +.IP "LIMIT" 8
77995 +Integer. The number of pings to send; but if LIMIT is negative, sends pings
77996 +forever. Default is -1.
77997 +.IP "" 8
77998 +.IP "DATA" 8
77999 +String. Extra data in emitted pings. Default is the empty string (nothing).
78000 +.IP "" 8
78001 +.IP "ACTIVE" 8
78002 +Boolean.  Whether \fBICMPPingSource\fR is active.  Default is true.
78003 +.IP "" 8
78004 +.IP "VERBOSE" 8
78005 +Boolean.  Whether \fBICMPPingSource\fR should print reports when echo replies
78006 +arrive.  Default is true.
78007 +.IP "" 8
78008 +.PP
78009 +
78010 +.SH "ELEMENT HANDLERS"
78011 +
78012 +
78013 +
78014 +.IP "\fBactive\fR (read/write)" 5
78015 +Returns or sets the ACTIVE argument.
78016 +.IP "" 5
78017 +.IP "\fBcount\fR (read-only)" 5
78018 +Reports the number of packets sent so far.
78019 +.IP "" 5
78020 +.IP "\fBlimit\fR (write-only)" 5
78021 +Sets the LIMIT argument.
78022 +.IP "" 5
78023 +.IP "\fBinterval\fR (write-only)" 5
78024 +Sets the INTERVAL argument.
78025 +.IP "" 5
78026 +.IP "\fBreset_counts\fR (write-only)" 5
78027 +Resets all counters to zero.
78028 +.IP "" 5
78029 +.IP "\fBsrc\fR (read/write)" 5
78030 +Returns or sets the SRC argument.
78031 +.IP "" 5
78032 +.IP "\fBdst\fR (read/write)" 5
78033 +Returns or sets the DST argument.
78034 +.IP "" 5
78035 +.IP "\fBsummary\fR (read-only)" 5
78036 +Returns ping(1)-style summary information: number of packets sent and
78037 +received, loss rate, and RTT statistics.  Only available if \fBICMPPingSource\fR had
78038 +an input.
78039 +.IP "" 5
78040 +.IP "\fBrtt_min\fR (read-only)" 5
78041 +Returns the minimum RTT observed, or 0 if no RTTs have been observed.  Only
78042 +available if \fBICMPPingSource\fR had an input.
78043 +.IP "" 5
78044 +.IP "\fBrtt_max\fR (read-only)" 5
78045 +Returns the maximum RTT observed, or 0 if no RTTs have been observed.  Only
78046 +available if \fBICMPPingSource\fR had an input.
78047 +.IP "" 5
78048 +.IP "\fBrtt_avg\fR (read-only)" 5
78049 +Returns the average RTT observed, or 0 if no RTTs have been observed.  Only
78050 +available if \fBICMPPingSource\fR had an input.
78051 +.IP "" 5
78052 +.PP
78053 +
78054 +.SH "SEE ALSO"
78055 +.M ICMPPingEncap n ,
78056 +.M ICMPPingResponder n ,
78057 +.M ICMPPingRewriter "n" 
78058 +
78059 diff -Nurb click-1.6.0/inst/share/man/mann/ICMPRewriter.n click-1.6.0-27/inst/share/man/mann/ICMPRewriter.n
78060 --- click-1.6.0/inst/share/man/mann/ICMPRewriter.n      1969-12-31 19:00:00.000000000 -0500
78061 +++ click-1.6.0-27/inst/share/man/mann/ICMPRewriter.n   2009-02-11 14:08:51.000000000 -0500
78062 @@ -0,0 +1,73 @@
78063 +.\" -*- mode: nroff -*-
78064 +.\" Generated by 'click-elem2man' from '../elements/icmp/icmprewriter.hh'
78065 +.de M
78066 +.IR "\\$1" "(\\$2)\\$3"
78067 +..
78068 +.de RM
78069 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78070 +..
78071 +.TH "ICMPREWRITER" n "11/Feb/2009" "Click"
78072 +.SH "NAME"
78073 +ICMPRewriter \- Click element;
78074 +rewrites ICMP packets based on IP rewriter mappings
78075 +.SH "SYNOPSIS"
78076 +\fBICMPRewriter\fR(MAPS, \fIkeywords\fR DST_ANNO)
78077 +
78078 +\fBPorts\fR: 1 input, 1-2 outputs
78079 +.br
78080 +\fBProcessing\fR: agnostic
78081 +.br
78082 +\fBPackage\fR: icmp (core)
78083 +.br
78084 +.SH "DESCRIPTION"
78085 +Rewrites ICMP error packets by changing their source and/or destination
78086 +addresses and some of their payloads. It checks MAPS, a space-separated list
78087 +of 
78088 +.M IPRewriter "n" -like
78089 +elements, to see how to rewrite. This lets source quenches,
78090 +redirects, TTL-expired messages, and so forth pass through a NAT gateway.
78091 +.PP
78092 +ICMP error packets are sent in response to normal IP packets, and include a
78093 +small portion of the relevant IP packet data. If the IP packet had been sent
78094 +through 
78095 +.M IPRewriter "n" ,
78096 +.M ICMPPingRewriter "n" ,
78097 +or a similar element, then the ICMP
78098 +packet will be in response to the rewritten address. \fBICMPRewriter\fR takes such
78099 +ICMP error packets and checks a list of IPRewriters for a relevant mapping. If
78100 +a mapping is found, \fBICMPRewriter\fR will rewrite the ICMP packet so it appears
78101 +like a response to the original packet and emit the result on output 0.
78102 +.PP
78103 +\fBICMPRewriter\fR may have one or two outputs. If it has one, then any
78104 +non-rewritten ICMP error packets, and any ICMP packets that are not errors,
78105 +are dropped. If it has two, then these kinds of packets are emitted on output
78106 +1.
78107 +.PP
78108 +Keyword arguments are:
78109 +.PP
78110 +
78111 +
78112 +.IP "DST_ANNO" 8
78113 +Boolean. If true, then set the destination IP address annotation on passing
78114 +packets to the rewritten destination address. Default is true.
78115 +.IP "" 8
78116 +.PP
78117 +
78118 +.SH "NOTES"
78119 +\fBICMPRewriter\fR supports the following ICMP types: destination unreachable, time
78120 +exceeded, parameter problem, source quench, and redirect.
78121 +.PP
78122 +MAPS elements may have element class 
78123 +.M IPAddrRewriter "n" ,
78124 +.M IPRewriter "n" ,
78125 +.M TCPRewriter "n" ,
78126 +.M ICMPPingRewriter "n" ,
78127 +or other related classes.
78128 +.PP
78129 +
78130 +.SH "SEE ALSO"
78131 +.M IPAddrRewriter n ,
78132 +.M IPRewriter n ,
78133 +.M ICMPPingRewriter n ,
78134 +.M TCPRewriter "n" 
78135 +
78136 diff -Nurb click-1.6.0/inst/share/man/mann/IPAddrPairRewriter.n click-1.6.0-27/inst/share/man/mann/IPAddrPairRewriter.n
78137 --- click-1.6.0/inst/share/man/mann/IPAddrPairRewriter.n        1969-12-31 19:00:00.000000000 -0500
78138 +++ click-1.6.0-27/inst/share/man/mann/IPAddrPairRewriter.n     2009-02-11 14:08:51.000000000 -0500
78139 @@ -0,0 +1,121 @@
78140 +.\" -*- mode: nroff -*-
78141 +.\" Generated by 'click-elem2man' from '../elements/ip/ipaddrpairrewriter.hh'
78142 +.de M
78143 +.IR "\\$1" "(\\$2)\\$3"
78144 +..
78145 +.de RM
78146 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78147 +..
78148 +.TH "IPADDRPAIRREWRITER" n "11/Feb/2009" "Click"
78149 +.SH "NAME"
78150 +IPAddrPairRewriter \- Click element;
78151 +rewrites IP packets' addresses by address pair
78152 +.SH "SYNOPSIS"
78153 +\fBIPAddrPairRewriter\fR(INPUTSPEC1, ..., INPUTSPECn)
78154 +
78155 +\fBPorts\fR: 1 or more inputs, 1-256 outputs
78156 +.br
78157 +\fBProcessing\fR: push
78158 +.br
78159 +\fBPackage\fR: ip (core)
78160 +.br
78161 +.SH "DESCRIPTION"
78162 +Rewrites the source and/or destination addresses on IP packets, along with
78163 +their checksums.  \fBIPAddrPairRewriter\fR implements per-address-pair network
78164 +address translation, a midpoint between Basic NAT (see 
78165 +.M IPAddrRewriter "n" )
78166 +and
78167 +NAPT (see 
78168 +.M IPRewriter "n" 
78169 +and 
78170 +.M TCPRewriter "n" ).
78171 +.PP
78172 +\fBIPAddrPairRewriter\fR maintains a \fImapping table\fR that records how addresses are
78173 +rewritten.  On receiving a packet, \fBIPAddrPairRewriter\fR first looks up that
78174 +packet in the mapping table by source/destination address pair.  If the table
78175 +contains a mapping, then the packet is rewritten according to the mapping and
78176 +emitted on the specified output port.  If there was no mapping, the packet is
78177 +handled by the INPUTSPEC corresponding to the input port on which the packet
78178 +arrived.  (There are as many input ports as INPUTSPECs.)  Most INPUTSPECs
78179 +install new mappings, so that future packets from the same address are handled
78180 +by the mapping table rather than some INPUTSPEC.  The six forms of INPUTSPEC
78181 +handle input packets as follows:
78182 +.PP
78183 +
78184 +
78185 +.IP "\&'drop', 'pass OUTPUT', 'keep FOUTPUT ROUTPUT', 'ELEMENTNAME'" 5
78186 +These INPUTSPECs behave like those in 
78187 +.M IPRewriter "n" .
78188 +.IP "" 5
78189 +.IP "\&'pattern SADDR[-SADDR2] DADDR FOUTPUT ROUTPUT'" 5
78190 +Creates a mapping according to the given pattern, 'SADDR DADDR'.  Either
78191 +pattern field may be a dash '-', in which case the corresponding field is left
78192 +unchanged.  For instance, the pattern '1.0.0.1 -' will rewrite input packets'
78193 +source address, but leave its destination address unchanged.  SADDR may be a
78194 +range 'L-H' or prefix 'ADDR/PFX'; 
78195 +.M IPRewriter "n" 
78196 +will choose an unallocated
78197 +address in that range, or drop the packet if no address is available.
78198 +Normally addresses are chosen randomly within the range.  To allocate
78199 +addresses sequentially (which can make testing easier), append a pound sign to
78200 +the range, as in '1.0.0.1-1.255.255.254#'.
78201 +.IP "" 5
78202 +Say a packet with address pair (SA, DA) is received, and the corresponding new
78203 +addresses are (SA', DA').  Then two mappings are installed:
78204 +.IP "" 5
78205 +.nf
78206 +\&    (SA, DA) => (SA', DA') [FOUTPUT]
78207 +\&    (DA', SA') => (DA, SA) [ROUTPUT]
78208 +.fi
78209 +.IP "" 5
78210 +Thus, the input packet is rewritten and sent to FOUTPUT, and packets from the
78211 +reply flow are rewritten to look like part of the original flow and sent to
78212 +ROUTPUT.
78213 +.IP "" 5
78214 +
78215 +.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5
78216 +Behaves like the version in 
78217 +.M IPRewriter "n" ,
78218 +except that PATNAME must name an
78219 +.M IPAddrRewriter "n" -like
78220 +pattern.
78221 +.IP "" 5
78222 +.PP
78223 +Input packets must have their IP header annotations set.  
78224 +.M IPAddrRewriter "n" 
78225 +changes IP packet data and destination IP address annotations.
78226 +.PP
78227 +.SH "ELEMENT HANDLERS"
78228 +
78229 +
78230 +
78231 +.IP "\fBmappings\fR (read-only)" 5
78232 +Returns a human-readable description of the 
78233 +.M IPAddrRewriter "n" 's
78234 +current set of
78235 +mappings.
78236 +.IP "" 5
78237 +.IP "\fBnmappings\fR (read-only)" 5
78238 +Returns the number of currently installed mappings.
78239 +.IP "" 5
78240 +.IP "\fBpatterns\fR (read-only)" 5
78241 +Returns a human-readable description of the patterns associated with this
78242 +.M IPAddrRewriter "n" .
78243 +.IP "" 5
78244 +.PP
78245 +
78246 +.SH "SEE ALSO"
78247 +.M IPRewriter n ,
78248 +.M IPAddrRewriter n ,
78249 +.M TCPRewriter n ,
78250 +.M IPRewriterPatterns n ,
78251 +.M RoundRobinIPMapper n ,
78252 +.M FTPPortMapper n ,
78253 +.M ICMPRewriter n ,
78254 +.M ICMPPingRewriter n ,
78255 +.M StoreIPAddress n 
78256 +(
78257 +.M for n 
78258 +.M simple n 
78259 +uses)
78260 +
78261 diff -Nurb click-1.6.0/inst/share/man/mann/IPAddrRewriter.n click-1.6.0-27/inst/share/man/mann/IPAddrRewriter.n
78262 --- click-1.6.0/inst/share/man/mann/IPAddrRewriter.n    1969-12-31 19:00:00.000000000 -0500
78263 +++ click-1.6.0-27/inst/share/man/mann/IPAddrRewriter.n 2009-02-11 14:08:52.000000000 -0500
78264 @@ -0,0 +1,113 @@
78265 +.\" -*- mode: nroff -*-
78266 +.\" Generated by 'click-elem2man' from '../elements/ip/ipaddrrewriter.hh'
78267 +.de M
78268 +.IR "\\$1" "(\\$2)\\$3"
78269 +..
78270 +.de RM
78271 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78272 +..
78273 +.TH "IPADDRREWRITER" n "11/Feb/2009" "Click"
78274 +.SH "NAME"
78275 +IPAddrRewriter \- Click element;
78276 +rewrites IP packets' addresses
78277 +.SH "SYNOPSIS"
78278 +\fBIPAddrRewriter\fR(INPUTSPEC1, ..., INPUTSPECn)
78279 +
78280 +\fBPorts\fR: 1 or more inputs, 1-256 outputs
78281 +.br
78282 +\fBProcessing\fR: push
78283 +.br
78284 +\fBPackage\fR: ip (core)
78285 +.br
78286 +.SH "DESCRIPTION"
78287 +Rewrites the source and/or destination addresses on IP packets, along with
78288 +their checksums.  \fBIPAddrRewriter\fR implements the functionality of a network
78289 +address translator (Basic NAT), where internal hosts are assigned
78290 +temporary IP addresses as they access the Internet.  Basic NAT works for any
78291 +IP protocol, but the number of internal hosts that can access the Internet
78292 +simultaneously is limited by the number of external IP addresses available.
78293 +See also 
78294 +.M IPRewriter "n" 
78295 +and 
78296 +.M TCPRewriter "n" ,
78297 +which implement network address/port
78298 +translation (NAPT).
78299 +.PP
78300 +\fBIPAddrRewriter\fR maintains a \fImapping table\fR that records how addresses are
78301 +rewritten.  On receiving a packet, \fBIPAddrRewriter\fR first looks up that packet
78302 +in the mapping table by source or destination address.  If the table contains
78303 +a mapping for either address, then the packet is rewritten according to the
78304 +mapping and emitted on the specified output port.  If there was no mapping,
78305 +the packet is handled by the INPUTSPEC corresponding to the input port on
78306 +which the packet arrived.  (There are as many input ports as INPUTSPECs.)
78307 +Most INPUTSPECs install new mappings, so that future packets from the same
78308 +address are handled by the mapping table rather than some INPUTSPEC.  The six
78309 +forms of INPUTSPEC handle input packets as follows:
78310 +.PP
78311 +
78312 +
78313 +.IP "\&'drop', 'pass OUTPUT', 'keep FOUTPUT ROUTPUT', 'ELEMENTNAME'" 5
78314 +These INPUTSPECs behave like those in 
78315 +.M IPRewriter "n" .
78316 +.IP "" 5
78317 +.IP "\&'pattern SADDR[-SADDR2] - FOUTPUT ROUTPUT'" 5
78318 +Creates a mapping according to the given pattern.  The destination
78319 +address must be a dash '-', since \fBIPAddrRewriter\fR only changes outgoing
78320 +packets' source addresses.  (If you want to rewrite destination addresses,
78321 +use 
78322 +.M IPAddrPairRewriter "n" 
78323 +instead.)
78324 +SADDR may be a range 'L-H' or prefix 'ADDR/PFX';
78325 +.M IPRewriter "n" 
78326 +will choose an unallocated address in that range, or drop the
78327 +packet if no address is available.  Normally addresses are chosen randomly
78328 +within the range.  To allocate addresses sequentially (which can make testing
78329 +easier), append a pound sign to the range, as in '1.0.0.1-1.255.255.254#'.
78330 +SADDR may also be a dash, in which case the source address is left unchanged.
78331 +.IP "" 5
78332 +Packets sent from the old source address are rewritten and sent to FOUTPUT,
78333 +and packets sent to the new source address are rewritten back and sent to
78334 +ROUTPUT.
78335 +.IP "" 5
78336 +.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5
78337 +Behaves like the version in 
78338 +.M IPRewriter "n" ,
78339 +except that PATNAME must name an
78340 +\fBIPAddrRewriter\fR-like pattern.
78341 +.IP "" 5
78342 +.PP
78343 +Input packets must have their IP header annotations set.  \fBIPAddrRewriter\fR
78344 +changes IP packet data and destination IP address annotations.
78345 +.PP
78346 +.SH "ELEMENT HANDLERS"
78347 +
78348 +
78349 +
78350 +.IP "\fBmappings\fR (read-only)" 5
78351 +Returns a human-readable description of the \fBIPAddrRewriter\fR's current set of
78352 +mappings.
78353 +.IP "" 5
78354 +.IP "\fBnmappings\fR (read-only)" 5
78355 +Returns the number of currently installed mappings.
78356 +.IP "" 5
78357 +.IP "\fBpatterns\fR (read-only)" 5
78358 +Returns a human-readable description of the patterns associated with this
78359 +\fBIPAddrRewriter\fR.
78360 +.IP "" 5
78361 +.PP
78362 +
78363 +.SH "SEE ALSO"
78364 +.M IPRewriter n ,
78365 +.M IPAddrPairRewriter n ,
78366 +.M TCPRewriter n ,
78367 +.M IPRewriterPatterns n ,
78368 +.M RoundRobinIPMapper n ,
78369 +.M FTPPortMapper n ,
78370 +.M ICMPRewriter n ,
78371 +.M ICMPPingRewriter n ,
78372 +.M StoreIPAddress n 
78373 +(
78374 +.M for n 
78375 +.M simple n 
78376 +uses)
78377 +
78378 diff -Nurb click-1.6.0/inst/share/man/mann/IPClassifier.n click-1.6.0-27/inst/share/man/mann/IPClassifier.n
78379 --- click-1.6.0/inst/share/man/mann/IPClassifier.n      1969-12-31 19:00:00.000000000 -0500
78380 +++ click-1.6.0-27/inst/share/man/mann/IPClassifier.n   2009-02-11 14:08:52.000000000 -0500
78381 @@ -0,0 +1,239 @@
78382 +.\" -*- mode: nroff -*-
78383 +.\" Generated by 'click-elem2man' from '../elements/ip/ipclassifier.hh'
78384 +.de M
78385 +.IR "\\$1" "(\\$2)\\$3"
78386 +..
78387 +.de RM
78388 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78389 +..
78390 +.TH "IPCLASSIFIER" n "11/Feb/2009" "Click"
78391 +.SH "NAME"
78392 +IPClassifier \- Click element;
78393 +classifies IP packets by contents
78394 +.SH "SYNOPSIS"
78395 +\fBIPClassifier\fR(PATTERN_1, ..., PATTERN_N)
78396 +
78397 +\fBPorts\fR: 1 input, any number of outputs
78398 +.br
78399 +\fBProcessing\fR: push
78400 +.br
78401 +\fBPackage\fR: ip (core)
78402 +.br
78403 +.SH "DESCRIPTION"
78404 +Classifies IP packets according to 
78405 +.M tcpdump 1 -like
78406 +patterns. The
78407 +\fBIPClassifier\fR has N outputs, each associated with the corresponding pattern
78408 +from the configuration string. The input packets must have their IP header
78409 +annotation set; 
78410 +.M CheckIPHeader "n" 
78411 +and 
78412 +.M MarkIPHeader "n" 
78413 +do this.
78414 +.PP
78415 +Patterns are built from \fIpattern primitives\fR. The primitives
78416 +\fBIPClassifier\fR understands are:
78417 +.PP
78418 +
78419 +
78420 +.IP "\fBip proto PROTO\fR" 8
78421 +PROTO is an IP protocol name (see below) or a valid IP protocol number.
78422 +Matches packets of the given protocol.
78423 +.IP "" 8
78424 +.IP "\fB[SRCORDST] host IPADDR\fR" 8
78425 +IPADDR is an IP address and SRCORDST is 'src', 'dst', 'src or dst', or 'src
78426 +and dst'. (If SRCORDST is missing, 'src or dst' is assumed.) Matches
78427 +packets sent to and/or from the given address.
78428 +.IP "" 8
78429 +.IP "\fB[SRCORDST] net NETADDR\fR" 8
78430 +NETADDR is an IP network address (either CIDR-style 'IPADDR/BITS' or
78431 +\&'IPADDR mask MASK') and SRCORDST is as above. Matches packets sent to
78432 +and/or from the given network.
78433 +.IP "" 8
78434 +.IP "\fB[SRCORDST] [tcp | udp] port PORT\fR" 8
78435 +PORT is a TCP or UDP port name (see below) or number and SRCORDST is as
78436 +above. Matches packets sent to and/or from the given TCP or UDP port. If
78437 +you leave out 'tcp' or 'udp', then either TCP or UDP is accepted.
78438 +.IP "" 8
78439 +.IP "\fBip vers VERSION\fR" 8
78440 +VERSION is a value between 0 and 15. Matches IP packets with the given
78441 +version.
78442 +.IP "" 8
78443 +.IP "\fBip hl HL\fR" 8
78444 +HL is a value between 0 and 15. Matches IP packets with the given header
78445 +length.
78446 +.IP "" 8
78447 +.IP "\fBip id ID\fR" 8
78448 +ID is a value between 0 and 65535. Matches IP packets with the given IP ID.
78449 +.IP "" 8
78450 +.IP "\fBip tos TOS\fR" 8
78451 +TOS is a value between 0 and 255. Matches IP packets with the given TOS
78452 +value.
78453 +.IP "" 8
78454 +.IP "\fBip dscp DSCP\fR" 8
78455 +DSCP is a value between 0 and 63. Matches IP packets with the given DSCP
78456 +value (the upper 6 bits of TOS).
78457 +.IP "" 8
78458 +.IP "\fBip ect\fR" 8
78459 +Matches IP packets with ECN Capable Transport turned on.
78460 +.IP "" 8
78461 +.IP "\fBip ce\fR" 8
78462 +Matches IP packets with ECN Congestion Experienced set.
78463 +.IP "" 8
78464 +.IP "\fBip ttl TTL\fR" 8
78465 +TTL is a value between 0 and 255. Matches IP packets with the given TTL value.
78466 +.IP "" 8
78467 +.IP "\fBip frag\fR" 8
78468 +Matches fragmented IP packets (that is, packets with the more-fragments bit
78469 +set and/or a nonzero fragment offset).
78470 +.IP "" 8
78471 +.IP "\fBip unfrag\fR" 8
78472 +Equivalent to 'not ip frag'.
78473 +.IP "" 8
78474 +.IP "\fBtcp opt TCPOPT\fR" 8
78475 +TCPOPT is a TCP option name (see below). Matches TCP packets with the given
78476 +option.
78477 +.IP "" 8
78478 +.IP "\fBtcp win TCPWIN\fR" 8
78479 +TCPWIN is a TCP receive window length. Matches TCP packets with the given
78480 +window length. Note that window scaling is not applied.
78481 +.IP "" 8
78482 +.IP "\fBicmp type TYPE\fR" 8
78483 +TYPE is a value between 0 and 255 or an ICMP type name (see below). Matches
78484 +ICMP packets with the given ICMP type.
78485 +.IP "" 8
78486 +.IP "\fBip[POS:LEN] VALUE\fR" 8
78487 +Matches packets whose IP header field starting at byte position POS, and going
78488 +on for LEN bytes, equals VALUE.  You can say \fBip[POS]\fR instead of
78489 +\fBip[POS:1]\fR.
78490 +.IP "" 8
78491 +.IP "\fBtransp[POS:LEN] VALUE\fR" 8
78492 +Like \fBip[POS:LEN]\fR, but for transport header fields.  You can also give
78493 +particular transport protocols, such as \fBtcp[POS:LEN]\fR.
78494 +.IP "" 8
78495 +.IP "\fBtrue\fR" 8
78496 +Matches every packet.
78497 +.IP "" 8
78498 +.IP "\fBfalse\fR" 8
78499 +Matches no packets.
78500 +.IP "" 8
78501 +.PP
78502 +These primitives can be combined with the connectives 'and', 'or', and 'not'
78503 +(synonyms '&&', '||', and '!'), with the ternary operator '?:' (the colon
78504 +must be surrounded by spaces!), and with parentheses. For example, '(dst port
78505 +www or dst port ssh) and tcp opt syn'.
78506 +.PP
78507 +All primitives except \fBtcp opt\fR accept an optional OPERATION, '==' or '!=',
78508 +which can occur before the actual option.  If no OPERATION is specified, '=='
78509 +is assumed.  'src host == 10.0.0.10' matches packets whose source host is
78510 +10.0.0.10; 'src host != 10.0.0.10' matches packets whose source host \fIis not\fR
78511 +10.0.0.10.  Directives with integer values also support the '<', '>', '<=',
78512 +and '>=' operations.
78513 +.PP
78514 +For \fBport\fR and \fBicmp type\fR directives, 'DIRECTIVE != VALUE' is not the
78515 +same as 'not (DIRECTIVE == VALUE)'. For example, 'src tcp port != 5'
78516 +matches TCP packets whose source port is not 5, while '!(src tcp port ==
78517 +5)' matches non-TCP packets as well. (The 'src tcp port != 5' option is
78518 +effectively equivalent to 'tcp and not src tcp port 5'.) Similarly, 'icmp
78519 +type != 4' will not match non-ICMP packets. The same goes for the '<', '>',
78520 +\&'<=', and '>=' relations.
78521 +.PP
78522 +Most primitives also accept bitmasks: 'DIRECTIVE & MASK [[OP] VALUE]'.  For
78523 +instance, 'src tcp port & 10 == 8'.
78524 +.PP
78525 +The \fBport\fR, \fBicmp type\fR, and \fBtcp opt\fR directives will only match first
78526 +fragments.
78527 +.PP
78528 +You can omit a lot of this syntax. For example, instead of 'ip proto tcp',
78529 +you can just say 'tcp'; and similarly for 'port www' (just say 'www'), 'tcp
78530 +opt syn' (just say 'syn'), 'net 10.0.0.0/24' (just say '10.0.0.0/24'), and
78531 +\&'ip unfrag' (just say 'unfrag'). You can often eliminate repetitive
78532 +qualifiers, too: 'src port 80 or 81' is the same as 'src port 80 or src
78533 +port 81'.
78534 +.PP
78535 +A pattern consisting entirely of "-", "any", or "all" matches every packet.
78536 +.PP
78537 +The patterns are scanned in order, and the packet is sent to the output
78538 +corresponding to the first matching pattern. Thus more specific patterns
78539 +should come before less specific ones. You will get a warning if no packet
78540 +will ever match a pattern. Usually, this is because an earlier pattern is
78541 +more general, or because your pattern is contradictory ('src port www and
78542 +src port ftp').
78543 +.PP
78544 +.SH "NOTES"
78545 +Valid IP port names: 'echo', 'discard', 'daytime', 'chargen', 'ftp-data',
78546 +\&'ftp', 'ssh', 'telnet', 'smtp', 'domain', 'dns', 'bootps', 'bootpc',
78547 +\&'tftp', 'finger', 'www', 'pop3', 'sunrpc', 'auth', 'nntp', 'ntp',
78548 +\&'netbios-ns', 'netbios-dgm', 'netbios-ssn', 'snmp', 'snmp-trap', 'irc',
78549 +\&'imap3', 'https', 'rip', 'route', 'imaps', 'pop3s'
78550 +.PP
78551 +Valid IP protocol names: 'icmp', 'igmp', 'ipip', 'tcp', 'udp'
78552 +.PP
78553 +Valid TCP options: 'syn', 'fin', 'ack', 'rst', 'psh', 'urg'
78554 +.PP
78555 +Valid ICMP type names: 'echo-reply', 'unreachable', 'sourcequench',
78556 +\&'redirect', 'echo', 'routeradvert', 'routersolicit', 'timeexceeded',
78557 +\&'parameterproblem', 'timestamp', 'timestamp-reply', 'inforeq',
78558 +\&'inforeq-reply', 'maskreq', 'maskreq-reply'
78559 +.PP
78560 +This element correctly handles IP packets with options.
78561 +.PP
78562 +\fB[tcp | udp] port\fR, \fBicmp type\fR, \fBtcp opt\fR, and \fBtcp win\fR directives can
78563 +only be true on the first fragment of a fragmented packet.
78564 +.PP
78565 +Every \fBIPClassifier\fR element has an equivalent corresponding 
78566 +.M IPFilter "n" 
78567 +element
78568 +and vice versa. Use the element whose syntax is more convenient for your
78569 +needs.
78570 +.PP
78571 +
78572 +.SH "EXAMPLES"
78573 +For example,
78574 +.PP
78575 +.nf
78576 +\&  IPClassifier(10.0.0.0/24 and syn,
78577 +\&               10.0.0.0/24 and fin ack,
78578 +\&               10.0.0.0/24 and tcp,
78579 +\&               -);
78580 +.fi
78581 +.PP
78582 +creates an element with four outputs. The first three outputs are for TCP
78583 +packets from net 10.0.0.x. SYN packets are sent to output 0, FIN packets
78584 +with the ACK bit set to output 1, and all other TCP packets to output 2.
78585 +The last output is for all other IP packets, and non-TCP packets from net
78586 +10.0.0.x.
78587 +.PP
78588 +.nf
78589 +\&  IPClassifier(dst tcp port 8000 or 8080,
78590 +\&               dst tcp port > 1023,
78591 +\&               tcp);
78592 +.fi
78593 +.PP
78594 +creates an element with three outputs. The first output is for TCP packets
78595 +destined for port 8000 or 8080; the second output is for TCP packets
78596 +destined for any other user port (that is, port > 1023); and the third
78597 +output is for all other TCP packets. Non-TCP packets are dropped.
78598 +.PP
78599 +
78600 +
78601 +.SH "ELEMENT HANDLERS"
78602 +
78603 +
78604 +
78605 +.IP "\fBprogram\fR (read-only)" 5
78606 +Returns a human-readable definition of the program the \fBIPClassifier\fR element
78607 +is using to classify packets. At each step in the program, four bytes
78608 +of packet data are ANDed with a mask and compared against four bytes of
78609 +classifier pattern.
78610 +.IP "" 5
78611 +.PP
78612 +
78613 +.SH "SEE ALSO"
78614 +.M Classifier n ,
78615 +.M IPFilter n ,
78616 +.M CheckIPHeader n ,
78617 +.M MarkIPHeader n ,
78618 +.M CheckIPHeader2 n ,
78619 +tcpdump(1)
78620 +
78621 diff -Nurb click-1.6.0/inst/share/man/mann/IPEncap.n click-1.6.0-27/inst/share/man/mann/IPEncap.n
78622 --- click-1.6.0/inst/share/man/mann/IPEncap.n   1969-12-31 19:00:00.000000000 -0500
78623 +++ click-1.6.0-27/inst/share/man/mann/IPEncap.n        2009-02-11 14:08:51.000000000 -0500
78624 @@ -0,0 +1,91 @@
78625 +.\" -*- mode: nroff -*-
78626 +.\" Generated by 'click-elem2man' from '../elements/ip/ipencap.hh'
78627 +.de M
78628 +.IR "\\$1" "(\\$2)\\$3"
78629 +..
78630 +.de RM
78631 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78632 +..
78633 +.TH "IPENCAP" n "11/Feb/2009" "Click"
78634 +.SH "NAME"
78635 +IPEncap \- Click element;
78636 +encapsulates packets in static IP header
78637 +.SH "SYNOPSIS"
78638 +\fBIPEncap\fR(PROTO, SRC, DST, \fIKEYWORDS\fR)
78639 +
78640 +\fBPorts\fR: 1 input, 1 output
78641 +.br
78642 +\fBProcessing\fR: agnostic
78643 +.br
78644 +\fBPackage\fR: ip (core)
78645 +.br
78646 +.SH "DESCRIPTION"
78647 +Encapsulates each incoming packet in an IP packet with protocol
78648 +PROTO, source address SRC, and destination address DST.
78649 +This is most useful for IP-in-IP encapsulation.
78650 +Its destination address annotation is also set to DST.
78651 +.PP
78652 +As a special case, if DST is "DST_ANNO", then the destination address
78653 +is set to the incoming packet's destination address annotation.
78654 +.PP
78655 +Keyword arguments are:
78656 +.PP
78657 +
78658 +
78659 +.IP "TTL" 8
78660 +Byte. The IP header's time-to-live field. Default is 250.
78661 +.IP "" 8
78662 +.IP "DSCP" 8
78663 +Number between 0 and 63. The IP header's DSCP value. Default is 0.
78664 +.IP "" 8
78665 +.IP "ECT" 8
78666 +Boolean or "2". If true, sets the IP header's ECN bits to ECN Capable
78667 +Transport. If "true", "1" or "yes", sets the ECN bits to 1; but if "2", sets
78668 +them to 2. Default is false.
78669 +.IP "" 8
78670 +.IP "CE" 8
78671 +Boolean. If true, sets the IP header's ECN bits to 3 (Congestion Experienced).
78672 +Default is false.
78673 +.IP "" 8
78674 +.IP "TOS" 8
78675 +Byte. The IP header's TOS value. Default is 0. If you specify TOS, you may not
78676 +specify DSCP, ECT, or CE.
78677 +.IP "" 8
78678 +.IP "DF" 8
78679 +Boolean. If true, sets the IP header's Don't Fragment bit to 1. Default is
78680 +false.
78681 +.IP "" 8
78682 +.PP
78683 +The 
78684 +.M StripIPHeader "n" 
78685 +element can be used by the receiver to get rid
78686 +of the encapsulation header.
78687 +.PP
78688 +.SH "EXAMPLES"
78689 +Wraps packets in an IP header specifying IP protocol 4
78690 +(IP-in-IP), with source 18.26.4.24 and destination 140.247.60.147:
78691 +.PP
78692 +.nf
78693 +\&  IPEncap(4, 18.26.4.24, 140.247.60.147)
78694 +.fi
78695 +.PP
78696 +You could also say "\f(CWIPEncap(ipip, ...)\fR".
78697 +.PP
78698 +
78699 +
78700 +.SH "ELEMENT HANDLERS"
78701 +
78702 +
78703 +
78704 +.IP "\fBsrc\fR (read/write)" 5
78705 +Returns or sets the SRC parameter.
78706 +.IP "" 5
78707 +.IP "\fBdst\fR (read/write)" 5
78708 +Returns or sets the DST parameter.
78709 +.IP "" 5
78710 +.PP
78711 +
78712 +.SH "SEE ALSO"
78713 +.M UDPIPEncap n ,
78714 +.M StripIPHeader "n" 
78715 +
78716 diff -Nurb click-1.6.0/inst/share/man/mann/IPFilter.n click-1.6.0-27/inst/share/man/mann/IPFilter.n
78717 --- click-1.6.0/inst/share/man/mann/IPFilter.n  1969-12-31 19:00:00.000000000 -0500
78718 +++ click-1.6.0-27/inst/share/man/mann/IPFilter.n       2009-02-11 14:08:51.000000000 -0500
78719 @@ -0,0 +1,145 @@
78720 +.\" -*- mode: nroff -*-
78721 +.\" Generated by 'click-elem2man' from '../elements/ip/ipfilter.hh'
78722 +.de M
78723 +.IR "\\$1" "(\\$2)\\$3"
78724 +..
78725 +.de RM
78726 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78727 +..
78728 +.TH "IPFILTER" n "11/Feb/2009" "Click"
78729 +.SH "NAME"
78730 +IPFilter \- Click element;
78731 +filters IP packets by contents
78732 +.SH "SYNOPSIS"
78733 +\fBIPFilter\fR(ACTION_1 PATTERN_1, ..., ACTION_N PATTERN_N)
78734 +
78735 +\fBPorts\fR: 1 input, any number of outputs
78736 +.br
78737 +\fBProcessing\fR: push
78738 +.br
78739 +\fBPackage\fR: ip (core)
78740 +.br
78741 +.SH "DESCRIPTION"
78742 +Filters IP packets. \fBIPFilter\fR can have an arbitrary number of filters, which
78743 +are ACTION-PATTERN pairs. The ACTIONs describe what to do with packets,
78744 +while the PATTERNs are 
78745 +.M tcpdump 1 -like
78746 +patterns; see 
78747 +.M IPClassifier n 
78748 +for a
78749 +description of their syntax. Packets are tested against the filters in
78750 +order, and are processed according to the ACTION in the first filter that
78751 +matched.
78752 +.PP
78753 +Each ACTION is either a port number, which specifies that the packet should be
78754 +sent out on that port; '\f(CWallow\fR', which is equivalent to '\f(CW0\fR'; or '\f(CWdrop\fR'
78755 +, which means drop the packet. You can also say '\f(CWdeny\fR' instead of
78756 +\&'\f(CWdrop\fR', but see the compatibility note below.
78757 +.PP
78758 +The \fBIPFilter\fR element has an arbitrary number of outputs. Input packets must
78759 +have their IP header annotation set; 
78760 +.M CheckIPHeader "n" 
78761 +and 
78762 +.M MarkIPHeader "n" 
78763 +do
78764 +this.
78765 +.PP
78766 +
78767 +.SH "NOTES"
78768 +Every \fBIPFilter\fR element has an equivalent corresponding 
78769 +.M IPClassifier "n" 
78770 +element
78771 +and vice versa. Use the element whose syntax is more convenient for your
78772 +needs.
78773 +.PP
78774 +\fBCompatibility note\fR: '\f(CWdeny\fR' formerly meant '\f(CW1\fR' if the element had at
78775 +least two outputs and '\f(CWdrop\fR' if it did not. We decided this was
78776 +error-prone; now it just means '\f(CWdrop\fR'. For now, however, '\f(CWdeny\fR' will
78777 +print a warning if used on an element with more than one output.
78778 +.PP
78779 +
78780 +.SH "EXAMPLES"
78781 +This large \fBIPFilter\fR implements the incoming packet filtering rules for the
78782 +"Interior router" described on pp691-692 of \fIBuilding Internet Firewalls,
78783 +Second Edition\fR (Elizabeth D. Zwicky, Simon Cooper, and D. Brent Chapman,
78784 +O'Reilly and Associates, 2000). The captialized words (\f(CWINTERNALNET\fR,
78785 +\f(CWBASTION\fR, etc.) are addresses that have been registered with
78786 +.M AddressInfo n .
78787 +The rule FTP-7 has a port range that cannot be implemented
78788 +with \fBIPFilter\fR.
78789 +.PP
78790 +.nf
78791 +\&  IPFilter(// Spoof-1:
78792 +\&           deny src INTERNALNET,
78793 +\&           // HTTP-2:
78794 +\&           allow src BASTION && dst INTERNALNET
78795 +\&              && tcp && src port www && dst port > 1023 && ack,
78796 +\&           // Telnet-2:
78797 +\&           allow dst INTERNALNET
78798 +\&              && tcp && src port 23 && dst port > 1023 && ack,
78799 +\&           // SSH-2:
78800 +\&           allow dst INTERNALNET && tcp && src port 22 && ack,
78801 +\&           // SSH-3:
78802 +\&           allow dst INTERNALNET && tcp && dst port 22,
78803 +\&           // FTP-2:
78804 +\&           allow dst INTERNALNET
78805 +\&              && tcp && src port 21 && dst port > 1023 && ack,
78806 +\&           // FTP-4:
78807 +\&           allow dst INTERNALNET
78808 +\&              && tcp && src port > 1023 && dst port > 1023 && ack,
78809 +\&           // FTP-6:
78810 +\&           allow src BASTION && dst INTERNALNET
78811 +\&              && tcp && src port 21 && dst port > 1023 && ack,
78812 +\&           // FTP-7 omitted
78813 +\&           // FTP-8:
78814 +\&           allow src BASTION && dst INTERNALNET
78815 +\&              && tcp && src port > 1023 && dst port > 1023,
78816 +\&           // SMTP-2:
78817 +\&           allow src BASTION && dst INTERNAL_SMTP
78818 +\&              && tcp && src port 25 && dst port > 1023 && ack,
78819 +\&           // SMTP-3:
78820 +\&           allow src BASTION && dst INTERNAL_SMTP
78821 +\&              && tcp && src port > 1023 && dst port 25,
78822 +\&           // NNTP-2:
78823 +\&           allow src NNTP_FEED && dst INTERNAL_NNTP
78824 +\&              && tcp && src port 119 && dst port > 1023 && ack,
78825 +\&           // NNTP-3:
78826 +\&           allow src NNTP_FEED && dst INTERNAL_NNTP
78827 +\&              && tcp && src port > 1023 && dst port 119,
78828 +\&           // DNS-2:
78829 +\&           allow src BASTION && dst INTERNAL_DNS
78830 +\&              && udp && src port 53 && dst port 53,
78831 +\&           // DNS-4:
78832 +\&           allow src BASTION && dst INTERNAL_DNS
78833 +\&              && tcp && src port 53 && dst port > 1023 && ack,
78834 +\&           // DNS-5:
78835 +\&           allow src BASTION && dst INTERNAL_DNS
78836 +\&              && tcp && src port > 1023 && dst port 53,
78837 +\&           // Default-2:
78838 +\&           deny all);
78839 +.fi
78840 +.PP
78841 +
78842 +
78843 +
78844 +.SH "ELEMENT HANDLERS"
78845 +
78846 +
78847 +
78848 +.IP "\fBprogram\fR (read-only)" 5
78849 +Returns a human-readable definition of the program the \fBIPFilter\fR element
78850 +is using to classify packets. At each step in the program, four bytes
78851 +of packet data are ANDed with a mask and compared against four bytes of
78852 +classifier pattern.
78853 +.IP "" 5
78854 +.PP
78855 +
78856 +.SH "SEE ALSO"
78857 +.M IPClassifier n ,
78858 +.M Classifier n ,
78859 +.M CheckIPHeader n ,
78860 +.M MarkIPHeader n ,
78861 +.M CheckIPHeader2 n ,
78862 +.M AddressInfo n ,
78863 +tcpdump(1)
78864 +
78865 diff -Nurb click-1.6.0/inst/share/man/mann/IPFragmenter.n click-1.6.0-27/inst/share/man/mann/IPFragmenter.n
78866 --- click-1.6.0/inst/share/man/mann/IPFragmenter.n      1969-12-31 19:00:00.000000000 -0500
78867 +++ click-1.6.0-27/inst/share/man/mann/IPFragmenter.n   2009-02-11 14:08:51.000000000 -0500
78868 @@ -0,0 +1,69 @@
78869 +.\" -*- mode: nroff -*-
78870 +.\" Generated by 'click-elem2man' from '../elements/ip/ipfragmenter.hh'
78871 +.de M
78872 +.IR "\\$1" "(\\$2)\\$3"
78873 +..
78874 +.de RM
78875 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78876 +..
78877 +.TH "IPFRAGMENTER" n "11/Feb/2009" "Click"
78878 +.SH "NAME"
78879 +IPFragmenter \- Click element;
78880 +fragments large IP packets
78881 +.SH "SYNOPSIS"
78882 +\fBIPFragmenter\fR(MTU, [\fIkeywords\fR HONOR_DF, VERBOSE])
78883 +
78884 +\fBPorts\fR: 1 input, 1-2 outputs
78885 +.br
78886 +\fBProcessing\fR: push
78887 +.br
78888 +\fBPackage\fR: ip (core)
78889 +.br
78890 +.SH "DESCRIPTION"
78891 +Expects IP packets as input. If the IP packet size is <= MTU, just emits
78892 +the packet on output 0. If the size is greater than MTU and the
78893 +don't-fragment bit (DF) isn't set, \fBIPFragmenter\fR splits the packet into
78894 +fragments emitted on output 0. If DF is set and the packet size is greater
78895 +than MTU, sends the packet to output 1 (but see HONOR_DF below). Ordinarily
78896 +output 1 is connected to an 
78897 +.M ICMPError "n" 
78898 +element with type 3 (UNREACH) and
78899 +code 4 (NEEDFRAG).
78900 +.PP
78901 +Only the mac_broadcast annotation is copied into the fragments.
78902 +.PP
78903 +Sends the fragments in order, starting with the first.
78904 +.PP
78905 +It is best to Strip() the MAC header from a packet before sending it to
78906 +\fBIPFragmenter\fR, since any MAC header is not copied to second and subsequent
78907 +fragments.
78908 +.PP
78909 +Keyword arguments are:
78910 +.PP
78911 +
78912 +
78913 +.IP "HONOR_DF" 8
78914 +Boolean. If HONOR_DF is false, \fBIPFragmenter\fR will ignore the don't-fragment
78915 +(DF) bit and fragment every packet larger than MTU. Default is true.
78916 +.IP "" 8
78917 +.IP "VERBOSE" 8
78918 +Boolean.  If true, \fBIPFragmenter\fR will print a message every time it sees a
78919 +packet with DF; otherwise, it will print a message only the first 5 times.
78920 +Default is false.
78921 +.IP "" 8
78922 +.PP
78923 +
78924 +.SH "EXAMPLES"
78925 +
78926 +.nf
78927 +\&  ... -> fr::IPFragmenter(1024) -> Queue(20) -> ...
78928 +\&  fr[1] -> ICMPError(18.26.4.24, 3, 4) -> ...
78929 +.fi
78930 +.PP
78931 +
78932 +
78933 +
78934 +.SH "SEE ALSO"
78935 +.M ICMPError n ,
78936 +.M CheckLength "n" 
78937 +
78938 diff -Nurb click-1.6.0/inst/share/man/mann/IPGWOptions.n click-1.6.0-27/inst/share/man/mann/IPGWOptions.n
78939 --- click-1.6.0/inst/share/man/mann/IPGWOptions.n       1969-12-31 19:00:00.000000000 -0500
78940 +++ click-1.6.0-27/inst/share/man/mann/IPGWOptions.n    2009-02-11 14:08:52.000000000 -0500
78941 @@ -0,0 +1,50 @@
78942 +.\" -*- mode: nroff -*-
78943 +.\" Generated by 'click-elem2man' from '../elements/ip/ipgwoptions.hh'
78944 +.de M
78945 +.IR "\\$1" "(\\$2)\\$3"
78946 +..
78947 +.de RM
78948 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
78949 +..
78950 +.TH "IPGWOPTIONS" n "11/Feb/2009" "Click"
78951 +.SH "NAME"
78952 +IPGWOptions \- Click element;
78953 +processes router IP options
78954 +.SH "SYNOPSIS"
78955 +\fBIPGWOptions\fR(MYADDR [, OTHERADDRS])
78956 +
78957 +\fBPorts\fR: 1 input, 1-2 outputs
78958 +.br
78959 +\fBProcessing\fR: agnostic, but output 1 is push
78960 +.br
78961 +\fBPackage\fR: ip (core)
78962 +.br
78963 +.SH "DESCRIPTION"
78964 +Process the IP options that should be processed by every router,
78965 +not just when ip_dst refers to the current router. At the moment
78966 +that amounts to Record Route and Timestamp (in particular,
78967 +not the source route options). MYADDR is the router's
78968 +IP address on the interface downstream from the element.
78969 +.PP
78970 +Probably needs to be placed on the output path, since MYADDR
78971 +must be the outgoing interface's IP address (rfc1812 4.2.2.2).
78972 +.PP
78973 +Recomputes the IP header checksum if it modifies the packet.
78974 +.PP
78975 +The optional OTHERADDRS argument should be a space-separated list of IP
78976 +addresses containing the router's other interface addresses. It is used to
78977 +implement the Timestamp option.
78978 +.PP
78979 +The second output may be connected to an 
78980 +.M ICMPError "n" 
78981 +to produce
78982 +a parameter problem (type=12,code=0) message. \fBIPGWOptions\fR sets
78983 +the param_off packet annotation so that 
78984 +.M ICMPError "n" 
78985 +can set
78986 +the Parameter Problem pointer to point to the erroneous byte.
78987 +.PP
78988 +
78989 +.SH "SEE ALSO"
78990 +.M ICMPError "n" 
78991 +
78992 diff -Nurb click-1.6.0/inst/share/man/mann/IPInputCombo.n click-1.6.0-27/inst/share/man/mann/IPInputCombo.n
78993 --- click-1.6.0/inst/share/man/mann/IPInputCombo.n      1969-12-31 19:00:00.000000000 -0500
78994 +++ click-1.6.0-27/inst/share/man/mann/IPInputCombo.n   2009-02-11 14:08:52.000000000 -0500
78995 @@ -0,0 +1,48 @@
78996 +.\" -*- mode: nroff -*-
78997 +.\" Generated by 'click-elem2man' from '../elements/ip/ipinputcombo.hh'
78998 +.de M
78999 +.IR "\\$1" "(\\$2)\\$3"
79000 +..
79001 +.de RM
79002 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79003 +..
79004 +.TH "IPINPUTCOMBO" n "11/Feb/2009" "Click"
79005 +.SH "NAME"
79006 +IPInputCombo \- Click element;
79007 +input combo for IP routing
79008 +.SH "SYNOPSIS"
79009 +\fBIPInputCombo\fR(COLOR [, BADSRC, \fIkeywords\fR INTERFACES, BADSRC, GOODDST])
79010 +
79011 +\fBPorts\fR: 1 input, 1 output
79012 +.br
79013 +\fBProcessing\fR: agnostic
79014 +.br
79015 +\fBPackage\fR: ip (core)
79016 +.br
79017 +.SH "DESCRIPTION"
79018 +A single element encapsulating common tasks on an IP router's input path.
79019 +Effectively equivalent to
79020 +.PP
79021 +.nf
79022 +\&  elementclass IPInputCombo { $COLOR, $BADADDRS |
79023 +\&    input[0] -> Paint($COLOR)
79024 +\&          -> Strip(14)
79025 +\&          -> CheckIPHeader($BADADDRS)
79026 +\&          -> GetIPAddress(16)
79027 +\&          -> [0]output;
79028 +\&  }
79029 +.fi
79030 +.PP
79031 +The INTERFACES, BADSRC, and GOODDST keyword arguments correspond to
79032 +.M CheckIPHeader "n" 's
79033 +versions.
79034 +.PP
79035 +
79036 +
79037 +.SH "SEE ALSO"
79038 +.M Paint n ,
79039 +.M CheckIPHeader n ,
79040 +.M Strip n ,
79041 +.M GetIPAddress n ,
79042 +.M IPOutputCombo "n" 
79043 +
79044 diff -Nurb click-1.6.0/inst/share/man/mann/IPMirror.n click-1.6.0-27/inst/share/man/mann/IPMirror.n
79045 --- click-1.6.0/inst/share/man/mann/IPMirror.n  1969-12-31 19:00:00.000000000 -0500
79046 +++ click-1.6.0-27/inst/share/man/mann/IPMirror.n       2009-02-11 14:08:51.000000000 -0500
79047 @@ -0,0 +1,31 @@
79048 +.\" -*- mode: nroff -*-
79049 +.\" Generated by 'click-elem2man' from '../elements/ip/ipmirror.hh'
79050 +.de M
79051 +.IR "\\$1" "(\\$2)\\$3"
79052 +..
79053 +.de RM
79054 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79055 +..
79056 +.TH "IPMIRROR" n "11/Feb/2009" "Click"
79057 +.SH "NAME"
79058 +IPMirror \- Click element;
79059 +swaps IP source and destination
79060 +.SH "SYNOPSIS"
79061 +\fBIPMirror\fR
79062 +
79063 +\fBPorts\fR: 1 input, 1 output
79064 +.br
79065 +\fBProcessing\fR: agnostic
79066 +.br
79067 +\fBPackage\fR: ip (core)
79068 +.br
79069 +.SH "DESCRIPTION"
79070 +Incoming packets must have their IP header annotations set. Swaps packets'
79071 +source and destination IP addresses. Packets containing TCP or UDP
79072 +headers---that is, first fragments of packets with protocol 6 or 17---also
79073 +have their source and destination ports swapped. TCP packets also have their
79074 +seq and ack numbers swapped.
79075 +.PP
79076 +The IP and TCP or UDP checksums are not changed. They don't need to be; these
79077 +swap operations do not affect checksums.
79078 +
79079 diff -Nurb click-1.6.0/inst/share/man/mann/IPNameInfo.n click-1.6.0-27/inst/share/man/mann/IPNameInfo.n
79080 --- click-1.6.0/inst/share/man/mann/IPNameInfo.n        1969-12-31 19:00:00.000000000 -0500
79081 +++ click-1.6.0-27/inst/share/man/mann/IPNameInfo.n     2009-02-11 14:08:51.000000000 -0500
79082 @@ -0,0 +1,23 @@
79083 +.\" -*- mode: nroff -*-
79084 +.\" Generated by 'click-elem2man' from '../elements/ip/ipnameinfo.hh'
79085 +.de M
79086 +.IR "\\$1" "(\\$2)\\$3"
79087 +..
79088 +.de RM
79089 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79090 +..
79091 +.TH "IPNAMEINFO" n "11/Feb/2009" "Click"
79092 +.SH "NAME"
79093 +IPNameInfo \- Click element;
79094 +stores name information about IP packets
79095 +.SH "SYNOPSIS"
79096 +\fBIPNameInfo\fR()
79097 +
79098 +\fBPorts\fR: none
79099 +.br
79100 +\fBPackage\fR: ip (core)
79101 +.br
79102 +.SH "DESCRIPTION"
79103 +Contains IP-related name mappings, such as the names for common IP protocols.
79104 +This element should not be used in configurations.
79105 +
79106 diff -Nurb click-1.6.0/inst/share/man/mann/IPOutputCombo.n click-1.6.0-27/inst/share/man/mann/IPOutputCombo.n
79107 --- click-1.6.0/inst/share/man/mann/IPOutputCombo.n     1969-12-31 19:00:00.000000000 -0500
79108 +++ click-1.6.0-27/inst/share/man/mann/IPOutputCombo.n  2009-02-11 14:08:51.000000000 -0500
79109 @@ -0,0 +1,69 @@
79110 +.\" -*- mode: nroff -*-
79111 +.\" Generated by 'click-elem2man' from '../elements/ip/ipoutputcombo.hh'
79112 +.de M
79113 +.IR "\\$1" "(\\$2)\\$3"
79114 +..
79115 +.de RM
79116 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79117 +..
79118 +.TH "IPOUTPUTCOMBO" n "11/Feb/2009" "Click"
79119 +.SH "NAME"
79120 +IPOutputCombo \- Click element;
79121 +output combo for IP routing
79122 +.SH "SYNOPSIS"
79123 +\fBIPOutputCombo\fR(COLOR, IPADDR, MTU)
79124 +
79125 +\fBPorts\fR: 1 input, 5 outputs
79126 +.br
79127 +\fBProcessing\fR: push
79128 +.br
79129 +\fBPackage\fR: ip (core)
79130 +.br
79131 +.SH "DESCRIPTION"
79132 +A single element encapsulating common tasks on an IP router's output path.
79133 +Effectively equivalent to
79134 +.PP
79135 +.nf
79136 +\&  elementclass IPOutputCombo { $COLOR, $IPADDR, $MTU |
79137 +\&    input[0] -> DropBroadcasts
79138 +\&          -> p::PaintTee($COLOR)
79139 +\&          -> g::IPGWOptions($IPADDR)
79140 +\&          -> FixIPSrc($IPADDR)
79141 +\&          -> d::DecIPTTL
79142 +\&          -> l::CheckLength($MTU)
79143 +\&          -> [0]output;
79144 +\&    p[1] -> [1]output;
79145 +\&    g[1] -> [2]output;
79146 +\&    d[1] -> [3]output;
79147 +\&    l[1] -> [4]output;
79148 +\&  }
79149 +.fi
79150 +.PP
79151 +Output 0 is the path for normal packets; outputs 1 through 3 are error
79152 +outputs for 
79153 +.M PaintTee "n" ,
79154 +.M IPGWOptions "n" ,
79155 +and 
79156 +.M DecIPTTL "n" ,
79157 +respectively; and
79158 +output 4 is for packets longer than MTU.
79159 +.PP
79160 +
79161 +
79162 +.SH "NOTES"
79163 +\fBIPOutputCombo\fR does no fragmentation. You'll still need an 
79164 +.M IPFragmenter "n" 
79165 +for
79166 +that.
79167 +.PP
79168 +
79169 +.SH "SEE ALSO"
79170 +.M DropBroadcasts n ,
79171 +.M PaintTee n ,
79172 +.M CheckLength n ,
79173 +.M IPGWOptions n ,
79174 +.M FixIPSrc n ,
79175 +.M DecIPTTL n ,
79176 +.M IPFragmenter n ,
79177 +.M IPInputCombo "n" 
79178 +
79179 diff -Nurb click-1.6.0/inst/share/man/mann/IPPrint.n click-1.6.0-27/inst/share/man/mann/IPPrint.n
79180 --- click-1.6.0/inst/share/man/mann/IPPrint.n   1969-12-31 19:00:00.000000000 -0500
79181 +++ click-1.6.0-27/inst/share/man/mann/IPPrint.n        2009-02-11 14:08:51.000000000 -0500
79182 @@ -0,0 +1,91 @@
79183 +.\" -*- mode: nroff -*-
79184 +.\" Generated by 'click-elem2man' from '../elements/ip/ipprint.hh'
79185 +.de M
79186 +.IR "\\$1" "(\\$2)\\$3"
79187 +..
79188 +.de RM
79189 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79190 +..
79191 +.TH "IPPRINT" n "11/Feb/2009" "Click"
79192 +.SH "NAME"
79193 +IPPrint \- Click element;
79194 +pretty-prints IP packets
79195 +.SH "SYNOPSIS"
79196 +\fBIPPrint\fR([LABEL, \fIKEYWORDS\fR])
79197 +
79198 +\fBPorts\fR: 1 input, 1 output
79199 +.br
79200 +\fBProcessing\fR: agnostic
79201 +.br
79202 +\fBPackage\fR: ip (core)
79203 +.br
79204 +.SH "DESCRIPTION"
79205 +Expects IP packets as input.  Should be placed downstream of a 
79206 +.M CheckIPHeader "n" 
79207 +or equivalent element.
79208 +.PP
79209 +Prints out IP packets in a human-readable tcpdump-like format, preceded by
79210 +the LABEL text.
79211 +.PP
79212 +Keyword arguments are:
79213 +.PP
79214 +
79215 +
79216 +.IP "CONTENTS" 8
79217 +Determines whether the packet data is printed. It may be `NONE' (do not print
79218 +packet data), `HEX' (print packet data in hexadecimal), or `ASCII' (print
79219 +packet data in plaintext). Default is `NONE'.
79220 +.IP "" 8
79221 +.IP "PAYLOAD" 8
79222 +Like CONTENTS, but prints only the packet payload, rather than the entire
79223 +packet. Specify at most one of CONTENTS and PAYLOAD.
79224 +.IP "" 8
79225 +.IP "NBYTES" 8
79226 +If CONTENTS is `hex' or `ascii', then NBYTES determines the number of bytes to
79227 +dump. Default is 1500.
79228 +.IP "" 8
79229 +.IP "ID" 8
79230 +Boolean. Determines whether to print each packet's IP ID field. Default is
79231 +false.
79232 +.IP "" 8
79233 +.IP "TTL" 8
79234 +Boolean. Determines whether to print each packet's IP TOS field. Default is
79235 +false.
79236 +.IP "" 8
79237 +.IP "TOS" 8
79238 +Boolean. Determines whether to print each packet's IP TOS field. Default is
79239 +false.
79240 +.IP "" 8
79241 +.IP "LENGTH" 8
79242 +Boolean. Determines whether to print each packet's IP length field. Default is
79243 +false.
79244 +.IP "" 8
79245 +.IP "TIMESTAMP" 8
79246 +Boolean. Determines whether to print each packet's timestamp in seconds since
79247 +1970. Default is true.
79248 +.IP "" 8
79249 +.IP "AGGREGATE" 8
79250 +Boolean. Determines whether to print each packet's aggregate annotation.
79251 +Default is false.
79252 +.IP "" 8
79253 +.IP "PAINT" 8
79254 +Boolean. Determines whether to print each packet's paint annotation. Default is false.
79255 +.IP "" 8
79256 +.IP "SWAP" 8
79257 +Boolean.  Determines whether to swap bytes before printing the values
79258 +of ICMP sequence and ID numbers.  Default is false.  The RFC does not
79259 +require these two-byte values to be sent in any particular byte order.
79260 +For example, OpenBSD/i386 writes ping (ICMP echo) sequence numbers in
79261 +network byte order, while Linux/i386 writes them in host byte order
79262 +(often little-endian).
79263 +.IP "" 8
79264 +.IP "OUTFILE" 8
79265 +String. Only available at user level. Print information to the file specified
79266 +by OUTFILE instead of standard error.
79267 +.IP "" 8
79268 +.PP
79269 +
79270 +.SH "SEE ALSO"
79271 +.M Print n ,
79272 +.M CheckIPHeader "n" 
79273 +
79274 diff -Nurb click-1.6.0/inst/share/man/mann/IPRateMonitor.n click-1.6.0-27/inst/share/man/mann/IPRateMonitor.n
79275 --- click-1.6.0/inst/share/man/mann/IPRateMonitor.n     1969-12-31 19:00:00.000000000 -0500
79276 +++ click-1.6.0-27/inst/share/man/mann/IPRateMonitor.n  2009-02-11 14:08:52.000000000 -0500
79277 @@ -0,0 +1,88 @@
79278 +.\" -*- mode: nroff -*-
79279 +.\" Generated by 'click-elem2man' from '../elements/ip/ipratemon.hh'
79280 +.de M
79281 +.IR "\\$1" "(\\$2)\\$3"
79282 +..
79283 +.de RM
79284 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79285 +..
79286 +.TH "IPRATEMONITOR" n "11/Feb/2009" "Click"
79287 +.SH "NAME"
79288 +IPRateMonitor \- Click element;
79289 +measures coming and going IP traffic rates
79290 +.SH "SYNOPSIS"
79291 +\fBIPRateMonitor\fR(TYPE, RATIO, THRESH [, MEMORY, ANNO])
79292 +
79293 +\fBPorts\fR: 1-2 inputs, 1-2 outputs
79294 +.br
79295 +\fBProcessing\fR: agnostic
79296 +.br
79297 +\fBDrivers\fR: userlevel
79298 +.br
79299 +\fBPackage\fR: ip (core)
79300 +.br
79301 +.SH "DESCRIPTION"
79302 +Monitors network traffic rates. Can monitor either packet or byte rate (per
79303 +second) to and from an address. When forward or reverse rate for a
79304 +particular address exceeds THRESH, rates will then be kept for host or
79305 +subnet addresses within that address. May update each packet's
79306 +dst_rate_anno and src_rate_anno with the rates for dst or src IP address.
79307 +.PP
79308 +Packets coming in one input 0 are inspected on src address. Packets coming
79309 +in on input 1 are insepected on dst address. This enables \fBIPRateMonitor\fR to
79310 +annotate packets with both the forward rate and reverse rate.
79311 +.PP
79312 +TYPE: PACKETS or BYTES. Count number of packets or bytes.
79313 +.PP
79314 +RATIO: chance that EWMA gets updated before packet is annotated with EWMA
79315 +value.
79316 +.PP
79317 +THRESH: \fBIPRateMonitor\fR further splits a subnet if rate is over THRESH number
79318 +packets or bytes per second. Always specify value as if RATIO were 1.
79319 +.PP
79320 +MEMORY: How much memory can \fBIPRateMonitor\fR use in kilobytes? Minimum of 100
79321 +is enforced. 0 is unlimited memory.
79322 +.PP
79323 +ANNO: if on (by default, it is), annotate packets with rates.
79324 +.PP
79325 +
79326 +.SH "ELEMENT HANDLERS"
79327 +
79328 +
79329 +
79330 +.IP "\fBlook\fR ((read))" 5
79331 +Returns the rate of counted to and from a cluster of IP addresses. The first
79332 +printed line is the number of 'jiffies' that have past since the last reset.
79333 +There are 100 jiffies in one second.
79334 +.IP "" 5
79335 +.IP "\fBthresh\fR ((read))" 5
79336 +Returns THRESH.
79337 +.IP "" 5
79338 +.IP "\fBreset\fR ((write))" 5
79339 +When written, resets all rates.
79340 +.IP "" 5
79341 +.IP "\fBanno_level\fR ((write))" 5
79342 +Expects "IPAddress level when". When written, makes \fBIPRateMonitor\fR stop
79343 +expanding at "level" (0-3) for the IPAddress, until "when" (seconds).  For
79344 +example, if "18.26.4.0 2 100" is specified, \fBIPRateMonitor\fR will stop
79345 +expanding when 18.26.4 is reached for the next 100 seconds. After 100
79346 +seconds, any level below 18.26.4 may be reached again.
79347 +.IP "" 5
79348 +.PP
79349 +
79350 +.SH "EXAMPLES"
79351 +
79352 +.nf
79353 +\&  IPRateMonitor(PACKETS, 0.5, 256, 600);
79354 +.fi
79355 +.PP
79356 +Monitors packet rates. The memory usage is limited to 600K. When rate for a
79357 +network address (e.g. 18.26.*.*) exceeds 256 packets per second, start
79358 +monitor subnet or host addresses (e.g. 18.26.4.*).
79359 +.PP
79360 +
79361 +
79362 +.SH "SEE ALSO"
79363 +.M IPFlexMonitor n ,
79364 +.M CompareBlock "n" 
79365 +
79366 diff -Nurb click-1.6.0/inst/share/man/mann/IPReassembler.n click-1.6.0-27/inst/share/man/mann/IPReassembler.n
79367 --- click-1.6.0/inst/share/man/mann/IPReassembler.n     1969-12-31 19:00:00.000000000 -0500
79368 +++ click-1.6.0-27/inst/share/man/mann/IPReassembler.n  2009-02-11 14:08:52.000000000 -0500
79369 @@ -0,0 +1,55 @@
79370 +.\" -*- mode: nroff -*-
79371 +.\" Generated by 'click-elem2man' from '../elements/ip/ipreassembler.hh'
79372 +.de M
79373 +.IR "\\$1" "(\\$2)\\$3"
79374 +..
79375 +.de RM
79376 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79377 +..
79378 +.TH "IPREASSEMBLER" n "11/Feb/2009" "Click"
79379 +.SH "NAME"
79380 +IPReassembler \- Click element;
79381 +Reassembles fragmented IP packets
79382 +.SH "SYNOPSIS"
79383 +\fBIPReassembler\fR([\fIKEYWORDS\fR])
79384 +
79385 +\fBPorts\fR: 1 input, 1-2 outputs
79386 +.br
79387 +\fBProcessing\fR: agnostic, but output 1 is push
79388 +.br
79389 +\fBPackage\fR: ip (core)
79390 +.br
79391 +.SH "DESCRIPTION"
79392 +Expects IP packets as input to port 0. If input packets are fragments,
79393 +\fBIPReassembler\fR holds them until it has enough fragments to recreate a complete
79394 +packet. When a complete packet is constructed, it is emitted onto output 0. If
79395 +a set of fragments making a single packet is incomplete and dormant for 30
79396 +seconds, the fragments are generally dropped. If \fBIPReassembler\fR has two
79397 +outputs, however, a single packet containing all the received fragments at
79398 +their proper offsets is pushed onto output 1.
79399 +.PP
79400 +\fBIPReassembler\fR's memory usage is bounded. When memory consumption rises above
79401 +HIMEM bytes, \fBIPReassembler\fR throws away old fragments until memory consumption
79402 +drops below 3/4*HIMEM bytes. Default HIMEM is 256K.
79403 +.PP
79404 +Output packets have no MAC headers, and input MAC headers are ignored.
79405 +.PP
79406 +Keyword arguments are:
79407 +.PP
79408 +
79409 +
79410 +.IP "HIMEM" 8
79411 +The upper bound for memory consumption, in bytes. Default is 256K.
79412 +.IP "" 8
79413 +.PP
79414 +
79415 +.SH "NOTES"
79416 +You may want to attach an \f(CWICMPError(ADDR, timeexceeded, reassembly)\fR to the
79417 +second output.
79418 +.PP
79419 +\fBIPReassembler\fR destroys its input packets' "next packet" annotations.
79420 +.PP
79421 +
79422 +.SH "SEE ALSO"
79423 +.M IPFragmenter "n" 
79424 +
79425 diff -Nurb click-1.6.0/inst/share/man/mann/IPRewriter.n click-1.6.0-27/inst/share/man/mann/IPRewriter.n
79426 --- click-1.6.0/inst/share/man/mann/IPRewriter.n        1969-12-31 19:00:00.000000000 -0500
79427 +++ click-1.6.0-27/inst/share/man/mann/IPRewriter.n     2009-02-11 14:08:51.000000000 -0500
79428 @@ -0,0 +1,183 @@
79429 +.\" -*- mode: nroff -*-
79430 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/iprewriter.hh'
79431 +.de M
79432 +.IR "\\$1" "(\\$2)\\$3"
79433 +..
79434 +.de RM
79435 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79436 +..
79437 +.TH "IPREWRITER" n "11/Feb/2009" "Click"
79438 +.SH "NAME"
79439 +IPRewriter \- Click element;
79440 +rewrites TCP/UDP packets' addresses and ports
79441 +.SH "SYNOPSIS"
79442 +\fBIPRewriter\fR(INPUTSPEC1, ..., INPUTSPECn [, \fIkeywords\fR])
79443 +
79444 +\fBPorts\fR: 1 or more inputs, 1-256 outputs
79445 +.br
79446 +\fBProcessing\fR: push
79447 +.br
79448 +\fBPackage\fR: tcpudp (core)
79449 +.br
79450 +.SH "DESCRIPTION"
79451 +Rewrites the source address, source port, destination address, and/or
79452 +destination port on TCP and UDP packets, along with their checksums.
79453 +\fBIPRewriter\fR implements the functionality of a network address/port translator
79454 +(NAPT).  See also 
79455 +.M IPAddrRewriter "n" 
79456 +and 
79457 +.M IPAddrPairRewriter "n" ,
79458 +which
79459 +implement Basic NAT, and 
79460 +.M TCPRewriter "n" ,
79461 +which implements NAPT plus sequence
79462 +number changes for TCP packets.
79463 +.PP
79464 +\fBIPRewriter\fR maintains a \fImapping table\fR that records how packets are
79465 +rewritten.  The mapping table is indexed by \fIflow identifier\fR, the quintuple
79466 +of source address, source port, destination address, destination port, and IP
79467 +protocol (TCP or UDP).  Each mapping contains a new flow identifier and an
79468 +output port.  Input packets with the indexed flow identifier are rewritten to
79469 +use the new flow identifier, then emitted on the output port.  A mapping is
79470 +written as follows:
79471 +.PP
79472 +.nf
79473 +\&    (SA, SP, DA, DP, PROTO) => (SA', SP', DA', DP') [OUTPUT]
79474 +.fi
79475 +.PP
79476 +When \fBIPRewriter\fR receives a packet, it first looks up that packet in the
79477 +mapping table by flow identifier.  If the table contains a mapping for the
79478 +input packet, then the packet is rewritten according to the mapping and
79479 +emitted on the specified output port.  If there was no mapping, the packet is
79480 +handled by the INPUTSPEC corresponding to the input port on which the packet
79481 +arrived.  (There are as many input ports as INPUTSPECs.)  Most INPUTSPECs
79482 +install new mappings, so that future packets from the same TCP or UDP flow are
79483 +handled by the mapping table rather than some INPUTSPEC.  The six forms of
79484 +INPUTSPEC handle input packets as follows:
79485 +.PP
79486 +
79487 +
79488 +
79489 +.IP "\&'drop' or 'discard'" 5
79490 +Discards input packets.
79491 +.IP "" 5
79492 +.IP "\&'pass OUTPUT'" 5
79493 +Sends input packets to output port OUTPUT.  No mappings are installed.
79494 +.IP "" 5
79495 +.IP "\&'keep FOUTPUT ROUTPUT'" 5
79496 +Installs mappings that preserve the input packet's flow ID.  Specifically,
79497 +given an input packet with flow ID (SA, SP, DA, DP, PROTO), two mappings are
79498 +installed:
79499 +.IP "" 5
79500 +.nf
79501 +\&    (SA, SP, DA, DP, PROTO) => (SA, SP, DA, DP) [FOUTPUT]
79502 +\&    (DA, DP, SA, SP, PROTO) => (DA, DP, SA, SP) [ROUTPUT]
79503 +.fi
79504 +.IP "" 5
79505 +Thus, the input packet is emitted on output port FOUTPUT unchanged, and
79506 +packets from the reply flow are emitted on output port ROUTPUT unchanged.
79507 +.IP "" 5
79508 +
79509 +.IP "\&'pattern SADDR SPORT DADDR DPORT FOUTPUT ROUTPUT'" 5
79510 +Creates a mapping according to the given pattern, 'SADDR SPORT DADDR DPORT'.
79511 +Any pattern field may be a dash '-', in which case the packet's corresponding
79512 +field is left unchanged.  For instance, the pattern '1.0.0.1 20 - -' will
79513 +rewrite input packets' source address and port, but leave its destination
79514 +address and port unchanged.  SPORT may be a port range 'L-H'; \fBIPRewriter\fR will
79515 +choose a source port in that range so that the resulting mappings don't
79516 +conflict with any existing mappings.  If no source port is available, the
79517 +packet is dropped.  Normally source ports are chosen randomly within the
79518 +range.  To allocate source ports sequentially (which can make testing easier),
79519 +append a pound sign to the range, as in '1024-65535#'.
79520 +.IP "" 5
79521 +Say a packet with flow ID (SA, SP, DA, DP, PROTO) is received, and the
79522 +corresponding new flow ID is (SA', SP', DA', DP').  Then two mappings are
79523 +installed:
79524 +.IP "" 5
79525 +.nf
79526 +\&    (SA, SP, DA, DP, PROTO) => (SA', SP', DA', DP') [FOUTPUT]
79527 +\&    (DA', DP', SA', SP', PROTO) => (DA, DP, SA, SP) [ROUTPUT]
79528 +.fi
79529 +.IP "" 5
79530 +Thus, the input packet is rewritten and sent to FOUTPUT, and packets from the
79531 +reply flow are rewritten to look like part of the original flow and sent to
79532 +ROUTPUT.
79533 +.IP "" 5
79534 +
79535 +.IP "\&'pattern PATNAME FOUTPUT ROUTPUT'" 5
79536 +Like 'pattern' above, but refers to named patterns defined by an
79537 +.M IPRewriterPatterns "n" 
79538 +element.
79539 +.IP "" 5
79540 +.IP "\&'ELEMENTNAME'" 5
79541 +Creates mappings according to instructions from the element ELEMENTNAME.  This
79542 +element must implement the IPMapper interface.  One example mapper is
79543 +.M RoundRobinIPMapper "n" .
79544 +.IP "" 5
79545 +.PP
79546 +\fBIPRewriter\fR has no mappings when first initialized.
79547 +.PP
79548 +Input packets must have their IP header annotations set.  Non-TCP and UDP
79549 +packets, and second and subsequent fragments, are dropped unless they arrive
79550 +on a 'pass' input port.  \fBIPRewriter\fR changes IP packet data and, optionally,
79551 +destination IP address annotations; see the DST_ANNO keyword argument below.
79552 +.PP
79553 +Keyword arguments determine how often stale mappings should be removed.
79554 +.PP
79555 +
79556 +.IP "TCP_TIMEOUT \fItime\fR" 5
79557 +Time out TCP connections every \fItime\fR seconds. Default is 24 hours.
79558 +.IP "" 5
79559 +.IP "TCP_DONE_TIMEOUT \fItime\fR" 5
79560 +Time out completed TCP connections every \fItime\fR seconds. Default is 30
79561 +seconds. FIN and RST flags mark TCP connections as complete.
79562 +.IP "" 5
79563 +.IP "UDP_TIMEOUT \fItime\fR" 5
79564 +Time out UDP connections every \fItime\fR seconds. Default is 1 minute.
79565 +.IP "" 5
79566 +.IP "REAP_TCP \fItime\fR" 5
79567 +Reap timed-out TCP connections every \fItime\fR seconds. If no packets
79568 +corresponding to a given mapping have been seen for TCP_TIMEOUT, remove the
79569 +mapping as stale. Default is 1 hour.
79570 +.IP "" 5
79571 +.IP "REAP_TCP_DONE \fItime\fR" 5
79572 +Reap timed-out completed TCP connections every \fItime\fR seconds. Default is 10
79573 +seconds.
79574 +.IP "" 5
79575 +.IP "REAP_UDP \fItime\fR" 5
79576 +Reap timed-out UDP connections every \fItime\fR seconds. Default is 10 seconds.
79577 +.IP "" 5
79578 +.IP "DST_ANNO" 5
79579 +Boolean. If true, then set the destination IP address annotation on passing
79580 +packets to the rewritten destination address. Default is true.
79581 +.IP "" 5
79582 +.PP
79583 +
79584 +.SH "ELEMENT HANDLERS"
79585 +
79586 +
79587 +
79588 +.IP "\fBtcp_mappings\fR (read-only)" 5
79589 +Returns a human-readable description of the \fBIPRewriter\fR's current set of
79590 +TCP mappings.
79591 +.IP "" 5
79592 +.IP "\fBudp_mappings\fR (read-only)" 5
79593 +Returns a human-readable description of the \fBIPRewriter\fR's current set of
79594 +UDP mappings.
79595 +.IP "" 5
79596 +.IP "\fBtcp_done_mappings\fR (read-only)" 5
79597 +Returns a human-readable description of the \fBIPRewriter\fR's current set of
79598 +mappings for completed TCP sessions.
79599 +.IP "" 5
79600 +.PP
79601 +
79602 +.SH "SEE ALSO"
79603 +.M TCPRewriter n ,
79604 +.M IPAddrRewriter n ,
79605 +.M IPAddrPairRewriter n ,
79606 +.M IPRewriterPatterns n ,
79607 +.M RoundRobinIPMapper n ,
79608 +.M FTPPortMapper n ,
79609 +.M ICMPRewriter n ,
79610 +.M ICMPPingRewriter "n" 
79611 +
79612 diff -Nurb click-1.6.0/inst/share/man/mann/IPRewriterPatterns.n click-1.6.0-27/inst/share/man/mann/IPRewriterPatterns.n
79613 --- click-1.6.0/inst/share/man/mann/IPRewriterPatterns.n        1969-12-31 19:00:00.000000000 -0500
79614 +++ click-1.6.0-27/inst/share/man/mann/IPRewriterPatterns.n     2009-02-11 14:08:51.000000000 -0500
79615 @@ -0,0 +1,33 @@
79616 +.\" -*- mode: nroff -*-
79617 +.\" Generated by 'click-elem2man' from '../elements/ip/iprwpatterns.hh'
79618 +.de M
79619 +.IR "\\$1" "(\\$2)\\$3"
79620 +..
79621 +.de RM
79622 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79623 +..
79624 +.TH "IPREWRITERPATTERNS" n "11/Feb/2009" "Click"
79625 +.SH "NAME"
79626 +IPRewriterPatterns \- Click element;
79627 +specifies shared 
79628 +.M IPRewriter n 
79629 +patterns
79630 +.SH "SYNOPSIS"
79631 +\fBIPRewriterPatterns\fR(NAME PATTERN, ...)
79632 +
79633 +\fBPorts\fR: none
79634 +.br
79635 +\fBPackage\fR: ip (core)
79636 +.br
79637 +.SH "DESCRIPTION"
79638 +This element stores information about shared patterns that 
79639 +.M IPRewriter "n" 
79640 +and
79641 +related elements can use.  Each configuration argument is a name and a
79642 +pattern, 'NAME SADDR SPORT DADDR DPORT'.  The NAMEs for every argument in
79643 +every \fBIPRewriterPatterns\fR element in the configuration must be distinct.
79644 +.PP
79645 +
79646 +.SH "SEE ALSO"
79647 +.M IPRewriter "n" 
79648 +
79649 diff -Nurb click-1.6.0/inst/share/man/mann/IPRouteTable.n click-1.6.0-27/inst/share/man/mann/IPRouteTable.n
79650 --- click-1.6.0/inst/share/man/mann/IPRouteTable.n      1969-12-31 19:00:00.000000000 -0500
79651 +++ click-1.6.0-27/inst/share/man/mann/IPRouteTable.n   2009-02-11 14:08:51.000000000 -0500
79652 @@ -0,0 +1,177 @@
79653 +.\" -*- mode: nroff -*-
79654 +.\" Generated by 'click-elem2man' from '../elements/ip/iproutetable.hh'
79655 +.de M
79656 +.IR "\\$1" "(\\$2)\\$3"
79657 +..
79658 +.de RM
79659 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79660 +..
79661 +.TH "IPROUTETABLE" n "11/Feb/2009" "Click"
79662 +.SH "NAME"
79663 +IPRouteTable \- Click element;
79664 +IP routing table superclass
79665 +.SH "SYNOPSIS"
79666 +\fBIPRouteTable\fR
79667 +
79668 +\fBPackage\fR: ip (core)
79669 +.br
79670 +.SH "DESCRIPTION"
79671 +\fBIPRouteTable\fR defines an interface useful for implementing IPv4 route lookup
79672 +elements. It parses configuration strings -- see 
79673 +.M LinearIPLookup "n" 
79674 +for an example
79675 +-- and calls virtual functions to add the resulting routes. A default \f(CWpush\fR
79676 +function uses those virtual functions to look up routes and output packets
79677 +accordingly. There are also some functions useful for implementing handlers.
79678 +.PP
79679 +
79680 +.SH "PERFORMANCE"
79681 +Click provides several elements that implement all or part of the \fBIPRouteTable\fR
79682 +interface.  Marko Zec has compared their performance, in terms of lookup speed
79683 +and memory size, for full BGP feeds; here are the results.
79684 +.PP
79685 +Methodology: 2.8GHz Pentium P4 CPU, 521K L2 cache, FreeBSD 4.10, userspace
79686 +Click.  
79687 +.M RangeIPLookup "n" 
79688 +has two lookup tables, the larger of which is used only
79689 +at update time.  The "warm cache" numbers perform the same lookup several
79690 +times in a loop to populate the cache; only the last lookup's performance is
79691 +reported.
79692 +.PP
79693 +.nf
79694 +\&              ICSI BGP dump, 150700 routes, 2 next-hops
79695 +\& 
79696 +\&         Element      | cycles  | lookups | setup | lookup 
79697 +\&                      | /lookup | /sec    | time  | tbl. size
79698 +\&     -----------------+---------+---------+-------+----------------
79699 +\&     RadixIPLookup    |   1025  |  2.73M  | 0.59s |  5.8 MB   
79700 +\&     DirectIPLookup   |    432  |  6.48M  | 0.74s | 33   MB   
79701 +\&     RangeIPLookup    |    279  | 10.0 M  | 0.83s |  0.21MB (+33MB)
79702 +\&       " (warm cache) |     44  | 63.6 M  |   "   |    "       "
79703 +\& 
79704 +\&           routeviews.org dump, 167000 routes, 52 nexthops
79705 +\& 
79706 +\&         Element      | cycles  | lookups | setup | lookup 
79707 +\&                      | /lookup | /sec    | time  | tbl. size
79708 +\&     -----------------+---------+---------+-------+----------------
79709 +\&     RadixIPLookup    |   1095  |  2.55M  | 0.67s |  6.6 MB   
79710 +\&     DirectIPLookup   |    434  |  6.45M  | 0.77s | 33   MB
79711 +\&     RangeIPLookup    |    508  |  5.51M  | 0.88s |  0.51MB (+33MB)
79712 +\&       " (warm cache) |     61  | 45.9 M  |   "   |    "       "
79713 +.fi
79714 +.PP
79715 +The 
79716 +.M RadixIPLookup "n" ,
79717 +.M DirectIPLookup "n" ,
79718 +and 
79719 +.M RangeIPLookup "n" 
79720 +elements are well suited
79721 +for implementing large tables.  We also provide the 
79722 +.M LinearIPLookup "n" ,
79723 +.M StaticIPLookup "n" ,
79724 +and 
79725 +.M SortedIPLookup "n" 
79726 +elements; they are simple, but their O(N)
79727 +lookup speed is orders of magnitude slower.  
79728 +.M RadixIPLookup "n" 
79729 +or 
79730 +.M DirectIPLookup "n" 
79731 +should be preferred for almost all purposes.
79732 +.nf
79733 +\& 
79734 +\&           1500-entry fraction of the ICSI BGP dump
79735 +\&   
79736 +\&         Method     | cycles  | lookups | setup | lookup 
79737 +\&                    | /lookup | /sec    | time  | tbl. size
79738 +\&     ---------------+---------+---------+-------+----------
79739 +\&     LinearIPLookup |  12000  |  233K   |  10s  |   29 KB
79740 +\&     StaticIPLookup |  12000  |  233K   |  10s  |   29 KB
79741 +\&     SortedIPLookup |  12500  |  224K   |  38s  |   29 KB
79742 +.fi
79743 +.PP
79744 +A Click script containing the 167000-route dump is available at
79745 +http://www.read.cs.ucla.edu/click/routetabletest-167k.click.gz
79746 +.PP
79747 +
79748 +
79749 +.SH "INTERFACE"
79750 +These four \fBIPRouteTable\fR virtual functions should generally be overridden by
79751 +particular routing table elements.
79752 +.PP
79753 +
79754 +
79755 +.IP "\f(CWint \fBadd_route\fR(const IPRoute& r, bool set, IPRoute* old_route, ErrorHandler *errh)\fR" 4
79756 +Add a route sending packets with destination addresses matching
79757 +\f(CWr.addr/r.mask\fR to gateway \f(CWr.gw\fR, via output port \f(CWr.port\fR.  If a route
79758 +for this exact prefix already exists, then the behavior depends on \f(CWset\fR.  If
79759 +\f(CWset\fR is true, then any existing route is silently overwritten (after
79760 +possibly being stored in \f(CW*old_route\fR); if \f(CWset\fR is false, the function
79761 +should return \f(CW-EEXIST\fR.  Report errors to \f(CWerrh\fR.  Should return 0 on
79762 +success and negative on failure.  The default implementation reports an error
79763 +"cannot add routes to this routing table".
79764 +.IP "" 4
79765 +.IP "\f(CWint \fBremove_route\fR(const IPRoute& r, IPRoute* old_route, ErrorHandler *errh)\fR" 4
79766 +Removes the route sending packets with destination addresses matching
79767 +\f(CWr.addr/r.mask\fR to gateway \f(CWr.gw\fR, via the element's output port \f(CWr.port\fR.
79768 +All four fields must match, unless \f(CWr.port\fR is less than 0, in which case
79769 +only \f(CWr.addr/r.mask\fR must match.  If no route for that prefix exists, the
79770 +function should return \f(CW-ENOENT\fR; otherwise, the old route should be stored
79771 +in \f(CW*old_route\fR (assuming it's not null).  Any errors are reported to
79772 +\f(CWerrh\fR.  Should return 0 on success and negative on failure.  The default
79773 +implementation reports an error "cannot delete routes from this routing
79774 +table".
79775 +.IP "" 4
79776 +.IP "\f(CWint \fBlookup_route\fR(IPAddress dst, IPAddress &gw_return) const\fR" 4
79777 +Looks up the route associated with address \f(CWdst\fR. Should set \f(CWgw_return\fR to
79778 +the resulting gateway and return the relevant output port (or negative if
79779 +there is no route). The default implementation returns -1.
79780 +.IP "" 4
79781 +.IP "\f(CWString \fBdump_routes\fR()\fR" 4
79782 +Returns a textual description of the current routing table. The default
79783 +implementation returns an empty string.
79784 +.IP "" 4
79785 +.PP
79786 +The following functions, overridden by \fBIPRouteTable\fR, are available for use by
79787 +subclasses.
79788 +.PP
79789 +
79790 +.IP "\f(CWint \fBconfigure\fR(Vector<String> &conf, ErrorHandler *)\fR" 4
79791 +The default implementation of \fBconfigure\fR parses \f(CWconf\fR as a list of routes,
79792 +where each route is the space-separated list `\f(CWaddress/mask [gateway]
79793 +output\fR'. The routes are successively added to the element with \fBadd_route\fR.
79794 +.IP "" 4
79795 +.IP "\f(CWvoid \fBpush\fR(int port, Packet *p)\fR" 4
79796 +The default implementation of \fBpush\fR uses \fBlookup_route\fR to perform IP
79797 +routing lookup. Normally, subclasses implement their own \fBpush\fR methods,
79798 +avoiding virtual function call overhead.
79799 +.IP "" 4
79800 +.IP "\f(CWstatic int \fBadd_route_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4
79801 +This write handler callback parses its input as an add-route request
79802 +and calls \fBadd_route\fR with the results. Normally hooked up to the `\f(CWadd\fR'
79803 +handler.
79804 +.IP "" 4
79805 +.IP "\f(CWstatic int \fBremove_route_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4
79806 +This write handler callback parses its input as a remove-route request and
79807 +calls \fBremove_route\fR with the results. Normally hooked up to the `\f(CWremove\fR'
79808 +handler.
79809 +.IP "" 4
79810 +.IP "\f(CWstatic int \fBctrl_handler\fR(const String &, Element *, void *, ErrorHandler *)\fR" 4
79811 +This write handler callback function parses its input as a route control
79812 +request and calls \fBadd_route\fR or \fBremove_route\fR as directed. Normally hooked
79813 +up to the `\f(CWctrl\fR' handler.
79814 +.IP "" 4
79815 +.IP "\f(CWstatic String \fBtable_handler\fR(Element *, void *)\fR" 4
79816 +This read handler callback function returns the element's routing table via
79817 +the \fBdump_routes\fR function. Normally hooked up to the `\f(CWtable\fR' handler.
79818 +.IP "" 4
79819 +.PP
79820 +
79821 +.SH "SEE ALSO"
79822 +.M RadixIPLookup n ,
79823 +.M DirectIPLookup n ,
79824 +.M RangeIPLookup n ,
79825 +.M StaticIPLookup n ,
79826 +.M LinearIPLookup n ,
79827 +.M SortedIPLookup n ,
79828 +.M LinuxIPLookup "n" 
79829 +
79830 diff -Nurb click-1.6.0/inst/share/man/mann/Idle.n click-1.6.0-27/inst/share/man/mann/Idle.n
79831 --- click-1.6.0/inst/share/man/mann/Idle.n      1969-12-31 19:00:00.000000000 -0500
79832 +++ click-1.6.0-27/inst/share/man/mann/Idle.n   2009-02-11 14:08:51.000000000 -0500
79833 @@ -0,0 +1,27 @@
79834 +.\" -*- mode: nroff -*-
79835 +.\" Generated by 'click-elem2man' from '../elements/standard/idle.hh'
79836 +.de M
79837 +.IR "\\$1" "(\\$2)\\$3"
79838 +..
79839 +.de RM
79840 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79841 +..
79842 +.TH "IDLE" n "11/Feb/2009" "Click"
79843 +.SH "NAME"
79844 +Idle \- Click element;
79845 +discards packets
79846 +.SH "SYNOPSIS"
79847 +Idle
79848 +
79849 +\fBPorts\fR: any number of inputs, any number of outputs
79850 +.br
79851 +\fBProcessing\fR: agnostic
79852 +.br
79853 +\fBPackage\fR: standard (core)
79854 +.br
79855 +.SH "DESCRIPTION"
79856 +Has zero or more agnostic outputs and zero or more agnostic inputs. It
79857 +never pushes a packet to any output or pulls a packet from any input. Any
79858 +packet it does receive is discarded. Used to avoid "input not connected"
79859 +error messages.
79860 +
79861 diff -Nurb click-1.6.0/inst/share/man/mann/InfiniteSource.n click-1.6.0-27/inst/share/man/mann/InfiniteSource.n
79862 --- click-1.6.0/inst/share/man/mann/InfiniteSource.n    1969-12-31 19:00:00.000000000 -0500
79863 +++ click-1.6.0-27/inst/share/man/mann/InfiniteSource.n 2009-02-11 14:08:52.000000000 -0500
79864 @@ -0,0 +1,106 @@
79865 +.\" -*- mode: nroff -*-
79866 +.\" Generated by 'click-elem2man' from '../elements/standard/infinitesource.hh'
79867 +.de M
79868 +.IR "\\$1" "(\\$2)\\$3"
79869 +..
79870 +.de RM
79871 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79872 +..
79873 +.TH "INFINITESOURCE" n "11/Feb/2009" "Click"
79874 +.SH "NAME"
79875 +InfiniteSource \- Click element;
79876 +generates packets whenever scheduled
79877 +.SH "SYNOPSIS"
79878 +\fBInfiniteSource\fR([DATA, LIMIT, BURST, ACTIVE, \fIKEYWORDS\fR])
79879 +
79880 +\fBPorts\fR: no inputs, 1 output
79881 +.br
79882 +\fBProcessing\fR: agnostic
79883 +.br
79884 +\fBPackage\fR: standard (core)
79885 +.br
79886 +.SH "DESCRIPTION"
79887 +Creates packets consisting of DATA. Pushes BURST such packets out its single
79888 +output every time it is scheduled (which will be often). Stops sending after
79889 +LIMIT packets are generated; but if LIMIT is negative, sends packets forever.
79890 +Will send packets only if ACTIVE is true. (ACTIVE is true by default.) Default
79891 +DATA is at least 64 bytes long. Default LIMIT is -1 (send packets forever).
79892 +Default BURST is 1.
79893 +.PP
79894 +Keyword arguments are:
79895 +.PP
79896 +
79897 +
79898 +.IP "DATA" 8
79899 +String. Same as the DATA argument.
79900 +.IP "" 8
79901 +.IP "DATASIZE" 8
79902 +Integer. If set, ensures the outgoing packet contains at least this many bytes.
79903 +.IP "" 8
79904 +.IP "LIMIT" 8
79905 +Integer. Same as the LIMIT argument.
79906 +.IP "" 8
79907 +.IP "BURST" 8
79908 +Integer. Same as the BURST argument.
79909 +.IP "" 8
79910 +.IP "ACTIVE" 8
79911 +Boolean. Same as the ACTIVE argument.
79912 +.IP "" 8
79913 +.IP "STOP" 8
79914 +Boolean. If true, then stop the driver once LIMIT packets are sent. Default is
79915 +false.
79916 +.IP "" 8
79917 +.PP
79918 +To generate a particular traffic pattern, use this element and 
79919 +.M RatedSource "n" 
79920 +in conjunction with 
79921 +.M PokeHandlers "n" .
79922 +.PP
79923 +.SH "EXAMPLES"
79924 +
79925 +.nf
79926 +\&  InfiniteSource(\e<0800>) -> Queue -> ...
79927 +.fi
79928 +.PP
79929 +
79930 +
79931 +
79932 +.SH "NOTES"
79933 +Useful for profiling and experiments.  Packets' timestamp annotations are set
79934 +to the current time.
79935 +.PP
79936 +\fBInfiniteSource\fR listens for downstream full notification.
79937 +.PP
79938 +
79939 +.SH "ELEMENT HANDLERS"
79940 +
79941 +
79942 +
79943 +.IP "\fBcount\fR (read-only)" 5
79944 +Returns the total number of packets that have been generated.
79945 +.IP "" 5
79946 +.IP "\fBreset\fR (write-only)" 5
79947 +Resets the number of generated packets to 0. The \fBInfiniteSource\fR will then
79948 +generate another LIMIT packets (if it is active).
79949 +.IP "" 5
79950 +.IP "\fBdata\fR (read/write)" 5
79951 +Returns or sets the DATA parameter.
79952 +.IP "" 5
79953 +.IP "\fBdatasize\fR (read/write)" 5
79954 +Returns or sets the DATASIZE parameter.
79955 +.IP "" 5
79956 +.IP "\fBlimit\fR (read/write)" 5
79957 +Returns or sets the LIMIT parameter.
79958 +.IP "" 5
79959 +.IP "\fBburstsize\fR (read/write)" 5
79960 +Returns or sets the BURSTSIZE parameter.
79961 +.IP "" 5
79962 +.IP "\fBactive\fR (read/write)" 5
79963 +Makes the element active or inactive.
79964 +.IP "" 5
79965 +.PP
79966 +
79967 +.SH "SEE ALSO"
79968 +.M RatedSource n ,
79969 +.M PokeHandlers "n" 
79970 +
79971 diff -Nurb click-1.6.0/inst/share/man/mann/KernelFilter.n click-1.6.0-27/inst/share/man/mann/KernelFilter.n
79972 --- click-1.6.0/inst/share/man/mann/KernelFilter.n      1969-12-31 19:00:00.000000000 -0500
79973 +++ click-1.6.0-27/inst/share/man/mann/KernelFilter.n   2009-02-11 14:08:51.000000000 -0500
79974 @@ -0,0 +1,53 @@
79975 +.\" -*- mode: nroff -*-
79976 +.\" Generated by 'click-elem2man' from '../elements/userlevel/kernelfilter.hh'
79977 +.de M
79978 +.IR "\\$1" "(\\$2)\\$3"
79979 +..
79980 +.de RM
79981 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
79982 +..
79983 +.TH "KERNELFILTER" n "11/Feb/2009" "Click"
79984 +.SH "NAME"
79985 +KernelFilter \- Click element;
79986 +block kernel from handling packets
79987 +.SH "SYNOPSIS"
79988 +\fBKernelFilter\fR(FILTERSPEC, ...)
79989 +
79990 +\fBPorts\fR: none
79991 +.br
79992 +\fBDrivers\fR: userlevel
79993 +.br
79994 +\fBPackage\fR: userlevel (core)
79995 +.br
79996 +.SH "DESCRIPTION"
79997 +The \fBKernelFilter\fR element installs filter rules in the kernel to stop the
79998 +kernel from handling certain types of packets.  Use this in combination with
79999 +.M FromDevice.u "n" 
80000 +to handle packets in user-level Click configurations.
80001 +.PP
80002 +\fBKernelFilter\fR uses iptables(1) to install filters; if your system does not
80003 +support iptables(1), \fBKernelFilter\fR will fail.
80004 +.PP
80005 +\fBKernelFilter\fR uninstalls its firewall rules when Click shuts down.  If Click
80006 +shuts down uncleanly, for instance because of a segmentation fault or 'kill
80007 +-9', then the rules will remain in place, and you'll have to remove them
80008 +yourself.
80009 +.PP
80010 +Currently only one form of FILTERSPEC is understood.
80011 +.PP
80012 +
80013 +
80014 +.IP "\&'\f(CWdrop dev DEVNAME\fR'" 8
80015 +The kernel is blocked from handling any packets arriving on device DEVNAME.
80016 +However, these packets will still be visible to tcpdump(1), and to Click
80017 +elements like 
80018 +.M FromDevice.u "n" .
80019 +.IP "" 8
80020 +.PP
80021 +
80022 +.SH "SEE ALSO"
80023 +.M FromDevice.u n ,
80024 +.M ToDevice.u n ,
80025 +.M KernelTap n ,
80026 +ifconfig(8)
80027 +
80028 diff -Nurb click-1.6.0/inst/share/man/mann/KernelHandlerProxy.n click-1.6.0-27/inst/share/man/mann/KernelHandlerProxy.n
80029 --- click-1.6.0/inst/share/man/mann/KernelHandlerProxy.n        1969-12-31 19:00:00.000000000 -0500
80030 +++ click-1.6.0-27/inst/share/man/mann/KernelHandlerProxy.n     2009-02-11 14:08:52.000000000 -0500
80031 @@ -0,0 +1,48 @@
80032 +.\" -*- mode: nroff -*-
80033 +.\" Generated by 'click-elem2man' from '../elements/userlevel/khandlerproxy.hh'
80034 +.de M
80035 +.IR "\\$1" "(\\$2)\\$3"
80036 +..
80037 +.de RM
80038 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80039 +..
80040 +.TH "KERNELHANDLERPROXY" n "11/Feb/2009" "Click"
80041 +.SH "NAME"
80042 +KernelHandlerProxy \- Click element;
80043 +proxies kernel module handlers at user level
80044 +.SH "SYNOPSIS"
80045 +\fBKernelHandlerProxy\fR([\fIKEYWORDS\fR])
80046 +
80047 +\fBDrivers\fR: userlevel
80048 +.br
80049 +\fBPackage\fR: userlevel (core)
80050 +.br
80051 +.SH "DESCRIPTION"
80052 +Provides one proxy handler for each handler in a Linux kernel module Click
80053 +configuration. The proxy handler for an element \f(CWe\fR's handler \f(CWh\fR is named
80054 +`\f(CWe.h\fR'. Reading \fBKernelHandlerProxy\fR's \f(CWe.h\fR handler will return the result
80055 +of reading kernel element \f(CWe\fR's \f(CWh\fR handler. Similarly, writing a string to
80056 +\fBKernelHandlerProxy\fR's \f(CWe.h\fR handler will cause the proxy to write that string
80057 +to kernel element \f(CWe\fR's \f(CWh\fR handler.
80058 +.PP
80059 +Keyword arguments are:
80060 +.PP
80061 +
80062 +
80063 +.IP "VERBOSE" 8
80064 +Boolean. If true, print chatter messages when read handlers fail. (Errors with
80065 +write handlers are reported to the supplied ErrorHandler, but read handlers
80066 +don't take an ErrorHandler argument.) Default is false.
80067 +.IP "" 8
80068 +.PP
80069 +
80070 +.SH "NOTES"
80071 +\fBKernelHandlerProxy\fR does not decide ahead of time whether a given handler is
80072 +active. Thus, for example, \fBKernelHandlerProxy\fR can report that a handler exists
80073 +even when no corresponding element exists in the kernel configuration. Any
80074 +error will be reported when the handler is actually called.
80075 +.PP
80076 +
80077 +.SH "SEE ALSO"
80078 +.M SocketHandlerProxy "n" 
80079 +
80080 diff -Nurb click-1.6.0/inst/share/man/mann/KernelTap.n click-1.6.0-27/inst/share/man/mann/KernelTap.n
80081 --- click-1.6.0/inst/share/man/mann/KernelTap.n 1969-12-31 19:00:00.000000000 -0500
80082 +++ click-1.6.0-27/inst/share/man/mann/KernelTap.n      2009-02-11 14:08:52.000000000 -0500
80083 @@ -0,0 +1,88 @@
80084 +.\" -*- mode: nroff -*-
80085 +.\" Generated by 'click-elem2man' from '../elements/userlevel/kerneltap.hh'
80086 +.de M
80087 +.IR "\\$1" "(\\$2)\\$3"
80088 +..
80089 +.de RM
80090 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80091 +..
80092 +.TH "KERNELTAP" n "11/Feb/2009" "Click"
80093 +.SH "NAME"
80094 +KernelTap \- Click element;
80095 +interface to /dev/tap or ethertap (user-level)
80096 +.SH "SYNOPSIS"
80097 +\fBKernelTap\fR(ADDR/MASK [, GATEWAY, \fIkeywords\fR ETHER, MTU, HEADROOM, IGNORE_QUEUE_OVERFLOWS])
80098 +
80099 +\fBPorts\fR: at most 1 input, 1-2 outputs
80100 +.br
80101 +\fBDrivers\fR: userlevel
80102 +.br
80103 +\fBPackage\fR: userlevel (core)
80104 +.br
80105 +.SH "DESCRIPTION"
80106 +Reads Ethernet packets from and writes Ethernet packets to a /dev/tun* or
80107 +/dev/tap* device.  This allows a user-level Click to hand packets to the
80108 +virtual Ethernet device.  \fBKernelTap\fR will also transfer packets from the
80109 +virtual Ethernet device.
80110 +.PP
80111 +\fBKernelTap\fR allocates a /dev/tun* or tap* device (this might fail) and runs
80112 +.M ifconfig 8 
80113 +to set the interface's local (i.e., kernel) address to ADDR and
80114 +the netmask to MASK.  If a nonzero GATEWAY IP address (which must be on the
80115 +same network as the tun) is specified, then \fBKernelTap\fR tries to set up a
80116 +default route through that host.
80117 +.PP
80118 +Keyword arguments are:
80119 +.PP
80120 +
80121 +
80122 +.IP "ETHER" 8
80123 +Ethernet address. Specifies the fake device's Ethernet address. Default is
80124 +00:01:02:03:04:05. On Linux, you must supply an ETHER argument, and use that
80125 +address as the destination Ethernet address for all packets sent to the tap
80126 +element; otherwise, Linux will ignore your packets. On FreeBSD, there is no
80127 +way to set the Ethernet address, and any ETHER argument is silently ignored,
80128 +but it is safe to use any destination Ethernet address for packets sent to the
80129 +tap.
80130 +.IP "" 8
80131 +.IP "MTU" 8
80132 +Integer.  The interface's maximum transmission unit.  Default is 1500; some
80133 +operating systems do not alllow it to be set.
80134 +.IP "" 8
80135 +.IP "HEADROOM" 8
80136 +Integer.  The number of bytes left empty before the packet data (to leave room
80137 +for additional encapsulation headers).  Default is 0.
80138 +.IP "" 8
80139 +.IP "IGNORE_QUEUE_OVERFLOWS" 8
80140 +Boolean.  If true, don't print more than one error message when there are
80141 +queue overflow errors (ENOBUFS) when sending or receiving packets via the tun
80142 +device.  Default is false.
80143 +.IP "" 8
80144 +.PP
80145 +\fBKernelTap\fR accepts the same arguments as 
80146 +.M KernelTun "n" .
80147 +.PP
80148 +.SH "NOTES"
80149 +Linux will send ARP queries to the fake device. You must respond to these
80150 +queries in order to receive any IP packets, but you can obviously respond
80151 +with any Ethernet address you'd like. Here is one common idiom:
80152 +.nf
80153 +\& 
80154 +\&  tap0 :: KernelTap(192.0.0.1/8)
80155 +\&       -> fromhost_cl :: Classifier(12/0806, 12/0800);
80156 +\&  fromhost_cl[0] -> ARPResponder(0.0.0.0/0 1:1:1:1:1:1) -> tap0;
80157 +\&  fromhost_cl[1] -> ... // IP packets
80158 +\& 
80159 +.fi
80160 +.PP
80161 +An error like "could not allocate a /dev/tap* device : No such file or
80162 +directory" usually means that you have not enabled /dev/tap* in your
80163 +kernel. 
80164 +.PP
80165 +
80166 +
80167 +.SH "SEE ALSO"
80168 +.M ToHost n ,
80169 +.M KernelTun n ,
80170 +ifconfig(8)
80171 +
80172 diff -Nurb click-1.6.0/inst/share/man/mann/KernelTun.n click-1.6.0-27/inst/share/man/mann/KernelTun.n
80173 --- click-1.6.0/inst/share/man/mann/KernelTun.n 1969-12-31 19:00:00.000000000 -0500
80174 +++ click-1.6.0-27/inst/share/man/mann/KernelTun.n      2009-02-11 14:08:52.000000000 -0500
80175 @@ -0,0 +1,106 @@
80176 +.\" -*- mode: nroff -*-
80177 +.\" Generated by 'click-elem2man' from '../elements/userlevel/kerneltun.hh'
80178 +.de M
80179 +.IR "\\$1" "(\\$2)\\$3"
80180 +..
80181 +.de RM
80182 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80183 +..
80184 +.TH "KERNELTUN" n "11/Feb/2009" "Click"
80185 +.SH "NAME"
80186 +KernelTun \- Click element;
80187 +interface to /dev/tun or ethertap (user-level)
80188 +.SH "SYNOPSIS"
80189 +\fBKernelTun\fR(ADDR/MASK [, GATEWAY, \fIkeywords\fR HEADROOM, ETHER, MTU, IGNORE_QUEUE_OVERFLOWS])
80190 +
80191 +\fBPorts\fR: at most 1 input, 1-2 outputs
80192 +.br
80193 +\fBDrivers\fR: userlevel
80194 +.br
80195 +\fBPackage\fR: userlevel (core)
80196 +.br
80197 +.SH "DESCRIPTION"
80198 +Reads IP packets from and writes IP packets to a /dev/net/tun, /dev/tun*,
80199 +or /dev/tap* device.  This allows a user-level Click to hand packets to the
80200 +ordinary kernel IP processing code.  \fBKernelTun\fR will also install a routing
80201 +table entry so that the kernel can pass packets to the \fBKernelTun\fR device.
80202 +.PP
80203 +\fBKernelTun\fR produces and expects IP packets.  If, for some reason, the kernel
80204 +passes up a non-IP packet (or an invalid IP packet), \fBKernelTun\fR will emit
80205 +that packet on its second output, or drop it if there is no second output.
80206 +.PP
80207 +\fBKernelTun\fR allocates a /dev/net/tun, /dev/tun*, or /dev/tap* device (this
80208 +might fail) and runs 
80209 +.M ifconfig 8 
80210 +to set the interface's local (i.e.,
80211 +kernel) address to ADDR and the netmask to MASK.  If a nonzero GATEWAY IP
80212 +address (which must be on the same network as the tun) is specified, then
80213 +\fBKernelTun\fR tries to set up a default route through that host.
80214 +.PP
80215 +When cleaning up, \fBKernelTun\fR attempts to bring down the device via
80216 +.M ifconfig 8 .
80217 +.PP
80218 +Keyword arguments are:
80219 +.PP
80220 +
80221 +
80222 +.IP "HEADROOM" 8
80223 +Integer. The number of bytes left empty before the packet data to leave
80224 +room for additional encapsulation headers. Default is 28.
80225 +.IP "" 8
80226 +.IP "MTU" 8
80227 +Integer. The interface's MTU. \fBKernelTun\fR will refuse to send packets larger
80228 +than the MTU. Default is 1500; not all operating systems allow MTU to be set.
80229 +.IP "" 8
80230 +.IP "ETHER" 8
80231 +Ethernet address. Specifies the tunnel device's Ethernet address. Default is
80232 +00:01:02:03:04:05. On FreeBSD, any ETHER argument is silently ignored.
80233 +.IP "" 8
80234 +.IP "IGNORE_QUEUE_OVERFLOWS" 8
80235 +Boolean.  If true, don't print more than one error message when
80236 +there are queue overflows error when sending/receiving packets
80237 +to/from the tun device (e.g. there was an ENOBUFS error).  Default
80238 +is false.
80239 +.IP "" 8
80240 +.IP "DEVNAME" 8
80241 +String. If specified, try to alloc a tun device with name DEVNAME.
80242 +Otherwise, we'll just take the first virtual device we find. This option
80243 +only works with the Linux Universal TUN/TAP driver.
80244 +.IP "" 8
80245 +.PP
80246 +
80247 +.SH "NOTES"
80248 +Make sure that your kernel has tun support enabled before running
80249 +\fBKernelTun\fR.  Initialization errors like "no such device" or "no such file or
80250 +directory" may indicate that your kernel isn't set up, or that some
80251 +required kernel module hasn't been loaded (on Linux, the relevant module is
80252 +"tun").
80253 +.PP
80254 +Packets sent to ADDR will be processed by the host kernel stack; packets sent
80255 +to any other address in ADDR/MASK will be sent to \fBKernelTun\fR.  Say you run this
80256 +configuration:
80257 +.PP
80258 +.nf
80259 +\&    tun :: KernelTun(1.0.0.1/8);
80260 +\&    tun -> IPClassifier(icmp type echo) -> ICMPPingResponder
80261 +\&        -> IPPrint -> tun;
80262 +.fi
80263 +.PP
80264 +If you then "\f(CWping 1.0.0.1\fR", \fIyour own kernel\fR will respond.  Click will
80265 +never see the packets, so it won't print anything.  But if you "\f(CWping
80266 +1.0.0.2\fR", the pings are sent to Click.  You should see printouts from Click,
80267 +and \f(CWping\fR should print Click's responses.
80268 +.PP
80269 +This element differs from 
80270 +.M KernelTap "n" 
80271 +in that it produces and expects IP
80272 +packets, not IP-in-Ethernet packets.
80273 +.PP
80274 +
80275 +
80276 +.SH "SEE ALSO"
80277 +.M FromDevice.u n ,
80278 +.M ToDevice.u n ,
80279 +.M KernelTap n ,
80280 +ifconfig(8)
80281 +
80282 diff -Nurb click-1.6.0/inst/share/man/mann/LinearIPLookup.n click-1.6.0-27/inst/share/man/mann/LinearIPLookup.n
80283 --- click-1.6.0/inst/share/man/mann/LinearIPLookup.n    1969-12-31 19:00:00.000000000 -0500
80284 +++ click-1.6.0-27/inst/share/man/mann/LinearIPLookup.n 2009-02-11 14:08:51.000000000 -0500
80285 @@ -0,0 +1,100 @@
80286 +.\" -*- mode: nroff -*-
80287 +.\" Generated by 'click-elem2man' from '../elements/ip/lineariplookup.hh'
80288 +.de M
80289 +.IR "\\$1" "(\\$2)\\$3"
80290 +..
80291 +.de RM
80292 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80293 +..
80294 +.TH "LINEARIPLOOKUP" n "11/Feb/2009" "Click"
80295 +.SH "NAME"
80296 +LinearIPLookup \- Click element;
80297 +simple IP routing table
80298 +.SH "SYNOPSIS"
80299 +\fBLinearIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
80300 +
80301 +\fBPorts\fR: 1 input, any number of outputs
80302 +.br
80303 +\fBProcessing\fR: push
80304 +.br
80305 +\fBPackage\fR: ip (core)
80306 +.br
80307 +.SH "DESCRIPTION"
80308 +\fBNote:\fR Lookups and table updates with \fBLinearIPLookup\fR are extremely slow; the
80309 +.M RadixIPLookup "n" 
80310 +and 
80311 +.M DirectIPLookup "n" 
80312 +elements should be preferred in almost all
80313 +cases.  See 
80314 +.M IPRouteTable "n" 
80315 +for a performance comparison.  We provide
80316 +\fBLinearIPLookup\fR nevertheless for its simplicity.
80317 +.PP
80318 +Expects a destination IP address annotation with each packet. Looks up that
80319 +address in its routing table, using longest-prefix-match, sets the destination
80320 +annotation to the corresponding GW (if specified), and emits the packet on the
80321 +indicated OUTput port.
80322 +.PP
80323 +Each argument is a route, specifying a destination and mask, an optional
80324 +gateway IP address, and an output port.
80325 +.PP
80326 +\fBLinearIPLookup\fR uses a linear search algorithm that may look at every route on
80327 +each packet. It is therefore most suitable for small routing tables.
80328 +.PP
80329 +
80330 +.SH "EXAMPLES"
80331 +This example delivers broadcasts and packets addressed to the local
80332 +host (18.26.4.24) to itself, packets to net 18.26.4 to the
80333 +local interface, and all others via gateway 18.26.4.1:
80334 +.PP
80335 +.nf
80336 +\&  ... -> GetIPAddress(16) -> rt;
80337 +\&  rt :: LinearIPLookup(18.26.4.24/32 0,
80338 +\&                       18.26.4.255/32 0,
80339 +\&                       18.26.4.0/32 0,
80340 +\&                       18.26.4/24 1,
80341 +\&                       0/0 18.26.4.1 1);
80342 +\&  rt[0] -> ToHost;
80343 +\&  rt[1] -> ... -> ToDevice(eth0);
80344 +.fi
80345 +.PP
80346 +
80347 +
80348 +
80349 +.SH "ELEMENT HANDLERS"
80350 +
80351 +
80352 +
80353 +.IP "\fBtable\fR (read-only)" 5
80354 +Outputs a human-readable version of the current routing table.
80355 +.IP "" 5
80356 +.IP "\fBlookup\fR (read-only)" 5
80357 +Reports the OUTput port and GW corresponding to an address.
80358 +.IP "" 5
80359 +.IP "\fBadd\fR (write-only)" 5
80360 +Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'.
80361 +Fails if a route for \f(CWADDR/MASK\fR already exists.
80362 +.IP "" 5
80363 +.IP "\fBset\fR (write-only)" 5
80364 +Sets a route, whether or not a route for the same prefix already exists.
80365 +.IP "" 5
80366 +.IP "\fBremove\fR (write-only)" 5
80367 +Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'.
80368 +.IP "" 5
80369 +.IP "\fBctrl\fR (write-only)" 5
80370 +Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to
80371 +add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply
80372 +multiple commands, one per line; all commands are executed as one atomic
80373 +operation.
80374 +.IP "" 5
80375 +.PP
80376 +
80377 +.SH "SEE ALSO"
80378 +.M RadixIPLookup n ,
80379 +.M DirectIPLookup n ,
80380 +.M RangeIPLookup n ,
80381 +.M StaticIPLookup n ,
80382 +.M SortedIPLookup n ,
80383 +.M LinuxIPLookup n ,
80384 +.M IPRouteTable "n" 
80385 +
80386 diff -Nurb click-1.6.0/inst/share/man/mann/LinkUnqueue.n click-1.6.0-27/inst/share/man/mann/LinkUnqueue.n
80387 --- click-1.6.0/inst/share/man/mann/LinkUnqueue.n       1969-12-31 19:00:00.000000000 -0500
80388 +++ click-1.6.0-27/inst/share/man/mann/LinkUnqueue.n    2009-02-11 14:08:51.000000000 -0500
80389 @@ -0,0 +1,70 @@
80390 +.\" -*- mode: nroff -*-
80391 +.\" Generated by 'click-elem2man' from '../elements/standard/linkunqueue.hh'
80392 +.de M
80393 +.IR "\\$1" "(\\$2)\\$3"
80394 +..
80395 +.de RM
80396 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80397 +..
80398 +.TH "LINKUNQUEUE" n "11/Feb/2009" "Click"
80399 +.SH "NAME"
80400 +LinkUnqueue \- Click element;
80401 +link emulator
80402 +.SH "SYNOPSIS"
80403 +\fBLinkUnqueue\fR(LATENCY, BANDWIDTH)
80404 +
80405 +\fBPorts\fR: 1 input, 1 output
80406 +.br
80407 +\fBProcessing\fR: pull inputs, push outputs
80408 +.br
80409 +\fBPackage\fR: standard (core)
80410 +.br
80411 +.SH "DESCRIPTION"
80412 +Pulls packets from the single input port, then delays them so as to emulate a
80413 +serial link with latency LATENCY (microsecond precision) and bandwidth
80414 +BANDWIDTH (such as "384kbps"). Thus, every packet is delayed at least
80415 +by LATENCY, and additionally delayed by its packet size and BANDWIDTH, and
80416 +by any packets ahead of it in the virtual link. Packets are pushed out the
80417 +single output port when their time comes.
80418 +.PP
80419 +\fBLinkUnqueue\fR listens for upstream notification, such as that available from
80420 +.M Queue "n" .
80421 +.PP
80422 +\fBLinkUnqueue\fR stores packets that are in transit over the virtual link. It
80423 +doesn't store any other packets, however; it doesn't pull from its input
80424 +unless there is room on the link. To emulate a link fed by a packet queue, use
80425 +a "
80426 +.M Queue "n" 
80427 +-> \fBLinkUnqueue\fR" combination.
80428 +.PP
80429 +\fBLinkUnqueue\fR uses its input packets' "extra length" annotations, destroys their
80430 +"next packet" annotations, and updates their timestamp annotations.
80431 +.PP
80432 +
80433 +.SH "ELEMENT HANDLERS"
80434 +
80435 +
80436 +
80437 +.IP "\fBlatency\fR (read-only)" 5
80438 +The LATENCY argument.
80439 +.IP "" 5
80440 +.IP "\fBbandwidth\fR (read-only)" 5
80441 +The BANDWIDTH argument.
80442 +.IP "" 5
80443 +.IP "\fBsize\fR (read-only)" 5
80444 +The number of packets currently in, or partially in, the emulated link.
80445 +.IP "" 5
80446 +.IP "\fBreset\fR (write-only)" 5
80447 +When written, drops all packets in, or partially in, the emulated link.
80448 +.IP "" 5
80449 +.PP
80450 +
80451 +.SH "SEE ALSO"
80452 +.M DelayUnqueue n ,
80453 +.M Queue n ,
80454 +.M Unqueue n ,
80455 +.M RatedUnqueue n ,
80456 +.M BandwidthRatedUnqueue n ,
80457 +.M DelayShaper n ,
80458 +.M SetTimestamp "n" 
80459 +
80460 diff -Nurb click-1.6.0/inst/share/man/mann/LinuxIPLookup.n click-1.6.0-27/inst/share/man/mann/LinuxIPLookup.n
80461 --- click-1.6.0/inst/share/man/mann/LinuxIPLookup.n     1969-12-31 19:00:00.000000000 -0500
80462 +++ click-1.6.0-27/inst/share/man/mann/LinuxIPLookup.n  2009-02-11 14:08:52.000000000 -0500
80463 @@ -0,0 +1,62 @@
80464 +.\" -*- mode: nroff -*-
80465 +.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproutelinux.hh'
80466 +.de M
80467 +.IR "\\$1" "(\\$2)\\$3"
80468 +..
80469 +.de RM
80470 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80471 +..
80472 +.TH "LINUXIPLOOKUP" n "11/Feb/2009" "Click"
80473 +.SH "NAME"
80474 +LinuxIPLookup \- Click element;
80475 +interface to Linux's routing table
80476 +.SH "SYNOPSIS"
80477 +\fBLinuxIPLookup\fR(if0, if1, ..., ifN)
80478 +
80479 +\fBPorts\fR: 1 input, 1 or more outputs
80480 +.br
80481 +\fBProcessing\fR: agnostic
80482 +.br
80483 +\fBDrivers\fR: userlevel
80484 +.br
80485 +\fBPackage\fR: ip (core)
80486 +.br
80487 +.SH "DESCRIPTION"
80488 +Looks up each packet's destination annotation address in the
80489 +Linux routing table. Replaces the annotation with the
80490 +routing table entry's gateway field (if non-zero).
80491 +Emits the packet on an output that depends on the Linux
80492 +interface device mentioned in the routing table entry:
80493 +if the device name is the Ith configuration argument,
80494 +the element sends the packet on output I (zero origin).
80495 +.PP
80496 +If the packet can't be routed, the element emits it on
80497 +the output with number equal to the number of configuration arguments.
80498 +A packet can't be routed if there is no matching routing
80499 +table entry, or if the device mentioned in the Linux
80500 +routing table isn't mentioned in the configuration.
80501 +.PP
80502 +If run outside the kernel, the element reads the routing table
80503 +just once (at startup) from /proc/net/route.
80504 +.PP
80505 +
80506 +.SH "EXAMPLES"
80507 +
80508 +.nf
80509 +\&  r : LinuxIPLookup(eth0, eth1)
80510 +\&  r[0] -> ... -> ToDevice(eth0)
80511 +\&  r[1] -> ... -> ToDevice(eth1)
80512 +\&  r[2] -> ICMPError(18.26.4.24, 3, 0) -> ...
80513 +.fi
80514 +.PP
80515 +
80516 +
80517 +
80518 +.SH "SEE ALSO"
80519 +.M RadixIPLookup n ,
80520 +.M DirectIPLookup n ,
80521 +.M RangeIPLookup n ,
80522 +.M StaticIPLookup n ,
80523 +.M LinearIPLookup n ,
80524 +.M SortedIPLookup "n" 
80525 +
80526 diff -Nurb click-1.6.0/inst/share/man/mann/LookupIPRouteMP.n click-1.6.0-27/inst/share/man/mann/LookupIPRouteMP.n
80527 --- click-1.6.0/inst/share/man/mann/LookupIPRouteMP.n   1969-12-31 19:00:00.000000000 -0500
80528 +++ click-1.6.0-27/inst/share/man/mann/LookupIPRouteMP.n        2009-02-11 14:08:51.000000000 -0500
80529 @@ -0,0 +1,34 @@
80530 +.\" -*- mode: nroff -*-
80531 +.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproutemp.hh'
80532 +.de M
80533 +.IR "\\$1" "(\\$2)\\$3"
80534 +..
80535 +.de RM
80536 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80537 +..
80538 +.TH "LOOKUPIPROUTEMP" n "11/Feb/2009" "Click"
80539 +.SH "NAME"
80540 +LookupIPRouteMP \- Click element;
80541 +simple static IP routing table
80542 +.SH "SYNOPSIS"
80543 +\fBLookupIPRouteMP\fR(DST1/MASK1 [GW1] OUT1, DST2/MASK2 [GW2] OUT2, ...)
80544 +
80545 +\fBPorts\fR: 1 input, any number of outputs
80546 +.br
80547 +\fBProcessing\fR: agnostic
80548 +.br
80549 +\fBDrivers\fR: linuxmodule
80550 +.br
80551 +\fBPackage\fR: ip (core)
80552 +.br
80553 +.SH "DESCRIPTION"
80554 +Interfaces are exactly the same as 
80555 +.M LookupIPRoute "n" .
80556 +The only difference is
80557 +when operating in SMP mode, each processor has a processor local cache,
80558 +hence the element is MT SAFE.
80559 +.PP
80560 +
80561 +.SH "SEE ALSO"
80562 +.M LookupIPRoute "n" 
80563 +
80564 diff -Nurb click-1.6.0/inst/share/man/mann/MSQueue.n click-1.6.0-27/inst/share/man/mann/MSQueue.n
80565 --- click-1.6.0/inst/share/man/mann/MSQueue.n   1969-12-31 19:00:00.000000000 -0500
80566 +++ click-1.6.0-27/inst/share/man/mann/MSQueue.n        2009-02-11 14:08:51.000000000 -0500
80567 @@ -0,0 +1,48 @@
80568 +.\" -*- mode: nroff -*-
80569 +.\" Generated by 'click-elem2man' from '../elements/standard/msqueue.hh'
80570 +.de M
80571 +.IR "\\$1" "(\\$2)\\$3"
80572 +..
80573 +.de RM
80574 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80575 +..
80576 +.TH "MSQUEUE" n "11/Feb/2009" "Click"
80577 +.SH "NAME"
80578 +MSQueue \- Click element;
80579 +stores packets in a FIFO queue
80580 +.SH "SYNOPSIS"
80581 +MSQueue
80582 +.br
80583 +\fBMSQueue\fR(CAPACITY)
80584 +
80585 +\fBPorts\fR: 1 input, 1 output
80586 +.br
80587 +\fBProcessing\fR: push inputs, pull outputs
80588 +.br
80589 +\fBPackage\fR: standard (core)
80590 +.br
80591 +.SH "DESCRIPTION"
80592 +Stores incoming packets in a multiple producer single consumer
80593 +first-in-first-out queue. Enqueue operations are synchronized, dequeue
80594 +operations are not. Drops incoming packets if the queue already holds
80595 +CAPACITY packets. The default for CAPACITY is 1000.
80596 +.PP
80597 +
80598 +.SH "ELEMENT HANDLERS"
80599 +
80600 +
80601 +
80602 +.IP "\fBlength\fR (read-only)" 5
80603 +Returns the current number of packets in the queue.
80604 +.IP "" 5
80605 +.IP "\fBdropd\fR (read-only)" 5
80606 +Returns the number of packets dropped by the queue so far.
80607 +.IP "" 5
80608 +.IP "\fBcapacity\fR (read/write)" 5
80609 +Returns or sets the queue's capacity.
80610 +.IP "" 5
80611 +.PP
80612 +
80613 +.SH "SEE ALSO"
80614 +.M Queue "n" 
80615 +
80616 diff -Nurb click-1.6.0/inst/share/man/mann/MarkIPCE.n click-1.6.0-27/inst/share/man/mann/MarkIPCE.n
80617 --- click-1.6.0/inst/share/man/mann/MarkIPCE.n  1969-12-31 19:00:00.000000000 -0500
80618 +++ click-1.6.0-27/inst/share/man/mann/MarkIPCE.n       2009-02-11 14:08:51.000000000 -0500
80619 @@ -0,0 +1,27 @@
80620 +.\" -*- mode: nroff -*-
80621 +.\" Generated by 'click-elem2man' from '../elements/ip/markipce.hh'
80622 +.de M
80623 +.IR "\\$1" "(\\$2)\\$3"
80624 +..
80625 +.de RM
80626 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80627 +..
80628 +.TH "MARKIPCE" n "11/Feb/2009" "Click"
80629 +.SH "NAME"
80630 +MarkIPCE \- Click element;
80631 +sets IP packets' ECN field to Congestion Experienced
80632 +.SH "SYNOPSIS"
80633 +\fBMarkIPCE\fR()
80634 +
80635 +\fBPorts\fR: 1 input, 1 output
80636 +.br
80637 +\fBProcessing\fR: agnostic
80638 +.br
80639 +\fBPackage\fR: ip (core)
80640 +.br
80641 +.SH "DESCRIPTION"
80642 +Expects IP packets as input. Sets each incoming packet's ECN field to
80643 +Congestion Experienced (value 3), incrementally recalculates the IP checksum,
80644 +and passes the packet to output 0. Non-IP packets, and IP packets whose ECN
80645 +field is zero (not ECN-capable), are dropped.
80646 +
80647 diff -Nurb click-1.6.0/inst/share/man/mann/MarkIPHeader.n click-1.6.0-27/inst/share/man/mann/MarkIPHeader.n
80648 --- click-1.6.0/inst/share/man/mann/MarkIPHeader.n      1969-12-31 19:00:00.000000000 -0500
80649 +++ click-1.6.0-27/inst/share/man/mann/MarkIPHeader.n   2009-02-11 14:08:52.000000000 -0500
80650 @@ -0,0 +1,38 @@
80651 +.\" -*- mode: nroff -*-
80652 +.\" Generated by 'click-elem2man' from '../elements/ip/markipheader.hh'
80653 +.de M
80654 +.IR "\\$1" "(\\$2)\\$3"
80655 +..
80656 +.de RM
80657 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80658 +..
80659 +.TH "MARKIPHEADER" n "11/Feb/2009" "Click"
80660 +.SH "NAME"
80661 +MarkIPHeader \- Click element;
80662 +sets IP header annotation
80663 +.SH "SYNOPSIS"
80664 +\fBMarkIPHeader\fR([OFFSET])
80665 +
80666 +\fBPorts\fR: 1 input, 1 output
80667 +.br
80668 +\fBProcessing\fR: agnostic
80669 +.br
80670 +\fBPackage\fR: ip (core)
80671 +.br
80672 +.SH "DESCRIPTION"
80673 +Marks packets as IP packets by setting the IP Header annotation. The IP
80674 +header starts OFFSET bytes into the packet. Default OFFSET is 0.
80675 +.PP
80676 +Does not check length fields for sanity, shorten packets to the IP length,
80677 +or set the destination IP address annotation. Use 
80678 +.M CheckIPHeader "n" 
80679 +or
80680 +.M CheckIPHeader2 "n" 
80681 +for that.
80682 +.PP
80683 +
80684 +.SH "SEE ALSO"
80685 +.M CheckIPHeader n ,
80686 +.M CheckIPHeader2 n ,
80687 +.M StripIPHeader "n" 
80688 +
80689 diff -Nurb click-1.6.0/inst/share/man/mann/Message.n click-1.6.0-27/inst/share/man/mann/Message.n
80690 --- click-1.6.0/inst/share/man/mann/Message.n   1969-12-31 19:00:00.000000000 -0500
80691 +++ click-1.6.0-27/inst/share/man/mann/Message.n        2009-02-11 14:08:52.000000000 -0500
80692 @@ -0,0 +1,42 @@
80693 +.\" -*- mode: nroff -*-
80694 +.\" Generated by 'click-elem2man' from '../elements/standard/messageelement.hh'
80695 +.de M
80696 +.IR "\\$1" "(\\$2)\\$3"
80697 +..
80698 +.de RM
80699 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80700 +..
80701 +.TH "MESSAGE" n "11/Feb/2009" "Click"
80702 +.SH "NAME"
80703 +Message \- Click element;
80704 +prints a message on configuration
80705 +.SH "SYNOPSIS"
80706 +\fBMessage\fR(MESSAGE [, TYPE])
80707 +
80708 +\fBPorts\fR: none
80709 +.br
80710 +\fBPackage\fR: standard (core)
80711 +.br
80712 +.SH "DESCRIPTION"
80713 +The \fBMessage\fR element prints a message, warning, or error when configured.  It
80714 +can be used to provide configuration-level documentation.  The MESSAGE
80715 +argument is the message (a string); TYPE should be MESSAGE, WARNING, or
80716 +ERROR.  The default is MESSAGE.
80717 +.PP
80718 +If TYPE is ERROR the router will fail to initialize.
80719 +.PP
80720 +
80721 +.SH "EXAMPLES"
80722 +
80723 +.nf
80724 +\&   Message("This configuration is deprecated; use test-tun.click instead.", WARNING)
80725 +\&   tun :: KernelTap(1.0.0.1/8);
80726 +\&   ...
80727 +.fi
80728 +.PP
80729 +
80730 +
80731 +
80732 +.SH "SEE ALSO"
80733 +.M Error "n" 
80734 +
80735 diff -Nurb click-1.6.0/inst/share/man/mann/Meter.n click-1.6.0-27/inst/share/man/mann/Meter.n
80736 --- click-1.6.0/inst/share/man/mann/Meter.n     1969-12-31 19:00:00.000000000 -0500
80737 +++ click-1.6.0-27/inst/share/man/mann/Meter.n  2009-02-11 14:08:51.000000000 -0500
80738 @@ -0,0 +1,65 @@
80739 +.\" -*- mode: nroff -*-
80740 +.\" Generated by 'click-elem2man' from '../elements/standard/meter.hh'
80741 +.de M
80742 +.IR "\\$1" "(\\$2)\\$3"
80743 +..
80744 +.de RM
80745 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80746 +..
80747 +.TH "METER" n "11/Feb/2009" "Click"
80748 +.SH "NAME"
80749 +Meter \- Click element;
80750 +classifies packet stream by rate (pkt/s)
80751 +.SH "SYNOPSIS"
80752 +\fBMeter\fR(RATE1, RATE2, ..., RATE\fIn\fR)
80753 +
80754 +\fBPorts\fR: 1 input, 2 or more outputs
80755 +.br
80756 +\fBProcessing\fR: push
80757 +.br
80758 +\fBPackage\fR: standard (core)
80759 +.br
80760 +.SH "DESCRIPTION"
80761 +Classifies packets based on the rate of packet arrival. The rate is
80762 +measured in packets per second using an exponential weighted moving
80763 +average. (The related 
80764 +.M BandwidthMeter "n" 
80765 +element measures rates in bytes per
80766 +second.)
80767 +.PP
80768 +The configuration string consists of one or more rate arguments. Earlier
80769 +rates in the list must be less than later rates. A \fBMeter\fR with \fIn\fR rate
80770 +arguments will have \fIn\fR+1 outputs. It sends packets out the output
80771 +corresponding to the current rate. If the rate is less than RATE1 packets
80772 +are sent to output 0; if it is >= RATE1 but < RATE2, packets are sent to
80773 +output 1; and so on. If it is >= RATE\fIn\fR, packets are sent to output \fIn\fR.
80774 +.PP
80775 +
80776 +.SH "NOTES"
80777 +The entire packet stream is sent to the output corresponding to the current
80778 +rate. If you would like the packet stream to be split, with at most RATE1
80779 +packets per second being sent out the first output and the remainder being
80780 +sent to the second output, check out 
80781 +.M RatedSplitter "n" .
80782 +.PP
80783 +
80784 +.SH "EXAMPLES"
80785 +This configuration fragment drops the input stream when it is generating
80786 +more than 10,000 packets per second.
80787 +.PP
80788 +.nf
80789 +\&  ... -> m :: Meter(10000) -> ...;
80790 +\&  m[1] -> Discard;
80791 +.fi
80792 +.PP
80793 +
80794 +
80795 +
80796 +.SH "SEE ALSO"
80797 +.M BandwidthMeter n ,
80798 +.M RatedSplitter n ,
80799 +.M Shaper n ,
80800 +.M BandwidthShaper n ,
80801 +.M RatedUnqueue n ,
80802 +.M BandwidthRatedUnqueue "n" 
80803 +
80804 diff -Nurb click-1.6.0/inst/share/man/mann/MixedQueue.n click-1.6.0-27/inst/share/man/mann/MixedQueue.n
80805 --- click-1.6.0/inst/share/man/mann/MixedQueue.n        1969-12-31 19:00:00.000000000 -0500
80806 +++ click-1.6.0-27/inst/share/man/mann/MixedQueue.n     2009-02-11 14:08:51.000000000 -0500
80807 @@ -0,0 +1,90 @@
80808 +.\" -*- mode: nroff -*-
80809 +.\" Generated by 'click-elem2man' from '../elements/standard/mixedqueue.hh'
80810 +.de M
80811 +.IR "\\$1" "(\\$2)\\$3"
80812 +..
80813 +.de RM
80814 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80815 +..
80816 +.TH "MIXEDQUEUE" n "11/Feb/2009" "Click"
80817 +.SH "NAME"
80818 +MixedQueue \- Click element;
80819 +stores packets in a FIFO/LIFO queue
80820 +.SH "SYNOPSIS"
80821 +MixedQueue
80822 +.br
80823 +\fBMixedQueue\fR(CAPACITY)
80824 +
80825 +\fBPorts\fR: 2 inputs, 1 output
80826 +.br
80827 +\fBProcessing\fR: push inputs, pull outputs
80828 +.br
80829 +\fBPackage\fR: standard (core)
80830 +.br
80831 +.SH "DESCRIPTION"
80832 +Stores incoming packets in a mixed first-in-first-out/last-in-first-out queue.
80833 +In particular, \fBMixedQueue\fR's first input is FIFO, but its second input is LIFO.
80834 +The queue is full when it holds CAPACITY packets. When full, \fBMixedQueue\fR drops
80835 +incoming FIFO packets, but drops the oldest packet to make room for incoming
80836 +LIFO packets. The default for CAPACITY is 1000.
80837 +.PP
80838 +\fBMixedQueue\fR notifies interested parties when it becomes empty and when a
80839 +formerly-empty queue receives a packet. The empty notification takes place
80840 +some time after the queue goes empty, to prevent thrashing for queues that
80841 +hover around 1 or 2 packets long.
80842 +.PP
80843 +
80844 +.SH "EXAMPLES"
80845 +This diagram shows the state of a \fBMixedQueue\fR after 5 pushes, of packets A
80846 +through E. The queue's head is on the left.
80847 +.PP
80848 +.nf
80849 +\&     initial state        empty
80850 +\&     push(0, A)           [A]
80851 +\&     push(0, B)           [A B]
80852 +\&     push(1, C)           [C A B]
80853 +\&     push(0, D)           [C A B D]
80854 +\&     push(1, E)           [E C A B D]
80855 +.fi
80856 +.PP
80857 +
80858 +
80859 +
80860 +.SH "SYNCHRONIZATION"
80861 +Note for multithreaded Click: Unlike 
80862 +.M Queue "n" ,
80863 +whose input and output ports need
80864 +not be synchronized, \fBMixedQueue\fR requires synchronization between its LIFO
80865 +input and its output. You will need to prevent a thread from pushing to the
80866 +LIFO input at the same time that a different thread pulls from the output.
80867 +.PP
80868 +
80869 +.SH "ELEMENT HANDLERS"
80870 +
80871 +
80872 +
80873 +.IP "\fBlength\fR (read-only)" 5
80874 +Returns the current number of packets in the queue.
80875 +.IP "" 5
80876 +.IP "\fBhighwater_length\fR (read-only)" 5
80877 +Returns the maximum number of packets that have ever been in the queue at once.
80878 +.IP "" 5
80879 +.IP "\fBcapacity\fR (read/write)" 5
80880 +Returns or sets the queue's capacity.
80881 +.IP "" 5
80882 +.IP "\fBdrops\fR (read-only)" 5
80883 +Returns the number of packets dropped by the queue so far.
80884 +.IP "" 5
80885 +.IP "\fBreset_counts\fR (write-only)" 5
80886 +When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters.
80887 +.IP "" 5
80888 +.IP "\fBreset\fR (write-only)" 5
80889 +When written, drops all packets in the queue.
80890 +.IP "" 5
80891 +.PP
80892 +
80893 +.SH "SEE ALSO"
80894 +.M Queue n ,
80895 +.M SimpleQueue n ,
80896 +.M FrontDropQueue "n" 
80897 +
80898 diff -Nurb click-1.6.0/inst/share/man/mann/NotifierQueue.n click-1.6.0-27/inst/share/man/mann/NotifierQueue.n
80899 --- click-1.6.0/inst/share/man/mann/NotifierQueue.n     1969-12-31 19:00:00.000000000 -0500
80900 +++ click-1.6.0-27/inst/share/man/mann/NotifierQueue.n  2009-02-11 14:08:52.000000000 -0500
80901 @@ -0,0 +1,83 @@
80902 +.\" -*- mode: nroff -*-
80903 +.\" Generated by 'click-elem2man' from '../elements/standard/notifierqueue.hh'
80904 +.de M
80905 +.IR "\\$1" "(\\$2)\\$3"
80906 +..
80907 +.de RM
80908 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80909 +..
80910 +.TH "NOTIFIERQUEUE" n "11/Feb/2009" "Click"
80911 +.SH "NAME"
80912 +NotifierQueue \- Click element;
80913 +stores packets in a FIFO queue
80914 +.SH "SYNOPSIS"
80915 +NotifierQueue
80916 +.br
80917 +\fBNotifierQueue\fR(CAPACITY)
80918 +
80919 +\fBPorts\fR: 1 input, 1 output
80920 +.br
80921 +\fBProcessing\fR: push inputs, pull outputs
80922 +.br
80923 +\fBPackage\fR: standard (core)
80924 +.br
80925 +.SH "DESCRIPTION"
80926 +Stores incoming packets in a first-in-first-out queue.
80927 +Drops incoming packets if the queue already holds CAPACITY packets.
80928 +The default for CAPACITY is 1000.
80929 +.PP
80930 +\fBNotifierQueue\fR notifies interested parties when it becomes empty and when a
80931 +formerly-empty queue receives a packet. The empty notification takes place
80932 +some time after the queue goes empty, to prevent thrashing for queues that
80933 +hover around 1 or 2 packets long. In all other respects, \fBNotifierQueue\fR behaves
80934 +like 
80935 +.M SimpleQueue "n" .
80936 +.PP
80937 +\fBMultithreaded Click note:\fR \fBNotifierQueue\fR is designed to be used in an
80938 +environment with at most one concurrent pusher and at most one concurrent
80939 +puller.  Thus, at most one thread pushes to the \fBNotifierQueue\fR at a time and at
80940 +most one thread pulls from the \fBNotifierQueue\fR at a time.  Different threads can
80941 +push to and pull from the \fBNotifierQueue\fR concurrently, however.  See 
80942 +.M MSQueue "n" 
80943 +for
80944 +a queue that can support multiple concurrent pushers.
80945 +.PP
80946 +
80947 +.SH "NOTES"
80948 +The 
80949 +.M Queue "n" 
80950 +element acts like \fBNotifierQueue\fR, but additionally notifies
80951 +interested parties when it changes state from nonfull to full or vice versa.
80952 +.PP
80953 +
80954 +.SH "ELEMENT HANDLERS"
80955 +
80956 +
80957 +
80958 +.IP "\fBlength\fR (read-only)" 5
80959 +Returns the current number of packets in the queue.
80960 +.IP "" 5
80961 +.IP "\fBhighwater_length\fR (read-only)" 5
80962 +Returns the maximum number of packets that have ever been in the queue at once.
80963 +.IP "" 5
80964 +.IP "\fBcapacity\fR (read/write)" 5
80965 +Returns or sets the queue's capacity.
80966 +.IP "" 5
80967 +.IP "\fBdrops\fR (read-only)" 5
80968 +Returns the number of packets dropped by the queue so far.
80969 +.IP "" 5
80970 +.IP "\fBreset_counts\fR (write-only)" 5
80971 +When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters.
80972 +.IP "" 5
80973 +.IP "\fBreset\fR (write-only)" 5
80974 +When written, drops all packets in the queue.
80975 +.IP "" 5
80976 +.PP
80977 +
80978 +.SH "SEE ALSO"
80979 +.M Queue n ,
80980 +.M SimpleQueue n ,
80981 +.M MixedQueue n ,
80982 +.M FrontDropQueue n ,
80983 +.M MSQueue "n" 
80984 +
80985 diff -Nurb click-1.6.0/inst/share/man/mann/Null.n click-1.6.0-27/inst/share/man/mann/Null.n
80986 --- click-1.6.0/inst/share/man/mann/Null.n      1969-12-31 19:00:00.000000000 -0500
80987 +++ click-1.6.0-27/inst/share/man/mann/Null.n   2009-02-11 14:08:51.000000000 -0500
80988 @@ -0,0 +1,29 @@
80989 +.\" -*- mode: nroff -*-
80990 +.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh'
80991 +.de M
80992 +.IR "\\$1" "(\\$2)\\$3"
80993 +..
80994 +.de RM
80995 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
80996 +..
80997 +.TH "NULL" n "11/Feb/2009" "Click"
80998 +.SH "NAME"
80999 +Null \- Click element;
81000 +passes packets unchanged
81001 +.SH "SYNOPSIS"
81002 +\fBNull\fR
81003 +
81004 +\fBPorts\fR: 1 input, 1 output
81005 +.br
81006 +\fBProcessing\fR: agnostic
81007 +.br
81008 +\fBPackage\fR: standard (core)
81009 +.br
81010 +.SH "DESCRIPTION"
81011 +Just passes packets along without doing anything else.
81012 +.PP
81013 +
81014 +.SH "SEE ALSO"
81015 +.M PushNull n ,
81016 +.M PullNull "n" 
81017 +
81018 diff -Nurb click-1.6.0/inst/share/man/mann/Null1.n click-1.6.0-27/inst/share/man/mann/Null1.n
81019 --- click-1.6.0/inst/share/man/mann/Null1.n     1969-12-31 19:00:00.000000000 -0500
81020 +++ click-1.6.0-27/inst/share/man/mann/Null1.n  2009-02-11 14:08:52.000000000 -0500
81021 @@ -0,0 +1,35 @@
81022 +.\" -*- mode: nroff -*-
81023 +.\" Generated by 'click-elem2man' from '../elements/standard/nulls.hh'
81024 +.de M
81025 +.IR "\\$1" "(\\$2)\\$3"
81026 +..
81027 +.de RM
81028 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81029 +..
81030 +.TH "NULL1" n "11/Feb/2009" "Click"
81031 +.SH "NAME"
81032 +Null1 \- Click element;
81033 +copy of 
81034 +.M Null "n" 
81035 +.SH "SYNOPSIS"
81036 +\fBNull1\fR() ... Null8()
81037 +
81038 +\fBPorts\fR: 1 input, 1 output
81039 +.br
81040 +\fBProcessing\fR: agnostic
81041 +.br
81042 +\fBPackage\fR: standard (core)
81043 +.br
81044 +.SH "DESCRIPTION"
81045 +The elements \fBNull1\fR through Null8 are reimplementations of 
81046 +.M Null "n" .
81047 +However, each
81048 +has independent code, so the i-cache cost of using all eight elements (\fBNull1\fR
81049 +through Null8) is eight times the cost of eight 
81050 +.M Null "n" 
81051 +elements.
81052 +.PP
81053 +
81054 +.SH "SEE ALSO"
81055 +.M Null "n" 
81056 +
81057 diff -Nurb click-1.6.0/inst/share/man/mann/Paint.n click-1.6.0-27/inst/share/man/mann/Paint.n
81058 --- click-1.6.0/inst/share/man/mann/Paint.n     1969-12-31 19:00:00.000000000 -0500
81059 +++ click-1.6.0-27/inst/share/man/mann/Paint.n  2009-02-11 14:08:52.000000000 -0500
81060 @@ -0,0 +1,42 @@
81061 +.\" -*- mode: nroff -*-
81062 +.\" Generated by 'click-elem2man' from '../elements/standard/paint.hh'
81063 +.de M
81064 +.IR "\\$1" "(\\$2)\\$3"
81065 +..
81066 +.de RM
81067 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81068 +..
81069 +.TH "PAINT" n "11/Feb/2009" "Click"
81070 +.SH "NAME"
81071 +Paint \- Click element;
81072 +sets packet paint annotations
81073 +.SH "SYNOPSIS"
81074 +\fBPaint\fR(COLOR)
81075 +
81076 +\fBPorts\fR: 1 input, 1 output
81077 +.br
81078 +\fBProcessing\fR: agnostic
81079 +.br
81080 +\fBPackage\fR: standard (core)
81081 +.br
81082 +.SH "DESCRIPTION"
81083 +Sets each packet's paint annotation to COLOR, an integer 0..255. Note that a
81084 +packet may only be painted with one color.
81085 +.PP
81086 +
81087 +.SH "ELEMENT HANDLERS"
81088 +
81089 +
81090 +
81091 +.IP "\fBcolor\fR (read/write)" 5
81092 +get/set the color to paint
81093 +.IP "" 5
81094 +.PP
81095 +
81096 +.SH "NOTES"
81097 +The paint annotation is stored in user annotation 0.
81098 +.PP
81099 +
81100 +.SH "SEE ALSO"
81101 +.M PaintTee "n" 
81102 +
81103 diff -Nurb click-1.6.0/inst/share/man/mann/PaintSwitch.n click-1.6.0-27/inst/share/man/mann/PaintSwitch.n
81104 --- click-1.6.0/inst/share/man/mann/PaintSwitch.n       1969-12-31 19:00:00.000000000 -0500
81105 +++ click-1.6.0-27/inst/share/man/mann/PaintSwitch.n    2009-02-11 14:08:51.000000000 -0500
81106 @@ -0,0 +1,43 @@
81107 +.\" -*- mode: nroff -*-
81108 +.\" Generated by 'click-elem2man' from '../elements/standard/paintswitch.hh'
81109 +.de M
81110 +.IR "\\$1" "(\\$2)\\$3"
81111 +..
81112 +.de RM
81113 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81114 +..
81115 +.TH "PAINTSWITCH" n "11/Feb/2009" "Click"
81116 +.SH "NAME"
81117 +PaintSwitch \- Click element;
81118 +sends packet stream to output chosen per-packet
81119 +.SH "SYNOPSIS"
81120 +\fBPaintSwitch\fR
81121 +
81122 +\fBPorts\fR: 1 input, any number of outputs
81123 +.br
81124 +\fBProcessing\fR: push
81125 +.br
81126 +\fBPackage\fR: standard (core)
81127 +.br
81128 +.SH "DESCRIPTION"
81129 +\fBPaintSwitch\fR sends every incoming packet to one of its output ports --
81130 +specifically, output port number K, where K is the value of the
81131 +incoming packet's 
81132 +.M Paint "n" 
81133 +annotation.  If the paint annotation is set to
81134 +255, the packet is duplicated and sent to all outputs.  Since there
81135 +are only 256 different paint annotations, including the special value
81136 +of 255, \fBPaintSwitch\fR can have up to 255 outputs.  If there is no output
81137 +port K, the packet is dropped.
81138 +.PP
81139 +
81140 +.SH "SEE ALSO"
81141 +.M StaticSwitch n ,
81142 +.M PullSwitch n ,
81143 +.M RoundRobinSwitch n ,
81144 +.M StrideSwitch n ,
81145 +.M HashSwitch n ,
81146 +.M RandomSwitch n ,
81147 +.M Paint n ,
81148 +.M PaintTee "n" 
81149 +
81150 diff -Nurb click-1.6.0/inst/share/man/mann/PaintTee.n click-1.6.0-27/inst/share/man/mann/PaintTee.n
81151 --- click-1.6.0/inst/share/man/mann/PaintTee.n  1969-12-31 19:00:00.000000000 -0500
81152 +++ click-1.6.0-27/inst/share/man/mann/PaintTee.n       2009-02-11 14:08:51.000000000 -0500
81153 @@ -0,0 +1,47 @@
81154 +.\" -*- mode: nroff -*-
81155 +.\" Generated by 'click-elem2man' from '../elements/standard/painttee.hh'
81156 +.de M
81157 +.IR "\\$1" "(\\$2)\\$3"
81158 +..
81159 +.de RM
81160 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81161 +..
81162 +.TH "PAINTTEE" n "11/Feb/2009" "Click"
81163 +.SH "NAME"
81164 +PaintTee \- Click element;
81165 +duplicates packets with given paint annotation
81166 +.SH "SYNOPSIS"
81167 +\fBPaintTee\fR(COLOR)
81168 +
81169 +\fBPorts\fR: 1 input, 2 outputs
81170 +.br
81171 +\fBProcessing\fR: agnostic, but output 1 is push
81172 +.br
81173 +\fBPackage\fR: standard (core)
81174 +.br
81175 +.SH "DESCRIPTION"
81176 +\fBPaintTee\fR sends every packet through output 0. If the packet's
81177 +color annotation is equal to COLOR (an integer), it also
81178 +sends a copy through output 1.
81179 +.PP
81180 +
81181 +.SH "EXAMPLES"
81182 +Intended to produce redirects in conjunction with 
81183 +.M Paint "n" 
81184 +and
81185 +.M ICMPError "n" 
81186 +as follows:
81187 +.PP
81188 +.nf
81189 +\&  FromDevice(eth7) -> Paint(7) -> ...
81190 +\&  routingtable[7] -> pt :: PaintTee(7) -> ... -> ToDevice(eth7)
81191 +\&  pt[1] -> ICMPError(18.26.4.24, 5, 1) -> [0]routingtable;
81192 +.fi
81193 +.PP
81194 +
81195 +
81196 +
81197 +.SH "SEE ALSO"
81198 +.M Paint n ,
81199 +.M ICMPError "n" 
81200 +
81201 diff -Nurb click-1.6.0/inst/share/man/mann/PerfCountAccum.n click-1.6.0-27/inst/share/man/mann/PerfCountAccum.n
81202 --- click-1.6.0/inst/share/man/mann/PerfCountAccum.n    1969-12-31 19:00:00.000000000 -0500
81203 +++ click-1.6.0-27/inst/share/man/mann/PerfCountAccum.n 2009-02-11 14:08:51.000000000 -0500
81204 @@ -0,0 +1,59 @@
81205 +.\" -*- mode: nroff -*-
81206 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/perfcountaccum.hh'
81207 +.de M
81208 +.IR "\\$1" "(\\$2)\\$3"
81209 +..
81210 +.de RM
81211 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81212 +..
81213 +.TH "PERFCOUNTACCUM" n "11/Feb/2009" "Click"
81214 +.SH "NAME"
81215 +PerfCountAccum \- Click element;
81216 +collects differences in Pentium Pro performance metrics
81217 +.SH "SYNOPSIS"
81218 +\fBPerfCountAccum\fR(TYPE)
81219 +
81220 +\fBPorts\fR: 1 input, 1 output
81221 +.br
81222 +\fBProcessing\fR: agnostic
81223 +.br
81224 +\fBDrivers\fR: linuxmodule
81225 +.br
81226 +\fBPackage\fR: linuxmodule (core)
81227 +.br
81228 +.SH "DESCRIPTION"
81229 +Expects incoming packets to have their performance metric annotation set
81230 +according to the Pentium Pro performance metric TYPE. Calculates the
81231 +current value of the performance metric TYPE, and keeps track of the total
81232 +accumulated difference.
81233 +.PP
81234 +
81235 +.SH "NOTES"
81236 +A packet has room for either exactly one cycle count or exactly one
81237 +performance metric.
81238 +.PP
81239 +See 
81240 +.M SetPerfCount "n" 
81241 +for valid performance metric names.
81242 +.PP
81243 +
81244 +.SH "ELEMENT HANDLERS"
81245 +
81246 +
81247 +
81248 +.IP "\fBcount\fR (read-only)" 5
81249 +Returns the number of packets that have passed.
81250 +.IP "" 5
81251 +.IP "\fBaccum\fR (read-only)" 5
81252 +Returns the accumulated changes in the metric TYPE for all passing packets.
81253 +.IP "" 5
81254 +.IP "\fBreset_counts\fR (write-only)" 5
81255 +Resets \f(CWcount\fR and \f(CWaccum\fR counters to zero when written.
81256 +.IP "" 5
81257 +.PP
81258 +
81259 +.SH "SEE ALSO"
81260 +.M SetPerfCount n ,
81261 +.M SetCycleCount n ,
81262 +.M CycleCountAccum "n" 
81263 +
81264 diff -Nurb click-1.6.0/inst/share/man/mann/PerfCountInfo.n click-1.6.0-27/inst/share/man/mann/PerfCountInfo.n
81265 --- click-1.6.0/inst/share/man/mann/PerfCountInfo.n     1969-12-31 19:00:00.000000000 -0500
81266 +++ click-1.6.0-27/inst/share/man/mann/PerfCountInfo.n  2009-02-11 14:08:52.000000000 -0500
81267 @@ -0,0 +1,47 @@
81268 +.\" -*- mode: nroff -*-
81269 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/perfcountinfo.hh'
81270 +.de M
81271 +.IR "\\$1" "(\\$2)\\$3"
81272 +..
81273 +.de RM
81274 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81275 +..
81276 +.TH "PERFCOUNTINFO" n "11/Feb/2009" "Click"
81277 +.SH "NAME"
81278 +PerfCountInfo \- Click element;
81279 +turn on Pentium Pro performance metrics
81280 +.SH "SYNOPSIS"
81281 +\fBPerfCountInfo\fR([TYPE0, TYPE1])
81282 +
81283 +\fBDrivers\fR: linuxmodule
81284 +.br
81285 +\fBPackage\fR: linuxmodule (core)
81286 +.br
81287 +.SH "DESCRIPTION"
81288 +The Pentium Pro CPU can maintain up to two performance counters.
81289 +\fBPerfCountInfo\fR turns on those counters. TYPE0 is the type of performance
81290 +counter 0, TYPE1 is the type of performance counter 1. Either type may be
81291 +empty, in which case that counter will not be used.
81292 +.PP
81293 +The 
81294 +.M SetPerfCount "n" 
81295 +and 
81296 +.M PerfCountAccum "n" 
81297 +elements automatically turn on the
81298 +relevant counters, so \fBPerfCountInfo\fR is not normally needed. It is useful if
81299 +you are instrumenting individual elements.
81300 +.PP
81301 +
81302 +.SH "NOTES"
81303 +Valid performance metric names are \f(CWBUS_TRAN_INVAL\fR, \f(CWBUS_TRAN_MEM\fR,
81304 +\f(CWDCU_MISS_OUTSTANDING\fR, \f(CWIFU_FETCH\fR, \f(CWIFU_FETCH_MISS\fR, \f(CWIFU_MEM_STALL\fR,
81305 +\f(CWINST_RETIRED\fR, \f(CWL2_IFETCH\fR, \f(CWL2_LD\fR, \f(CWL2_LINES_IN\fR, \f(CWL2_LINES_OUT\fR,
81306 +\f(CWL2_LINES_OUTM\fR, and \f(CWL2_RQSTS\fR.
81307 +.PP
81308 +
81309 +.SH "SEE ALSO"
81310 +.M SetPerfCount n ,
81311 +.M PerfCountAccum n ,
81312 +.M SetCycleCount n ,
81313 +.M CycleCountAccum "n" 
81314 +
81315 diff -Nurb click-1.6.0/inst/share/man/mann/PokeHandlers.n click-1.6.0-27/inst/share/man/mann/PokeHandlers.n
81316 --- click-1.6.0/inst/share/man/mann/PokeHandlers.n      1969-12-31 19:00:00.000000000 -0500
81317 +++ click-1.6.0-27/inst/share/man/mann/PokeHandlers.n   2009-02-11 14:08:51.000000000 -0500
81318 @@ -0,0 +1,82 @@
81319 +.\" -*- mode: nroff -*-
81320 +.\" Generated by 'click-elem2man' from '../elements/standard/pokehandlers.hh'
81321 +.de M
81322 +.IR "\\$1" "(\\$2)\\$3"
81323 +..
81324 +.de RM
81325 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81326 +..
81327 +.TH "POKEHANDLERS" n "11/Feb/2009" "Click"
81328 +.SH "NAME"
81329 +PokeHandlers \- Click element;
81330 +calls write handlers at specified times
81331 +.SH "SYNOPSIS"
81332 +\fBPokeHandlers\fR(DIRECTIVE, ...)
81333 +
81334 +\fBPorts\fR: none
81335 +.br
81336 +\fBPackage\fR: standard (core)
81337 +.br
81338 +.SH "DESCRIPTION"
81339 +\fBThis element is deprecated.  Use the Script element instead.\fR
81340 +.PP
81341 +Runs read and write handlers at specified times. Each configuration argument
81342 +is a directive, taken from this list:
81343 +.PP
81344 +
81345 +
81346 +.IP "`read HANDLER'" 8
81347 +Call a read handler and report its result. At user level, the result is
81348 +printed on standard error; in a Linux kernel, it is printed to
81349 +/var/log/messages. HANDLER should be either a global read handler name, or
81350 +`ELEMENT.HNAME', where ELEMENT is an element name and HNAME the name of one of
81351 +its read handlers.
81352 +.IP "" 8
81353 +.IP "`write HANDLER [VALUE]'" 8
81354 +Call a write handler with a given value. At user level, errors reported by
81355 +write handlers are printed to standard error. In the Linux kernel module, they
81356 +are printed to /var/log/messages (accessible through 
81357 +.M dmesg 1 )
81358 +and to
81359 +/proc/click/errors.
81360 +.IP "" 8
81361 +.IP "`stop'" 8
81362 +Stop the driver.
81363 +.IP "" 8
81364 +.IP "`wait DELAY'" 8
81365 +Wait for DELAY seconds before continuing to the next directive.
81366 +.IP "" 8
81367 +.IP "`pause'" 8
81368 +Wait until the `unpause' write handler is called, then continue to the next directive.
81369 +.IP "" 8
81370 +.IP "`loop'" 8
81371 +Start over from the first directive.
81372 +.IP "" 8
81373 +.PP
81374 +
81375 +.SH "EXAMPLES"
81376 +
81377 +.nf
81378 +\&  PokeHandlers(write red.max_p 0.8,
81379 +\&               wait 1.5, // delay for 1.5 seconds
81380 +\&               write red.max_p 0.5);
81381 +.fi
81382 +.PP
81383 +
81384 +
81385 +
81386 +.SH "ELEMENT HANDLERS"
81387 +
81388 +
81389 +
81390 +.IP "\fBunpause\fR (write-only)" 5
81391 +If paused, continue to next directive.  Otherwise, there is no effect.
81392 +.IP "" 5
81393 +.IP "\fBpaused\fR (read-only)" 5
81394 +Returns `true' if paused, else `false'.
81395 +.IP "" 5
81396 +.PP
81397 +
81398 +.SH "SEE ALSO"
81399 +dmesg(1)
81400 +
81401 diff -Nurb click-1.6.0/inst/share/man/mann/PollDevice.n click-1.6.0-27/inst/share/man/mann/PollDevice.n
81402 --- click-1.6.0/inst/share/man/mann/PollDevice.n        1969-12-31 19:00:00.000000000 -0500
81403 +++ click-1.6.0-27/inst/share/man/mann/PollDevice.n     2009-02-11 14:08:51.000000000 -0500
81404 @@ -0,0 +1,103 @@
81405 +.\" -*- mode: nroff -*-
81406 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/polldevice.hh'
81407 +.de M
81408 +.IR "\\$1" "(\\$2)\\$3"
81409 +..
81410 +.de RM
81411 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81412 +..
81413 +.TH "POLLDEVICE" n "11/Feb/2009" "Click"
81414 +.SH "NAME"
81415 +PollDevice \- Click element;
81416 +polls packets from network device (kernel)
81417 +.SH "SYNOPSIS"
81418 +\fBPollDevice\fR(DEVNAME [, \fIkeywords\fR PROMISC, BURST, TIMESTAMP...])
81419 +
81420 +\fBPorts\fR: no inputs, 1 output
81421 +.br
81422 +\fBProcessing\fR: push
81423 +.br
81424 +\fBDrivers\fR: linuxmodule
81425 +.br
81426 +\fBPackage\fR: linuxmodule (core)
81427 +.br
81428 +.SH "DESCRIPTION"
81429 +Poll packets received by the Linux network interface named DEVNAME. Packets
81430 +will be pushed to output 0. The packets include the link-level header. DEVNAME
81431 +may also be an Ethernet address, in which case \fBPollDevice\fR searches for a
81432 +device with that address.
81433 +.PP
81434 +Each time \fBPollDevice\fR is scheduled, it emits at most BURST packets. By default,
81435 +BURST is 8.
81436 +.PP
81437 +This element is only available in the Linux kernel module.
81438 +.PP
81439 +Keyword arguments are:
81440 +.PP
81441 +
81442 +
81443 +.IP "PROMISC" 8
81444 +Boolean.  If true, the device is put into promiscuous mode while 
81445 +.M FromDevice "n" 
81446 +is
81447 +active.  Default is false.
81448 +.IP "" 8
81449 +.IP "BURST" 8
81450 +Unsigned integer.  Sets the BURST parameter.
81451 +.IP "" 8
81452 +.IP "TIMESTAMP" 8
81453 +Boolean.  If true, then ensure that received packets have correctly-set
81454 +timestamp annotations.  Default is true.
81455 +.IP "" 8
81456 +.IP "QUIET" 8
81457 +Boolean.  If true, then suppress device up/down messages.  Default is false.
81458 +.IP "" 8
81459 +.IP "HEADROOM" 8
81460 +Unsigned.  Amount of extra headroom to request on each packet.  Default is 64.
81461 +.IP "" 8
81462 +.IP "ALLOW_NONEXISTENT" 8
81463 +Allow nonexistent devices. If true, and no device named DEVNAME exists when
81464 +the router is initialized, then \fBPollDevice\fR will report a warning (rather than
81465 +an error). Later, while the router is running, if a device named DEVNAME
81466 +appears, \fBPollDevice\fR will seamlessly begin emitting its packets. Default is
81467 +false.
81468 +.IP "" 8
81469 +.PP
81470 +
81471 +.SH "NOTES"
81472 +Linux won't see any packets from the device. If you want Linux to process
81473 +packets, you should hand them to 
81474 +.M ToHost "n" .
81475 +Also, if you would like to send
81476 +packets while using \fBPollDevice\fR, you should also define a 
81477 +.M ToDevice "n" 
81478 +on the same
81479 +device.
81480 +.PP
81481 +This element can only be used with devices that support the Click polling
81482 +extension. We have written polling patches for the Tulip Ethernet driver.
81483 +.PP
81484 +Linux device drivers, and thus 
81485 +.M FromDevice "n" ,
81486 +should set packets' timestamp,
81487 +packet-type, and device annotations.
81488 +.PP
81489 +
81490 +.SH "ELEMENT HANDLERS"
81491 +
81492 +
81493 +
81494 +.IP "\fBcount\fR (read-only)" 5
81495 +Returns the number of packets \fBPollDevice\fR has received from the input card.
81496 +.IP "" 5
81497 +.IP "\fBreset_counts\fR (write-only)" 5
81498 +Resets \f(CWcount\fR counter to zero when written.
81499 +.IP "" 5
81500 +.PP
81501 +
81502 +.SH "SEE ALSO"
81503 +.M FromDevice n ,
81504 +.M ToDevice n ,
81505 +.M FromHost n ,
81506 +.M ToHost "n" 
81507 +
81508 diff -Nurb click-1.6.0/inst/share/man/mann/PortInfo.n click-1.6.0-27/inst/share/man/mann/PortInfo.n
81509 --- click-1.6.0/inst/share/man/mann/PortInfo.n  1969-12-31 19:00:00.000000000 -0500
81510 +++ click-1.6.0-27/inst/share/man/mann/PortInfo.n       2009-02-11 14:08:52.000000000 -0500
81511 @@ -0,0 +1,65 @@
81512 +.\" -*- mode: nroff -*-
81513 +.\" Generated by 'click-elem2man' from '../include/click/standard/portinfo.hh'
81514 +.de M
81515 +.IR "\\$1" "(\\$2)\\$3"
81516 +..
81517 +.de RM
81518 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81519 +..
81520 +.TH "PORTINFO" n "11/Feb/2009" "Click"
81521 +.SH "NAME"
81522 +PortInfo \- Click element;
81523 +stores named TCP/UDP port information
81524 +.SH "SYNOPSIS"
81525 +\fBPortInfo\fR(NAME PORT[/PROTOCOL], ...)
81526 +
81527 +\fBPorts\fR: None
81528 +.br
81529 +\fBPackage\fR: standard (core)
81530 +.br
81531 +.SH "DESCRIPTION"
81532 +Lets you use mnemonic names for TCP and UDP ports.  Each argument has the form
81533 +`NAME PORT[/PROTOCOL]', which associates the given PORT/PROTOCOL pair with the
81534 +NAME.  If PROTOCOL is left off, the NAME applies to both TCP and UDP.  For
81535 +example, in a configuration containing
81536 +.PP
81537 +.nf
81538 +\&   PortInfo(ssh 22, http 80),
81539 +.fi
81540 +.PP
81541 +configuration strings can use \f(CWssh\fR and \f(CWhttp\fR as mnemonics for the port
81542 +numbers 22 and 80, respectively.
81543 +.PP
81544 +\fBPortInfo\fR names are local with respect to compound elements.  That is, names
81545 +created inside a compound element apply only within that compound element and
81546 +its subelements.  For example:
81547 +.PP
81548 +.nf
81549 +\&   PortInfo(src 10);
81550 +\&   compound :: {
81551 +\&     PortInfo(dst 100);
81552 +\&     ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ...  // OK
81553 +\&   };
81554 +\&   ... -> UDPIPEncap(1.0.0.1, src, 2.0.0.1, dst) -> ...
81555 +\&                                         // error: `dst' undefined
81556 +.fi
81557 +.PP
81558 +
81559 +
81560 +
81561 +.SH "NOTES"
81562 +If you do not define a port for a given name, \fBPortInfo\fR will use the default,
81563 +if any.  At user level, \fBPortInfo\fR uses the 
81564 +.M getservbyname 3 
81565 +function to look
81566 +up ports by name.  In the kernel, there are no default ports.
81567 +.PP
81568 +\fBPortInfo\fR will parse arguments containing more than one name, as `\f(CWNAME
81569 +PORT/PROTOCOL NAME...\fR', and comments starting with `\f(CW#\fR' are ignored.  Thus,
81570 +lines from \fI/etc/services\fR can be used verbatim as \fBPortInfo\fR configuration
81571 +arguments.
81572 +.PP
81573 +
81574 +.SH "SEE ALSO"
81575 +.M AddressInfo "n" 
81576 +
81577 diff -Nurb click-1.6.0/inst/share/man/mann/Print.n click-1.6.0-27/inst/share/man/mann/Print.n
81578 --- click-1.6.0/inst/share/man/mann/Print.n     1969-12-31 19:00:00.000000000 -0500
81579 +++ click-1.6.0-27/inst/share/man/mann/Print.n  2009-02-11 14:08:51.000000000 -0500
81580 @@ -0,0 +1,53 @@
81581 +.\" -*- mode: nroff -*-
81582 +.\" Generated by 'click-elem2man' from '../elements/standard/print.hh'
81583 +.de M
81584 +.IR "\\$1" "(\\$2)\\$3"
81585 +..
81586 +.de RM
81587 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81588 +..
81589 +.TH "PRINT" n "11/Feb/2009" "Click"
81590 +.SH "NAME"
81591 +Print \- Click element;
81592 +prints packet contents
81593 +.SH "SYNOPSIS"
81594 +\fBPrint\fR([LABEL, LENGTH, \fIkeywords\fR])
81595 +
81596 +\fBPorts\fR: 1 input, 1 output
81597 +.br
81598 +\fBProcessing\fR: agnostic
81599 +.br
81600 +\fBPackage\fR: standard (core)
81601 +.br
81602 +.SH "DESCRIPTION"
81603 +Prints up to LENGTH bytes of data from each packet, in hex, preceded by the
81604 +LABEL text. Default LENGTH is 24.
81605 +.PP
81606 +Keyword arguments are:
81607 +.PP
81608 +
81609 +
81610 +.IP "LENGTH" 8
81611 +Number of bytes to print. Default is 24.
81612 +.IP "" 8
81613 +.IP "CONTENTS" 8
81614 +Determines whether the packet data is printed. It may be `NONE' (do not print
81615 +packet data), `HEX' (print packet data in hexadecimal), or `ASCII' (print
81616 +packet data in plaintext). Default is `HEX'.
81617 +.IP "" 8
81618 +.IP "TIMESTAMP" 8
81619 +Boolean. Determines whether to print each packet's timestamp in seconds since
81620 +1970. Default is false.
81621 +.IP "" 8
81622 +.IP "PRINTANNO" 8
81623 +Boolean. Determines whether to print each packet's user annotation bytes.  Default is false.
81624 +.IP "" 8
81625 +.IP "CPU" 8
81626 +Boolean; available only in the Linux kernel module. Determines whether to
81627 +print the current CPU ID for every packet. Default is false.
81628 +.IP "" 8
81629 +.PP
81630 +
81631 +.SH "SEE ALSO"
81632 +.M IPPrint "n" 
81633 +
81634 diff -Nurb click-1.6.0/inst/share/man/mann/PrioSched.n click-1.6.0-27/inst/share/man/mann/PrioSched.n
81635 --- click-1.6.0/inst/share/man/mann/PrioSched.n 1969-12-31 19:00:00.000000000 -0500
81636 +++ click-1.6.0-27/inst/share/man/mann/PrioSched.n      2009-02-11 14:08:52.000000000 -0500
81637 @@ -0,0 +1,38 @@
81638 +.\" -*- mode: nroff -*-
81639 +.\" Generated by 'click-elem2man' from '../elements/standard/priosched.hh'
81640 +.de M
81641 +.IR "\\$1" "(\\$2)\\$3"
81642 +..
81643 +.de RM
81644 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81645 +..
81646 +.TH "PRIOSCHED" n "11/Feb/2009" "Click"
81647 +.SH "NAME"
81648 +PrioSched \- Click element;
81649 +pulls from priority-scheduled inputs
81650 +.SH "SYNOPSIS"
81651 +PrioSched
81652 +
81653 +\fBPorts\fR: any number of inputs, 1 output
81654 +.br
81655 +\fBProcessing\fR: pull
81656 +.br
81657 +\fBPackage\fR: standard (core)
81658 +.br
81659 +.SH "DESCRIPTION"
81660 +Each time a pull comes in the output, \fBPrioSched\fR pulls from
81661 +each of the inputs starting from input 0.
81662 +The packet from the first successful pull is returned.
81663 +This amounts to a strict priority scheduler.
81664 +.PP
81665 +The inputs usually come from Queues or other pull schedulers.
81666 +\fBPrioSched\fR uses notification to avoid pulling from empty inputs.
81667 +.PP
81668 +
81669 +.SH "SEE ALSO"
81670 +.M Queue n ,
81671 +.M RoundRobinSched n ,
81672 +.M StrideSched n ,
81673 +.M DRRSched n ,
81674 +.M SimplePrioSched "n" 
81675 +
81676 diff -Nurb click-1.6.0/inst/share/man/mann/ProgressBar.n click-1.6.0-27/inst/share/man/mann/ProgressBar.n
81677 --- click-1.6.0/inst/share/man/mann/ProgressBar.n       1969-12-31 19:00:00.000000000 -0500
81678 +++ click-1.6.0-27/inst/share/man/mann/ProgressBar.n    2009-02-11 14:08:51.000000000 -0500
81679 @@ -0,0 +1,137 @@
81680 +.\" -*- mode: nroff -*-
81681 +.\" Generated by 'click-elem2man' from '../elements/userlevel/progressbar.hh'
81682 +.de M
81683 +.IR "\\$1" "(\\$2)\\$3"
81684 +..
81685 +.de RM
81686 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81687 +..
81688 +.TH "PROGRESSBAR" n "11/Feb/2009" "Click"
81689 +.SH "NAME"
81690 +ProgressBar \- Click element;
81691 +prints a progress bar to standard error
81692 +.SH "SYNOPSIS"
81693 +\fBProgressBar\fR(POSHANDLER [, SIZEHANDLER, \fIKEYWORDS\fR])
81694 +
81695 +\fBPorts\fR: none
81696 +.br
81697 +\fBDrivers\fR: userlevel
81698 +.br
81699 +\fBPackage\fR: userlevel (core)
81700 +.br
81701 +.SH "DESCRIPTION"
81702 +Reads progress information from handlers, and displays an ASCII-art progress
81703 +bar on standard error, indicating how much progress has been made and how much
81704 +remains to go.
81705 +.PP
81706 +POSHANDLER and SIZEHANDLER are read handlers. Each of them should return a
81707 +nonnegative real number. POSHANDLER is checked each time the progress bar
81708 +displays; SIZEHANDLER is checked just once, the first time the progress bar
81709 +comes up. Intuitively, POSHANDLER represents the "position"; the process is
81710 +complete when its value equals the "size" returned by SIZEHANDLER. You may
81711 +give multiple position and/or size handlers, as a space-separated list; their
81712 +values are added together.
81713 +.PP
81714 +Keyword arguments are:
81715 +.PP
81716 +
81717 +
81718 +.IP "FIXED_SIZE" 8
81719 +Nonnegative real number. Used as the size when SIZEHANDLER is not supplied.
81720 +Default is no fixed size.
81721 +.IP "" 8
81722 +.IP "BANNER" 8
81723 +String. Print this string before the progress bar. For example, this might be
81724 +a section of some filename. Default is empty.
81725 +.IP "" 8
81726 +.IP "UPDATE" 8
81727 +Time in seconds (millisecond precision). The progress bar updates itself with
81728 +this frequency. Default is 1/4 second.
81729 +.IP "" 8
81730 +.IP "ACTIVE" 8
81731 +Boolean. The progress bar will not initially display itself if this is false.
81732 +Default is true.
81733 +.IP "" 8
81734 +.IP "DELAY" 8
81735 +Time in seconds (millisecond precision). Don't print a progress bar until at
81736 +least DELAY seconds have passed. Use this to avoid trivial progress bars (that
81737 +is, progress bars that immediately go to 100%). Default is no delay.
81738 +.IP "" 8
81739 +.IP "CHECK_STDOUT" 8
81740 +Boolean. If true, and the standard output is connected to a terminal, then do
81741 +not print a progress bar. Default is false.
81742 +.IP "" 8
81743 +.PP
81744 +Only available in user-level processes.
81745 +.PP
81746 +.SH "EXAMPLES"
81747 +This \fBProgressBar\fR shows how far into the file 
81748 +.M FromDump "n" 
81749 +has gotten:
81750 +.PP
81751 +.nf
81752 +\&  fd :: FromDump(~/largedump.gz) -> ...
81753 +\&  ProgressBar(fd.filepos, fd.filesize);
81754 +.fi
81755 +.PP
81756 +Here are some example progress bars. The first form occurs when the file size
81757 +is known; the second, when it is not known.
81758 +.PP
81759 +.nf
81760 +\&   74% |**************     | 23315KB    00:01 ETA
81761 +\&  
81762 +\&  |           ***          |  5184KB    --:-- ETA
81763 +.fi
81764 +.PP
81765 +
81766 +
81767 +
81768 +.SH "NOTES"
81769 +Code based on the progress bar in the OpenSSH project's \fBscp\fR program, whose
81770 +authors are listed as Timo Rinne, Tatu Ylonen, Theo de Raadt, and Aaron
81771 +Campbell.
81772 +.PP
81773 +
81774 +.SH "ELEMENT HANDLERS"
81775 +
81776 +
81777 +
81778 +.IP "\fBmark_stopped\fR (write-only)" 5
81779 +When written, the progress bar changes to indicate that the transfer has
81780 +stopped, possibly prematurely.
81781 +.IP "" 5
81782 +.IP "\fBmark_done\fR (write-only)" 5
81783 +When written, the progress bar changes to indicate that the transfer has
81784 +successfully completed.
81785 +.IP "" 5
81786 +.IP "\fBpos\fR (read-only)" 5
81787 +Returns the progress bar's current position.
81788 +.IP "" 5
81789 +.IP "\fBsize\fR (read/write)" 5
81790 +Returns or sets the progress bar's size value, which is used to compute how
81791 +close the process is to completion.
81792 +.IP "" 5
81793 +.IP "\fBactive\fR (read/write)" 5
81794 +Returns or sets the ACTIVE setting, a Boolean value. An inactive progress bar
81795 +will not redraw itself.
81796 +.IP "" 5
81797 +.IP "\fBbanner\fR (read/write)" 5
81798 +Returns or sets the BANNER string.
81799 +.IP "" 5
81800 +.IP "\fBposhandler\fR (read/write)" 5
81801 +Returns or sets the read handlers used to read the position, as a
81802 +space-separated list.
81803 +.IP "" 5
81804 +.IP "\fBsizehandler\fR (read/write)" 5
81805 +Returns or sets the read handlers used to read the size, as a space-separated
81806 +list.
81807 +.IP "" 5
81808 +.IP "\fBreset\fR (write-only)" 5
81809 +When written, resets the progress bar to its initial state: the size is read
81810 +again, for example. Also sets ACTIVE to true.
81811 +.IP "" 5
81812 +.PP
81813 +
81814 +.SH "SEE ALSO"
81815 +.M FromDump "n" 
81816 +
81817 diff -Nurb click-1.6.0/inst/share/man/mann/PullNull.n click-1.6.0-27/inst/share/man/mann/PullNull.n
81818 --- click-1.6.0/inst/share/man/mann/PullNull.n  1969-12-31 19:00:00.000000000 -0500
81819 +++ click-1.6.0-27/inst/share/man/mann/PullNull.n       2009-02-11 14:08:51.000000000 -0500
81820 @@ -0,0 +1,30 @@
81821 +.\" -*- mode: nroff -*-
81822 +.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh'
81823 +.de M
81824 +.IR "\\$1" "(\\$2)\\$3"
81825 +..
81826 +.de RM
81827 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81828 +..
81829 +.TH "PULLNULL" n "11/Feb/2009" "Click"
81830 +.SH "NAME"
81831 +PullNull \- Click element;
81832 +passes packets unchanged
81833 +.SH "SYNOPSIS"
81834 +\fBPullNull\fR
81835 +
81836 +\fBPorts\fR: 1 input, 1 output
81837 +.br
81838 +\fBProcessing\fR: pull
81839 +.br
81840 +\fBPackage\fR: standard (core)
81841 +.br
81842 +.SH "DESCRIPTION"
81843 +Responds to each pull request by pulling a packet from its input and returning
81844 +that packet unchanged.
81845 +.PP
81846 +
81847 +.SH "SEE ALSO"
81848 +.M Null n ,
81849 +.M PushNull "n" 
81850 +
81851 diff -Nurb click-1.6.0/inst/share/man/mann/PullSwitch.n click-1.6.0-27/inst/share/man/mann/PullSwitch.n
81852 --- click-1.6.0/inst/share/man/mann/PullSwitch.n        1969-12-31 19:00:00.000000000 -0500
81853 +++ click-1.6.0-27/inst/share/man/mann/PullSwitch.n     2009-02-11 14:08:51.000000000 -0500
81854 @@ -0,0 +1,53 @@
81855 +.\" -*- mode: nroff -*-
81856 +.\" Generated by 'click-elem2man' from '../elements/standard/pullswitch.hh'
81857 +.de M
81858 +.IR "\\$1" "(\\$2)\\$3"
81859 +..
81860 +.de RM
81861 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81862 +..
81863 +.TH "PULLSWITCH" n "11/Feb/2009" "Click"
81864 +.SH "NAME"
81865 +PullSwitch \- Click element;
81866 +forwards pull requests to settable input
81867 +.SH "SYNOPSIS"
81868 +\fBPullSwitch\fR([INPUT])
81869 +
81870 +\fBPorts\fR: any number of inputs, 1 output
81871 +.br
81872 +\fBProcessing\fR: pull
81873 +.br
81874 +\fBPackage\fR: standard (core)
81875 +.br
81876 +.SH "DESCRIPTION"
81877 +On every pull, \fBPullSwitch\fR returns the packet pulled from one of its input
81878 +ports -- specifically, INPUT. The default INPUT is zero; negative INPUTs
81879 +mean always return a null packet. You can change INPUT with a write handler.
81880 +\fBPullSwitch\fR has an unlimited number of inputs.
81881 +.PP
81882 +
81883 +.SH "ELEMENT HANDLERS"
81884 +
81885 +
81886 +
81887 +.IP "\fBswitch\fR (read/write)" 5
81888 +Return or set the K parameter.
81889 +.IP "" 5
81890 +.IP "\fBCLICK_LLRPC_GET_SWITCH\fR (llrpc)" 5
81891 +Argument is a pointer to an integer, in which the 
81892 +.M Switch "n" 's
81893 +K parameter is
81894 +stored.
81895 +.IP "" 5
81896 +.IP "\fBCLICK_LLRPC_SET_SWITCH\fR (llrpc)" 5
81897 +Argument is a pointer to an integer. Sets the K parameter to that integer.
81898 +.IP "" 5
81899 +.PP
81900 +
81901 +.SH "SEE ALSO"
81902 +.M StaticPullSwitch n ,
81903 +.M PrioSched n ,
81904 +.M RoundRobinSched n ,
81905 +.M StrideSched n ,
81906 +.M Switch "n" 
81907 +
81908 diff -Nurb click-1.6.0/inst/share/man/mann/PullTee.n click-1.6.0-27/inst/share/man/mann/PullTee.n
81909 --- click-1.6.0/inst/share/man/mann/PullTee.n   1969-12-31 19:00:00.000000000 -0500
81910 +++ click-1.6.0-27/inst/share/man/mann/PullTee.n        2009-02-11 14:08:51.000000000 -0500
81911 @@ -0,0 +1,34 @@
81912 +.\" -*- mode: nroff -*-
81913 +.\" Generated by 'click-elem2man' from '../elements/standard/tee.hh'
81914 +.de M
81915 +.IR "\\$1" "(\\$2)\\$3"
81916 +..
81917 +.de RM
81918 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81919 +..
81920 +.TH "TEE, PULLTEE" n "11/Feb/2009" "Click"
81921 +.SH "NAME"
81922 +Tee, PullTee \- Click elements;
81923 +duplicates packets
81924 +.SH "SYNOPSIS"
81925 +\fBTee\fR([N])
81926 +.br
81927 +\fBPullTee\fR([N])
81928 +
81929 +\fBPorts\fR: 1 input, 1 or more outputs
81930 +.br
81931 +\fBProcessing\fR: push
81932 +.br
81933 +\fBPackage\fR: standard (core)
81934 +.br
81935 +.SH "DESCRIPTION"
81936 +\fBTee\fR sends a copy of each incoming packet out each output.
81937 +.PP
81938 +\fBPullTee\fR's input and its first output are pull; its other outputs are push.
81939 +Each time the pull output pulls a packet, it
81940 +sends a copy out the push outputs.
81941 +.PP
81942 +\fBTee\fR and \fBPullTee\fR have however many outputs are used in the configuration,
81943 +but you can say how many outputs you expect with the optional argument
81944 +N.
81945 +
81946 diff -Nurb click-1.6.0/inst/share/man/mann/PushNull.n click-1.6.0-27/inst/share/man/mann/PushNull.n
81947 --- click-1.6.0/inst/share/man/mann/PushNull.n  1969-12-31 19:00:00.000000000 -0500
81948 +++ click-1.6.0-27/inst/share/man/mann/PushNull.n       2009-02-11 14:08:51.000000000 -0500
81949 @@ -0,0 +1,29 @@
81950 +.\" -*- mode: nroff -*-
81951 +.\" Generated by 'click-elem2man' from '../elements/standard/nullelement.hh'
81952 +.de M
81953 +.IR "\\$1" "(\\$2)\\$3"
81954 +..
81955 +.de RM
81956 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81957 +..
81958 +.TH "PUSHNULL" n "11/Feb/2009" "Click"
81959 +.SH "NAME"
81960 +PushNull \- Click element;
81961 +passes packets unchanged
81962 +.SH "SYNOPSIS"
81963 +\fBPushNull\fR
81964 +
81965 +\fBPorts\fR: 1 input, 1 output
81966 +.br
81967 +\fBProcessing\fR: push
81968 +.br
81969 +\fBPackage\fR: standard (core)
81970 +.br
81971 +.SH "DESCRIPTION"
81972 +Responds to each pushed packet by pushing it unchanged out its first output.
81973 +.PP
81974 +
81975 +.SH "SEE ALSO"
81976 +.M Null n ,
81977 +.M PullNull "n" 
81978 +
81979 diff -Nurb click-1.6.0/inst/share/man/mann/Queue.n click-1.6.0-27/inst/share/man/mann/Queue.n
81980 --- click-1.6.0/inst/share/man/mann/Queue.n     1969-12-31 19:00:00.000000000 -0500
81981 +++ click-1.6.0-27/inst/share/man/mann/Queue.n  2009-02-11 14:08:51.000000000 -0500
81982 @@ -0,0 +1,81 @@
81983 +.\" -*- mode: nroff -*-
81984 +.\" Generated by 'click-elem2man' from '../elements/standard/fullnotequeue.hh'
81985 +.de M
81986 +.IR "\\$1" "(\\$2)\\$3"
81987 +..
81988 +.de RM
81989 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
81990 +..
81991 +.TH "QUEUE" n "11/Feb/2009" "Click"
81992 +.SH "NAME"
81993 +Queue \- Click element;
81994 +stores packets in a FIFO queue
81995 +.SH "SYNOPSIS"
81996 +Queue
81997 +.br
81998 +\fBQueue\fR(CAPACITY)
81999 +
82000 +\fBPorts\fR: 1 input, 1 output
82001 +.br
82002 +\fBProcessing\fR: push inputs, pull outputs
82003 +.br
82004 +\fBPackage\fR: standard (core)
82005 +.br
82006 +.SH "DESCRIPTION"
82007 +Stores incoming packets in a first-in-first-out queue.
82008 +Drops incoming packets if the queue already holds CAPACITY packets.
82009 +The default for CAPACITY is 1000.
82010 +.PP
82011 +\fBQueue\fR notifies interested parties when it becomes empty and when a
82012 +formerly-empty queue receives a packet.  The empty notification takes place
82013 +some time after the queue goes empty, to prevent thrashing for queues that
82014 +hover around 1 or 2 packets long.  This behavior is the same as that of
82015 +.M NotifierQueue "n" .
82016 +\fBQueue\fR additionally notifies interested parties that it is
82017 +non-full, and when a formerly-full queue gains some free space.  In all
82018 +respects but notification, \fBQueue\fR behaves exactly like 
82019 +.M SimpleQueue "n" .
82020 +.PP
82021 +You may also use the old element name "FullNoteQueue".
82022 +.PP
82023 +\fBMultithreaded Click note:\fR \fBQueue\fR is designed to be used in an
82024 +environment with at most one concurrent pusher and at most one concurrent
82025 +puller.  Thus, at most one thread pushes to the \fBQueue\fR at a time and at
82026 +most one thread pulls from the \fBQueue\fR at a time.  Different threads can
82027 +push to and pull from the \fBQueue\fR concurrently, however.  See 
82028 +.M MSQueue "n" 
82029 +for
82030 +a queue that can support multiple concurrent pushers.
82031 +.PP
82032 +
82033 +.SH "ELEMENT HANDLERS"
82034 +
82035 +
82036 +
82037 +.IP "\fBlength\fR (read-only)" 5
82038 +Returns the current number of packets in the queue.
82039 +.IP "" 5
82040 +.IP "\fBhighwater_length\fR (read-only)" 5
82041 +Returns the maximum number of packets that have ever been in the queue at once.
82042 +.IP "" 5
82043 +.IP "\fBcapacity\fR (read/write)" 5
82044 +Returns or sets the queue's capacity.
82045 +.IP "" 5
82046 +.IP "\fBdrops\fR (read-only)" 5
82047 +Returns the number of packets dropped by the queue so far.
82048 +.IP "" 5
82049 +.IP "\fBreset_counts\fR (write-only)" 5
82050 +When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters.
82051 +.IP "" 5
82052 +.IP "\fBreset\fR (write-only)" 5
82053 +When written, drops all packets in the queue.
82054 +.IP "" 5
82055 +.PP
82056 +
82057 +.SH "SEE ALSO"
82058 +.M SimpleQueue n ,
82059 +.M NotifierQueue n ,
82060 +.M MixedQueue n ,
82061 +.M FrontDropQueue n ,
82062 +.M MSQueue "n" 
82063 +
82064 diff -Nurb click-1.6.0/inst/share/man/mann/QuitWatcher.n click-1.6.0-27/inst/share/man/mann/QuitWatcher.n
82065 --- click-1.6.0/inst/share/man/mann/QuitWatcher.n       1969-12-31 19:00:00.000000000 -0500
82066 +++ click-1.6.0-27/inst/share/man/mann/QuitWatcher.n    2009-02-11 14:08:51.000000000 -0500
82067 @@ -0,0 +1,23 @@
82068 +.\" -*- mode: nroff -*-
82069 +.\" Generated by 'click-elem2man' from '../elements/standard/quitwatcher.hh'
82070 +.de M
82071 +.IR "\\$1" "(\\$2)\\$3"
82072 +..
82073 +.de RM
82074 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82075 +..
82076 +.TH "QUITWATCHER" n "11/Feb/2009" "Click"
82077 +.SH "NAME"
82078 +QuitWatcher \- Click element;
82079 +stops router processing
82080 +.SH "SYNOPSIS"
82081 +\fBQuitWatcher\fR(ELEMENT, ...)
82082 +
82083 +\fBPorts\fR: none
82084 +.br
82085 +\fBPackage\fR: standard (core)
82086 +.br
82087 +.SH "DESCRIPTION"
82088 +Stops router processing when at least one of the ELEMENTs is no longer
82089 +scheduled.
82090 +
82091 diff -Nurb click-1.6.0/inst/share/man/mann/RED.n click-1.6.0-27/inst/share/man/mann/RED.n
82092 --- click-1.6.0/inst/share/man/mann/RED.n       1969-12-31 19:00:00.000000000 -0500
82093 +++ click-1.6.0-27/inst/share/man/mann/RED.n    2009-02-11 14:08:51.000000000 -0500
82094 @@ -0,0 +1,113 @@
82095 +.\" -*- mode: nroff -*-
82096 +.\" Generated by 'click-elem2man' from '../elements/aqm/red.hh'
82097 +.de M
82098 +.IR "\\$1" "(\\$2)\\$3"
82099 +..
82100 +.de RM
82101 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82102 +..
82103 +.TH "RED" n "11/Feb/2009" "Click"
82104 +.SH "NAME"
82105 +RED \- Click element;
82106 +drops packets according to RED
82107 +.SH "SYNOPSIS"
82108 +\fBRED\fR(MIN_THRESH, MAX_THRESH, MAX_P [, \fIKEYWORDS\fR])
82109 +
82110 +\fBPorts\fR: 1 input, 1-2 outputs
82111 +.br
82112 +\fBProcessing\fR: agnostic, but output 1 is push
82113 +.br
82114 +\fBPackage\fR: aqm (core)
82115 +.br
82116 +.SH "DESCRIPTION"
82117 +Implements the Random Early Detection packet dropping
82118 +algorithm.
82119 +.PP
82120 +A \fBRED\fR element is associated with one or more Storage elements (usually
82121 +Queues). It maintains a running average of the sum of the queue lengths, and
82122 +marks packets with a probability proportional to that sum. By default, the
82123 +Queues are found with flow-based router context. If the \fBRED\fR is a push element,
82124 +it uses the nearest downstream Queues; if it is a pull element, it uses the
82125 +nearest upstream Queues.
82126 +.PP
82127 +Marked packets are dropped, or emitted on output 1 if \fBRED\fR has two output
82128 +ports.
82129 +.PP
82130 +Keyword arguments are:
82131 +.PP
82132 +
82133 +
82134 +.IP "QUEUES" 8
82135 +This argument is a space-separated list of Storage element names. \fBRED\fR will use
82136 +those elements' queue lengths, rather than any elements found via flow-based
82137 +router context.
82138 +.IP "" 8
82139 +.IP "STABILITY" 8
82140 +Unsigned. This number determines how stable the average queue size is -- that
82141 +is, how quickly it changes due to fluctuations in the instantaneous queue
82142 +size. Higher numbers mean more stability. The corresponding conventional \fBRED\fR
82143 +parameter is w_q; STABILITY equals -log_2(w_q).
82144 +.IP "" 8
82145 +STABILITY should equal
82146 +.IP "" 8
82147 +.nf
82148 +\&   -log_2 (1 - e^(-1/K)),
82149 +.fi
82150 +.IP "" 8
82151 +where K is the link bandwidth in packets per second. Default STABILITY is 4.
82152 +This is very low (unstable) for most purposes; it corresponds to a link
82153 +bandwidth of roughly 15 packets per second, or a w_q of 0.25. The NS default
82154 +setting for w_q is 0.002, corresponding to a STABILITY of roughly 9.
82155 +.IP "" 8
82156 +
82157 +.PP
82158 +The \fBRED\fR element implements the Gentle RED variant first proposed by Sally
82159 +Floyd in October 1997.
82160 +.PP
82161 +.SH "EXAMPLES"
82162 +
82163 +.nf
82164 +\&  ... -> RED(5, 50, 0.02) -> Queue(200) -> ...
82165 +.fi
82166 +.PP
82167 +
82168 +
82169 +
82170 +.SH "ELEMENT HANDLERS"
82171 +
82172 +
82173 +
82174 +.IP "\fBmin_thresh\fR (read/write)" 5
82175 +Returns or sets the MIN_THRESH configuration parameter.
82176 +.IP "" 5
82177 +.IP "\fBmax_thresh\fR (read/write)" 5
82178 +Returns or sets the MAX_THRESH configuration parameter.
82179 +.IP "" 5
82180 +.IP "\fBmax_p\fR (read/write)" 5
82181 +Returns or sets the MAX_P configuration parameter.
82182 +.IP "" 5
82183 +.IP "\fBdrops\fR (read-only)" 5
82184 +Returns the number of packets dropped so far.
82185 +.IP "" 5
82186 +.IP "\fBqueues\fR (read-only)" 5
82187 +Returns the Queues associated with this \fBRED\fR element, listed one per line.
82188 +.IP "" 5
82189 +.IP "\fBavg_queue_size\fR (read-only)" 5
82190 +Returns the current average queue size.
82191 +.IP "" 5
82192 +.IP "\fBstats\fR (read-only)" 5
82193 +Returns some human-readable statistics.
82194 +.IP "" 5
82195 +.PP
82196 +
82197 +.SH "SEE ALSO"
82198 +.M AdaptiveRED n ,
82199 +.M Queue n 
82200 +.PP
82201 +Sally Floyd and Van Jacobson. \fIRandom Early Detection Gateways for
82202 +Congestion Avoidance\fR. ACM Transactions on Networking, \fB1\fR(4), August
82203 +1993, pp 397-413.
82204 +.PP
82205 +Sally Floyd. "Optimum functions for computing the drop
82206 +probability", October 1997. \fBhttp://www.icir.org/floyd/REDfunc.txt\fR.
82207 +
82208 diff -Nurb click-1.6.0/inst/share/man/mann/RFC2507Comp.n click-1.6.0-27/inst/share/man/mann/RFC2507Comp.n
82209 --- click-1.6.0/inst/share/man/mann/RFC2507Comp.n       1969-12-31 19:00:00.000000000 -0500
82210 +++ click-1.6.0-27/inst/share/man/mann/RFC2507Comp.n    2009-02-11 14:08:51.000000000 -0500
82211 @@ -0,0 +1,34 @@
82212 +.\" -*- mode: nroff -*-
82213 +.\" Generated by 'click-elem2man' from '../elements/ip/rfc2507c.hh'
82214 +.de M
82215 +.IR "\\$1" "(\\$2)\\$3"
82216 +..
82217 +.de RM
82218 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82219 +..
82220 +.TH "RFC2507COMP" n "11/Feb/2009" "Click"
82221 +.SH "NAME"
82222 +RFC2507Comp \- Click element;
82223 +RFC2507 IPv4/TCP header compressor.
82224 +.SH "SYNOPSIS"
82225 +\fBRFC2507Comp\fR
82226 +
82227 +\fBPorts\fR: 1 input, 1 output
82228 +.br
82229 +\fBProcessing\fR: agnostic
82230 +.br
82231 +\fBPackage\fR: ip (core)
82232 +.br
82233 +.SH "DESCRIPTION"
82234 +Input packets need to be IPv4 (no ether header &c).
82235 +It's OK if they're not TCP.
82236 +.PP
82237 +How to specify various kinds of output? There is not really
82238 +a useful general standard. Perhaps emit each different format
82239 +of output on a different output() and let further modules
82240 +sort it out. Then we wouldn't be AGNOSTIC...
82241 +.PP
82242 +
82243 +.SH "SEE ALSO"
82244 +.M RFC2507Decomp "n" 
82245 +
82246 diff -Nurb click-1.6.0/inst/share/man/mann/RFC2507Decomp.n click-1.6.0-27/inst/share/man/mann/RFC2507Decomp.n
82247 --- click-1.6.0/inst/share/man/mann/RFC2507Decomp.n     1969-12-31 19:00:00.000000000 -0500
82248 +++ click-1.6.0-27/inst/share/man/mann/RFC2507Decomp.n  2009-02-11 14:08:52.000000000 -0500
82249 @@ -0,0 +1,29 @@
82250 +.\" -*- mode: nroff -*-
82251 +.\" Generated by 'click-elem2man' from '../elements/ip/rfc2507d.hh'
82252 +.de M
82253 +.IR "\\$1" "(\\$2)\\$3"
82254 +..
82255 +.de RM
82256 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82257 +..
82258 +.TH "RFC2507DECOMP" n "11/Feb/2009" "Click"
82259 +.SH "NAME"
82260 +RFC2507Decomp \- Click element;
82261 +RFC2507 IPv4/TCP header decompressor.
82262 +.SH "SYNOPSIS"
82263 +\fBRFC2507Decomp\fR
82264 +
82265 +\fBPorts\fR: 1 input, 1 output
82266 +.br
82267 +\fBProcessing\fR: agnostic
82268 +.br
82269 +\fBPackage\fR: ip (core)
82270 +.br
82271 +.SH "DESCRIPTION"
82272 +Input packets should be as produced by RFC2507c.
82273 +Spits out IP packets.
82274 +.PP
82275 +
82276 +.SH "SEE ALSO"
82277 +.M RFC2507Comp "n" 
82278 +
82279 diff -Nurb click-1.6.0/inst/share/man/mann/RIPSend.n click-1.6.0-27/inst/share/man/mann/RIPSend.n
82280 --- click-1.6.0/inst/share/man/mann/RIPSend.n   1969-12-31 19:00:00.000000000 -0500
82281 +++ click-1.6.0-27/inst/share/man/mann/RIPSend.n        2009-02-11 14:08:52.000000000 -0500
82282 @@ -0,0 +1,42 @@
82283 +.\" -*- mode: nroff -*-
82284 +.\" Generated by 'click-elem2man' from '../elements/ip/ripsend.hh'
82285 +.de M
82286 +.IR "\\$1" "(\\$2)\\$3"
82287 +..
82288 +.de RM
82289 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82290 +..
82291 +.TH "RIPSEND" n "11/Feb/2009" "Click"
82292 +.SH "NAME"
82293 +RIPSend \- Click element;
82294 +periodically generates specified RIP II packet
82295 +.SH "SYNOPSIS"
82296 +\fBRIPSend\fR(SRC, DST, PREFIX, METRIC)
82297 +
82298 +\fBPorts\fR: no inputs, 1 output
82299 +.br
82300 +\fBProcessing\fR: push
82301 +.br
82302 +\fBPackage\fR: ip (core)
82303 +.br
82304 +.SH "DESCRIPTION"
82305 +Sends periodic RIP II packets with specified contents,
82306 +including UDP and IP headers.
82307 +
82308 +.SH "EXAMPLES"
82309 +Send out advertisements to net 18.26.4, indicating that
82310 +route 18.26.4.24 knows how to get to net 10 with hop
82311 +count 10:
82312 +.PP
82313 +.nf
82314 +\&  RIPSend(18.26.4.24, 18.26.4.255, 10.0.0.0/8, 10) ->
82315 +\&  EtherEncap(0x0008, 00:00:c0:ae:67:ef, ff:ff:ff:ff:ff:ff) ->
82316 +\&  ToDevice(eth0);
82317 +.fi
82318 +.PP
82319 +
82320 +
82321 +
82322 +.SH "NOTES"
82323 +Note that this is just a tiny piece of a full RIP implementation.
82324 +
82325 diff -Nurb click-1.6.0/inst/share/man/mann/RadixIPLookup.n click-1.6.0-27/inst/share/man/mann/RadixIPLookup.n
82326 --- click-1.6.0/inst/share/man/mann/RadixIPLookup.n     1969-12-31 19:00:00.000000000 -0500
82327 +++ click-1.6.0-27/inst/share/man/mann/RadixIPLookup.n  2009-02-11 14:08:52.000000000 -0500
82328 @@ -0,0 +1,85 @@
82329 +.\" -*- mode: nroff -*-
82330 +.\" Generated by 'click-elem2man' from '../elements/ip/radixiplookup.hh'
82331 +.de M
82332 +.IR "\\$1" "(\\$2)\\$3"
82333 +..
82334 +.de RM
82335 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82336 +..
82337 +.TH "RADIXIPLOOKUP" n "11/Feb/2009" "Click"
82338 +.SH "NAME"
82339 +RadixIPLookup \- Click element;
82340 +IP lookup using a radix trie
82341 +.SH "SYNOPSIS"
82342 +\fBRadixIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
82343 +
82344 +\fBPorts\fR: 1 input, any number of outputs
82345 +.br
82346 +\fBProcessing\fR: push
82347 +.br
82348 +\fBPackage\fR: ip (core)
82349 +.br
82350 +.SH "DESCRIPTION"
82351 +Performs IP lookup using a radix trie.  The first level of the trie has 256
82352 +buckets; each succeeding level has 16.  The maximum number of levels that will
82353 +be traversed is thus 7.
82354 +.PP
82355 +Expects a destination IP address annotation with each packet. Looks up that
82356 +address in its routing table, using longest-prefix-match, sets the destination
82357 +annotation to the corresponding GW (if specified), and emits the packet on the
82358 +indicated OUTput port.
82359 +.PP
82360 +Each argument is a route, specifying a destination and mask, an optional
82361 +gateway IP address, and an output port.
82362 +.PP
82363 +Uses the 
82364 +.M IPRouteTable "n" 
82365 +interface; see 
82366 +.M IPRouteTable "n" 
82367 +for description.
82368 +.PP
82369 +
82370 +.SH "ELEMENT HANDLERS"
82371 +
82372 +
82373 +
82374 +.IP "\fBtable\fR (read-only)" 5
82375 +Outputs a human-readable version of the current routing table.
82376 +.IP "" 5
82377 +.IP "\fBlookup\fR (read-only)" 5
82378 +Reports the OUTput port and GW corresponding to an address.
82379 +.IP "" 5
82380 +.IP "\fBadd\fR (write-only)" 5
82381 +Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'. Should
82382 +fail if a route for \f(CWADDR/MASK\fR already exists, but currently does not.
82383 +.IP "" 5
82384 +.IP "\fBset\fR (write-only)" 5
82385 +Sets a route, whether or not a route for the same prefix already exists.
82386 +.IP "" 5
82387 +.IP "\fBremove\fR (write-only)" 5
82388 +Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'.
82389 +.IP "" 5
82390 +.IP "\fBctrl\fR (write-only)" 5
82391 +Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to
82392 +add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply
82393 +multiple commands, one per line; all commands are executed as one atomic
82394 +operation.
82395 +.IP "" 5
82396 +.PP
82397 +
82398 +.SH "NOTES"
82399 +See 
82400 +.M IPRouteTable "n" 
82401 +for a performance comparison of the various IP routing
82402 +elements.
82403 +.PP
82404 +
82405 +.SH "SEE ALSO"
82406 +.M IPRouteTable n ,
82407 +.M DirectIPLookup n ,
82408 +.M RangeIPLookup n ,
82409 +.M StaticIPLookup n ,
82410 +.M LinearIPLookup n ,
82411 +.M SortedIPLookup n ,
82412 +.M LinuxIPLookup "n" 
82413 +
82414 diff -Nurb click-1.6.0/inst/share/man/mann/RandomBitErrors.n click-1.6.0-27/inst/share/man/mann/RandomBitErrors.n
82415 --- click-1.6.0/inst/share/man/mann/RandomBitErrors.n   1969-12-31 19:00:00.000000000 -0500
82416 +++ click-1.6.0-27/inst/share/man/mann/RandomBitErrors.n        2009-02-11 14:08:51.000000000 -0500
82417 @@ -0,0 +1,49 @@
82418 +.\" -*- mode: nroff -*-
82419 +.\" Generated by 'click-elem2man' from '../elements/standard/randomerror.hh'
82420 +.de M
82421 +.IR "\\$1" "(\\$2)\\$3"
82422 +..
82423 +.de RM
82424 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82425 +..
82426 +.TH "RANDOMBITERRORS" n "11/Feb/2009" "Click"
82427 +.SH "NAME"
82428 +RandomBitErrors \- Click element;
82429 +changes packet data with some probability
82430 +.SH "SYNOPSIS"
82431 +\fBRandomBitErrors\fR(P [, KIND, ACTIVE])
82432 +
82433 +\fBPorts\fR: 1 input, 1 output
82434 +.br
82435 +\fBProcessing\fR: agnostic
82436 +.br
82437 +\fBPackage\fR: standard (core)
82438 +.br
82439 +.SH "DESCRIPTION"
82440 +Change each bit in each packet with probability P. The KIND parameter
82441 +determines the kind of change. `flip' (the default) flips bits, `set' sets
82442 +bits to one, and `clear' sets bits to zero.
82443 +.PP
82444 +\fBRandomBitErrors\fR can be active or inactive. It only changes bits when
82445 +active. It starts out active by default, but if you pass `false' for the
82446 +ACTIVE parameter, it will start out inactive.
82447 +.PP
82448 +
82449 +.SH "ELEMENT HANDLERS"
82450 +
82451 +
82452 +
82453 +.IP "\fBp_bit_error\fR (read/write)" 5
82454 +Returns or sets the P probability parameter.
82455 +.IP "" 5
82456 +.IP "\fBerror_kind\fR (read/write)" 5
82457 +Returns or sets the KIND parameter.
82458 +.IP "" 5
82459 +.IP "\fBactive\fR (read/write)" 5
82460 +Makes the element active or inactive.
82461 +.IP "" 5
82462 +.PP
82463 +
82464 +.SH "SEE ALSO"
82465 +.M RandomSample "n" 
82466 +
82467 diff -Nurb click-1.6.0/inst/share/man/mann/RandomSample.n click-1.6.0-27/inst/share/man/mann/RandomSample.n
82468 --- click-1.6.0/inst/share/man/mann/RandomSample.n      1969-12-31 19:00:00.000000000 -0500
82469 +++ click-1.6.0-27/inst/share/man/mann/RandomSample.n   2009-02-11 14:08:51.000000000 -0500
82470 @@ -0,0 +1,68 @@
82471 +.\" -*- mode: nroff -*-
82472 +.\" Generated by 'click-elem2man' from '../elements/standard/randomsample.hh'
82473 +.de M
82474 +.IR "\\$1" "(\\$2)\\$3"
82475 +..
82476 +.de RM
82477 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82478 +..
82479 +.TH "RANDOMSAMPLE" n "11/Feb/2009" "Click"
82480 +.SH "NAME"
82481 +RandomSample \- Click element;
82482 +samples packets with some probability
82483 +.SH "SYNOPSIS"
82484 +\fBRandomSample\fR([P, \fIKEYWORDS\fR])
82485 +
82486 +\fBPorts\fR: 1 input, 1-2 outputs
82487 +.br
82488 +\fBProcessing\fR: agnostic, but output 1 is push
82489 +.br
82490 +\fBPackage\fR: standard (core)
82491 +.br
82492 +.SH "DESCRIPTION"
82493 +Samples packets with probability P. One out of 1/P packets are sent to the
82494 +first output. The remaining packets are dropped, unless the element has two
82495 +outputs, in which case they are emitted on output 1.
82496 +.PP
82497 +If you don't specify P, you must supply one of the SAMPLE and DROP keyword
82498 +arguments.
82499 +.PP
82500 +Keyword arguments are:
82501 +.PP
82502 +
82503 +
82504 +.IP "SAMPLE \fIP\fR" 8
82505 +Sets the sampling probability to \fIP\fR.
82506 +.IP "" 8
82507 +.IP "DROP \fIQ\fR" 8
82508 +The element will drop packets with probability \fIQ\fR. Same as suppling (1 -
82509 +\fIQ\fR) as the sampling probability.
82510 +.IP "" 8
82511 +.IP "ACTIVE" 8
82512 +Boolean. \fBRandomSample\fR is active or inactive; when inactive, it sends all
82513 +packets to output 0. Default is true (active).
82514 +.IP "" 8
82515 +.PP
82516 +
82517 +.SH "ELEMENT HANDLERS"
82518 +
82519 +
82520 +
82521 +.IP "\fBsampling_prob\fR (read/write)" 5
82522 +Returns or sets the sampling probability.
82523 +.IP "" 5
82524 +.IP "\fBdrop_prob\fR (read/write)" 5
82525 +Returns or sets the drop probability, which is 1 minus the sampling
82526 +probability.
82527 +.IP "" 5
82528 +.IP "\fBactive\fR (read/write)" 5
82529 +Makes the element active or inactive.
82530 +.IP "" 5
82531 +.IP "\fBdrops\fR (read-only)" 5
82532 +Returns the number of packets dropped.
82533 +.IP "" 5
82534 +.PP
82535 +
82536 +.SH "SEE ALSO"
82537 +.M RandomBitErrors "n" 
82538 +
82539 diff -Nurb click-1.6.0/inst/share/man/mann/RandomSource.n click-1.6.0-27/inst/share/man/mann/RandomSource.n
82540 --- click-1.6.0/inst/share/man/mann/RandomSource.n      1969-12-31 19:00:00.000000000 -0500
82541 +++ click-1.6.0-27/inst/share/man/mann/RandomSource.n   2009-02-11 14:08:51.000000000 -0500
82542 @@ -0,0 +1,29 @@
82543 +.\" -*- mode: nroff -*-
82544 +.\" Generated by 'click-elem2man' from '../elements/standard/randomsource.hh'
82545 +.de M
82546 +.IR "\\$1" "(\\$2)\\$3"
82547 +..
82548 +.de RM
82549 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82550 +..
82551 +.TH "RANDOMSOURCE" n "11/Feb/2009" "Click"
82552 +.SH "NAME"
82553 +RandomSource \- Click element;
82554 +generates random packets whenever scheduled
82555 +.SH "SYNOPSIS"
82556 +\fBRandomSource\fR(LENGTH)
82557 +
82558 +\fBPorts\fR: no inputs, 1 output
82559 +.br
82560 +\fBProcessing\fR: agnostic
82561 +.br
82562 +\fBPackage\fR: standard (core)
82563 +.br
82564 +.SH "DESCRIPTION"
82565 +Creates packets, of the indicated length, filled with random bytes.
82566 +Packets' timestamp annotations are set to the current time.
82567 +.PP
82568 +
82569 +.SH "SEE ALSO"
82570 +.M InfiniteSource "n" 
82571 +
82572 diff -Nurb click-1.6.0/inst/share/man/mann/RandomSwitch.n click-1.6.0-27/inst/share/man/mann/RandomSwitch.n
82573 --- click-1.6.0/inst/share/man/mann/RandomSwitch.n      1969-12-31 19:00:00.000000000 -0500
82574 +++ click-1.6.0-27/inst/share/man/mann/RandomSwitch.n   2009-02-11 14:08:51.000000000 -0500
82575 @@ -0,0 +1,31 @@
82576 +.\" -*- mode: nroff -*-
82577 +.\" Generated by 'click-elem2man' from '../elements/standard/randomswitch.hh'
82578 +.de M
82579 +.IR "\\$1" "(\\$2)\\$3"
82580 +..
82581 +.de RM
82582 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82583 +..
82584 +.TH "RANDOMSWITCH" n "11/Feb/2009" "Click"
82585 +.SH "NAME"
82586 +RandomSwitch \- Click element;
82587 +sends packets to random outputs
82588 +.SH "SYNOPSIS"
82589 +RandomSwitch
82590 +
82591 +\fBPorts\fR: one input, one or more outputs
82592 +.br
82593 +\fBProcessing\fR: push
82594 +.br
82595 +\fBPackage\fR: standard (core)
82596 +.br
82597 +.SH "DESCRIPTION"
82598 +Pushes each arriving packet to one of the N outputs, choosing outputs randomly.
82599 +.PP
82600 +
82601 +.SH "SEE ALSO"
82602 +.M Switch n ,
82603 +.M StrideSwitch n ,
82604 +.M RoundRobinSwitch n ,
82605 +.M HashSwitch "n" 
82606 +
82607 diff -Nurb click-1.6.0/inst/share/man/mann/RangeIPLookup.n click-1.6.0-27/inst/share/man/mann/RangeIPLookup.n
82608 --- click-1.6.0/inst/share/man/mann/RangeIPLookup.n     1969-12-31 19:00:00.000000000 -0500
82609 +++ click-1.6.0-27/inst/share/man/mann/RangeIPLookup.n  2009-02-11 14:08:51.000000000 -0500
82610 @@ -0,0 +1,96 @@
82611 +.\" -*- mode: nroff -*-
82612 +.\" Generated by 'click-elem2man' from '../elements/ip/rangeiplookup.hh'
82613 +.de M
82614 +.IR "\\$1" "(\\$2)\\$3"
82615 +..
82616 +.de RM
82617 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82618 +..
82619 +.TH "RANGEIPLOOKUP" n "11/Feb/2009" "Click"
82620 +.SH "NAME"
82621 +RangeIPLookup \- Click element;
82622 +IP routing lookup through binary search in a very compact table
82623 +.SH "SYNOPSIS"
82624 +\fBRangeIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
82625 +
82626 +\fBPorts\fR: 1 input, any number of outputs
82627 +.br
82628 +\fBProcessing\fR: push
82629 +.br
82630 +\fBDrivers\fR: userlevel, bsdmodule
82631 +.br
82632 +\fBPackage\fR: ip (core)
82633 +.br
82634 +.SH "DESCRIPTION"
82635 +Expects a destination IP address annotation with each packet. Looks up that
82636 +address in its routing table, using longest-prefix-match, sets the destination
82637 +annotation to the corresponding GW (if specified), and emits the packet on the
82638 +indicated OUTput port.
82639 +.PP
82640 +Each argument is a route, specifying a destination and mask, an optional
82641 +gateway IP address, and an output port.  No destination-mask pair should occur
82642 +more than once.
82643 +.PP
82644 +\fBRangeIPLookup\fR aims at achieving high lookup speeds through exploiting the CPU
82645 +cache locality.  The routing table is expanded into a very small lookup
82646 +structure, typically occupying less then 4 bytes per IP prefix.  As an example,
82647 +a lookup structure corresponding to a routing table with 167000 entries (a
82648 +realistic snapshot taken from a core Internet router) occupies only around
82649 +512 KBytes of RAM.  Depending on how sucessfully the CPU cache
82650 +affinity can be maintained, worst-case lookup rates exceeding 20 million
82651 +lookups per second can be achieved using modern commodity CPUs.
82652 +.PP
82653 +\fBRangeIPLookup\fR maintains a large 
82654 +.M DirectIPLookup "n" 
82655 +table as well as its own
82656 +tables.  Although this subsidiary table is only accessed during route updates,
82657 +it significantly adds to \fBRangeIPLookup\fR's total memory footprint.
82658 +.PP
82659 +
82660 +.SH "ELEMENT HANDLERS"
82661 +
82662 +
82663 +
82664 +.IP "\fBtable\fR (read-only)" 5
82665 +Outputs a human-readable version of the current routing table.
82666 +.IP "" 5
82667 +.IP "\fBlookup\fR (read-only)" 5
82668 +Reports the OUTput port and GW corresponding to an address.
82669 +.IP "" 5
82670 +.IP "\fBadd\fR (write-only)" 5
82671 +Adds a route to the table. Format should be `\f(CWADDR/MASK [GW] OUT\fR'.
82672 +Fails if a route for \f(CWADDR/MASK\fR already exists.
82673 +.IP "" 5
82674 +.IP "\fBset\fR (write-only)" 5
82675 +Sets a route, whether or not a route for the same prefix already exists.
82676 +.IP "" 5
82677 +.IP "\fBremove\fR (write-only)" 5
82678 +Removes a route from the table. Format should be `\f(CWADDR/MASK\fR'.
82679 +.IP "" 5
82680 +.IP "\fBctrl\fR (write-only)" 5
82681 +Adds or removes a group of routes. Write `\f(CWadd\fR/\f(CWset ADDR/MASK [GW] OUT\fR' to
82682 +add a route, and `\f(CWremove ADDR/MASK\fR' to remove a route. You can supply
82683 +multiple commands, one per line; all commands are executed as one atomic
82684 +operation.
82685 +.IP "" 5
82686 +.IP "\fBflush\fR (write-only)" 5
82687 +Clears the entire routing table in a single atomic operation.
82688 +.IP "" 5
82689 +.PP
82690 +
82691 +.SH "NOTES"
82692 +See 
82693 +.M IPRouteTable "n" 
82694 +for a performance comparison of the various IP routing
82695 +elements.
82696 +.PP
82697 +
82698 +.SH "SEE ALSO"
82699 +.M IPRouteTable n ,
82700 +.M RadixIPLookup n ,
82701 +.M DirectIPLookup n ,
82702 +.M LinearIPLookup n ,
82703 +.M SortedIPLookup n ,
82704 +.M StaticIPLookup n ,
82705 +.M LinuxIPLookup "n" 
82706 +
82707 diff -Nurb click-1.6.0/inst/share/man/mann/RatedSource.n click-1.6.0-27/inst/share/man/mann/RatedSource.n
82708 --- click-1.6.0/inst/share/man/mann/RatedSource.n       1969-12-31 19:00:00.000000000 -0500
82709 +++ click-1.6.0-27/inst/share/man/mann/RatedSource.n    2009-02-11 14:08:51.000000000 -0500
82710 @@ -0,0 +1,99 @@
82711 +.\" -*- mode: nroff -*-
82712 +.\" Generated by 'click-elem2man' from '../elements/standard/ratedsource.hh'
82713 +.de M
82714 +.IR "\\$1" "(\\$2)\\$3"
82715 +..
82716 +.de RM
82717 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82718 +..
82719 +.TH "RATEDSOURCE" n "11/Feb/2009" "Click"
82720 +.SH "NAME"
82721 +RatedSource \- Click element;
82722 +generates packets at specified rate
82723 +.SH "SYNOPSIS"
82724 +\fBRatedSource\fR([DATA, RATE, LIMIT, ACTIVE, \fIKEYWORDS\fR])
82725 +
82726 +\fBPorts\fR: no inputs, 1 output
82727 +.br
82728 +\fBProcessing\fR: agnostic
82729 +.br
82730 +\fBPackage\fR: standard (core)
82731 +.br
82732 +.SH "DESCRIPTION"
82733 +Creates packets consisting of DATA, emitting at most LIMIT such packets out
82734 +its single output at a rate of RATE packets per second. When used as a push
82735 +element, \fBRatedSource\fR will send a maximum of one packet per scheduling, so very
82736 +high RATEs may not be achievable. If LIMIT is negative, sends packets forever.
82737 +Will send packets only if ACTIVE is true. Default DATA is at least 64 bytes
82738 +long. Default RATE is 10. Default LIMIT is -1 (send packets forever). Default
82739 +ACTIVE is true.
82740 +.PP
82741 +Keyword arguments are:
82742 +.PP
82743 +
82744 +
82745 +.IP "DATA" 8
82746 +String. Same as the DATA argument.
82747 +.IP "" 8
82748 +.IP "DATASIZE" 8
82749 +Integer. If set, ensures the outgoing packet contains at least this many bytes.
82750 +.IP "" 8
82751 +.IP "RATE" 8
82752 +Integer. Same as the RATE argument.
82753 +.IP "" 8
82754 +.IP "LIMIT" 8
82755 +Integer. Same as the LIMIT argument.
82756 +.IP "" 8
82757 +.IP "ACTIVE" 8
82758 +Boolean. Same as the ACTIVE? argument.
82759 +.IP "" 8
82760 +.IP "STOP" 8
82761 +Boolean. If true, then stop the driver once LIMIT packets are sent. Default is
82762 +false.
82763 +.IP "" 8
82764 +.PP
82765 +To generate a particular repeatable traffic pattern, use this element's
82766 +\fBrate\fR and \fBactive\fR handlers in conjunction with 
82767 +.M PokeHandlers "n" .
82768 +.PP
82769 +.SH "EXAMPLES"
82770 +
82771 +.nf
82772 +\&  RatedSource(\e<0800>, 10, 1000) -> Queue -> ...
82773 +.fi
82774 +.PP
82775 +
82776 +
82777 +
82778 +.SH "ELEMENT HANDLERS"
82779 +
82780 +
82781 +
82782 +.IP "\fBcount\fR (read-only)" 5
82783 +Returns the total number of packets that have been generated.
82784 +.IP "" 5
82785 +.IP "\fBreset\fR (write-only)" 5
82786 +Resets the number of generated packets to 0. The \fBRatedSource\fR will then
82787 +generate another LIMIT packets (if it is active).
82788 +.IP "" 5
82789 +.IP "\fBdata\fR (read/write)" 5
82790 +Returns or sets the DATA parameter.
82791 +.IP "" 5
82792 +.IP "\fBdatasize\fR (read/write)" 5
82793 +Returns or sets the DATASIZE parameter.
82794 +.IP "" 5
82795 +.IP "\fBrate\fR (read/write)" 5
82796 +Returns or sets the RATE parameter.
82797 +.IP "" 5
82798 +.IP "\fBlimit\fR (read/write)" 5
82799 +Returns or sets the LIMIT parameter. Negative numbers mean no limit.
82800 +.IP "" 5
82801 +.IP "\fBactive\fR (read/write)" 5
82802 +Makes the element active or inactive.
82803 +.IP "" 5
82804 +.PP
82805 +
82806 +.SH "SEE ALSO"
82807 +.M InfiniteSource n ,
82808 +.M PokeHandlers "n" 
82809 +
82810 diff -Nurb click-1.6.0/inst/share/man/mann/RatedSplitter.n click-1.6.0-27/inst/share/man/mann/RatedSplitter.n
82811 --- click-1.6.0/inst/share/man/mann/RatedSplitter.n     1969-12-31 19:00:00.000000000 -0500
82812 +++ click-1.6.0-27/inst/share/man/mann/RatedSplitter.n  2009-02-11 14:08:52.000000000 -0500
82813 @@ -0,0 +1,71 @@
82814 +.\" -*- mode: nroff -*-
82815 +.\" Generated by 'click-elem2man' from '../elements/standard/ratedsplitter.hh'
82816 +.de M
82817 +.IR "\\$1" "(\\$2)\\$3"
82818 +..
82819 +.de RM
82820 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82821 +..
82822 +.TH "RATEDSPLITTER" n "11/Feb/2009" "Click"
82823 +.SH "NAME"
82824 +RatedSplitter \- Click element;
82825 +splits flow of packets at specified rate
82826 +.SH "SYNOPSIS"
82827 +\fBRatedSplitter\fR(RATE)
82828 +
82829 +\fBPorts\fR: 1 input, 2 outputs
82830 +.br
82831 +\fBProcessing\fR: push
82832 +.br
82833 +\fBPackage\fR: standard (core)
82834 +.br
82835 +.SH "DESCRIPTION"
82836 +\fBRatedSplitter\fR has two output ports. All incoming packets up to a maximum of
82837 +RATE packets per second are emitted on output port 0. Any remaining packets
82838 +are emitted on output port 1. Unlike 
82839 +.M Meter "n" ,
82840 +RATE packets per second are
82841 +emitted on output port 0 even when the input rate is greater than RATE.
82842 +.PP
82843 +
82844 +.SH "EXAMPLES"
82845 +
82846 +.nf
82847 +\&  rs :: RatedSplitter(2000);
82848 +.fi
82849 +.PP
82850 +Split packets on port 0 at 2000 packets per second.
82851 +.PP
82852 +.nf
82853 +\&  elementclass RatedSampler {
82854 +\&    input -> rs :: RatedSplitter(2000);
82855 +\&    rs [0] -> t :: Tee;
82856 +\&    t [0] -> [0] output;
82857 +\&    t [1] -> [1] output;
82858 +\&    rs [1] -> [0] output;
82859 +\&  };
82860 +.fi
82861 +.PP
82862 +In the above example, RatedSampler is a compound element that samples input
82863 +packets at 2000 packets per second. All traffic is emitted on output 0; a
82864 +maximum of 2000 packets per second are emitted on output 1 as well.
82865 +.PP
82866 +
82867 +
82868 +.SH "ELEMENT HANDLERS"
82869 +
82870 +
82871 +
82872 +.IP "\fBrate\fR (read/write)" 5
82873 +rate of splitting
82874 +.IP "" 5
82875 +.PP
82876 +
82877 +.SH "SEE ALSO"
82878 +.M BandwidthRatedSplitter n ,
82879 +.M ProbSplitter n ,
82880 +.M Meter n ,
82881 +.M Shaper n ,
82882 +.M RatedUnqueue n ,
82883 +.M Tee "n" 
82884 +
82885 diff -Nurb click-1.6.0/inst/share/man/mann/RatedUnqueue.n click-1.6.0-27/inst/share/man/mann/RatedUnqueue.n
82886 --- click-1.6.0/inst/share/man/mann/RatedUnqueue.n      1969-12-31 19:00:00.000000000 -0500
82887 +++ click-1.6.0-27/inst/share/man/mann/RatedUnqueue.n   2009-02-11 14:08:52.000000000 -0500
82888 @@ -0,0 +1,40 @@
82889 +.\" -*- mode: nroff -*-
82890 +.\" Generated by 'click-elem2man' from '../elements/standard/ratedunqueue.hh'
82891 +.de M
82892 +.IR "\\$1" "(\\$2)\\$3"
82893 +..
82894 +.de RM
82895 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82896 +..
82897 +.TH "RATEDUNQUEUE" n "11/Feb/2009" "Click"
82898 +.SH "NAME"
82899 +RatedUnqueue \- Click element;
82900 +pull-to-push converter
82901 +.SH "SYNOPSIS"
82902 +\fBRatedUnqueue\fR(RATE)
82903 +
82904 +\fBPorts\fR: 1 input, 1 output
82905 +.br
82906 +\fBProcessing\fR: pull inputs, push outputs
82907 +.br
82908 +\fBPackage\fR: standard (core)
82909 +.br
82910 +.SH "DESCRIPTION"
82911 +Pulls packets at the given RATE in packets per second, and pushes them out
82912 +its single output.
82913 +.PP
82914 +
82915 +.SH "ELEMENT HANDLERS"
82916 +
82917 +
82918 +
82919 +.IP "\fBrate\fR (read/write)" 5
82920 +
82921 +.PP
82922 +
82923 +.SH "SEE ALSO"
82924 +.M BandwidthRatedUnqueue n ,
82925 +.M Unqueue n ,
82926 +.M Shaper n ,
82927 +.M RatedSplitter "n" 
82928 +
82929 diff -Nurb click-1.6.0/inst/share/man/mann/RawSocket.n click-1.6.0-27/inst/share/man/mann/RawSocket.n
82930 --- click-1.6.0/inst/share/man/mann/RawSocket.n 1969-12-31 19:00:00.000000000 -0500
82931 +++ click-1.6.0-27/inst/share/man/mann/RawSocket.n      2009-02-11 14:08:51.000000000 -0500
82932 @@ -0,0 +1,72 @@
82933 +.\" -*- mode: nroff -*-
82934 +.\" Generated by 'click-elem2man' from '../elements/userlevel/rawsocket.hh'
82935 +.de M
82936 +.IR "\\$1" "(\\$2)\\$3"
82937 +..
82938 +.de RM
82939 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
82940 +..
82941 +.TH "RAWSOCKET" n "11/Feb/2009" "Click"
82942 +.SH "NAME"
82943 +RawSocket \- Click element;
82944 +transports raw IP packets via safe raw sockets (user-level)
82945 +.SH "SYNOPSIS"
82946 +\fBRawSocket\fR("TCP", <TCP source port number> [, \fIKEYWORDS\fR])
82947 +.br
82948 +\fBRawSocket\fR("UDP", <UDP source port number> [, \fIKEYWORDS\fR])
82949 +.br
82950 +\fBRawSocket\fR("GRE", <GRE key or PPTP call ID> [, \fIKEYWORDS\fR])
82951 +.br
82952 +\fBRawSocket\fR("ICMP", <ICMP identifier> [, \fIKEYWORDS\fR])
82953 +
82954 +\fBPorts\fR: at most 1 input, at most 1 output
82955 +.br
82956 +\fBProcessing\fR: pull inputs, push outputs
82957 +.br
82958 +\fBDrivers\fR: userlevel
82959 +.br
82960 +\fBPackage\fR: userlevel (core)
82961 +.br
82962 +.SH "DESCRIPTION"
82963 +Reads data from and writes data to a raw IPv4 socket. The raw IPv4
82964 +socket may optionally be bound to a source port number in the case of
82965 +TCP/UDP, a GRE key or PPTP call ID in the case of GRE, or an
82966 +identifier in the case of ICMP. Binding a port to a raw IPv4 socket to
82967 +reserve it and suppress TCP RST and ICMP Unreachable errors, is
82968 +specific to PlanetLab Linux.
82969 +.PP
82970 +Keyword arguments are:
82971 +.PP
82972 +
82973 +
82974 +.IP "SNAPLEN" 8
82975 +Unsigned integer. Maximum packet length. This value
82976 +represents the MRU of the \fBRawSocket\fR if it is used as a
82977 +packet source. If the MRU is violated by the peer, i.e. if a packet
82978 +longer than SNAPLEN is sent, the connection may be terminated.
82979 +.IP "" 8
82980 +.IP "PROPER" 8
82981 +Boolean. PlanetLab specific. If true and Click has been configured
82982 +--with-proper, use Proper to bind a reserved port.
82983 +.IP "" 8
82984 +.IP "HEADROOM" 8
82985 +Unsigned Integer. Amount of headroom to reserve in packets created
82986 +by this element. This could be useful for encapsulation protocols 
82987 +which add headers to the packet, and can avoid expensive push 
82988 +operations later in the packet's life.
82989 +.IP "" 8
82990 +.PP
82991 +
82992 +.SH "EXAMPLES"
82993 +
82994 +.nf
82995 +\&  RawSocket(UDP, 53) -> ...
82996 +\& 
82997 +.fi
82998 +.PP
82999 +
83000 +
83001 +
83002 +.SH "SEE ALSO"
83003 +.M Socket "n" 
83004 +
83005 diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinIPMapper.n click-1.6.0-27/inst/share/man/mann/RoundRobinIPMapper.n
83006 --- click-1.6.0/inst/share/man/mann/RoundRobinIPMapper.n        1969-12-31 19:00:00.000000000 -0500
83007 +++ click-1.6.0-27/inst/share/man/mann/RoundRobinIPMapper.n     2009-02-11 14:08:52.000000000 -0500
83008 @@ -0,0 +1,38 @@
83009 +.\" -*- mode: nroff -*-
83010 +.\" Generated by 'click-elem2man' from '../elements/ip/rripmapper.hh'
83011 +.de M
83012 +.IR "\\$1" "(\\$2)\\$3"
83013 +..
83014 +.de RM
83015 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83016 +..
83017 +.TH "ROUNDROBINIPMAPPER" n "11/Feb/2009" "Click"
83018 +.SH "NAME"
83019 +RoundRobinIPMapper \- Click element;
83020 +round-robin mapper for 
83021 +.M IPRewriter n 
83022 +.SH "SYNOPSIS"
83023 +\fBRoundRobinIPMapper\fR(PATTERN1, ..., PATTERNn)
83024 +
83025 +\fBPorts\fR: none
83026 +.br
83027 +\fBPackage\fR: ip (core)
83028 +.br
83029 +.SH "DESCRIPTION"
83030 +Works in tandem with 
83031 +.M IPRewriter "n" 
83032 +to provide round-robin rewriting. This is
83033 +useful, for example, in load-balancing applications. Implements the
83034 +IPMapper interface.
83035 +.PP
83036 +Responds to mapping requests from an 
83037 +.M IPRewriter "n" 
83038 +by trying the PATTERNs in
83039 +round-robin order and returning the first successfully created mapping.
83040 +.PP
83041 +
83042 +.SH "SEE ALSO"
83043 +.M IPRewriter n ,
83044 +.M TCPRewriter n ,
83045 +.M IPRewriterPatterns "n" 
83046 +
83047 diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinSched.n click-1.6.0-27/inst/share/man/mann/RoundRobinSched.n
83048 --- click-1.6.0/inst/share/man/mann/RoundRobinSched.n   1969-12-31 19:00:00.000000000 -0500
83049 +++ click-1.6.0-27/inst/share/man/mann/RoundRobinSched.n        2009-02-11 14:08:52.000000000 -0500
83050 @@ -0,0 +1,39 @@
83051 +.\" -*- mode: nroff -*-
83052 +.\" Generated by 'click-elem2man' from '../elements/standard/rrsched.hh'
83053 +.de M
83054 +.IR "\\$1" "(\\$2)\\$3"
83055 +..
83056 +.de RM
83057 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83058 +..
83059 +.TH "ROUNDROBINSCHED" n "11/Feb/2009" "Click"
83060 +.SH "NAME"
83061 +RoundRobinSched \- Click element;
83062 +pulls from round-robin inputs
83063 +.SH "SYNOPSIS"
83064 +RoundRobinSched
83065 +
83066 +\fBPorts\fR: one output, zero or more inputs
83067 +.br
83068 +\fBProcessing\fR: pull
83069 +.br
83070 +\fBPackage\fR: standard (core)
83071 +.br
83072 +.SH "DESCRIPTION"
83073 +Each time a pull comes in the output, pulls from its inputs
83074 +in turn until one produces a packet. When the next pull
83075 +comes in, it starts from the input after the one that
83076 +last produced a packet. This amounts to a round robin
83077 +scheduler.
83078 +.PP
83079 +The inputs usually come from Queues or other pull schedulers.
83080 +\fBRoundRobinSched\fR uses notification to avoid pulling from empty inputs.
83081 +.PP
83082 +
83083 +.SH "SEE ALSO"
83084 +.M PrioSched n ,
83085 +.M StrideSched n ,
83086 +.M DRRSched n ,
83087 +.M RoundRobinSwitch n ,
83088 +.M SimpleRoundRobinSched "n" 
83089 +
83090 diff -Nurb click-1.6.0/inst/share/man/mann/RoundRobinSwitch.n click-1.6.0-27/inst/share/man/mann/RoundRobinSwitch.n
83091 --- click-1.6.0/inst/share/man/mann/RoundRobinSwitch.n  1969-12-31 19:00:00.000000000 -0500
83092 +++ click-1.6.0-27/inst/share/man/mann/RoundRobinSwitch.n       2009-02-11 14:08:51.000000000 -0500
83093 @@ -0,0 +1,33 @@
83094 +.\" -*- mode: nroff -*-
83095 +.\" Generated by 'click-elem2man' from '../elements/standard/rrswitch.hh'
83096 +.de M
83097 +.IR "\\$1" "(\\$2)\\$3"
83098 +..
83099 +.de RM
83100 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83101 +..
83102 +.TH "ROUNDROBINSWITCH" n "11/Feb/2009" "Click"
83103 +.SH "NAME"
83104 +RoundRobinSwitch \- Click element;
83105 +sends packets to round-robin outputs
83106 +.SH "SYNOPSIS"
83107 +RoundRobinSwitch
83108 +
83109 +\fBPorts\fR: one input, one or more outputs
83110 +.br
83111 +\fBProcessing\fR: push
83112 +.br
83113 +\fBPackage\fR: standard (core)
83114 +.br
83115 +.SH "DESCRIPTION"
83116 +Pushes each arriving packet to one of the N outputs. The next packet
83117 +will be pushed to the following output in round-robin order.
83118 +.PP
83119 +
83120 +.SH "SEE ALSO"
83121 +.M StrideSwitch n ,
83122 +.M Switch n ,
83123 +.M HashSwitch n ,
83124 +.M RandomSwitch n ,
83125 +.M RoundRobinSched "n" 
83126 +
83127 diff -Nurb click-1.6.0/inst/share/man/mann/RoundTripCycleCount.n click-1.6.0-27/inst/share/man/mann/RoundTripCycleCount.n
83128 --- click-1.6.0/inst/share/man/mann/RoundTripCycleCount.n       1969-12-31 19:00:00.000000000 -0500
83129 +++ click-1.6.0-27/inst/share/man/mann/RoundTripCycleCount.n    2009-02-11 14:08:51.000000000 -0500
83130 @@ -0,0 +1,50 @@
83131 +.\" -*- mode: nroff -*-
83132 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/rtcycles.hh'
83133 +.de M
83134 +.IR "\\$1" "(\\$2)\\$3"
83135 +..
83136 +.de RM
83137 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83138 +..
83139 +.TH "ROUNDTRIPCYCLECOUNT" n "11/Feb/2009" "Click"
83140 +.SH "NAME"
83141 +RoundTripCycleCount \- Click element;
83142 +measures round trip cycles on a push or pull path
83143 +.SH "SYNOPSIS"
83144 +\fBRoundTripCycleCount\fR()
83145 +
83146 +\fBPorts\fR: 1 input, 1 output
83147 +.br
83148 +\fBProcessing\fR: agnostic
83149 +.br
83150 +\fBDrivers\fR: linuxmodule
83151 +.br
83152 +\fBPackage\fR: linuxmodule (core)
83153 +.br
83154 +.SH "DESCRIPTION"
83155 +Measures the number of CPU cycles it takes for a push or pull to come back
83156 +to the element. This is a good indication of how much CPU is spent on the
83157 +Click path after or before this element.
83158 +.PP
83159 +
83160 +.SH "ELEMENT HANDLERS"
83161 +
83162 +
83163 +
83164 +.IP "\fBpackets\fR (read-only)" 5
83165 +Returns the number of packets that have passed.
83166 +.IP "" 5
83167 +.IP "\fBcycles\fR (read-only)" 5
83168 +Returns the accumulated round-trip cycles for all passing packets.
83169 +.IP "" 5
83170 +.IP "\fBreset_counts\fR (write-only)" 5
83171 +Resets \f(CWpackets\fR and \f(CWcycles\fR counters to zero when written.
83172 +.IP "" 5
83173 +.PP
83174 +
83175 +.SH "SEE ALSO"
83176 +.M SetCycleCount n ,
83177 +.M CycleCountAccum n ,
83178 +.M SetPerfCount n ,
83179 +.M PerfCountAccum "n" 
83180 +
83181 diff -Nurb click-1.6.0/inst/share/man/mann/ScheduleInfo.n click-1.6.0-27/inst/share/man/mann/ScheduleInfo.n
83182 --- click-1.6.0/inst/share/man/mann/ScheduleInfo.n      1969-12-31 19:00:00.000000000 -0500
83183 +++ click-1.6.0-27/inst/share/man/mann/ScheduleInfo.n   2009-02-11 14:08:52.000000000 -0500
83184 @@ -0,0 +1,74 @@
83185 +.\" -*- mode: nroff -*-
83186 +.\" Generated by 'click-elem2man' from '../include/click/standard/scheduleinfo.hh'
83187 +.de M
83188 +.IR "\\$1" "(\\$2)\\$3"
83189 +..
83190 +.de RM
83191 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83192 +..
83193 +.TH "SCHEDULEINFO" n "11/Feb/2009" "Click"
83194 +.SH "NAME"
83195 +ScheduleInfo \- Click element;
83196 +specifies scheduling parameters
83197 +.SH "SYNOPSIS"
83198 +\fBScheduleInfo\fR(ELEMENT PARAM, ...)
83199 +
83200 +\fBPorts\fR: None
83201 +.br
83202 +\fBPackage\fR: standard (core)
83203 +.br
83204 +.SH "DESCRIPTION"
83205 +Provides scheduling parameters for specified elements. Each configuration
83206 +argument has the form `ELEMENT PARAM', meaning that the element
83207 +named ELEMENT has scheduling parameter PARAM. Scheduling
83208 +parameters are real numbers that set how often one element should be
83209 +scheduled in relation to another. For example,
83210 +if elements A and B have
83211 +scheduling parameters 2 and 0.5, respectively, then A will be scheduled
83212 +2/0.5 = 4 times as often as B. The default scheduling parameter is 1.
83213 +.PP
83214 +\fBScheduleInfo\fR elements inside a compound element can specify scheduling
83215 +parameters for that compound's components.
83216 +Outer \fBScheduleInfo\fR elements
83217 +can specify a ``scheduling parameter'' for the compound
83218 +element as a whole. This ``scheduling parameter'' is really a scaling
83219 +factor affecting the compound's components. For example, consider this
83220 +configuration,
83221 +.PP
83222 +.nf
83223 +\&   elementclass Compound {
83224 +\&     i :: InfiniteSource -> output;
83225 +\&     ScheduleInfo(i 0.5);
83226 +\&   }
83227 +\&   c :: Compound -> Discard;
83228 +\&   ScheduleInfo(c 4);
83229 +.fi
83230 +.PP
83231 +which is the same as the following configuration, after compound elements
83232 +are expanded.
83233 +.PP
83234 +.nf
83235 +\&   c/i :: InfiniteSource -> Discard@3 :: Discard;
83236 +\&   c/ScheduleInfo@2 :: ScheduleInfo(i 0.5);
83237 +\&   ScheduleInfo@4 :: ScheduleInfo(c 4);
83238 +.fi
83239 +.PP
83240 +The name of the first \fBScheduleInfo\fR element starts with `c/', so it is
83241 +used to look up scheduling parameters for elements named `c/\fIwhatever\fR'.
83242 +(This includes all components of the compound element `c'.) 
83243 +The second \fBScheduleInfo\fR element, however, has no slash in its name,
83244 +so it is used to look up all scheduling parameters,
83245 +including scaling factors for compound elements.
83246 +The InfiniteSource's final scaling parameter will be 2:
83247 +the scaling factor 4 times the local scheduling parameter 0.5.
83248 +.PP
83249 +An outer \fBScheduleInfo\fR element can override local scheduling parameters.
83250 +For example, if the second \fBScheduleInfo\fR element above was
83251 +.PP
83252 +.nf
83253 +\&   ScheduleInfo@4 :: ScheduleInfo(c 4, c/i 10.5)
83254 +.fi
83255 +.PP
83256 +then the InfiniteSource's final scaling parameter would be 10.5.
83257 +
83258 +
83259 diff -Nurb click-1.6.0/inst/share/man/mann/ScheduleLinux.n click-1.6.0-27/inst/share/man/mann/ScheduleLinux.n
83260 --- click-1.6.0/inst/share/man/mann/ScheduleLinux.n     1969-12-31 19:00:00.000000000 -0500
83261 +++ click-1.6.0-27/inst/share/man/mann/ScheduleLinux.n  2009-02-11 14:08:52.000000000 -0500
83262 @@ -0,0 +1,30 @@
83263 +.\" -*- mode: nroff -*-
83264 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/schedulelinux.hh'
83265 +.de M
83266 +.IR "\\$1" "(\\$2)\\$3"
83267 +..
83268 +.de RM
83269 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83270 +..
83271 +.TH "SCHEDULELINUX" n "11/Feb/2009" "Click"
83272 +.SH "NAME"
83273 +ScheduleLinux \- Click element;
83274 +returns to Linux scheduler
83275 +.SH "SYNOPSIS"
83276 +ScheduleLinux
83277 +
83278 +\fBPorts\fR: none
83279 +.br
83280 +\fBDrivers\fR: linuxmodule
83281 +.br
83282 +\fBPackage\fR: linuxmodule (core)
83283 +.br
83284 +.SH "DESCRIPTION"
83285 +Returns to Linux's scheduler every time it is scheduled by Click. Use
83286 +.M ScheduleInfo "n" 
83287 +to specify how often this should happen.
83288 +.PP
83289 +
83290 +.SH "SEE ALSO"
83291 +.M ScheduleInfo "n" 
83292 +
83293 diff -Nurb click-1.6.0/inst/share/man/mann/Script.n click-1.6.0-27/inst/share/man/mann/Script.n
83294 --- click-1.6.0/inst/share/man/mann/Script.n    1969-12-31 19:00:00.000000000 -0500
83295 +++ click-1.6.0-27/inst/share/man/mann/Script.n 2009-02-11 14:08:52.000000000 -0500
83296 @@ -0,0 +1,267 @@
83297 +.\" -*- mode: nroff -*-
83298 +.\" Generated by 'click-elem2man' from '../elements/standard/script.hh'
83299 +.de M
83300 +.IR "\\$1" "(\\$2)\\$3"
83301 +..
83302 +.de RM
83303 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83304 +..
83305 +.TH "SCRIPT" n "11/Feb/2009" "Click"
83306 +.SH "NAME"
83307 +Script \- Click element;
83308 +script a Click router configuration
83309 +.SH "SYNOPSIS"
83310 +\fBScript\fR(INSTRUCTIONS...)
83311 +
83312 +\fBPorts\fR: none
83313 +.br
83314 +\fBPackage\fR: standard (core)
83315 +.br
83316 +.SH "DESCRIPTION"
83317 +The \fBScript\fR element implements a simple scripting language useful for
83318 +controlling Click configurations.  Scripts can set variables, call handlers,
83319 +wait for prodding from other elements, and stop the router.
83320 +.PP
83321 +
83322 +.SH "INSTRUCTIONS"
83323 +Each configuration argument is an \fIinstruction\fR (except for optional
83324 +keywords; see below).  \fBScript\fR generally processes these instructions
83325 +sequentially.
83326 +.PP
83327 +
83328 +.SS "Handler Instructions"
83329 +In all cases, text arguments are subject to substitutions; see below.
83330 +.PP
83331 +
83332 +.IP "\&'\f(CWset\fR VAR TEXT'" 8
83333 +Sets the script variable $VAR to TEXT.
83334 +.IP "" 8
83335 +.IP "\&'\f(CWinit\fR VAR TEXT'" 8
83336 +Initializes the script variable $VAR to TEXT.  This assignment happens exactly
83337 +once, when the \fBScript\fR element is initialized; later the instruction has no
83338 +effect.
83339 +.IP "" 8
83340 +.IP "\&'\f(CWprint\fR [>FILE | >>FILE] [TEXT | HANDLER]'" 8
83341 +Prints text, or the result of calling a read handler, followed by a newline.
83342 +At user level, the text is written to the standard output, except that if the
83343 +argument begins with > or >>, then the text is written or appended to the
83344 +specified FILE.  In the kernel, the text is written to the system log.
83345 +.IP "" 8
83346 +If \f(CWprint\fR's argument starts with a letter, '@', or '_', then it is treated
83347 +as a read handler.  Otherwise, it is treated as quoted text; \fBScript\fR prints the
83348 +unquoted version.  For example, assuming the 'c.count' read handler
83349 +returns "0":
83350 +.IP "" 8
83351 +.nf
83352 +\&   print c.count     => 0
83353 +\&   print "c.count"   => c.count
83354 +\&   print '"c.count"' => "c.count"
83355 +\&   set x c.count
83356 +\&   print $x          => c.count
83357 +\&   print $($x)       => 0
83358 +.fi
83359 +.IP "" 8
83360 +
83361 +
83362 +.IP "\&'\f(CWread\fR HANDLER [ARG...]'" 8
83363 +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
83364 +configuration 'Idle -> c::Counter -> Idle; \fBScript\fR(read c.count)' would print
83365 +print this to standard error:
83366 +.IP "" 8
83367 +.nf
83368 +\&   c.count:
83369 +\&   0
83370 +.fi
83371 +.IP "" 8
83372 +Contrast the '\f(CWprint\fR' instruction.
83373 +.IP "" 8
83374 +
83375 +.IP "\&'\f(CWwrite\fR HANDLER [ARG...]'" 8
83376 +Call a write handler.  The handler's return status is available in following
83377 +instructions as the '$?' variable.
83378 +.IP "" 8
83379 +.IP "\&'\f(CWreadq\fR HANDLER [ARG...]', '\f(CWwriteq\fR HANDLER [ARG...]'" 8
83380 +Same as \f(CWread\fR and \f(CWwrite\fR, but removes one layer of quoting from the ARGs
83381 +before calling the handler.
83382 +.IP "" 8
83383 +.PP
83384 +
83385 +.SS "Blocking Instructions"
83386 +
83387 +
83388 +.IP "\&'\f(CWpause\fR [COUNT]'" 8
83389 +Block until the \fBScript\fR element's 'step' handler is called COUNT times.  COUNT
83390 +defaults to 1.
83391 +.IP "" 8
83392 +.IP "\&'\f(CWwait\fR TIME'" 8
83393 +Wait for TIME seconds, or until a step, whichever comes first; then go to the
83394 +next instruction.  TIME has microsecond precision.
83395 +.IP "" 8
83396 +.PP
83397 +
83398 +.SS "Control Instructions"
83399 +
83400 +
83401 +.IP "\&'\f(CWlabel\fR LABEL'" 8
83402 +Defines a label named LABEL.
83403 +.IP "" 8
83404 +.IP "\&'\f(CWgoto\fR LABEL [CONDITION]'" 8
83405 +Transfers control to the named label.  \fBScript\fR elements detect loops; if an
83406 +element's script appears to be looping (it executes 1000 goto instructions
83407 +without blocking), the script is disabled.  If CONDITION is supplied, then the
83408 +branch executes only when CONDITION is true.
83409 +.IP "" 8
83410 +As a special case, '\f(CWgoto exit [CONDITION]\fR' or '\f(CWgoto end [CONDITION]\fR'
83411 +ends execution of the script, much like an '\f(CWexit\fR' or '\f(CWend\fR' instruction.
83412 +.IP "" 8
83413 +.IP "\&'\f(CWloop\fR'" 8
83414 +Transfers control to the first instruction.
83415 +.IP "" 8
83416 +.IP "\&'\f(CWreturn\fR [VALUE]'" 8
83417 +End execution of this script, returning VALUE.  This instruction is most
83418 +useful for passive scripts; VALUE will be returned as the value of the \f(CWrun\fR
83419 +handler.
83420 +.IP "" 8
83421 +.IP "\&'\f(CWexit\fR', '\f(CWend\fR'" 8
83422 +End execution of this script.  For signal scripts, the '\f(CWexit\fR' instruction
83423 +\fIdoes not\fR reinstall the script, whereas the '\f(CWend\fR' instruction does.
83424 +.IP "" 8
83425 +.PP
83426 +
83427 +.SH "SCRIPT TYPES"
83428 +Scripts come in several types, including active scripts, which start running
83429 +as soon as the configuration is loaded; passive scripts, which run only when
83430 +prodded; signal scripts, which run in response to a signal; and driver
83431 +scripts, which are active scripts that also control when the driver stops.
83432 +The optional TYPE keyword argument is used to select a script type.  The types
83433 +are:
83434 +.PP
83435 +
83436 +
83437 +.IP "\f(CWACTIVE\fR" 8
83438 +An active script starts running as soon as the router is initialized.  This is
83439 +the default.
83440 +.IP "" 8
83441 +.IP "\f(CWPASSIVE\fR" 8
83442 +A passive script runs in response to a handler, namely the \f(CWrun\fR handler.
83443 +Passive scripts can help build complex handlers from existing simple ones; for
83444 +example, here's a passive script whose \f(CWs.run\fR read handler returns the sum
83445 +of two Counter handlers.
83446 +.IP "" 8
83447 +.nf
83448 +\&   ... c1 :: Counter ... c2 :: Counter ...
83449 +\&   s :: Script(TYPE PASSIVE,
83450 +\&          return $(add $(c1.count) $(c2.count)))
83451 +.fi
83452 +.IP "" 8
83453 +Within the script, the \f(CWrun\fR handler's arguments, if any, are available
83454 +via the \f(CW$args\fR variable.  The first, second, and so forth space-separated
83455 +portions of \f(CW$args\fR are available via the \f(CW$1\fR, \f(CW$2\fR, ... variables.
83456 +.nf
83457 +\&          
83458 +.fi
83459 +.IP "" 8
83460 +
83461 +
83462 +.IP "\f(CWDRIVER\fR" 8
83463 +A driver script manages the Click driver's stop events.  See 
83464 +.M DriverManager "n" 
83465 +for
83466 +more information.
83467 +.IP "" 8
83468 +.IP "\f(CWSIGNAL\fR SIGNO..." 8
83469 +User-level only: A signal script runs in response to the signal(s) specified
83470 +by the SIGNO argument(s).  Each SIGNO can be an integer or a signal name, such
83471 +as INT or HUP.  Soon after the driver receives a named signal, this script
83472 +will run.  The signal handler is automatically blocked until the script runs.
83473 +The signal script will be reinstalled atomically as long as the script
83474 +completes without blocking.  If it blocks, however, the signal script will not
83475 +be installed from the blocking point until the script completes.  If multiple
83476 +\fBScript\fR elements select the same signal, all the scripts will run.
83477 +.IP "" 8
83478 +.PP
83479 +
83480 +.SH "SUBSTITUTIONS"
83481 +Text in most \fBScript\fR instructions undergoes variable substitution.  References
83482 +to script variables, such as '\f(CW$x\fR', are replaced by the variable text.
83483 +Additionally, the form '\f(CW$(HANDLER [ARG...])\fR' can be used to interpolate a
83484 +read handler's value.  Variable and handler references can be nested inside
83485 +a '\f(CW$(...)\fR' block.  For example, the following script will print 0, 1, 2, 3,
83486 +and 4 on separate lines, then exit.  Note the use of \fBScript\fR's arithmetic
83487 +handlers.
83488 +.PP
83489 +.nf
83490 +\&   s :: Script(set x 0,
83491 +\&               label begin_loop,
83492 +\&               print $x,
83493 +\&               set x $(s.add $x 1),
83494 +\&               goto begin_loop $(s.lt $x 5),
83495 +\&               stop);
83496 +.fi
83497 +.PP
83498 +This can be further shortened since local handler references do not require
83499 +the element name.  Thus, "$(s.add ...)" can be written "$(add ...)", as below.
83500 +.PP
83501 +.nf
83502 +\&   Script(set x 0,
83503 +\&          label begin_loop,
83504 +\&          print $x,
83505 +\&          set x $(add $x 1),
83506 +\&          goto begin_loop $(lt $x 5),
83507 +\&          stop);
83508 +.fi
83509 +.PP
83510 +
83511 +
83512 +
83513 +.SH "ELEMENT HANDLERS"
83514 +
83515 +
83516 +
83517 +.IP "\fBstep\fR (write-only)" 5
83518 +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.
83519 +.IP "" 5
83520 +.IP "\fBgoto\fR (write-only)" 5
83521 +Move the instruction pointer to the specified label.
83522 +.IP "" 5
83523 +.IP "\fBrun\fR (read/write)" 5
83524 +Run the script.  If the script ends with a '\f(CWreturn\fR' instruction, then the
83525 +handler returns with that value.
83526 +.IP "" 5
83527 +.IP "\fBadd\fR (read with parameters)" 5
83528 +Useful for arithmetic.  Adds a space-separated list of integers; for example,
83529 +\&'\f(CWadd 10 5 2\fR' returns "\f(CW17\fR".  (At user level, the arithmetic and
83530 +comparison operators can parse floating-point numbers as well as integers.)
83531 +.IP "" 5
83532 +.IP "\fBsub\fR (read with parameters)" 5
83533 +Subtracts a space-separated list of
83534 +numbers; for example, '\f(CWsub 10 5 2\fR' returns
83535 +"\f(CW3\fR".
83536 +.IP "" 5
83537 +.IP "\fBmul, div, idiv\fR (read with parameters)" 5
83538 +Multiplies or divides a space-separated list of numbers and returns the
83539 +result.  At user level, the '\f(CWidiv\fR' handler truncates its result to an
83540 +integer and returns that, whereas the '\f(CWdiv\fR' handler returns a
83541 +floating-point number; in the kernel, '\f(CWidiv\fR' and '\f(CWdiv\fR' both perform
83542 +integer division.
83543 +.IP "" 5
83544 +.IP "\fBeq, ne, lt, gt, le, ge\fR (read with parameters)" 5
83545 +Compares two parameters and return the result.  For example, '\f(CWeq 10
83546 +0xA\fR' returns "\f(CWtrue\fR", but '\f(CWle 9 8\fR' returns "\f(CWfalse\fR".  If either
83547 +parameter cannot be interpreted as a number, performs a string comparison.
83548 +For example, '\f(CWeq 10x 10x\fR' return "\f(CWtrue\fR".
83549 +.IP "" 5
83550 +.IP "\fBnot\fR (read with parameters)" 5
83551 +Useful for true/false operations.  Parses its parameter as a Boolean and
83552 +returns its negation.
83553 +.IP "" 5
83554 +.IP "\fBsprintf\fR (read with parameters)" 5
83555 +Parses its parameters as a space-separated list of arguments.  The first
83556 +argument is a format string; the remaining arguments are formatted
83557 +accordingly.  For example, '\f(CWsprintf "%05x" 127\fR' returns "\f(CW0007F\fR".
83558 +.IP "" 5
83559 +.PP
83560 +
83561 +.SH "SEE ALSO"
83562 +.M DriverManager "n" 
83563 +
83564 diff -Nurb click-1.6.0/inst/share/man/mann/SetAnnoByte.n click-1.6.0-27/inst/share/man/mann/SetAnnoByte.n
83565 --- click-1.6.0/inst/share/man/mann/SetAnnoByte.n       1969-12-31 19:00:00.000000000 -0500
83566 +++ click-1.6.0-27/inst/share/man/mann/SetAnnoByte.n    2009-02-11 14:08:51.000000000 -0500
83567 @@ -0,0 +1,42 @@
83568 +.\" -*- mode: nroff -*-
83569 +.\" Generated by 'click-elem2man' from '../elements/standard/setannobyte.hh'
83570 +.de M
83571 +.IR "\\$1" "(\\$2)\\$3"
83572 +..
83573 +.de RM
83574 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83575 +..
83576 +.TH "SETANNOBYTE" n "11/Feb/2009" "Click"
83577 +.SH "NAME"
83578 +SetAnnoByte \- Click element;
83579 +sets packet user annotations
83580 +.SH "SYNOPSIS"
83581 +\fBSetAnnoByte\fR(OFFSET, VALUE)
83582 +
83583 +\fBPorts\fR: 1 input, 1 output
83584 +.br
83585 +\fBProcessing\fR: agnostic
83586 +.br
83587 +\fBPackage\fR: standard (core)
83588 +.br
83589 +.SH "DESCRIPTION"
83590 +Sets each packet's user annotation byte at OFFSET to VALUE, an integer
83591 +0..255.  Permissible values for OFFSET are 0 to n-1, inclusive, where
83592 +n is typically 24.
83593 +.PP
83594 +
83595 +.SH "ELEMENT HANDLERS"
83596 +
83597 +
83598 +
83599 +.IP "\fBoffset\fR (read-only)" 5
83600 +Returns OFFSET
83601 +.IP "" 5
83602 +.IP "\fBvalue\fR (read-only)" 5
83603 +Returns VALUE 
83604 +.IP "" 5
83605 +.PP
83606 +
83607 +.SH "SEE ALSO"
83608 +.M Paint "n" 
83609 +
83610 diff -Nurb click-1.6.0/inst/share/man/mann/SetCRC32.n click-1.6.0-27/inst/share/man/mann/SetCRC32.n
83611 --- click-1.6.0/inst/share/man/mann/SetCRC32.n  1969-12-31 19:00:00.000000000 -0500
83612 +++ click-1.6.0-27/inst/share/man/mann/SetCRC32.n       2009-02-11 14:08:52.000000000 -0500
83613 @@ -0,0 +1,28 @@
83614 +.\" -*- mode: nroff -*-
83615 +.\" Generated by 'click-elem2man' from '../elements/standard/setcrc32.hh'
83616 +.de M
83617 +.IR "\\$1" "(\\$2)\\$3"
83618 +..
83619 +.de RM
83620 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83621 +..
83622 +.TH "SETCRC32" n "11/Feb/2009" "Click"
83623 +.SH "NAME"
83624 +SetCRC32 \- Click element;
83625 +calculates CRC32 and prepends to packet
83626 +.SH "SYNOPSIS"
83627 +\fBSetCRC32\fR()
83628 +
83629 +\fBPorts\fR: 1 input, 1 output
83630 +.br
83631 +\fBProcessing\fR: agnostic
83632 +.br
83633 +\fBPackage\fR: standard (core)
83634 +.br
83635 +.SH "DESCRIPTION"
83636 +Computes a CRC32 over each packet and appends the 4 CRC
83637 +bytes to the packet.
83638 +
83639 +.SH "SEE ALSO"
83640 +.M CheckCRC32 "n" 
83641 +
83642 diff -Nurb click-1.6.0/inst/share/man/mann/SetCycleCount.n click-1.6.0-27/inst/share/man/mann/SetCycleCount.n
83643 --- click-1.6.0/inst/share/man/mann/SetCycleCount.n     1969-12-31 19:00:00.000000000 -0500
83644 +++ click-1.6.0-27/inst/share/man/mann/SetCycleCount.n  2009-02-11 14:08:51.000000000 -0500
83645 @@ -0,0 +1,42 @@
83646 +.\" -*- mode: nroff -*-
83647 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/setcyclecount.hh'
83648 +.de M
83649 +.IR "\\$1" "(\\$2)\\$3"
83650 +..
83651 +.de RM
83652 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83653 +..
83654 +.TH "SETCYCLECOUNT" n "11/Feb/2009" "Click"
83655 +.SH "NAME"
83656 +SetCycleCount \- Click element;
83657 +stores cycle count in annotation
83658 +.SH "SYNOPSIS"
83659 +\fBSetCycleCount\fR()
83660 +
83661 +\fBPorts\fR: 1 input, 1 output
83662 +.br
83663 +\fBProcessing\fR: agnostic
83664 +.br
83665 +\fBDrivers\fR: linuxmodule
83666 +.br
83667 +\fBPackage\fR: linuxmodule (core)
83668 +.br
83669 +.SH "DESCRIPTION"
83670 +Stores the current cycle count in an annotation in each packet. In
83671 +combination with 
83672 +.M CycleCountAccum "n" ,
83673 +this lets you measure how many cycles it
83674 +takes a packet to pass from one point to another.
83675 +.PP
83676 +
83677 +.SH "NOTES"
83678 +A packet has room for either exactly one cycle count or exactly one
83679 +performance metric.
83680 +.PP
83681 +
83682 +.SH "SEE ALSO"
83683 +.M CycleCountAccum n ,
83684 +.M RoundTripCycleCount n ,
83685 +.M SetPerfCount n ,
83686 +.M PerfCountAccum "n" 
83687 +
83688 diff -Nurb click-1.6.0/inst/share/man/mann/SetIPAddress.n click-1.6.0-27/inst/share/man/mann/SetIPAddress.n
83689 --- click-1.6.0/inst/share/man/mann/SetIPAddress.n      1969-12-31 19:00:00.000000000 -0500
83690 +++ click-1.6.0-27/inst/share/man/mann/SetIPAddress.n   2009-02-11 14:08:51.000000000 -0500
83691 @@ -0,0 +1,30 @@
83692 +.\" -*- mode: nroff -*-
83693 +.\" Generated by 'click-elem2man' from '../elements/ip/setipaddress.hh'
83694 +.de M
83695 +.IR "\\$1" "(\\$2)\\$3"
83696 +..
83697 +.de RM
83698 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83699 +..
83700 +.TH "SETIPADDRESS" n "11/Feb/2009" "Click"
83701 +.SH "NAME"
83702 +SetIPAddress \- Click element;
83703 +sets destination IP address annotations
83704 +.SH "SYNOPSIS"
83705 +\fBSetIPAddress\fR(IPADDR)
83706 +
83707 +\fBPorts\fR: 1 input, 1 output
83708 +.br
83709 +\fBProcessing\fR: agnostic
83710 +.br
83711 +\fBPackage\fR: ip (core)
83712 +.br
83713 +.SH "DESCRIPTION"
83714 +Set the destination IP address annotation of incoming packets to the
83715 +static IP address IPADDR.
83716 +.PP
83717 +
83718 +.SH "SEE ALSO"
83719 +.M StoreIPAddress n ,
83720 +.M GetIPAddress "n" 
83721 +
83722 diff -Nurb click-1.6.0/inst/share/man/mann/SetIPChecksum.n click-1.6.0-27/inst/share/man/mann/SetIPChecksum.n
83723 --- click-1.6.0/inst/share/man/mann/SetIPChecksum.n     1969-12-31 19:00:00.000000000 -0500
83724 +++ click-1.6.0-27/inst/share/man/mann/SetIPChecksum.n  2009-02-11 14:08:52.000000000 -0500
83725 @@ -0,0 +1,41 @@
83726 +.\" -*- mode: nroff -*-
83727 +.\" Generated by 'click-elem2man' from '../elements/ip/setipchecksum.hh'
83728 +.de M
83729 +.IR "\\$1" "(\\$2)\\$3"
83730 +..
83731 +.de RM
83732 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83733 +..
83734 +.TH "SETIPCHECKSUM" n "11/Feb/2009" "Click"
83735 +.SH "NAME"
83736 +SetIPChecksum \- Click element;
83737 +sets IP packets' checksums
83738 +.SH "SYNOPSIS"
83739 +\fBSetIPChecksum\fR()
83740 +
83741 +\fBPorts\fR: 1 input, 1 output
83742 +.br
83743 +\fBProcessing\fR: agnostic
83744 +.br
83745 +\fBPackage\fR: ip (core)
83746 +.br
83747 +.SH "DESCRIPTION"
83748 +Expects an IP packet as input.
83749 +Calculates the IP header's checksum and sets the checksum header field.
83750 +.PP
83751 +You will not normally need \fBSetIPChecksum\fR. Most elements that modify an IP
83752 +header, like 
83753 +.M DecIPTTL "n" ,
83754 +.M SetIPDSCP "n" ,
83755 +and 
83756 +.M IPRewriter "n" ,
83757 +already update the
83758 +checksum incrementally.
83759 +.PP
83760 +
83761 +.SH "SEE ALSO"
83762 +.M CheckIPHeader n ,
83763 +.M DecIPTTL n ,
83764 +.M SetIPDSCP n ,
83765 +.M IPRewriter "n" 
83766 +
83767 diff -Nurb click-1.6.0/inst/share/man/mann/SetIPDSCP.n click-1.6.0-27/inst/share/man/mann/SetIPDSCP.n
83768 --- click-1.6.0/inst/share/man/mann/SetIPDSCP.n 1969-12-31 19:00:00.000000000 -0500
83769 +++ click-1.6.0-27/inst/share/man/mann/SetIPDSCP.n      2009-02-11 14:08:51.000000000 -0500
83770 @@ -0,0 +1,28 @@
83771 +.\" -*- mode: nroff -*-
83772 +.\" Generated by 'click-elem2man' from '../elements/ip/setipdscp.hh'
83773 +.de M
83774 +.IR "\\$1" "(\\$2)\\$3"
83775 +..
83776 +.de RM
83777 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83778 +..
83779 +.TH "SETIPDSCP" n "11/Feb/2009" "Click"
83780 +.SH "NAME"
83781 +SetIPDSCP \- Click element;
83782 +sets IP packets' DSCP fields
83783 +.SH "SYNOPSIS"
83784 +\fBSetIPDSCP\fR(DSCP)
83785 +
83786 +\fBPorts\fR: 1 input, 1 output
83787 +.br
83788 +\fBProcessing\fR: agnostic
83789 +.br
83790 +\fBPackage\fR: ip (core)
83791 +.br
83792 +.SH "DESCRIPTION"
83793 +Expects IP packets as input and
83794 +sets their Differential Services Code Point to DSCP.
83795 +Then it incrementally recalculates the IP checksum
83796 +and passes the packet to output 0.
83797 +The DSCP is the upper 6 bits of the IP TOS field.
83798 +
83799 diff -Nurb click-1.6.0/inst/share/man/mann/SetPacketType.n click-1.6.0-27/inst/share/man/mann/SetPacketType.n
83800 --- click-1.6.0/inst/share/man/mann/SetPacketType.n     1969-12-31 19:00:00.000000000 -0500
83801 +++ click-1.6.0-27/inst/share/man/mann/SetPacketType.n  2009-02-11 14:08:51.000000000 -0500
83802 @@ -0,0 +1,28 @@
83803 +.\" -*- mode: nroff -*-
83804 +.\" Generated by 'click-elem2man' from '../elements/standard/setpackettype.hh'
83805 +.de M
83806 +.IR "\\$1" "(\\$2)\\$3"
83807 +..
83808 +.de RM
83809 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83810 +..
83811 +.TH "SETPACKETTYPE" n "11/Feb/2009" "Click"
83812 +.SH "NAME"
83813 +SetPacketType \- Click element;
83814 +sets packet type annotation
83815 +.SH "SYNOPSIS"
83816 +\fBSetPacketType\fR(TYPE)
83817 +
83818 +\fBPorts\fR: 1 input, 1 output
83819 +.br
83820 +\fBProcessing\fR: agnostic
83821 +.br
83822 +\fBPackage\fR: standard (core)
83823 +.br
83824 +.SH "DESCRIPTION"
83825 +\fBSetPacketType\fR sets passing packets' packet type annotations to TYPE. The
83826 +packet type annotation tells Linux about the packet's link-level
83827 +characteristics. For example, was the packet sent directly to this host, or
83828 +was it broadcast? TYPE should be one of `\f(CWHOST\fR', `\f(CWBROADCAST\fR',
83829 +`\f(CWMULTICAST\fR', `\f(CWOTHERHOST\fR', `\f(CWOUTGOING\fR', or `\f(CWLOOPBACK\fR'.
83830 +
83831 diff -Nurb click-1.6.0/inst/share/man/mann/SetPerfCount.n click-1.6.0-27/inst/share/man/mann/SetPerfCount.n
83832 --- click-1.6.0/inst/share/man/mann/SetPerfCount.n      1969-12-31 19:00:00.000000000 -0500
83833 +++ click-1.6.0-27/inst/share/man/mann/SetPerfCount.n   2009-02-11 14:08:52.000000000 -0500
83834 @@ -0,0 +1,46 @@
83835 +.\" -*- mode: nroff -*-
83836 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/setperfcount.hh'
83837 +.de M
83838 +.IR "\\$1" "(\\$2)\\$3"
83839 +..
83840 +.de RM
83841 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83842 +..
83843 +.TH "SETPERFCOUNT" n "11/Feb/2009" "Click"
83844 +.SH "NAME"
83845 +SetPerfCount \- Click element;
83846 +stores Pentium Pro performance metric in annotation
83847 +.SH "SYNOPSIS"
83848 +\fBSetPerfCount\fR(TYPE)
83849 +
83850 +\fBPorts\fR: 1 input, 1 output
83851 +.br
83852 +\fBProcessing\fR: agnostic
83853 +.br
83854 +\fBDrivers\fR: linuxmodule
83855 +.br
83856 +\fBPackage\fR: linuxmodule (core)
83857 +.br
83858 +.SH "DESCRIPTION"
83859 +Stores information about the Pentium Pro performance metric TYPE in each
83860 +packet. In combination with 
83861 +.M PerfCountAccum "n" ,
83862 +this lets you measure how the
83863 +metric changes over the packet's lifetime.
83864 +.PP
83865 +
83866 +.SH "NOTES"
83867 +A packet has room for either exactly one cycle count or exactly one
83868 +performance metric.
83869 +.PP
83870 +Valid performance metric names are \f(CWBUS_TRAN_INVAL\fR, \f(CWBUS_TRAN_MEM\fR,
83871 +\f(CWDCU_MISS_OUTSTANDING\fR, \f(CWIFU_FETCH\fR, \f(CWIFU_FETCH_MISS\fR, \f(CWIFU_MEM_STALL\fR,
83872 +\f(CWINST_RETIRED\fR, \f(CWL2_IFETCH\fR, \f(CWL2_LD\fR, \f(CWL2_LINES_IN\fR, \f(CWL2_LINES_OUT\fR,
83873 +\f(CWL2_LINES_OUTM\fR, and \f(CWL2_RQSTS\fR.
83874 +.PP
83875 +
83876 +.SH "SEE ALSO"
83877 +.M PerfCountAccum n ,
83878 +.M SetCycleCount n ,
83879 +.M CycleCountAccum "n" 
83880 +
83881 diff -Nurb click-1.6.0/inst/share/man/mann/SetRandIPAddress.n click-1.6.0-27/inst/share/man/mann/SetRandIPAddress.n
83882 --- click-1.6.0/inst/share/man/mann/SetRandIPAddress.n  1969-12-31 19:00:00.000000000 -0500
83883 +++ click-1.6.0-27/inst/share/man/mann/SetRandIPAddress.n       2009-02-11 14:08:51.000000000 -0500
83884 @@ -0,0 +1,33 @@
83885 +.\" -*- mode: nroff -*-
83886 +.\" Generated by 'click-elem2man' from '../elements/ip/setrandipaddress.hh'
83887 +.de M
83888 +.IR "\\$1" "(\\$2)\\$3"
83889 +..
83890 +.de RM
83891 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83892 +..
83893 +.TH "SETRANDIPADDRESS" n "11/Feb/2009" "Click"
83894 +.SH "NAME"
83895 +SetRandIPAddress \- Click element;
83896 +sets destination IP address annotations randomly
83897 +.SH "SYNOPSIS"
83898 +\fBSetRandIPAddress\fR(PREFIX, [LIMIT])
83899 +
83900 +\fBPorts\fR: 1 input, 1 output
83901 +.br
83902 +\fBProcessing\fR: agnostic
83903 +.br
83904 +\fBPackage\fR: ip (core)
83905 +.br
83906 +.SH "DESCRIPTION"
83907 +Set the destination IP address annotation to a random number within
83908 +the specified PREFIX.
83909 +.PP
83910 +If LIMIT is given, at most LIMIT distinct addresses will be generated.
83911 +.PP
83912 +
83913 +.SH "SEE ALSO"
83914 +.M StoreIPAddress n ,
83915 +.M GetIPAddress n ,
83916 +.M SetIPAddress "n" 
83917 +
83918 diff -Nurb click-1.6.0/inst/share/man/mann/SetTCPChecksum.n click-1.6.0-27/inst/share/man/mann/SetTCPChecksum.n
83919 --- click-1.6.0/inst/share/man/mann/SetTCPChecksum.n    1969-12-31 19:00:00.000000000 -0500
83920 +++ click-1.6.0-27/inst/share/man/mann/SetTCPChecksum.n 2009-02-11 14:08:52.000000000 -0500
83921 @@ -0,0 +1,34 @@
83922 +.\" -*- mode: nroff -*-
83923 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/settcpchecksum.hh'
83924 +.de M
83925 +.IR "\\$1" "(\\$2)\\$3"
83926 +..
83927 +.de RM
83928 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83929 +..
83930 +.TH "SETTCPCHECKSUM" n "11/Feb/2009" "Click"
83931 +.SH "NAME"
83932 +SetTCPChecksum \- Click element;
83933 +sets TCP packets' checksums
83934 +.SH "SYNOPSIS"
83935 +\fBSetTCPChecksum\fR([FIXOFF])
83936 +
83937 +\fBPorts\fR: 1 input, 1 output
83938 +.br
83939 +\fBProcessing\fR: agnostic
83940 +.br
83941 +\fBPackage\fR: tcpudp (core)
83942 +.br
83943 +.SH "DESCRIPTION"
83944 +Input packets should be TCP in IP.
83945 +.PP
83946 +Calculates the TCP header's checksum and sets the checksum header field.
83947 +Uses the IP header fields to generate the pseudo-header.
83948 +.PP
83949 +
83950 +.SH "SEE ALSO"
83951 +.M CheckTCPHeader n ,
83952 +.M SetIPChecksum n ,
83953 +.M CheckIPHeader n ,
83954 +.M SetUDPChecksum "n" 
83955 +
83956 diff -Nurb click-1.6.0/inst/share/man/mann/SetTimestamp.n click-1.6.0-27/inst/share/man/mann/SetTimestamp.n
83957 --- click-1.6.0/inst/share/man/mann/SetTimestamp.n      1969-12-31 19:00:00.000000000 -0500
83958 +++ click-1.6.0-27/inst/share/man/mann/SetTimestamp.n   2009-02-11 14:08:52.000000000 -0500
83959 @@ -0,0 +1,45 @@
83960 +.\" -*- mode: nroff -*-
83961 +.\" Generated by 'click-elem2man' from '../elements/standard/settimestamp.hh'
83962 +.de M
83963 +.IR "\\$1" "(\\$2)\\$3"
83964 +..
83965 +.de RM
83966 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
83967 +..
83968 +.TH "SETTIMESTAMP" n "11/Feb/2009" "Click"
83969 +.SH "NAME"
83970 +SetTimestamp \- Click element;
83971 +store the time in the packet's timestamp annotation
83972 +.SH "SYNOPSIS"
83973 +\fBSetTimestamp\fR([TIMESTAMP, \fIkeyword\fR FIRST, DELTA])
83974 +
83975 +\fBPorts\fR: 1 input, 1 output
83976 +.br
83977 +\fBProcessing\fR: agnostic
83978 +.br
83979 +\fBPackage\fR: standard (core)
83980 +.br
83981 +.SH "DESCRIPTION"
83982 +Store the specified TIMESTAMP in the packet's timestamp annotation. If
83983 +TIMESTAMP is not specified, then sets the annotation to the system time when
83984 +the packet arrived at the \fBSetTimestamp\fR element.
83985 +.PP
83986 +Keyword arguments are:
83987 +.PP
83988 +
83989 +
83990 +.IP "FIRST" 8
83991 +Boolean.  If true, then set the packet's "first timestamp" annotation, not its
83992 +timestamp annotation.  Default is true.
83993 +.IP "" 8
83994 +.IP "DELTA" 8
83995 +Boolean.  If true, then set the packet's timestamp annotation to the
83996 +difference between its current timestamp annotation and its "first timestamp"
83997 +annotation.  Default is false.
83998 +.IP "" 8
83999 +.PP
84000 +
84001 +.SH "SEE ALSO"
84002 +.M StoreTimestamp n ,
84003 +.M PrintOld "n" 
84004 +
84005 diff -Nurb click-1.6.0/inst/share/man/mann/SetUDPChecksum.n click-1.6.0-27/inst/share/man/mann/SetUDPChecksum.n
84006 --- click-1.6.0/inst/share/man/mann/SetUDPChecksum.n    1969-12-31 19:00:00.000000000 -0500
84007 +++ click-1.6.0-27/inst/share/man/mann/SetUDPChecksum.n 2009-02-11 14:08:51.000000000 -0500
84008 @@ -0,0 +1,38 @@
84009 +.\" -*- mode: nroff -*-
84010 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/setudpchecksum.hh'
84011 +.de M
84012 +.IR "\\$1" "(\\$2)\\$3"
84013 +..
84014 +.de RM
84015 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84016 +..
84017 +.TH "SETUDPCHECKSUM" n "11/Feb/2009" "Click"
84018 +.SH "NAME"
84019 +SetUDPChecksum \- Click element;
84020 +sets UDP packets' checksums
84021 +.SH "SYNOPSIS"
84022 +\fBSetUDPChecksum\fR()
84023 +
84024 +\fBPorts\fR: 1 input, 1-2 outputs
84025 +.br
84026 +\fBProcessing\fR: agnostic, but output 1 is push
84027 +.br
84028 +\fBPackage\fR: tcpudp (core)
84029 +.br
84030 +.SH "DESCRIPTION"
84031 +Input packets must be UDP in IP (the protocol field isn't checked).
84032 +.PP
84033 +Calculates the UDP checksum and sets the UDP header's checksum field. Uses
84034 +IP header fields to generate the pseudo-header.
84035 +.PP
84036 +If input packets are IP fragments, or the UDP length is longer than the
84037 +packet, then pushes the input packets to the 2nd output, or drops them if
84038 +there is no 2nd output.
84039 +.PP
84040 +
84041 +.SH "SEE ALSO"
84042 +.M CheckUDPHeader n ,
84043 +.M SetIPChecksum n ,
84044 +.M CheckIPHeader n ,
84045 +.M SetTCPChecksum "n" 
84046 +
84047 diff -Nurb click-1.6.0/inst/share/man/mann/Shaper.n click-1.6.0-27/inst/share/man/mann/Shaper.n
84048 --- click-1.6.0/inst/share/man/mann/Shaper.n    1969-12-31 19:00:00.000000000 -0500
84049 +++ click-1.6.0-27/inst/share/man/mann/Shaper.n 2009-02-11 14:08:51.000000000 -0500
84050 @@ -0,0 +1,54 @@
84051 +.\" -*- mode: nroff -*-
84052 +.\" Generated by 'click-elem2man' from '../elements/standard/shaper.hh'
84053 +.de M
84054 +.IR "\\$1" "(\\$2)\\$3"
84055 +..
84056 +.de RM
84057 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84058 +..
84059 +.TH "SHAPER" n "11/Feb/2009" "Click"
84060 +.SH "NAME"
84061 +Shaper \- Click element;
84062 +shapes traffic to maximum rate (pkt/s) 
84063 +.SH "SYNOPSIS"
84064 +\fBShaper\fR(RATE)
84065 +
84066 +\fBPorts\fR: 1 input, 1 output
84067 +.br
84068 +\fBProcessing\fR: pull
84069 +.br
84070 +\fBPackage\fR: standard (core)
84071 +.br
84072 +.SH "DESCRIPTION"
84073 +\fBShaper\fR is a pull element that allows a maximum of RATE packets per second
84074 +to pass through. That is, traffic is shaped to RATE packets per
84075 +second. \fBShaper\fR is dependent on the timing of its pull requests; if it
84076 +receives only sporadic pull requests, then it will emit packets only
84077 +sporadically. However, if it receives a large number of evenly-spaced pull
84078 +requests, then it will emit packets at the specified RATE with low
84079 +burstiness.
84080 +.PP
84081 +
84082 +.SH "NOTES"
84083 +\fBShaper\fR cannot implement every rate smoothly. For example, it can smoothly
84084 +generate 1000000 packets per second and 1000244 packets per second, but not
84085 +rates in between. (In-between rates will result in minor burstiness.) This
84086 +granularity issue is negligible at low rates, and becomes serious at very
84087 +high rates; for example, \fBShaper\fR cannot smoothly implement any rate between
84088 +2.048e10 and 4.096e10 packets per second.
84089 +.PP
84090 +
84091 +.SH "ELEMENT HANDLERS"
84092 +
84093 +
84094 +
84095 +.IP "\fBrate\fR (read/write)" 5
84096 +Returns or sets the RATE parameter.
84097 +.IP "" 5
84098 +.PP
84099 +
84100 +.SH "SEE ALSO"
84101 +.M BandwidthShaper n ,
84102 +.M RatedSplitter n ,
84103 +.M RatedUnqueue "n" 
84104 +
84105 diff -Nurb click-1.6.0/inst/share/man/mann/SimpleQueue.n click-1.6.0-27/inst/share/man/mann/SimpleQueue.n
84106 --- click-1.6.0/inst/share/man/mann/SimpleQueue.n       1969-12-31 19:00:00.000000000 -0500
84107 +++ click-1.6.0-27/inst/share/man/mann/SimpleQueue.n    2009-02-11 14:08:51.000000000 -0500
84108 @@ -0,0 +1,80 @@
84109 +.\" -*- mode: nroff -*-
84110 +.\" Generated by 'click-elem2man' from '../elements/standard/simplequeue.hh'
84111 +.de M
84112 +.IR "\\$1" "(\\$2)\\$3"
84113 +..
84114 +.de RM
84115 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84116 +..
84117 +.TH "SIMPLEQUEUE" n "11/Feb/2009" "Click"
84118 +.SH "NAME"
84119 +SimpleQueue \- Click element;
84120 +stores packets in a FIFO queue
84121 +.SH "SYNOPSIS"
84122 +SimpleQueue
84123 +.br
84124 +\fBSimpleQueue\fR(CAPACITY)
84125 +
84126 +\fBPorts\fR: 1 input, 1 output
84127 +.br
84128 +\fBProcessing\fR: push inputs, pull outputs
84129 +.br
84130 +\fBPackage\fR: standard (core)
84131 +.br
84132 +.SH "DESCRIPTION"
84133 +Stores incoming packets in a first-in-first-out queue.
84134 +Drops incoming packets if the queue already holds CAPACITY packets.
84135 +The default for CAPACITY is 1000.
84136 +.PP
84137 +\fBMultithreaded Click note:\fR \fBSimpleQueue\fR is designed to be used in an
84138 +environment with at most one concurrent pusher and at most one concurrent
84139 +puller.  Thus, at most one thread pushes to the \fBSimpleQueue\fR at a time and at
84140 +most one thread pulls from the \fBSimpleQueue\fR at a time.  Different threads can
84141 +push to and pull from the \fBSimpleQueue\fR concurrently, however.  See 
84142 +.M MSQueue "n" 
84143 +for
84144 +a queue that can support multiple concurrent pushers.
84145 +.PP
84146 +
84147 +.SH "NOTES"
84148 +The 
84149 +.M Queue "n" 
84150 +and 
84151 +.M NotifierQueue "n" 
84152 +elements act like \fBSimpleQueue\fR, but additionally
84153 +notify interested parties when they change state (from nonempty to empty or
84154 +vice versa, and/or from nonfull to full or vice versa).
84155 +.PP
84156 +
84157 +.SH "ELEMENT HANDLERS"
84158 +
84159 +
84160 +
84161 +.IP "\fBlength\fR (read-only)" 5
84162 +Returns the current number of packets in the queue.
84163 +.IP "" 5
84164 +.IP "\fBhighwater_length\fR (read-only)" 5
84165 +Returns the maximum number of packets that have ever been in the queue at once.
84166 +.IP "" 5
84167 +.IP "\fBcapacity\fR (read/write)" 5
84168 +Returns or sets the queue's capacity.
84169 +.IP "" 5
84170 +.IP "\fBdrops\fR (read-only)" 5
84171 +Returns the number of packets dropped by the queue so far.
84172 +.IP "" 5
84173 +.IP "\fBreset_counts\fR (write-only)" 5
84174 +When written, resets the \f(CWdrops\fR and \f(CWhighwater_length\fR counters.
84175 +.IP "" 5
84176 +.IP "\fBreset\fR (write-only)" 5
84177 +When written, drops all packets in the queue.
84178 +.IP "" 5
84179 +.PP
84180 +
84181 +.SH "SEE ALSO"
84182 +.M Queue n ,
84183 +.M NotifierQueue n ,
84184 +.M MixedQueue n ,
84185 +.M RED n ,
84186 +.M FrontDropQueue n ,
84187 +.M MSQueue "n" 
84188 +
84189 diff -Nurb click-1.6.0/inst/share/man/mann/Socket.n click-1.6.0-27/inst/share/man/mann/Socket.n
84190 --- click-1.6.0/inst/share/man/mann/Socket.n    1969-12-31 19:00:00.000000000 -0500
84191 +++ click-1.6.0-27/inst/share/man/mann/Socket.n 2009-02-11 14:08:52.000000000 -0500
84192 @@ -0,0 +1,165 @@
84193 +.\" -*- mode: nroff -*-
84194 +.\" Generated by 'click-elem2man' from '../elements/userlevel/socket.hh'
84195 +.de M
84196 +.IR "\\$1" "(\\$2)\\$3"
84197 +..
84198 +.de RM
84199 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84200 +..
84201 +.TH "SOCKET" n "11/Feb/2009" "Click"
84202 +.SH "NAME"
84203 +Socket \- Click element;
84204 +a socket transport (user-level)
84205 +.SH "SYNOPSIS"
84206 +\fBSocket\fR("TCP", IP, PORTNUMBER [, LOCALIP] [, LOCALPORTNUMBER] [, \fIKEYWORDS\fR])
84207 +.br
84208 +\fBSocket\fR("UDP", IP, PORTNUMBER [, LOCALIP] [, LOCALPORTNUMBER] [, \fIKEYWORDS\fR])
84209 +.br
84210 +\fBSocket\fR("UNIX", FILENAME [, LOCALFILENAME] [, \fIKEYWORDS\fR])
84211 +.br
84212 +\fBSocket\fR("UNIX_DGRAM", FILENAME [, LOCALFILENAME] [, \fIKEYWORDS\fR])
84213 +
84214 +\fBPorts\fR: at most 1 input, at most 1 output
84215 +.br
84216 +\fBDrivers\fR: userlevel
84217 +.br
84218 +\fBPackage\fR: userlevel (core)
84219 +.br
84220 +.SH "DESCRIPTION"
84221 +Transports packets over various types of sockets. Packets do not flow
84222 +through \fBSocket\fR elements (i.e., \fBSocket\fR is an "x/y" element). Instead,
84223 +input packets are sent to a remote host or process, and packets
84224 +received from the remote host or process are emitted on the output.
84225 +.PP
84226 +A \fBSocket\fR element of type "TCP" or "UNIX" may be either a server (the
84227 +default if CLIENT is not set) or a client (if CLIENT is set or if the
84228 +element has no outputs). If a server, the specified address/port/file
84229 +is bound and connections are accepted one at a time. If a client, a
84230 +connection attempt is made to the specified address/port/file during
84231 +element initialization.
84232 +.PP
84233 +A \fBSocket\fR element of type "UDP" or "UNIX_DGRAM" may also be either a
84234 +server or client. However, because datagram sockets are not connection
84235 +oriented, a datagram server may receive (and thus emit) packets from
84236 +multiple remote hosts or processes. If a server, input packets are
84237 +sent to the last remote host or process to send a packet to the
84238 +server. If a client, input packets are sent to the specified
84239 +address/port/file.
84240 +.PP
84241 +For convenience, if a client UDP \fBSocket\fR is configured with a zero IP
84242 +address, the \fBSocket\fR will send input packets to the destination IP
84243 +annotation of each packet.
84244 +.PP
84245 +If "LOCALIP"/"LOCALPORTNUMBER" or "LOCALFILENAME" is specified, CLIENT
84246 +is assumed if not set and the specified local address/port/file will
84247 +be bound before the connection attempt is made. If CLIENT is set to
84248 +false, any "LOCALIP"/"LOCALPORTNUMBER" and "LOCALFILENAME" arguments
84249 +are ignored.
84250 +.PP
84251 +\fBSocket\fR inputs are agnostic, i.e., they may be either "pull" or
84252 +"push". If pushed, packets will block on the underlying socket;
84253 +otherwise, the socket will pull packets as it can accept them. For
84254 +best performance, place a Notifier element (such as NotifierQueue)
84255 +upstream of a "pull" \fBSocket\fR.
84256 +.PP
84257 +Keyword arguments are:
84258 +.PP
84259 +
84260 +
84261 +.IP "SNAPLEN" 8
84262 +Unsigned integer. Maximum length of packets that can be
84263 +received. Default is 2048 bytes.
84264 +.IP "" 8
84265 +.IP "NODELAY" 8
84266 +Boolean. Applies to TCP sockets only. If set, disable the Nagle
84267 +algorithm. This means that segments are always sent as soon as
84268 +possible, even if there is only a small amount of data. When not set,
84269 +data is buffered until there is a sufficient amount to send out,
84270 +thereby avoiding the frequent sending of small packets, which results
84271 +in poor utilization of the network. Default is true.
84272 +.IP "" 8
84273 +.IP "CLIENT" 8
84274 +Boolean. If set, forces the socket to connect() (if SOCK_STREAM) to
84275 +the specified address/port (if AF_INET) or file handle (if AF_UNIX),
84276 +instead of bind()-ing and listen()-ing to it.
84277 +.IP "" 8
84278 +Default is false. However, if a \fBSocket\fR element has no output and
84279 +CLIENT is unspecified, it is assumed to be a client socket. If a
84280 +\fBSocket\fR element has no input and CLIENT is unspecified, it is assumed
84281 +to be a server socket.
84282 +.IP "" 8
84283 +.IP "SNDBUF" 8
84284 +Unsigned integer. Sets the maximum size in bytes of the underlying
84285 +socket send buffer. The default value is set by the wmem_default
84286 +sysctl and the maximum allowed value is set by the wmem_max sysctl.
84287 +.IP "" 8
84288 +.IP "RCVBUF" 8
84289 +Unsigned integer. Sets the maximum size in bytes of the underlying
84290 +socket receive buffer. The default value is set by the rmem_default
84291 +sysctl and the maximum allowed value is set by the rmem_max sysctl.
84292 +.IP "" 8
84293 +.IP "TIMESTAMP" 8
84294 +Boolean. If set, sets the timestamp field on received packets to the
84295 +current time. Default is true.
84296 +.IP "" 8
84297 +.IP "ALLOW" 8
84298 +The name of an IPRouteTable element, like RadixIPLookup or
84299 +DirectIPLookup. If set and the \fBSocket\fR element is a server, the \fBSocket\fR
84300 +element will lookup source IP addresses of clients in the specified
84301 +IPRouteTable before accepting a connection (if SOCK_STREAM) or
84302 +datagram (if SOCK_DGRAM). If the address is found, the connection or
84303 +datagram is accepted. If the address is not found, the DENY table will
84304 +then be checked (see below).
84305 +.IP "" 8
84306 +.IP "DENY" 8
84307 +The name of an IPRouteTable element, like RadixIPLookup or
84308 +DirectIPLookup. If set and the \fBSocket\fR element is a server, the \fBSocket\fR
84309 +element will lookup source IP addresses of clients in the specified
84310 +IPRouteTable before accepting a connection (if SOCK_STREAM) or
84311 +datagram (if SOCK_DGRAM). If the address is found, the connection or
84312 +datagram is dropped, otherwise it is accepted. Note that the ALLOW
84313 +table, if specified, is checked first. Wildcard matches may be
84314 +specified with netmasks; for example, to deny all hosts, specify a
84315 +route to "0.0.0.0/0" in the DENY table.
84316 +.IP "" 8
84317 +.IP "VERBOSE" 8
84318 +Boolean. When true, \fBSocket\fR will print messages whenever it accepts a
84319 +new connection or drops an old one. Default is false.
84320 +.IP "" 8
84321 +.IP "PROPER" 8
84322 +Boolean. PlanetLab specific. If true and Click has been configured
84323 +--with-proper, use Proper to bind a reserved port.
84324 +.IP "" 8
84325 +.PP
84326 +
84327 +.SH "EXAMPLES"
84328 +
84329 +.nf
84330 +\&  // A server socket
84331 +\&  Socket(TCP, 0.0.0.0, 80) -> ...
84332 +\& 
84333 +\&  // A client socket
84334 +\&  ... -> Socket(TCP, 1.2.3.4, 80)
84335 +\& 
84336 +\&  // A bi-directional server socket (handles one client at a time)
84337 +\&  ... -> Socket(TCP, 0.0.0.0, 80) -> ...
84338 +\& 
84339 +\&  // A bi-directional client socket
84340 +\&  ... -> Socket(TCP, 1.2.3.4, 80, CLIENT true) -> ...
84341 +\& 
84342 +\&  // A bi-directional client socket bound to a particular local port
84343 +\&  ... -> Socket(TCP, 1.2.3.4, 80, 0.0.0.0, 54321) -> ...
84344 +\& 
84345 +\&  // A localhost server socket
84346 +\&  allow :: RadixIPLookup(127.0.0.1 0);
84347 +\&  deny :: RadixIPLookup(0.0.0.0/0       0);
84348 +\&  allow -> deny -> allow; // (makes the configuration valid)
84349 +\&  Socket(TCP, 0.0.0.0, 80, ALLOW allow, DENY deny) -> ...
84350 +.fi
84351 +.PP
84352 +
84353 +
84354 +
84355 +.SH "SEE ALSO"
84356 +.M RawSocket "n" 
84357 +
84358 diff -Nurb click-1.6.0/inst/share/man/mann/SortedIPLookup.n click-1.6.0-27/inst/share/man/mann/SortedIPLookup.n
84359 --- click-1.6.0/inst/share/man/mann/SortedIPLookup.n    1969-12-31 19:00:00.000000000 -0500
84360 +++ click-1.6.0-27/inst/share/man/mann/SortedIPLookup.n 2009-02-11 14:08:52.000000000 -0500
84361 @@ -0,0 +1,34 @@
84362 +.\" -*- mode: nroff -*-
84363 +.\" Generated by 'click-elem2man' from '../elements/ip/sortediplookup.hh'
84364 +.de M
84365 +.IR "\\$1" "(\\$2)\\$3"
84366 +..
84367 +.de RM
84368 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84369 +..
84370 +.TH "SORTEDIPLOOKUP" n "11/Feb/2009" "Click"
84371 +.SH "NAME"
84372 +SortedIPLookup \- Click element;
84373 +simple IP routing table
84374 +.SH "SYNOPSIS"
84375 +\fBSortedIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
84376 +
84377 +\fBPorts\fR: 1 input, any number of outputs
84378 +.br
84379 +\fBProcessing\fR: push
84380 +.br
84381 +\fBPackage\fR: ip (core)
84382 +.br
84383 +.SH "DESCRIPTION"
84384 +\fBSortedIPLookup\fR is a version of 
84385 +.M LinearIPLookup "n" 
84386 +that sorts the routing table.
84387 +In practice, however, it performs worse than 
84388 +.M LinearIPLookup "n" ,
84389 +which itself
84390 +performs terribly, so it is deprecated.
84391 +.PP
84392 +
84393 +.SH "SEE ALSO"
84394 +.M LinearIPLookup "n" 
84395 +
84396 diff -Nurb click-1.6.0/inst/share/man/mann/SourceIPHashMapper.n click-1.6.0-27/inst/share/man/mann/SourceIPHashMapper.n
84397 --- click-1.6.0/inst/share/man/mann/SourceIPHashMapper.n        1969-12-31 19:00:00.000000000 -0500
84398 +++ click-1.6.0-27/inst/share/man/mann/SourceIPHashMapper.n     2009-02-11 14:08:51.000000000 -0500
84399 @@ -0,0 +1,40 @@
84400 +.\" -*- mode: nroff -*-
84401 +.\" Generated by 'click-elem2man' from '../elements/ip/siphmapper.hh'
84402 +.de M
84403 +.IR "\\$1" "(\\$2)\\$3"
84404 +..
84405 +.de RM
84406 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84407 +..
84408 +.TH "SOURCEIPHASHMAPPER" n "11/Feb/2009" "Click"
84409 +.SH "NAME"
84410 +SourceIPHashMapper \- Click element;
84411 +Source IP Hash mapper for 
84412 +.M IPRewriter n 
84413 +.SH "SYNOPSIS"
84414 +\fBSourceIPHashMapper\fR(NNODES SEED, PATTERN1, ..., PATTERNn)
84415 +
84416 +\fBPorts\fR: none
84417 +.br
84418 +\fBPackage\fR: ip (core)
84419 +.br
84420 +.SH "DESCRIPTION"
84421 +Works in tandem with 
84422 +.M IPRewriter "n" 
84423 +to provide source IP-based rewriting. 
84424 +This is useful, for example, in load-balancing applications. Implements the
84425 +IPMapper interface.
84426 +.PP
84427 +Like 
84428 +.M RoundRobinIPMapper "n" ,
84429 +but also uses consistent hashing to map
84430 +map elements by source IP to the same node in the cluster, even
84431 +if nodes are added or removed.
84432 +.PP
84433 +
84434 +.SH "SEE ALSO"
84435 +.M IPRewriter n ,
84436 +.M TCPRewriter n ,
84437 +.M IPRewriterPatterns n ,
84438 +.M RoundRobinIPMapper "n" 
84439 +
84440 diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockAcquire.n click-1.6.0-27/inst/share/man/mann/SpinlockAcquire.n
84441 --- click-1.6.0/inst/share/man/mann/SpinlockAcquire.n   1969-12-31 19:00:00.000000000 -0500
84442 +++ click-1.6.0-27/inst/share/man/mann/SpinlockAcquire.n        2009-02-11 14:08:52.000000000 -0500
84443 @@ -0,0 +1,24 @@
84444 +.\" -*- mode: nroff -*-
84445 +.\" Generated by 'click-elem2man' from '../elements/standard/spinlockacquire.hh'
84446 +.de M
84447 +.IR "\\$1" "(\\$2)\\$3"
84448 +..
84449 +.de RM
84450 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84451 +..
84452 +.TH "SPINLOCKACQUIRE" n "11/Feb/2009" "Click"
84453 +.SH "NAME"
84454 +SpinlockAcquire \- Click element;
84455 +acquires spinlock
84456 +.SH "SYNOPSIS"
84457 +\fBSpinlockAcquire\fR(LOCK)
84458 +
84459 +\fBPorts\fR: any number of inputs, any number of outputs
84460 +.br
84461 +\fBProcessing\fR: agnostic
84462 +.br
84463 +\fBPackage\fR: standard (core)
84464 +.br
84465 +.SH "DESCRIPTION"
84466 +Acquires the spinlock named LOCK. LOCK must be defined in a SpinlockInfo element.
84467 +
84468 diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockInfo.n click-1.6.0-27/inst/share/man/mann/SpinlockInfo.n
84469 --- click-1.6.0/inst/share/man/mann/SpinlockInfo.n      1969-12-31 19:00:00.000000000 -0500
84470 +++ click-1.6.0-27/inst/share/man/mann/SpinlockInfo.n   2009-02-11 14:08:52.000000000 -0500
84471 @@ -0,0 +1,24 @@
84472 +.\" -*- mode: nroff -*-
84473 +.\" Generated by 'click-elem2man' from '../elements/standard/spinlockinfo.hh'
84474 +.de M
84475 +.IR "\\$1" "(\\$2)\\$3"
84476 +..
84477 +.de RM
84478 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84479 +..
84480 +.TH "SPINLOCKINFO" n "11/Feb/2009" "Click"
84481 +.SH "NAME"
84482 +SpinlockInfo \- Click element;
84483 +specifies names of spinlocks
84484 +.SH "SYNOPSIS"
84485 +\fBSpinlockInfo\fR(NAME, ...)
84486 +
84487 +\fBPorts\fR: none
84488 +.br
84489 +\fBPackage\fR: standard (core)
84490 +.br
84491 +.SH "DESCRIPTION"
84492 +Lets you use mnemonic names for spinlocks. Each name names a spinlock that
84493 +the SpinlockAcquire and SpinlockRelease elements can use to reference a
84494 +spinlock.
84495 +
84496 diff -Nurb click-1.6.0/inst/share/man/mann/SpinlockRelease.n click-1.6.0-27/inst/share/man/mann/SpinlockRelease.n
84497 --- click-1.6.0/inst/share/man/mann/SpinlockRelease.n   1969-12-31 19:00:00.000000000 -0500
84498 +++ click-1.6.0-27/inst/share/man/mann/SpinlockRelease.n        2009-02-11 14:08:51.000000000 -0500
84499 @@ -0,0 +1,24 @@
84500 +.\" -*- mode: nroff -*-
84501 +.\" Generated by 'click-elem2man' from '../elements/standard/spinlockrelease.hh'
84502 +.de M
84503 +.IR "\\$1" "(\\$2)\\$3"
84504 +..
84505 +.de RM
84506 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84507 +..
84508 +.TH "SPINLOCKRELEASE" n "11/Feb/2009" "Click"
84509 +.SH "NAME"
84510 +SpinlockRelease \- Click element;
84511 +releases spinlock
84512 +.SH "SYNOPSIS"
84513 +\fBSpinlockRelease\fR(LOCK)
84514 +
84515 +\fBPorts\fR: any number of inputs, any number of outputs
84516 +.br
84517 +\fBProcessing\fR: agnostic
84518 +.br
84519 +\fBPackage\fR: standard (core)
84520 +.br
84521 +.SH "DESCRIPTION"
84522 +Releases the spinlock named LOCK. LOCK must be defined in a SpinlockInfo element.
84523 +
84524 diff -Nurb click-1.6.0/inst/share/man/mann/StaticIPLookup.n click-1.6.0-27/inst/share/man/mann/StaticIPLookup.n
84525 --- click-1.6.0/inst/share/man/mann/StaticIPLookup.n    1969-12-31 19:00:00.000000000 -0500
84526 +++ click-1.6.0-27/inst/share/man/mann/StaticIPLookup.n 2009-02-11 14:08:51.000000000 -0500
84527 @@ -0,0 +1,60 @@
84528 +.\" -*- mode: nroff -*-
84529 +.\" Generated by 'click-elem2man' from '../elements/ip/lookupiproute.hh'
84530 +.de M
84531 +.IR "\\$1" "(\\$2)\\$3"
84532 +..
84533 +.de RM
84534 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84535 +..
84536 +.TH "STATICIPLOOKUP" n "11/Feb/2009" "Click"
84537 +.SH "NAME"
84538 +StaticIPLookup \- Click element;
84539 +simple static IP routing table
84540 +.SH "SYNOPSIS"
84541 +\fBStaticIPLookup\fR(ADDR1/MASK1 [GW1] OUT1, ADDR2/MASK2 [GW2] OUT2, ...)
84542 +
84543 +\fBPorts\fR: 1 input, any number of outputs
84544 +.br
84545 +\fBProcessing\fR: push
84546 +.br
84547 +\fBPackage\fR: ip (core)
84548 +.br
84549 +.SH "DESCRIPTION"
84550 +\fBNote:\fR Lookups and table updates with \fBStaticIPLookup\fR are extremely slow; the
84551 +.M RadixIPLookup "n" ,
84552 +.M DirectIPLookup "n" ,
84553 +and 
84554 +.M RangeIPLookup "n" 
84555 +elements should be preferred
84556 +in almost all cases.  See 
84557 +.M IPRouteTable "n" 
84558 +for a performance comparison.  We
84559 +provide \fBStaticIPLookup\fR nevertheless for its simplicity.
84560 +.PP
84561 +This element acts like 
84562 +.M LinearIPLookup "n" ,
84563 +but does not allow dynamic adding and
84564 +deleting of routes.
84565 +.PP
84566 +
84567 +.SH "ELEMENT HANDLERS"
84568 +
84569 +
84570 +
84571 +.IP "\fBtable\fR (read-only)" 5
84572 +Outputs a human-readable version of the current routing table.
84573 +.IP "" 5
84574 +.IP "\fBlookup\fR (read-only)" 5
84575 +Reports the OUTput port and GW corresponding to an address.
84576 +.IP "" 5
84577 +.PP
84578 +
84579 +.SH "SEE ALSO"
84580 +.M RadixIPLookup n ,
84581 +.M DirectIPLookup n ,
84582 +.M RangeIPLookup n ,
84583 +.M LinearIPLookup n ,
84584 +.M SortedIPLookup n ,
84585 +.M LinuxIPLookup n ,
84586 +.M IPRouteTable "n" 
84587 +
84588 diff -Nurb click-1.6.0/inst/share/man/mann/StaticPullSwitch.n click-1.6.0-27/inst/share/man/mann/StaticPullSwitch.n
84589 --- click-1.6.0/inst/share/man/mann/StaticPullSwitch.n  1969-12-31 19:00:00.000000000 -0500
84590 +++ click-1.6.0-27/inst/share/man/mann/StaticPullSwitch.n       2009-02-11 14:08:51.000000000 -0500
84591 @@ -0,0 +1,41 @@
84592 +.\" -*- mode: nroff -*-
84593 +.\" Generated by 'click-elem2man' from '../elements/standard/staticpullswitch.hh'
84594 +.de M
84595 +.IR "\\$1" "(\\$2)\\$3"
84596 +..
84597 +.de RM
84598 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84599 +..
84600 +.TH "STATICPULLSWITCH" n "11/Feb/2009" "Click"
84601 +.SH "NAME"
84602 +StaticPullSwitch \- Click element;
84603 +forwards pull requests to fixed input
84604 +.SH "SYNOPSIS"
84605 +\fBStaticPullSwitch\fR(INPUT)
84606 +
84607 +\fBPorts\fR: any number of inputs, 1 output
84608 +.br
84609 +\fBProcessing\fR: pull
84610 +.br
84611 +\fBPackage\fR: standard (core)
84612 +.br
84613 +.SH "DESCRIPTION"
84614 +On every pull, \fBStaticPullSwitch\fR returns the packet pulled from one of its
84615 +input ports -- specifically, INPUT. Negative INPUTs mean always return
84616 +a null packet. \fBStaticPullSwitch\fR has an unlimited number of inputs.
84617 +.PP
84618 +
84619 +.SH "NOTES"
84620 +\fBStaticPullSwitch\fR differs from 
84621 +.M PullSwitch "n" 
84622 +in that it has no \f(CWswitch\fR write
84623 +handler, and thus does not allow INPUT to be changed at run time.
84624 +.PP
84625 +
84626 +.SH "SEE ALSO"
84627 +.M PullSwitch n ,
84628 +.M PrioSched n ,
84629 +.M RoundRobinSched n ,
84630 +.M StrideSched n ,
84631 +.M Switch "n" 
84632 +
84633 diff -Nurb click-1.6.0/inst/share/man/mann/StaticSwitch.n click-1.6.0-27/inst/share/man/mann/StaticSwitch.n
84634 --- click-1.6.0/inst/share/man/mann/StaticSwitch.n      1969-12-31 19:00:00.000000000 -0500
84635 +++ click-1.6.0-27/inst/share/man/mann/StaticSwitch.n   2009-02-11 14:08:51.000000000 -0500
84636 @@ -0,0 +1,40 @@
84637 +.\" -*- mode: nroff -*-
84638 +.\" Generated by 'click-elem2man' from '../elements/standard/staticswitch.hh'
84639 +.de M
84640 +.IR "\\$1" "(\\$2)\\$3"
84641 +..
84642 +.de RM
84643 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84644 +..
84645 +.TH "STATICSWITCH" n "11/Feb/2009" "Click"
84646 +.SH "NAME"
84647 +StaticSwitch \- Click element;
84648 +sends packet stream to fixed output
84649 +.SH "SYNOPSIS"
84650 +\fBStaticSwitch\fR(OUTPUT)
84651 +
84652 +\fBPorts\fR: 1 input, any number of outputs
84653 +.br
84654 +\fBProcessing\fR: push
84655 +.br
84656 +\fBPackage\fR: standard (core)
84657 +.br
84658 +.SH "DESCRIPTION"
84659 +\fBStaticSwitch\fR sends every incoming packet to one of its output ports --
84660 +specifically, OUTPUT. Negative OUTPUT means to destroy input packets
84661 +instead of forwarding them. \fBStaticSwitch\fR has an unlimited number of
84662 +outputs.
84663 +.PP
84664 +
84665 +.SH "NOTES"
84666 +\fBStaticSwitch\fR differs from 
84667 +.M Switch "n" 
84668 +in that it has no \f(CWswitch\fR write handler,
84669 +and thus does not allow OUTPUT to be changed at run time.
84670 +.PP
84671 +
84672 +.SH "SEE ALSO"
84673 +.M Switch n ,
84674 +.M StrideSwitch n ,
84675 +.M PullSwitch "n" 
84676 +
84677 diff -Nurb click-1.6.0/inst/share/man/mann/StaticThreadSched.n click-1.6.0-27/inst/share/man/mann/StaticThreadSched.n
84678 --- click-1.6.0/inst/share/man/mann/StaticThreadSched.n 1969-12-31 19:00:00.000000000 -0500
84679 +++ click-1.6.0-27/inst/share/man/mann/StaticThreadSched.n      2009-02-11 14:08:52.000000000 -0500
84680 @@ -0,0 +1,30 @@
84681 +.\" -*- mode: nroff -*-
84682 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/staticthreadsched.hh'
84683 +.de M
84684 +.IR "\\$1" "(\\$2)\\$3"
84685 +..
84686 +.de RM
84687 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84688 +..
84689 +.TH "STATICTHREADSCHED" n "11/Feb/2009" "Click"
84690 +.SH "NAME"
84691 +StaticThreadSched \- Click element;
84692 +specifies element and thread scheduling parameters
84693 +.SH "SYNOPSIS"
84694 +\fBStaticThreadSched\fR(ELEMENT THREAD, ...)
84695 +
84696 +\fBPorts\fR: none
84697 +.br
84698 +\fBDrivers\fR: linuxmodule
84699 +.br
84700 +\fBPackage\fR: linuxmodule (core)
84701 +.br
84702 +.SH "DESCRIPTION"
84703 +Statically binds elements to threads. If more than one \fBStaticThreadSched\fR
84704 +is specified, they will all run. The one that runs later may override an
84705 +earlier run.
84706 +
84707 +.SH "SEE ALSO"
84708 +.M ThreadMonitor n ,
84709 +.M BalancedThreadSched "n" 
84710 +
84711 diff -Nurb click-1.6.0/inst/share/man/mann/StoreData.n click-1.6.0-27/inst/share/man/mann/StoreData.n
84712 --- click-1.6.0/inst/share/man/mann/StoreData.n 1969-12-31 19:00:00.000000000 -0500
84713 +++ click-1.6.0-27/inst/share/man/mann/StoreData.n      2009-02-11 14:08:52.000000000 -0500
84714 @@ -0,0 +1,29 @@
84715 +.\" -*- mode: nroff -*-
84716 +.\" Generated by 'click-elem2man' from '../elements/standard/storedata.hh'
84717 +.de M
84718 +.IR "\\$1" "(\\$2)\\$3"
84719 +..
84720 +.de RM
84721 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84722 +..
84723 +.TH "STOREDATA" n "11/Feb/2009" "Click"
84724 +.SH "NAME"
84725 +StoreData \- Click element;
84726 +changes packet data
84727 +.SH "SYNOPSIS"
84728 +\fBStoreData\fR(OFFSET, DATA)
84729 +
84730 +\fBPorts\fR: 1 input, 1 output
84731 +.br
84732 +\fBProcessing\fR: agnostic
84733 +.br
84734 +\fBPackage\fR: standard (core)
84735 +.br
84736 +.SH "DESCRIPTION"
84737 +Changes packet data starting at OFFSET to DATA.
84738 +.PP
84739 +
84740 +.SH "SEE ALSO"
84741 +.M AlignmentInfo n ,
84742 +click-align(1)
84743 +
84744 diff -Nurb click-1.6.0/inst/share/man/mann/StoreIPAddress.n click-1.6.0-27/inst/share/man/mann/StoreIPAddress.n
84745 --- click-1.6.0/inst/share/man/mann/StoreIPAddress.n    1969-12-31 19:00:00.000000000 -0500
84746 +++ click-1.6.0-27/inst/share/man/mann/StoreIPAddress.n 2009-02-11 14:08:51.000000000 -0500
84747 @@ -0,0 +1,69 @@
84748 +.\" -*- mode: nroff -*-
84749 +.\" Generated by 'click-elem2man' from '../elements/ip/storeipaddress.hh'
84750 +.de M
84751 +.IR "\\$1" "(\\$2)\\$3"
84752 +..
84753 +.de RM
84754 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84755 +..
84756 +.TH "STOREIPADDRESS" n "11/Feb/2009" "Click"
84757 +.SH "NAME"
84758 +StoreIPAddress \- Click element;
84759 +stores IP address in packet
84760 +.SH "SYNOPSIS"
84761 +\fBStoreIPAddress\fR(OFFSET)
84762 +.br
84763 +\fBStoreIPAddress\fR(ADDRESS, OFFSET)
84764 +
84765 +\fBPorts\fR: 1 input, 1 output
84766 +.br
84767 +\fBProcessing\fR: agnostic
84768 +.br
84769 +\fBPackage\fR: ip (core)
84770 +.br
84771 +.SH "DESCRIPTION"
84772 +The one-argument form writes the destination IP address annotation into the
84773 +packet at offset OFFSET, usually an integer. But if the annotation is zero, it
84774 +doesn't change the packet.
84775 +.PP
84776 +The two-argument form writes ADDRESS into the packet at offset OFFSET. ADDRESS
84777 +can be zero.
84778 +.PP
84779 +The OFFSET argument may be the special string 'src' or 'dst'.  In this case,
84780 +incoming packets must be IP packets.  \fBStoreIPAddress\fR writes the address into
84781 +either the source or destination field of the IP packet header, as specified,
84782 +and incrementally updates the IP checksum (and, if appropriate, the TCP/UDP
84783 +checksum) to account for the change.
84784 +.PP
84785 +
84786 +.SH "NOTES"
84787 +Unless you use a special OFFSET of 'src' or 'dst', this element doesn't
84788 +recalculate any checksums.  If you store the address into an existing IP
84789 +packet, the packet's checksum will need to be set -- for example, with
84790 +.M SetIPChecksum "n" .
84791 +And don't forget that you might need to recalculate TCP and UDP
84792 +checksums as well. Here's a useful compound element:
84793 +.PP
84794 +.nf
84795 +\&  elementclass FixIPChecksums {
84796 +\&      // fix the IP checksum, and any embedded checksums that
84797 +\&      // include data from the IP header (TCP and UDP in particular)
84798 +\&      input -> SetIPChecksum
84799 +\&          -> ipc :: IPClassifier(tcp, udp, -)
84800 +\&          -> SetTCPChecksum
84801 +\&          -> output;
84802 +\&      ipc[1] -> SetUDPChecksum -> output;
84803 +\&      ipc[2] -> output
84804 +\&  }
84805 +.fi
84806 +.PP
84807 +
84808 +
84809 +
84810 +.SH "SEE ALSO"
84811 +.M SetIPChecksum n ,
84812 +.M SetTCPChecksum n ,
84813 +.M SetUDPChecksum n ,
84814 +.M IPAddrPairRewriter n ,
84815 +.M IPAddrRewriter "n" 
84816 +
84817 diff -Nurb click-1.6.0/inst/share/man/mann/StrideSched.n click-1.6.0-27/inst/share/man/mann/StrideSched.n
84818 --- click-1.6.0/inst/share/man/mann/StrideSched.n       1969-12-31 19:00:00.000000000 -0500
84819 +++ click-1.6.0-27/inst/share/man/mann/StrideSched.n    2009-02-11 14:08:52.000000000 -0500
84820 @@ -0,0 +1,52 @@
84821 +.\" -*- mode: nroff -*-
84822 +.\" Generated by 'click-elem2man' from '../elements/standard/stridesched.hh'
84823 +.de M
84824 +.IR "\\$1" "(\\$2)\\$3"
84825 +..
84826 +.de RM
84827 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84828 +..
84829 +.TH "STRIDESCHED" n "11/Feb/2009" "Click"
84830 +.SH "NAME"
84831 +StrideSched \- Click element;
84832 +pulls from stride-scheduled inputs
84833 +.SH "SYNOPSIS"
84834 +\fBStrideSched\fR(TICKETS0, ..., TICKETS\fIN-1\fR)
84835 +
84836 +\fBPorts\fR: 1 or more inputs, 1 output
84837 +.br
84838 +\fBProcessing\fR: pull
84839 +.br
84840 +\fBPackage\fR: standard (core)
84841 +.br
84842 +.SH "DESCRIPTION"
84843 +Has one output and N inputs.  Performs simple packet-based stride
84844 +scheduling, assigning TICKETS\fIi\fR to input \fIi\fR for each input.
84845 +.PP
84846 +Each time a pull comes in on the output, it pulls on its inputs in the order
84847 +specified by the stride scheduling queue, until all inputs have been tried
84848 +or one produces a packet.  If an input does not produce a packet, it is not
84849 +tried again in the current round (for the current pull on the output) even
84850 +if it has a very short stride.  This minimizes overhead and ensures that
84851 +an input that produces a packet, if any, is found as soon as possible,
84852 +consistently with the stride scheduler ordering.
84853 +.PP
84854 +The inputs usually come from Queues or other pull schedulers.
84855 +\fBStrideSched\fR uses notification to avoid pulling from empty inputs.
84856 +.PP
84857 +
84858 +.SH "ELEMENT HANDLERS"
84859 +
84860 +
84861 +
84862 +.IP "\fBtickets0...tickets\fIN-1\fB\fR (read/write)" 5
84863 +Returns or sets the number of tickets for each input port.
84864 +.IP "" 5
84865 +.PP
84866 +
84867 +.SH "SEE ALSO"
84868 +.M PrioSched n ,
84869 +.M RoundRobinSched n ,
84870 +.M DRRSched n ,
84871 +.M StrideSwitch "n" 
84872 +
84873 diff -Nurb click-1.6.0/inst/share/man/mann/StrideSwitch.n click-1.6.0-27/inst/share/man/mann/StrideSwitch.n
84874 --- click-1.6.0/inst/share/man/mann/StrideSwitch.n      1969-12-31 19:00:00.000000000 -0500
84875 +++ click-1.6.0-27/inst/share/man/mann/StrideSwitch.n   2009-02-11 14:08:51.000000000 -0500
84876 @@ -0,0 +1,45 @@
84877 +.\" -*- mode: nroff -*-
84878 +.\" Generated by 'click-elem2man' from '../elements/standard/strideswitch.hh'
84879 +.de M
84880 +.IR "\\$1" "(\\$2)\\$3"
84881 +..
84882 +.de RM
84883 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84884 +..
84885 +.TH "STRIDESWITCH" n "11/Feb/2009" "Click"
84886 +.SH "NAME"
84887 +StrideSwitch \- Click element;
84888 +sends packets to stride-scheduled outputs
84889 +.SH "SYNOPSIS"
84890 +\fBStrideSwitch\fR(TICKETS0, ..., TICKETS\fIN-1\fR)
84891 +
84892 +\fBPorts\fR: 1 input, 1 or more outputs
84893 +.br
84894 +\fBProcessing\fR: push
84895 +.br
84896 +\fBPackage\fR: standard (core)
84897 +.br
84898 +.SH "DESCRIPTION"
84899 +Has one input and N outputs.  Performs simple packet-based stride
84900 +switching, assigning TICKETS\fIi\fR to output \fIi\fR.
84901 +.PP
84902 +Each time a packet arrives on the input, \fBStrideSwitch\fR sends the packet to
84903 +the next scheduled output according to the stride scheduling algorithm.
84904 +.PP
84905 +
84906 +.SH "ELEMENT HANDLERS"
84907 +
84908 +
84909 +
84910 +.IP "\fBtickets0...tickets\fIN-1\fB\fR (read/write)" 5
84911 +Returns or sets the number of tickets for each output port.
84912 +.IP "" 5
84913 +.PP
84914 +
84915 +.SH "SEE ALSO"
84916 +.M RoundRobinSwitch n ,
84917 +.M Switch n ,
84918 +.M HashSwitch n ,
84919 +.M RandomSwitch n ,
84920 +.M StrideSched "n" 
84921 +
84922 diff -Nurb click-1.6.0/inst/share/man/mann/Strip.n click-1.6.0-27/inst/share/man/mann/Strip.n
84923 --- click-1.6.0/inst/share/man/mann/Strip.n     1969-12-31 19:00:00.000000000 -0500
84924 +++ click-1.6.0-27/inst/share/man/mann/Strip.n  2009-02-11 14:08:51.000000000 -0500
84925 @@ -0,0 +1,41 @@
84926 +.\" -*- mode: nroff -*-
84927 +.\" Generated by 'click-elem2man' from '../elements/standard/strip.hh'
84928 +.de M
84929 +.IR "\\$1" "(\\$2)\\$3"
84930 +..
84931 +.de RM
84932 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84933 +..
84934 +.TH "STRIP" n "11/Feb/2009" "Click"
84935 +.SH "NAME"
84936 +Strip \- Click element;
84937 +strips bytes from front of packets
84938 +.SH "SYNOPSIS"
84939 +\fBStrip\fR(LENGTH)
84940 +
84941 +\fBPorts\fR: 1 input, 1 output
84942 +.br
84943 +\fBProcessing\fR: agnostic
84944 +.br
84945 +\fBPackage\fR: standard (core)
84946 +.br
84947 +.SH "DESCRIPTION"
84948 +Deletes the first LENGTH bytes from each packet.
84949 +
84950 +.SH "EXAMPLES"
84951 +Use this to get rid of the Ethernet header:
84952 +.PP
84953 +.nf
84954 +\&  Strip(14)
84955 +.fi
84956 +.PP
84957 +
84958 +
84959 +
84960 +.SH "SEE ALSO"
84961 +.M StripToNetworkHeader n ,
84962 +.M StripIPHeader n ,
84963 +.M EtherEncap n ,
84964 +.M IPEncap n ,
84965 +.M Truncate "n" 
84966 +
84967 diff -Nurb click-1.6.0/inst/share/man/mann/StripIPHeader.n click-1.6.0-27/inst/share/man/mann/StripIPHeader.n
84968 --- click-1.6.0/inst/share/man/mann/StripIPHeader.n     1969-12-31 19:00:00.000000000 -0500
84969 +++ click-1.6.0-27/inst/share/man/mann/StripIPHeader.n  2009-02-11 14:08:51.000000000 -0500
84970 @@ -0,0 +1,42 @@
84971 +.\" -*- mode: nroff -*-
84972 +.\" Generated by 'click-elem2man' from '../elements/ip/stripipheader.hh'
84973 +.de M
84974 +.IR "\\$1" "(\\$2)\\$3"
84975 +..
84976 +.de RM
84977 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
84978 +..
84979 +.TH "STRIPIPHEADER" n "11/Feb/2009" "Click"
84980 +.SH "NAME"
84981 +StripIPHeader \- Click element;
84982 +strips outermost IP header
84983 +.SH "SYNOPSIS"
84984 +\fBStripIPHeader\fR()
84985 +
84986 +\fBPorts\fR: 1 input, 1 output
84987 +.br
84988 +\fBProcessing\fR: agnostic
84989 +.br
84990 +\fBPackage\fR: ip (core)
84991 +.br
84992 +.SH "DESCRIPTION"
84993 +Strips the outermost IP header from IP packets, based on the IP Header
84994 +annotation.
84995 +.PP
84996 +Note that the packet's annotations are not changed.  Thus, the packet's IP
84997 +header annotation continues to point at the IP header, even though the IP
84998 +header's data is now out of range.  To correctly handle an IP-in-IP packet,
84999 +you will probably need to follow \fBStripIPHeader\fR with a 
85000 +.M CheckIPHeader "n" 
85001 +or
85002 +.M MarkIPHeader "n" 
85003 +element, thus marking the packet's inner header.
85004 +.PP
85005 +
85006 +.SH "SEE ALSO"
85007 +.M CheckIPHeader n ,
85008 +.M CheckIPHeader2 n ,
85009 +.M MarkIPHeader n ,
85010 +.M UnstripIPHeader n ,
85011 +.M Strip "n" 
85012 +
85013 diff -Nurb click-1.6.0/inst/share/man/mann/StripToNetworkHeader.n click-1.6.0-27/inst/share/man/mann/StripToNetworkHeader.n
85014 --- click-1.6.0/inst/share/man/mann/StripToNetworkHeader.n      1969-12-31 19:00:00.000000000 -0500
85015 +++ click-1.6.0-27/inst/share/man/mann/StripToNetworkHeader.n   2009-02-11 14:08:51.000000000 -0500
85016 @@ -0,0 +1,33 @@
85017 +.\" -*- mode: nroff -*-
85018 +.\" Generated by 'click-elem2man' from '../elements/standard/striptonet.hh'
85019 +.de M
85020 +.IR "\\$1" "(\\$2)\\$3"
85021 +..
85022 +.de RM
85023 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85024 +..
85025 +.TH "STRIPTONETWORKHEADER" n "11/Feb/2009" "Click"
85026 +.SH "NAME"
85027 +StripToNetworkHeader \- Click element;
85028 +strips everything preceding network header
85029 +.SH "SYNOPSIS"
85030 +\fBStripToNetworkHeader\fR()
85031 +
85032 +\fBPorts\fR: 1 input, 1 output
85033 +.br
85034 +\fBProcessing\fR: agnostic
85035 +.br
85036 +\fBPackage\fR: standard (core)
85037 +.br
85038 +.SH "DESCRIPTION"
85039 +Strips any data preceding the network header from every passing packet.
85040 +Requires a network header annotation, such as an IP header annotation,
85041 +on every packet.
85042 +If the packet's network header annotation points before the start of the
85043 +packet data, then \fBStripToNetworkHeader\fR will move the packet data pointer
85044 +back, to point at the network header.
85045 +.PP
85046 +
85047 +.SH "SEE ALSO"
85048 +.M Strip "n" 
85049 +
85050 diff -Nurb click-1.6.0/inst/share/man/mann/Suppressor.n click-1.6.0-27/inst/share/man/mann/Suppressor.n
85051 --- click-1.6.0/inst/share/man/mann/Suppressor.n        1969-12-31 19:00:00.000000000 -0500
85052 +++ click-1.6.0-27/inst/share/man/mann/Suppressor.n     2009-02-11 14:08:51.000000000 -0500
85053 @@ -0,0 +1,41 @@
85054 +.\" -*- mode: nroff -*-
85055 +.\" Generated by 'click-elem2man' from '../elements/standard/suppressor.hh'
85056 +.de M
85057 +.IR "\\$1" "(\\$2)\\$3"
85058 +..
85059 +.de RM
85060 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85061 +..
85062 +.TH "SUPPRESSOR" n "11/Feb/2009" "Click"
85063 +.SH "NAME"
85064 +Suppressor \- Click element;
85065 +passes packets unchanged, optionally dropping some input ports
85066 +.SH "SYNOPSIS"
85067 +Suppressor
85068 +
85069 +\fBPorts\fR: any number of inputs, the same number of outputs
85070 +.br
85071 +\fBProcessing\fR: agnostic
85072 +.br
85073 +\fBPackage\fR: standard (core)
85074 +.br
85075 +.SH "DESCRIPTION"
85076 +\fBSuppressor\fR has \fIn\fR inputs and \fIn\fR outputs. It generally passes packets
85077 +from input \fIi\fR to output \fIi\fR unchanged. However, any input port can be
85078 +suppressed, through a handler or a method call by another element. Packets
85079 +arriving on suppressed push input ports are dropped; pull requests arriving
85080 +on suppressed pull output ports are ignored.
85081 +.PP
85082 +
85083 +.SH "ELEMENT HANDLERS"
85084 +
85085 +
85086 +
85087 +.IP "\fBactive0...active\fIN-1\fB\fR (read/write)" 5
85088 +Returns or sets whether each port is active (that is, not suppressed).
85089 +Every port starts out active.
85090 +.IP "" 5
85091 +.IP "\fBreset\fR (write-only)" 5
85092 +Resets every port to active.
85093 +.PP
85094 +
85095 diff -Nurb click-1.6.0/inst/share/man/mann/Switch.n click-1.6.0-27/inst/share/man/mann/Switch.n
85096 --- click-1.6.0/inst/share/man/mann/Switch.n    1969-12-31 19:00:00.000000000 -0500
85097 +++ click-1.6.0-27/inst/share/man/mann/Switch.n 2009-02-11 14:08:52.000000000 -0500
85098 @@ -0,0 +1,52 @@
85099 +.\" -*- mode: nroff -*-
85100 +.\" Generated by 'click-elem2man' from '../elements/standard/switch.hh'
85101 +.de M
85102 +.IR "\\$1" "(\\$2)\\$3"
85103 +..
85104 +.de RM
85105 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85106 +..
85107 +.TH "SWITCH" n "11/Feb/2009" "Click"
85108 +.SH "NAME"
85109 +Switch \- Click element;
85110 +sends packet stream to settable output
85111 +.SH "SYNOPSIS"
85112 +\fBSwitch\fR([OUTPUT])
85113 +
85114 +\fBPorts\fR: 1 input, any number of outputs
85115 +.br
85116 +\fBProcessing\fR: push
85117 +.br
85118 +\fBPackage\fR: standard (core)
85119 +.br
85120 +.SH "DESCRIPTION"
85121 +\fBSwitch\fR sends every incoming packet to one of its output ports --
85122 +specifically, OUTPUT. The default OUTPUT is zero; negative OUTPUT means to
85123 +destroy input packets instead of forwarding them. You can change OUTPUT with a
85124 +write handler. \fBSwitch\fR has an unlimited number of outputs.
85125 +.PP
85126 +
85127 +.SH "ELEMENT HANDLERS"
85128 +
85129 +
85130 +
85131 +.IP "\fBswitch\fR (read/write)" 5
85132 +Return or set the OUTPUT parameter.
85133 +.IP "" 5
85134 +.IP "\fBCLICK_LLRPC_GET_SWITCH\fR (llrpc)" 5
85135 +Argument is a pointer to an integer, in which the \fBSwitch\fR's K parameter is
85136 +stored.
85137 +.IP "" 5
85138 +.IP "\fBCLICK_LLRPC_SET_SWITCH\fR (llrpc)" 5
85139 +Argument is a pointer to an integer. Sets the K parameter to that integer.
85140 +.IP "" 5
85141 +.PP
85142 +
85143 +.SH "SEE ALSO"
85144 +.M StaticSwitch n ,
85145 +.M PullSwitch n ,
85146 +.M RoundRobinSwitch n ,
85147 +.M StrideSwitch n ,
85148 +.M HashSwitch n ,
85149 +.M RandomSwitch "n" 
85150 +
85151 diff -Nurb click-1.6.0/inst/share/man/mann/TCPRewriter.n click-1.6.0-27/inst/share/man/mann/TCPRewriter.n
85152 --- click-1.6.0/inst/share/man/mann/TCPRewriter.n       1969-12-31 19:00:00.000000000 -0500
85153 +++ click-1.6.0-27/inst/share/man/mann/TCPRewriter.n    2009-02-11 14:08:51.000000000 -0500
85154 @@ -0,0 +1,87 @@
85155 +.\" -*- mode: nroff -*-
85156 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/tcprewriter.hh'
85157 +.de M
85158 +.IR "\\$1" "(\\$2)\\$3"
85159 +..
85160 +.de RM
85161 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85162 +..
85163 +.TH "TCPREWRITER" n "11/Feb/2009" "Click"
85164 +.SH "NAME"
85165 +TCPRewriter \- Click element;
85166 +rewrites TCP packets' addresses, ports, and sequence numbers
85167 +.SH "SYNOPSIS"
85168 +\fBTCPRewriter\fR(INPUTSPEC1, ..., INPUTSPECn [, KEYWORDS])
85169 +
85170 +\fBPorts\fR: 1 or more inputs, 1-256 outputs
85171 +.br
85172 +\fBProcessing\fR: push
85173 +.br
85174 +\fBPackage\fR: tcpudp (core)
85175 +.br
85176 +.SH "DESCRIPTION"
85177 +Rewrites TCP flows by changing their source address, source port, destination
85178 +address, and/or destination port, and optionally, their sequence numbers and
85179 +acknowledgement numbers. It also changes the destination IP address
85180 +annotation; see the DST_ANNO keyword argument below.
85181 +.PP
85182 +This element is an 
85183 +.M IPRewriter "n" -like
85184 +element. Please read the 
85185 +.M IPRewriter "n" 
85186 +documentation for more information and a detailed description of its
85187 +INPUTSPEC arguments.
85188 +.PP
85189 +In addition to 
85190 +.M IPRewriter "n" 's
85191 +functionality, the \fBTCPRewriter\fR element can add or
85192 +subtract amounts from incoming packets' sequence and acknowledgement numbers,
85193 +including any SACK acknowledgement numbers. Each newly created mapping starts
85194 +with these deltas at zero; other elements can request changes to a given
85195 +mapping. For example, 
85196 +.M FTPPortMapper "n" 
85197 +uses this facility.
85198 +.PP
85199 +Keyword arguments determine how often stale mappings should be removed.
85200 +.PP
85201 +
85202 +
85203 +.IP "TCP_TIMEOUT \fItime\fR" 5
85204 +Time out TCP connections every \fItime\fR seconds. Default is 24 hours.
85205 +.IP "" 5
85206 +.IP "TCP_DONE_TIMEOUT \fItime\fR" 5
85207 +Time out completed TCP connections every \fItime\fR seconds. Default is 30
85208 +seconds. FIN and RST flags mark TCP connections as complete.
85209 +.IP "" 5
85210 +.IP "REAP_TCP \fItime\fR" 5
85211 +Reap timed-out TCP connections every \fItime\fR seconds. If no packets
85212 +corresponding to a given mapping have been seen for TCP_TIMEOUT, remove the
85213 +mapping as stale. Default is 1 hour.
85214 +.IP "" 5
85215 +.IP "REAP_TCP_DONE \fItime\fR" 5
85216 +Reap timed-out completed TCP connections every \fItime\fR seconds. Default is 10
85217 +seconds.
85218 +.IP "" 5
85219 +.IP "DST_ANNO" 5
85220 +Boolean. If true, then set the destination IP address annotation on passing
85221 +packets to the rewritten destination address. Default is true.
85222 +.IP "" 5
85223 +.PP
85224 +
85225 +.SH "ELEMENT HANDLERS"
85226 +
85227 +
85228 +
85229 +.IP "\fBmappings\fR (read-only)" 5
85230 +Returns a human-readable description of the \fBTCPRewriter\fR's current set of
85231 +mappings.
85232 +.IP "" 5
85233 +.PP
85234 +
85235 +.SH "SEE ALSO"
85236 +.M IPRewriter n ,
85237 +.M IPAddrRewriter n ,
85238 +.M IPAddrPairRewriter n ,
85239 +.M IPRewriterPatterns n ,
85240 +.M FTPPortMapper "n" 
85241 +
85242 diff -Nurb click-1.6.0/inst/share/man/mann/Tee.n click-1.6.0-27/inst/share/man/mann/Tee.n
85243 --- click-1.6.0/inst/share/man/mann/Tee.n       1969-12-31 19:00:00.000000000 -0500
85244 +++ click-1.6.0-27/inst/share/man/mann/Tee.n    2009-02-11 14:08:51.000000000 -0500
85245 @@ -0,0 +1,34 @@
85246 +.\" -*- mode: nroff -*-
85247 +.\" Generated by 'click-elem2man' from '../elements/standard/tee.hh'
85248 +.de M
85249 +.IR "\\$1" "(\\$2)\\$3"
85250 +..
85251 +.de RM
85252 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85253 +..
85254 +.TH "TEE, PULLTEE" n "11/Feb/2009" "Click"
85255 +.SH "NAME"
85256 +Tee, PullTee \- Click elements;
85257 +duplicates packets
85258 +.SH "SYNOPSIS"
85259 +\fBTee\fR([N])
85260 +.br
85261 +\fBPullTee\fR([N])
85262 +
85263 +\fBPorts\fR: 1 input, 1 or more outputs
85264 +.br
85265 +\fBProcessing\fR: push
85266 +.br
85267 +\fBPackage\fR: standard (core)
85268 +.br
85269 +.SH "DESCRIPTION"
85270 +\fBTee\fR sends a copy of each incoming packet out each output.
85271 +.PP
85272 +\fBPullTee\fR's input and its first output are pull; its other outputs are push.
85273 +Each time the pull output pulls a packet, it
85274 +sends a copy out the push outputs.
85275 +.PP
85276 +\fBTee\fR and \fBPullTee\fR have however many outputs are used in the configuration,
85277 +but you can say how many outputs you expect with the optional argument
85278 +N.
85279 +
85280 diff -Nurb click-1.6.0/inst/share/man/mann/TimedSink.n click-1.6.0-27/inst/share/man/mann/TimedSink.n
85281 --- click-1.6.0/inst/share/man/mann/TimedSink.n 1969-12-31 19:00:00.000000000 -0500
85282 +++ click-1.6.0-27/inst/share/man/mann/TimedSink.n      2009-02-11 14:08:51.000000000 -0500
85283 @@ -0,0 +1,28 @@
85284 +.\" -*- mode: nroff -*-
85285 +.\" Generated by 'click-elem2man' from '../elements/standard/timedsink.hh'
85286 +.de M
85287 +.IR "\\$1" "(\\$2)\\$3"
85288 +..
85289 +.de RM
85290 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85291 +..
85292 +.TH "TIMEDSINK" n "11/Feb/2009" "Click"
85293 +.SH "NAME"
85294 +TimedSink \- Click element;
85295 +periodically pulls and drops a packet
85296 +.SH "SYNOPSIS"
85297 +\fBTimedSink\fR([INTERVAL])
85298 +
85299 +\fBPorts\fR: 1 input, no outputs
85300 +.br
85301 +\fBProcessing\fR: pull
85302 +.br
85303 +\fBPackage\fR: standard (core)
85304 +.br
85305 +.SH "DESCRIPTION"
85306 +Pulls one packet every INTERVAL seconds from its input.
85307 +Discards the packet.  Default INTERVAL is 500 milliseconds.
85308 +
85309 +.SH "SEE ALSO"
85310 +.M Shaper "n" 
85311 +
85312 diff -Nurb click-1.6.0/inst/share/man/mann/TimedSource.n click-1.6.0-27/inst/share/man/mann/TimedSource.n
85313 --- click-1.6.0/inst/share/man/mann/TimedSource.n       1969-12-31 19:00:00.000000000 -0500
85314 +++ click-1.6.0-27/inst/share/man/mann/TimedSource.n    2009-02-11 14:08:51.000000000 -0500
85315 @@ -0,0 +1,70 @@
85316 +.\" -*- mode: nroff -*-
85317 +.\" Generated by 'click-elem2man' from '../elements/standard/timedsource.hh'
85318 +.de M
85319 +.IR "\\$1" "(\\$2)\\$3"
85320 +..
85321 +.de RM
85322 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85323 +..
85324 +.TH "TIMEDSOURCE" n "11/Feb/2009" "Click"
85325 +.SH "NAME"
85326 +TimedSource \- Click element;
85327 +periodically generates a packet
85328 +.SH "SYNOPSIS"
85329 +\fBTimedSource\fR([INTERVAL, DATA, \fIKEYWORDS\fR])
85330 +
85331 +\fBPorts\fR: no inputs, 1 output
85332 +.br
85333 +\fBProcessing\fR: push
85334 +.br
85335 +\fBPackage\fR: standard (core)
85336 +.br
85337 +.SH "DESCRIPTION"
85338 +Creates packets consisting of DATA. Pushes such a packet out its single output
85339 +about once every INTERVAL seconds. INTERVAL has millisecond precision. Default
85340 +INTERVAL is 500 milliseconds; default DATA is at least 64 bytes long.
85341 +.PP
85342 +Keyword arguments are:
85343 +.PP
85344 +
85345 +
85346 +.IP "DATA" 8
85347 +String. Same as the DATA argument.
85348 +.IP "" 8
85349 +.IP "INTERVAL" 8
85350 +Number of seconds. Same as the INTERVAL argument.
85351 +.IP "" 8
85352 +.IP "LIMIT" 8
85353 +Integer. Stops sending after LIMIT packets are generated; but if LIMIT is
85354 +negative, sends packets forever.
85355 +.IP "" 8
85356 +.IP "STOP" 8
85357 +Boolean. If true, then stop the driver once LIMIT packets are sent. Default is
85358 +false.
85359 +.IP "" 8
85360 +.PP
85361 +
85362 +.SH "EXAMPLES"
85363 +
85364 +.nf
85365 +\&  TimedSource(INTERVAL 0.333) -> ...
85366 +.fi
85367 +.PP
85368 +
85369 +
85370 +
85371 +.SH "ELEMENT HANDLERS"
85372 +
85373 +
85374 +
85375 +.IP "\fBdata\fR (read/write)" 5
85376 +Returns or sets the DATA parameter.
85377 +.IP "" 5
85378 +.IP "\fBinterval\fR (read/write)" 5
85379 +Returns or sets the INTERVAL parameter.
85380 +.IP "" 5
85381 +.PP
85382 +
85383 +.SH "SEE ALSO"
85384 +.M InfiniteSource "n" 
85385 +
85386 diff -Nurb click-1.6.0/inst/share/man/mann/ToDevice.n click-1.6.0-27/inst/share/man/mann/ToDevice.n
85387 --- click-1.6.0/inst/share/man/mann/ToDevice.n  1969-12-31 19:00:00.000000000 -0500
85388 +++ click-1.6.0-27/inst/share/man/mann/ToDevice.n       2009-02-11 14:08:51.000000000 -0500
85389 @@ -0,0 +1,112 @@
85390 +.\" -*- mode: nroff -*-
85391 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/todevice.hh'
85392 +.de M
85393 +.IR "\\$1" "(\\$2)\\$3"
85394 +..
85395 +.de RM
85396 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85397 +..
85398 +.TH "TODEVICE" n "11/Feb/2009" "Click"
85399 +.SH "NAME"
85400 +ToDevice \- Click element;
85401 +sends packets to network device (Linux kernel)
85402 +.SH "SYNOPSIS"
85403 +\fBToDevice\fR(DEVNAME [, BURST, \fIKEYWORDS\fR])
85404 +
85405 +\fBPorts\fR: 1 input, no outputs
85406 +.br
85407 +\fBProcessing\fR: pull
85408 +.br
85409 +\fBDrivers\fR: linuxmodule
85410 +.br
85411 +\fBPackage\fR: linuxmodule (core)
85412 +.br
85413 +.SH "DESCRIPTION"
85414 +This manual page describes the Linux kernel module version of the \fBToDevice\fR
85415 +element. For the user-level element, read the 
85416 +.M ToDevice.u "n" 
85417 +manual page.
85418 +.PP
85419 +Pulls packets from its single input and sends them out the Linux network
85420 +interface named DEVNAME. DEVNAME may also be an Ethernet address, in which
85421 +case \fBToDevice\fR searches for a device with that address.
85422 +.PP
85423 +Sends up to BURST packets each time it is scheduled. By default, BURST is 16.
85424 +For good performance, you should set BURST to be 8 times the number of
85425 +elements that could generate packets for this device.
85426 +.PP
85427 +Packets must have a link header. For Ethernet, \fBToDevice\fR makes sure every
85428 +packet is at least 60 bytes long (but see NO_PAD).
85429 +.PP
85430 +Keyword arguments are:
85431 +.PP
85432 +
85433 +
85434 +.IP "BURST" 8
85435 +Unsigned integer. Same as the BURST argument.
85436 +.IP "" 8
85437 +.IP "QUIET" 8
85438 +Boolean.  If true, then suppress device up/down messages.  Default is false.
85439 +.IP "" 8
85440 +.IP "ALLOW_NONEXISTENT" 8
85441 +Allow nonexistent devices. If true, and no device named DEVNAME exists when
85442 +the router is initialized, then \fBToDevice\fR will report a warning (rather than an
85443 +error). Later, while the router is running, if a device named DEVNAME appears,
85444 +\fBToDevice\fR will seamlessly begin sending packets to it. Default is false.
85445 +.IP "" 8
85446 +.IP "NO_PAD" 8
85447 +Boolean. If true, don't force packets to be at least 60 bytes (the
85448 +minimum Ethernet packet size).  This is useful because some 802.11
85449 +cards can send shorter Ethernet format packets.  Defaults false.
85450 +.IP "" 8
85451 +.PP
85452 +
85453 +.SH "NOTES"
85454 +The Linux networking code may also send packets out the device. If the device
85455 +is in polling mode, Click will try to ensure that Linux eventually sends its
85456 +packets. Linux may cause the device to be busy when a \fBToDevice\fR wants to send a
85457 +packet. Click is not clever enough to re-queue such packets, and discards
85458 +them.
85459 +.PP
85460 +In Linux 2.2, whether or not the device is running in polling mode, \fBToDevice\fR
85461 +depends on the device driver's send operation for synchronization (e.g. tulip
85462 +send operation uses a bit lock). In Linux 2.4, we use the device's "xmit_lock"
85463 +to synchronize.
85464 +.PP
85465 +Packets sent via \fBToDevice\fR will not be received by any packet sniffers on the
85466 +machine. Use 
85467 +.M Tee "n" 
85468 +and 
85469 +.M ToHostSniffers "n" 
85470 +to send packets to sniffers explicitly.
85471 +.PP
85472 +
85473 +.SH "ELEMENT HANDLERS"
85474 +
85475 +
85476 +
85477 +.IP "\fBcount\fR (read-only)" 5
85478 +Returns the number of packets \fBToDevice\fR has pulled.
85479 +.IP "" 5
85480 +.IP "\fBcalls\fR (read-only)" 5
85481 +Returns a summary of \fBToDevice\fR statistics.
85482 +.IP "" 5
85483 +.IP "\fBdrops\fR (read-only)" 5
85484 +Returns the number of packets \fBToDevice\fR has dropped.  \fBToDevice\fR will drop
85485 +packets because they are too short for the device, or because the device
85486 +explicitly rejected them.
85487 +.IP "" 5
85488 +.IP "\fBreset_counts\fR (write-only)" 5
85489 +Resets counters to zero when written.
85490 +.IP "" 5
85491 +.PP
85492 +
85493 +.SH "SEE ALSO"
85494 +.M FromDevice n ,
85495 +.M PollDevice n ,
85496 +.M FromHost n ,
85497 +.M ToHost n ,
85498 +.M ToDevice.u n ,
85499 +.M Tee n ,
85500 +.M ToHostSniffers "n" 
85501 +
85502 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
85503 --- click-1.6.0/inst/share/man/mann/ToDevice.u.n        1969-12-31 19:00:00.000000000 -0500
85504 +++ click-1.6.0-27/inst/share/man/mann/ToDevice.u.n     2009-02-11 14:08:52.000000000 -0500
85505 @@ -0,0 +1,68 @@
85506 +.\" -*- mode: nroff -*-
85507 +.\" Generated by 'click-elem2man' from '../elements/userlevel/todevice.hh'
85508 +.de M
85509 +.IR "\\$1" "(\\$2)\\$3"
85510 +..
85511 +.de RM
85512 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85513 +..
85514 +.TH "TODEVICE.U" n "11/Feb/2009" "Click"
85515 +.SH "NAME"
85516 +ToDevice.u \- Click element;
85517 +sends packets to network device (user-level)
85518 +.SH "SYNOPSIS"
85519 +\fBToDevice\fR(DEVNAME [, \fIKEYWORDS\fR])
85520 +
85521 +\fBPorts\fR: 1 input, at most 2 outputs
85522 +.br
85523 +\fBProcessing\fR: pull inputs, push outputs
85524 +.br
85525 +\fBDrivers\fR: userlevel
85526 +.br
85527 +\fBPackage\fR: userlevel (core)
85528 +.br
85529 +.SH "DESCRIPTION"
85530 +This manual page describes the user-level version of the \fBToDevice\fR element.
85531 +For the Linux kernel module element, read the 
85532 +.M ToDevice n 
85533 +manual page.
85534 +.PP
85535 +Pulls packets and sends them out the named device using
85536 +Berkeley Packet Filters (or Linux equivalent).
85537 +.PP
85538 +Keyword arguments are:
85539 +.PP
85540 +
85541 +
85542 +.IP "DEBUG" 8
85543 +Boolean.  If true, print out debug messages.
85544 +.IP "" 8
85545 +.PP
85546 +This element is only available at user level.
85547 +.PP
85548 +.SH "NOTES"
85549 +Packets sent via \fBToDevice\fR should already have a link-level
85550 +header prepended. This means that ARP processing,
85551 +for example, must already have been done.
85552 +.PP
85553 +Under Linux, a 
85554 +.M FromDevice n 
85555 +element will not receive packets sent by a
85556 +\fBToDevice\fR element for the same device. Under other operating systems, your
85557 +mileage may vary.
85558 +.PP
85559 +Packets that are written successfully are sent on output 0, if it exists.
85560 +Packets that fail to be written are pushed out output 1, if it exists.
85561 +.PP
85562 +.M KernelTun "n" 
85563 +lets you send IP packets to the host kernel's IP processing code,
85564 +sort of like the kernel module's ToHost element.
85565 +.PP
85566 +
85567 +.SH "SEE ALSO"
85568 +.M FromDevice.u n ,
85569 +.M FromDump n ,
85570 +.M ToDump n ,
85571 +.M KernelTun n ,
85572 +\fBToDevice\fR(n)
85573 +
85574 diff -Nurb click-1.6.0/inst/share/man/mann/ToDump.n click-1.6.0-27/inst/share/man/mann/ToDump.n
85575 --- click-1.6.0/inst/share/man/mann/ToDump.n    1969-12-31 19:00:00.000000000 -0500
85576 +++ click-1.6.0-27/inst/share/man/mann/ToDump.n 2009-02-11 14:08:51.000000000 -0500
85577 @@ -0,0 +1,95 @@
85578 +.\" -*- mode: nroff -*-
85579 +.\" Generated by 'click-elem2man' from '../elements/userlevel/todump.hh'
85580 +.de M
85581 +.IR "\\$1" "(\\$2)\\$3"
85582 +..
85583 +.de RM
85584 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85585 +..
85586 +.TH "TODUMP" n "11/Feb/2009" "Click"
85587 +.SH "NAME"
85588 +ToDump \- Click element;
85589 +writes packets to a tcpdump file
85590 +.SH "SYNOPSIS"
85591 +\fBToDump\fR(FILENAME [, \fIkeywords\fR SNAPLEN, ENCAP, USE_ENCAP_FROM, EXTRA_LENGTH])
85592 +
85593 +\fBPorts\fR: 1 input, at most 1 output
85594 +.br
85595 +\fBProcessing\fR: agnostic
85596 +.br
85597 +\fBDrivers\fR: userlevel, ns
85598 +.br
85599 +\fBPackage\fR: userlevel (core)
85600 +.br
85601 +.SH "DESCRIPTION"
85602 +Writes incoming packets to FILENAME in `tcpdump -w' format. This file can be
85603 +read by `tcpdump -r', or by 
85604 +.M FromDump "n" 
85605 +on a later run. FILENAME can be `-', in
85606 +which case \fBToDump\fR writes to the standard output.
85607 +.PP
85608 +Writes at most SNAPLEN bytes of each packet to the file. The default SNAPLEN
85609 +is 2000. If SNAPLEN is 0, the whole packet will be written to the file.  ENCAP
85610 +specifies the first header each packet is expected to have.  This information
85611 +is stored in the file header, and must be correct or tcpdump won't be able to
85612 +read the file correctly. It can be \f(CWETHER\fR (Ethernet encapsulation),
85613 +\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,
85614 +\f(CWPPP_HDLC\fR, \f(CWPPP\fR, \f(CWSUNATM\fR, \f(CWPRISM\fR, or \f(CWNULL\fR; the default is \f(CWETHER\fR.
85615 +.PP
85616 +\fBToDump\fR may have zero or one output. If it has an output, then it emits all
85617 +received packets on that output. \fBToDump\fR will schedule itself on the task list
85618 +if it is used as a pull element with no outputs.
85619 +.PP
85620 +Keyword arguments are:
85621 +.PP
85622 +
85623 +
85624 +.IP "SNAPLEN" 8
85625 +Integer.  See above.
85626 +.IP "" 8
85627 +.IP "ENCAP" 8
85628 +The encapsulation type to store in the dump.  See above.
85629 +.IP "" 8
85630 +.IP "USE_ENCAP_FROM" 8
85631 +Argument is a space-separated list of element names. At initialization time,
85632 +\fBToDump\fR will check these elements' `encap' handlers, and parse them as ENCAP
85633 +arguments. If all the handlers agree, \fBToDump\fR will use that encapsulation type;
85634 +otherwise, it will report an error. You can specify at most one of ENCAP and
85635 +USE_ENCAP_FROM. 
85636 +.M FromDump "n" 
85637 +and 
85638 +.M FromDevice.u "n" 
85639 +have `encap' handlers.
85640 +.IP "" 8
85641 +.IP "EXTRA_LENGTH" 8
85642 +Boolean. Set to true if you want \fBToDump\fR to store any extra length as recorded
85643 +in packets' extra length annotations. Default is true.
85644 +.IP "" 8
85645 +.PP
85646 +This element is only available at user level.
85647 +.PP
85648 +.SH "NOTES"
85649 +\fBToDump\fR stores packets' true length annotations when available.
85650 +.PP
85651 +
85652 +.SH "ELEMENT HANDLERS"
85653 +
85654 +
85655 +
85656 +.IP "\fBcount\fR (read-only)" 5
85657 +Returns the number of packets emitted so far.
85658 +.IP "" 5
85659 +.IP "\fBreset_counts\fR (write-only)" 5
85660 +Resets "count" to 0.
85661 +.IP "" 5
85662 +.IP "\fBfilename\fR (read-only)" 5
85663 +Returns the filename.
85664 +.IP "" 5
85665 +.PP
85666 +
85667 +.SH "SEE ALSO"
85668 +.M FromDump n ,
85669 +.M FromDevice.u n ,
85670 +.M ToDevice.u n ,
85671 +tcpdump(1)
85672 +
85673 diff -Nurb click-1.6.0/inst/share/man/mann/ToHost.n click-1.6.0-27/inst/share/man/mann/ToHost.n
85674 --- click-1.6.0/inst/share/man/mann/ToHost.n    1969-12-31 19:00:00.000000000 -0500
85675 +++ click-1.6.0-27/inst/share/man/mann/ToHost.n 2009-02-11 14:08:51.000000000 -0500
85676 @@ -0,0 +1,107 @@
85677 +.\" -*- mode: nroff -*-
85678 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/tohost.hh'
85679 +.de M
85680 +.IR "\\$1" "(\\$2)\\$3"
85681 +..
85682 +.de RM
85683 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85684 +..
85685 +.TH "TOHOST" n "11/Feb/2009" "Click"
85686 +.SH "NAME"
85687 +ToHost \- Click element;
85688 +sends packets to Linux
85689 +.SH "SYNOPSIS"
85690 +\fBToHost\fR([DEVNAME, \fIkeywords\fR SNIFFERS, QUIET, ALLOW_NONEXISTENT])
85691 +
85692 +\fBPorts\fR: 1 input, no outputs
85693 +.br
85694 +\fBProcessing\fR: push
85695 +.br
85696 +\fBDrivers\fR: linuxmodule
85697 +.br
85698 +\fBPackage\fR: linuxmodule (core)
85699 +.br
85700 +.SH "DESCRIPTION"
85701 +Hands packets to the ordinary Linux protocol stack.
85702 +Expects packets with Ethernet headers.
85703 +.PP
85704 +You should probably give Linux IP packets addressed to
85705 +the local machine (including broadcasts), and a copy
85706 +of each ARP reply.
85707 +.PP
85708 +If DEVNAME is present, each packet is marked to appear as if it originated
85709 +from that network device -- that is, its device annotation is set to that
85710 +device. As with 
85711 +.M ToDevice "n" ,
85712 +DEVNAME can be an Ethernet address.
85713 +.PP
85714 +This element is only available in the Linux kernel module.
85715 +.PP
85716 +Keyword arguments are:
85717 +.PP
85718 +
85719 +
85720 +.IP "SNIFFERS" 8
85721 +Boolean. If true, then \fBToHost\fR will send packets to the kernel so that only
85722 +tcpdump(1), and other sniffer programs on the host, will receive them.
85723 +Default is false.
85724 +.IP "" 8
85725 +.IP "QUIET" 8
85726 +Boolean.  If true, then suppress device up/down messages.  Default is false.
85727 +.IP "" 8
85728 +.IP "ALLOW_NONEXISTENT" 8
85729 +Allow nonexistent devices. If true, and no device named DEVNAME exists when
85730 +the router is initialized, then \fBToHost\fR will report a warning (rather than
85731 +an error). Later, while the router is running, if a device named DEVNAME
85732 +appears, \fBToHost\fR will seamlessly begin using it. Default is false.
85733 +.IP "" 8
85734 +.PP
85735 +
85736 +.SH "NOTES"
85737 +Linux expects packets to have valid device annotations and packet type
85738 +annotations. \fBToHost\fR will not pass packets with null device annotations to
85739 +Linux! Use the `\f(CWToHost(eth0)\fR' syntax to supply a device annotation. Most
85740 +packets generated by Click will have null device annotations -- for
85741 +example, 
85742 +.M InfiniteSource "n" 
85743 +makes packets with null device annotations.
85744 +Exceptions include 
85745 +.M FromDevice "n" 
85746 +and 
85747 +.M PollDevice "n" .
85748 +.PP
85749 +Linux depends on packet type annotations as well. It will generally only
85750 +process packets with packet type annotation HOST. (Other packets, such as
85751 +packets originally sent to some other host, are sent only to packet
85752 +sniffers like tcpdump(1). Linux will handle some BROADCAST and MULTICAST
85753 +packets.) By default, packets made by Click have HOST packet type
85754 +annotations. However, if you modified a packet that you originally got from
85755 +some device, that packet may have some other type. Use 
85756 +.M SetPacketType "n" 
85757 +to
85758 +reset the type appropriately.
85759 +.PP
85760 +Finally, IPv4 packets should have a destination IP address corresponding
85761 +to DEVNAME, and a routable source address. Otherwise Linux will silently
85762 +drop the packets.
85763 +.PP
85764 +
85765 +.SH "ELEMENT HANDLERS"
85766 +
85767 +
85768 +
85769 +.IP "\fBdrops\fR (read-only)" 5
85770 +Reports the number of packets \fBToHost\fR has dropped because they had a null
85771 +device annotation.
85772 +.IP "" 5
85773 +.PP
85774 +
85775 +.SH "SEE ALSO"
85776 +.M ToHostSniffers n ,
85777 +.M FromHost n ,
85778 +.M FromDevice n ,
85779 +.M PollDevice n ,
85780 +.M ToDevice n ,
85781 +.M SetPacketType n ,
85782 +.M InfiniteSource "n" 
85783 +
85784 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
85785 --- click-1.6.0/inst/share/man/mann/ToHost.u.n  1969-12-31 19:00:00.000000000 -0500
85786 +++ click-1.6.0-27/inst/share/man/mann/ToHost.u.n       2009-02-11 14:08:52.000000000 -0500
85787 @@ -0,0 +1,54 @@
85788 +.\" -*- mode: nroff -*-
85789 +.\" Generated by 'click-elem2man' from '../elements/userlevel/tohost.hh'
85790 +.de M
85791 +.IR "\\$1" "(\\$2)\\$3"
85792 +..
85793 +.de RM
85794 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85795 +..
85796 +.TH "TOHOST.U" n "11/Feb/2009" "Click"
85797 +.SH "NAME"
85798 +ToHost.u \- Click element;
85799 +sends packets to Linux via Universal TUN/TAP device.
85800 +.SH "SYNOPSIS"
85801 +\fBToHost\fR([DEVNAME])
85802 +
85803 +\fBPorts\fR: 1 input, no outputs
85804 +.br
85805 +\fBProcessing\fR: push
85806 +.br
85807 +\fBDrivers\fR: userlevel
85808 +.br
85809 +\fBPackage\fR: userlevel (core)
85810 +.br
85811 +.SH "DESCRIPTION"
85812 +Hands packets to the ordinary Linux protocol stack.
85813 +Expects packets with Ethernet headers.
85814 +.PP
85815 +You should probably give Linux IP packets addressed to
85816 +the local machine (including broadcasts), and a copy
85817 +of each ARP reply.
85818 +.PP
85819 +\fBToHost\fR requires an initialized 
85820 +.M FromHost "n" 
85821 +with the same DEVNAME.
85822 +.PP
85823 +IPv4 packets should have a destination IP address corresponding
85824 +to DEVNAME, and a routable source address. Otherwise Linux will silently
85825 +drop the packets.
85826 +.PP
85827 +
85828 +.SH "ELEMENT HANDLERS"
85829 +
85830 +
85831 +
85832 +.IP "\fBdrops\fR (read-only)" 5
85833 +Reports the number of packets \fBToHost\fR has dropped because they had a null
85834 +device annotation.
85835 +.IP "" 5
85836 +.PP
85837 +
85838 +.SH "SEE ALSO"
85839 +.M FromHost.u n ,
85840 +.M FromHost "n" 
85841 +
85842 diff -Nurb click-1.6.0/inst/share/man/mann/ToHostSniffers.n click-1.6.0-27/inst/share/man/mann/ToHostSniffers.n
85843 --- click-1.6.0/inst/share/man/mann/ToHostSniffers.n    1969-12-31 19:00:00.000000000 -0500
85844 +++ click-1.6.0-27/inst/share/man/mann/ToHostSniffers.n 2009-02-11 14:08:52.000000000 -0500
85845 @@ -0,0 +1,51 @@
85846 +.\" -*- mode: nroff -*-
85847 +.\" Generated by 'click-elem2man' from '../elements/linuxmodule/tohostsniffers.hh'
85848 +.de M
85849 +.IR "\\$1" "(\\$2)\\$3"
85850 +..
85851 +.de RM
85852 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85853 +..
85854 +.TH "TOHOSTSNIFFERS" n "11/Feb/2009" "Click"
85855 +.SH "NAME"
85856 +ToHostSniffers \- Click element;
85857 +sends packets to Linux packet sniffers
85858 +.SH "SYNOPSIS"
85859 +\fBToHostSniffers\fR([DEVNAME, \fIkeywords\fR SNIFFERS, QUIET, ALLOW_NONEXISTENT])
85860 +
85861 +\fBPorts\fR: 1 input, no outputs
85862 +.br
85863 +\fBProcessing\fR: push
85864 +.br
85865 +\fBDrivers\fR: linuxmodule
85866 +.br
85867 +\fBPackage\fR: linuxmodule (core)
85868 +.br
85869 +.SH "DESCRIPTION"
85870 +Hands packets to any packet sniffers registered with Linux, such as packet
85871 +sockets. Packets are not passed to the ordinary Linux networking stack.
85872 +Expects packets with Ethernet headers.
85873 +.PP
85874 +If DEVNAME is present, each packet is marked to appear as if it originated
85875 +from that network device. As with 
85876 +.M ToDevice "n" ,
85877 +DEVNAME can be an Ethernet
85878 +address.
85879 +.PP
85880 +This element is only available in the Linux kernel module.
85881 +.PP
85882 +
85883 +.SH "NOTES"
85884 +\fBToHostSniffers\fR behaves exactly like 
85885 +.M ToHost "n" ,
85886 +except that the SNIFFERS
85887 +keyword argument defaults to true.
85888 +.PP
85889 +
85890 +.SH "SEE ALSO"
85891 +.M ToHost n ,
85892 +.M FromHost n ,
85893 +.M FromDevice n ,
85894 +.M PollDevice n ,
85895 +.M ToDevice "n" 
85896 +
85897 diff -Nurb click-1.6.0/inst/share/man/mann/ToRawSocket.n click-1.6.0-27/inst/share/man/mann/ToRawSocket.n
85898 --- click-1.6.0/inst/share/man/mann/ToRawSocket.n       1969-12-31 19:00:00.000000000 -0500
85899 +++ click-1.6.0-27/inst/share/man/mann/ToRawSocket.n    2009-02-11 14:08:51.000000000 -0500
85900 @@ -0,0 +1,60 @@
85901 +.\" -*- mode: nroff -*-
85902 +.\" Generated by 'click-elem2man' from '../elements/userlevel/torawsocket.hh'
85903 +.de M
85904 +.IR "\\$1" "(\\$2)\\$3"
85905 +..
85906 +.de RM
85907 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85908 +..
85909 +.TH "TORAWSOCKET" n "11/Feb/2009" "Click"
85910 +.SH "NAME"
85911 +ToRawSocket \- Click element;
85912 +sends IP packets through a safe raw socket (user-level)
85913 +.SH "SYNOPSIS"
85914 +\fBToRawSocket\fR("TCP", <TCP source port number>)
85915 +.br
85916 +\fBToRawSocket\fR("UDP", <UDP source port number>)
85917 +.br
85918 +\fBToRawSocket\fR("GRE", <GRE key or PPTP call ID>)
85919 +.br
85920 +\fBToRawSocket\fR("ICMP", <ICMP identifier>)
85921 +
85922 +\fBPorts\fR: at most 1 input, at most 1 output
85923 +.br
85924 +\fBProcessing\fR: pull
85925 +.br
85926 +\fBDrivers\fR: userlevel
85927 +.br
85928 +\fBPackage\fR: userlevel (core)
85929 +.br
85930 +.SH "DESCRIPTION"
85931 +Writes data to a raw IPv4 socket. The raw IPv4 socket may optionally
85932 +be bound to a source port number in the case of TCP/UDP, a GRE key or
85933 +PPTP call ID in the case of GRE, or an identifier in the case of
85934 +ICMP. Binding a port to a raw IPv4 socket to reserve it and suppress
85935 +TCP RST and ICMP Unreachable errors, is specific to PlanetLab Linux.
85936 +.PP
85937 +This element exists only for backward compatibility. See the more
85938 +general 
85939 +.M RawSocket "n" 
85940 +implementation for details, and for supported
85941 +keyword arguments. A \fBToRawSocket\fR is equivalent to a 
85942 +.M RawSocket "n" 
85943 +with
85944 +no outputs.
85945 +.PP
85946 +
85947 +.SH "EXAMPLES"
85948 +
85949 +.nf
85950 +\&  ... -> ToRawSocket(UDP, 47)
85951 +.fi
85952 +.PP
85953 +
85954 +
85955 +
85956 +.SH "SEE ALSO"
85957 +.M FromRawSocket n ,
85958 +.M RawSocket n ,
85959 +.M Socket "n" 
85960 +
85961 diff -Nurb click-1.6.0/inst/share/man/mann/ToSocket.n click-1.6.0-27/inst/share/man/mann/ToSocket.n
85962 --- click-1.6.0/inst/share/man/mann/ToSocket.n  1969-12-31 19:00:00.000000000 -0500
85963 +++ click-1.6.0-27/inst/share/man/mann/ToSocket.n       2009-02-11 14:08:51.000000000 -0500
85964 @@ -0,0 +1,58 @@
85965 +.\" -*- mode: nroff -*-
85966 +.\" Generated by 'click-elem2man' from '../elements/userlevel/tosocket.hh'
85967 +.de M
85968 +.IR "\\$1" "(\\$2)\\$3"
85969 +..
85970 +.de RM
85971 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
85972 +..
85973 +.TH "TOSOCKET" n "11/Feb/2009" "Click"
85974 +.SH "NAME"
85975 +ToSocket \- Click element;
85976 +sends data to socket (user-level)
85977 +.SH "SYNOPSIS"
85978 +\fBToSocket\fR("TCP", IP, PORTNUMBER [, \fIKEYWORDS\fR])
85979 +.br
85980 +\fBToSocket\fR("UDP", IP, PORTNUMBER [, \fIKEYWORDS\fR])
85981 +.br
85982 +\fBToSocket\fR("UNIX", FILENAME [, \fIKEYWORDS\fR])
85983 +.br
85984 +\fBToSocket\fR("UNIX_DGRAM", FILENAME [, \fIKEYWORDS\fR])
85985 +
85986 +\fBPorts\fR: at most 1 input, at most 1 output
85987 +.br
85988 +\fBProcessing\fR: pull
85989 +.br
85990 +\fBDrivers\fR: userlevel
85991 +.br
85992 +\fBPackage\fR: userlevel (core)
85993 +.br
85994 +.SH "DESCRIPTION"
85995 +Sends data to the specified socket. Input packets are sent to the
85996 +remote host or process.
85997 +.PP
85998 +This element exists only for backward compatibility. See the more
85999 +general 
86000 +.M Socket "n" 
86001 +implementation for details, and for supported keyword
86002 +arguments. A \fBToSocket\fR is equivalent to a 
86003 +.M Socket "n" 
86004 +with the CLIENT
86005 +keyword set to TRUE or a 
86006 +.M Socket "n" 
86007 +with no outputs.
86008 +.PP
86009 +
86010 +.SH "EXAMPLES"
86011 +
86012 +.nf
86013 +\&  ... -> ToSocket(1.2.3.4, UDP, 47)
86014 +.fi
86015 +.PP
86016 +
86017 +
86018 +
86019 +.SH "SEE ALSO"
86020 +.M FromSocket n ,
86021 +.M Socket "n" 
86022 +
86023 diff -Nurb click-1.6.0/inst/share/man/mann/Truncate.n click-1.6.0-27/inst/share/man/mann/Truncate.n
86024 --- click-1.6.0/inst/share/man/mann/Truncate.n  1969-12-31 19:00:00.000000000 -0500
86025 +++ click-1.6.0-27/inst/share/man/mann/Truncate.n       2009-02-11 14:08:51.000000000 -0500
86026 @@ -0,0 +1,27 @@
86027 +.\" -*- mode: nroff -*-
86028 +.\" Generated by 'click-elem2man' from '../elements/standard/truncate.hh'
86029 +.de M
86030 +.IR "\\$1" "(\\$2)\\$3"
86031 +..
86032 +.de RM
86033 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86034 +..
86035 +.TH "TRUNCATE" n "11/Feb/2009" "Click"
86036 +.SH "NAME"
86037 +Truncate \- Click element;
86038 +limit packet length.
86039 +.SH "SYNOPSIS"
86040 +\fBTruncate\fR(LENGTH)
86041 +
86042 +\fBPorts\fR: 1 input, 1 output
86043 +.br
86044 +\fBProcessing\fR: agnostic
86045 +.br
86046 +\fBPackage\fR: standard (core)
86047 +.br
86048 +.SH "DESCRIPTION"
86049 +Shorten packets to at most LENGTH bytes.
86050 +
86051 +.SH "SEE ALSO"
86052 +.M Strip "n" 
86053 +
86054 diff -Nurb click-1.6.0/inst/share/man/mann/UDPIPEncap.n click-1.6.0-27/inst/share/man/mann/UDPIPEncap.n
86055 --- click-1.6.0/inst/share/man/mann/UDPIPEncap.n        1969-12-31 19:00:00.000000000 -0500
86056 +++ click-1.6.0-27/inst/share/man/mann/UDPIPEncap.n     2009-02-11 14:08:52.000000000 -0500
86057 @@ -0,0 +1,69 @@
86058 +.\" -*- mode: nroff -*-
86059 +.\" Generated by 'click-elem2man' from '../elements/tcpudp/udpipencap.hh'
86060 +.de M
86061 +.IR "\\$1" "(\\$2)\\$3"
86062 +..
86063 +.de RM
86064 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86065 +..
86066 +.TH "UDPIPENCAP" n "11/Feb/2009" "Click"
86067 +.SH "NAME"
86068 +UDPIPEncap \- Click element;
86069 +encapsulates packets in static UDP/IP headers
86070 +.SH "SYNOPSIS"
86071 +\fBUDPIPEncap\fR(SRC, SPORT, DST, DPORT [, CHECKSUM])
86072 +
86073 +\fBPorts\fR: 1 input, 1 output
86074 +.br
86075 +\fBProcessing\fR: agnostic
86076 +.br
86077 +\fBPackage\fR: tcpudp (core)
86078 +.br
86079 +.SH "DESCRIPTION"
86080 +Encapsulates each incoming packet in a UDP/IP packet with source address
86081 +SRC, source port SPORT, destination address DST, and destination port
86082 +DPORT. The UDP checksum is calculated if CHECKSUM? is true; it is true by
86083 +default.
86084 +.PP
86085 +As a special case, if DST is "DST_ANNO", then the destination address
86086 +is set to the incoming packet's destination address annotation.
86087 +.PP
86088 +The \fBUDPIPEncap\fR element adds both a UDP header and an IP header.
86089 +.PP
86090 +The 
86091 +.M Strip "n" 
86092 +element can be used by the receiver to get rid of the
86093 +encapsulation header.
86094 +.PP
86095 +
86096 +.SH "EXAMPLES"
86097 +
86098 +.nf
86099 +\&  UDPIPEncap(1.0.0.1, 1234, 2.0.0.2, 1234)
86100 +.fi
86101 +.PP
86102 +
86103 +
86104 +
86105 +.SH "ELEMENT HANDLERS"
86106 +
86107 +
86108 +
86109 +.IP "\fBsrc\fR (read/write)" 5
86110 +Returns or sets the SRC source address argument.
86111 +.IP "" 5
86112 +.IP "\fBsport\fR (read/write)" 5
86113 +Returns or sets the SPORT source port argument.
86114 +.IP "" 5
86115 +.IP "\fBdst\fR (read/write)" 5
86116 +Returns or sets the DST destination address argument.
86117 +.IP "" 5
86118 +.IP "\fBdport\fR (read/write)" 5
86119 +Returns or sets the DPORT destination port argument.
86120 +.IP "" 5
86121 +.PP
86122 +
86123 +.SH "SEE ALSO"
86124 +.M Strip n ,
86125 +.M IPEncap "n" 
86126 +
86127 diff -Nurb click-1.6.0/inst/share/man/mann/UMLSwitch.n click-1.6.0-27/inst/share/man/mann/UMLSwitch.n
86128 --- click-1.6.0/inst/share/man/mann/UMLSwitch.n 1969-12-31 19:00:00.000000000 -0500
86129 +++ click-1.6.0-27/inst/share/man/mann/UMLSwitch.n      2009-02-11 14:08:52.000000000 -0500
86130 @@ -0,0 +1,37 @@
86131 +.\" -*- mode: nroff -*-
86132 +.\" Generated by 'click-elem2man' from '../elements/userlevel/umlswitch.hh'
86133 +.de M
86134 +.IR "\\$1" "(\\$2)\\$3"
86135 +..
86136 +.de RM
86137 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86138 +..
86139 +.TH "UMLSWITCH" n "11/Feb/2009" "Click"
86140 +.SH "NAME"
86141 +UMLSwitch \- Click element;
86142 +Connects to a UML switch daemon
86143 +.SH "SYNOPSIS"
86144 +\fBUMLSwitch\fR([FILENAME])
86145 +
86146 +\fBPorts\fR: at most 1 input, at most 1 output
86147 +.br
86148 +\fBProcessing\fR: pull inputs, push outputs
86149 +.br
86150 +\fBDrivers\fR: userlevel
86151 +.br
86152 +\fBPackage\fR: userlevel (core)
86153 +.br
86154 +.SH "DESCRIPTION"
86155 +Transports packets to and from a User Mode Linux switch daemon
86156 +instance. Packets do not flow through \fBUMLSwitch\fR elements (i.e.,
86157 +\fBUMLSwitch\fR is an "x/y" element). Instead, input packets are sent to the
86158 +UML switch, and packets received from the UML switch are emitted on
86159 +the output.
86160 +.PP
86161 +If FILENAME is not specified, "/tmp/uml.ctl" will be used as the path
86162 +to the UML control socket.
86163 +.PP
86164 +
86165 +.SH "SEE ALSO"
86166 +.M Socket "n" 
86167 +
86168 diff -Nurb click-1.6.0/inst/share/man/mann/Unqueue.n click-1.6.0-27/inst/share/man/mann/Unqueue.n
86169 --- click-1.6.0/inst/share/man/mann/Unqueue.n   1969-12-31 19:00:00.000000000 -0500
86170 +++ click-1.6.0-27/inst/share/man/mann/Unqueue.n        2009-02-11 14:08:51.000000000 -0500
86171 @@ -0,0 +1,55 @@
86172 +.\" -*- mode: nroff -*-
86173 +.\" Generated by 'click-elem2man' from '../elements/standard/unqueue.hh'
86174 +.de M
86175 +.IR "\\$1" "(\\$2)\\$3"
86176 +..
86177 +.de RM
86178 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86179 +..
86180 +.TH "UNQUEUE" n "11/Feb/2009" "Click"
86181 +.SH "NAME"
86182 +Unqueue \- Click element;
86183 +pull-to-push converter
86184 +.SH "SYNOPSIS"
86185 +\fBUnqueue\fR([BURST, \fIKEYWORDS\fR])
86186 +
86187 +\fBPorts\fR: 1 input, 1 output
86188 +.br
86189 +\fBProcessing\fR: pull inputs, push outputs
86190 +.br
86191 +\fBPackage\fR: standard (core)
86192 +.br
86193 +.SH "DESCRIPTION"
86194 +Pulls packets whenever they are available, then pushes them out
86195 +its single output. Pulls a maximum of BURST packets every time
86196 +it is scheduled. Default BURST is 1. If BURST
86197 +is less than 0, pull until nothing comes back.
86198 +.PP
86199 +Keyword arguments are:
86200 +.PP
86201 +
86202 +
86203 +.IP "ACTIVE" 4
86204 +If false, does nothing (doesn't pull packets). One possible use
86205 +is to set ACTIVE to false in the configuration, and later
86206 +change it to true with a handler from DriverManager element.
86207 +The default value is true.
86208 +.IP "" 4
86209 +.PP
86210 +
86211 +.SH "ELEMENT HANDLERS"
86212 +
86213 +
86214 +
86215 +.IP "\fBcount\fR (read-only)" 5
86216 +Returns the count of packets that have passed through \fBUnqueue\fR.
86217 +.IP "" 5
86218 +.IP "\fBactive\fR (read/write)" 5
86219 +The same as ACTIVE keyword.
86220 +.IP "" 5
86221 +.PP
86222 +
86223 +.SH "SEE ALSO"
86224 +.M RatedUnqueue n ,
86225 +.M BandwidthRatedUnqueue "n" 
86226 +
86227 diff -Nurb click-1.6.0/inst/share/man/mann/Unqueue2.n click-1.6.0-27/inst/share/man/mann/Unqueue2.n
86228 --- click-1.6.0/inst/share/man/mann/Unqueue2.n  1969-12-31 19:00:00.000000000 -0500
86229 +++ click-1.6.0-27/inst/share/man/mann/Unqueue2.n       2009-02-11 14:08:51.000000000 -0500
86230 @@ -0,0 +1,35 @@
86231 +.\" -*- mode: nroff -*-
86232 +.\" Generated by 'click-elem2man' from '../elements/standard/unqueue2.hh'
86233 +.de M
86234 +.IR "\\$1" "(\\$2)\\$3"
86235 +..
86236 +.de RM
86237 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86238 +..
86239 +.TH "UNQUEUE2" n "11/Feb/2009" "Click"
86240 +.SH "NAME"
86241 +Unqueue2 \- Click element;
86242 +pull-to-push converter
86243 +.SH "SYNOPSIS"
86244 +\fBUnqueue2\fR([BURSTSIZE])
86245 +
86246 +\fBPorts\fR: 1 input, 1 output
86247 +.br
86248 +\fBProcessing\fR: pull inputs, push outputs
86249 +.br
86250 +\fBPackage\fR: standard (core)
86251 +.br
86252 +.SH "DESCRIPTION"
86253 +Pulls packets whenever they are available, then pushes them out its single
86254 +output. Pulls a maximum of BURSTSIZE packets every time it is scheduled,
86255 +unless downstream queues are full. Default BURSTSIZE is 1. If BURSTSIZE is
86256 +0, pull until nothing comes back. \fBUnqueue2\fR will not pull if there is a
86257 +downstream queue that is full. It will also limit burst size to equal to
86258 +the number of available slots in the fullest downstream queue.
86259 +.PP
86260 +
86261 +.SH "SEE ALSO"
86262 +.M Unqueue n ,
86263 +.M RatedUnqueue n ,
86264 +.M BandwidthRatedUnqueue "n" 
86265 +
86266 diff -Nurb click-1.6.0/inst/share/man/mann/Unstrip.n click-1.6.0-27/inst/share/man/mann/Unstrip.n
86267 --- click-1.6.0/inst/share/man/mann/Unstrip.n   1969-12-31 19:00:00.000000000 -0500
86268 +++ click-1.6.0-27/inst/share/man/mann/Unstrip.n        2009-02-11 14:08:51.000000000 -0500
86269 @@ -0,0 +1,39 @@
86270 +.\" -*- mode: nroff -*-
86271 +.\" Generated by 'click-elem2man' from '../elements/standard/unstrip.hh'
86272 +.de M
86273 +.IR "\\$1" "(\\$2)\\$3"
86274 +..
86275 +.de RM
86276 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86277 +..
86278 +.TH "UNSTRIP" n "11/Feb/2009" "Click"
86279 +.SH "NAME"
86280 +Unstrip \- Click element;
86281 +unstrips bytes from front of packets
86282 +.SH "SYNOPSIS"
86283 +\fBUnstrip\fR(LENGTH)
86284 +
86285 +\fBPorts\fR: 1 input, 1 output
86286 +.br
86287 +\fBProcessing\fR: agnostic
86288 +.br
86289 +\fBPackage\fR: standard (core)
86290 +.br
86291 +.SH "DESCRIPTION"
86292 +Put LENGTH bytes at the front of the packet. These LENGTH bytes may be bytes
86293 +previously removed by Strip.
86294 +
86295 +.SH "EXAMPLES"
86296 +Use this to get rid of the Ethernet header and put it back on:
86297 +.PP
86298 +.nf
86299 +\&  Strip(14) -> ... -> Unstrip(14)
86300 +.fi
86301 +.PP
86302 +
86303 +
86304 +
86305 +.SH "SEE ALSO"
86306 +.M EtherEncap n ,
86307 +.M IPEncap "n" 
86308 +
86309 diff -Nurb click-1.6.0/inst/share/man/mann/UnstripIPHeader.n click-1.6.0-27/inst/share/man/mann/UnstripIPHeader.n
86310 --- click-1.6.0/inst/share/man/mann/UnstripIPHeader.n   1969-12-31 19:00:00.000000000 -0500
86311 +++ click-1.6.0-27/inst/share/man/mann/UnstripIPHeader.n        2009-02-11 14:08:52.000000000 -0500
86312 @@ -0,0 +1,36 @@
86313 +.\" -*- mode: nroff -*-
86314 +.\" Generated by 'click-elem2man' from '../elements/ip/unstripipheader.hh'
86315 +.de M
86316 +.IR "\\$1" "(\\$2)\\$3"
86317 +..
86318 +.de RM
86319 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86320 +..
86321 +.TH "UNSTRIPIPHEADER" n "11/Feb/2009" "Click"
86322 +.SH "NAME"
86323 +UnstripIPHeader \- Click element;
86324 +restores outermost IP header
86325 +.SH "SYNOPSIS"
86326 +\fBUnstripIPHeader\fR()
86327 +
86328 +\fBPorts\fR: 1 input, 1 output
86329 +.br
86330 +\fBProcessing\fR: agnostic
86331 +.br
86332 +\fBPackage\fR: ip (core)
86333 +.br
86334 +.SH "DESCRIPTION"
86335 +Put outermost IP header back onto a stripped packet, based on the IP Header
86336 +annotation from 
86337 +.M MarkIPHeader "n" 
86338 +or 
86339 +.M CheckIPHeader "n" .
86340 +If IP header already on,
86341 +forwards packet unmodified.
86342 +.PP
86343 +
86344 +.SH "SEE ALSO"
86345 +.M CheckIPHeader n ,
86346 +.M MarkIPHeader n ,
86347 +.M StripIPHeader "n" 
86348 +
86349 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
86350 --- click-1.6.0/inst/share/man/mann/elements-click.n    1969-12-31 19:00:00.000000000 -0500
86351 +++ click-1.6.0-27/inst/share/man/mann/elements-click.n 2009-02-11 14:08:52.000000000 -0500
86352 @@ -0,0 +1,1323 @@
86353 +.\" -*- mode: nroff -*-
86354 +.\" Generated by 'click-elem2man'
86355 +.de M
86356 +.IR "\\$1" "(\\$2)\\$3"
86357 +..
86358 +.de RM
86359 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
86360 +..
86361 +.TH "ELEMENTS-CLICK" n "11/Feb/2009" "Click"
86362 +.SH "NAME"
86363 +elements-click - documented Click element classes
86364 +.SH "DESCRIPTION"
86365 +This page lists all Click element classes that have manual page documentation.
86366 +.\"html <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
86367 +.\"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>
86368 +.\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
86369 +.SH "BY FUNCTION"
86370 +.SS "Basic Sources and Sinks"
86371 +.PP
86372 +.PD 0
86373 +.TP 20
86374 +.M Discard n
86375 +drops all packets
86376 +.TP 20
86377 +.M DiscardNoFree n
86378 +drops all packets, but does not free any of them.
86379 +.TP 20
86380 +.M Idle n
86381 +discards packets
86382 +.TP 20
86383 +.M InfiniteSource n
86384 +generates packets whenever scheduled
86385 +.TP 20
86386 +.M RandomSource n
86387 +generates random packets whenever scheduled
86388 +.TP 20
86389 +.M RatedSource n
86390 +generates packets at specified rate
86391 +.TP 20
86392 +.M TimedSink n
86393 +periodically pulls and drops a packet
86394 +.TP 20
86395 +.M TimedSource n
86396 +periodically generates a packet
86397 +.PD
86398 +.SS "Basic Classification and Selection"
86399 +.PP
86400 +.PD 0
86401 +.TP 20
86402 +.M CheckLength n
86403 +drops large packets
86404 +.TP 20
86405 +.M Classifier n
86406 +classifies packets by contents
86407 +.TP 20
86408 +.M HashSwitch n
86409 +classifies packets by hash of contents
86410 +.TP 20
86411 +.M RandomSample n
86412 +samples packets with some probability
86413 +.TP 20
86414 +.M RandomSwitch n
86415 +sends packets to random outputs
86416 +.TP 20
86417 +.M RoundRobinSwitch n
86418 +sends packets to round-robin outputs
86419 +.TP 20
86420 +.M StaticSwitch n
86421 +sends packet stream to fixed output
86422 +.TP 20
86423 +.M StrideSwitch n
86424 +sends packets to stride-scheduled outputs
86425 +.TP 20
86426 +.M Suppressor n
86427 +passes packets unchanged, optionally dropping some input ports
86428 +.TP 20
86429 +.M Switch n
86430 +sends packet stream to settable output
86431 +.PD
86432 +.SS "Basic Packet Transfer"
86433 +.PP
86434 +.PD 0
86435 +.TP 20
86436 +.M Null n
86437 +passes packets unchanged
86438 +.TP 20
86439 +.M Null1 n
86440 +copy of 
86441 +.M Null "n" 
86442 +.TP 20
86443 +.M PullNull n
86444 +passes packets unchanged
86445 +.TP 20
86446 +.M PullTee n
86447 +duplicates packets
86448 +.TP 20
86449 +.M PushNull n
86450 +passes packets unchanged
86451 +.TP 20
86452 +.M Tee n
86453 +duplicates packets
86454 +.PD
86455 +.SS "Counters"
86456 +.PP
86457 +.PD 0
86458 +.TP 20
86459 +.M AverageCounter n
86460 +measures historical packet count and rate
86461 +.TP 20
86462 +.M Counter n
86463 +measures packet count and rate
86464 +.TP 20
86465 +.M CycleCountAccum n
86466 +collects differences in cycle counters
86467 +.TP 20
86468 +.M PerfCountAccum n
86469 +collects differences in Pentium Pro performance metrics
86470 +.TP 20
86471 +.M PerfCountInfo n
86472 +turn on Pentium Pro performance metrics
86473 +.TP 20
86474 +.M RoundTripCycleCount n
86475 +measures round trip cycles on a push or pull path
86476 +.TP 20
86477 +.M SetCycleCount n
86478 +stores cycle count in annotation
86479 +.TP 20
86480 +.M SetPerfCount n
86481 +stores Pentium Pro performance metric in annotation
86482 +.PD
86483 +.SS "Timestamps"
86484 +.PP
86485 +.PD 0
86486 +.TP 20
86487 +.M SetTimestamp n
86488 +store the time in the packet's timestamp annotation
86489 +.PD
86490 +.SS "Basic Packet Modification"
86491 +.PP
86492 +.PD 0
86493 +.TP 20
86494 +.M Align n
86495 +aligns packet data
86496 +.TP 20
86497 +.M RandomBitErrors n
86498 +changes packet data with some probability
86499 +.TP 20
86500 +.M StoreData n
86501 +changes packet data
86502 +.TP 20
86503 +.M Strip n
86504 +strips bytes from front of packets
86505 +.TP 20
86506 +.M StripToNetworkHeader n
86507 +strips everything preceding network header
86508 +.TP 20
86509 +.M Truncate n
86510 +limit packet length.
86511 +.TP 20
86512 +.M Unstrip n
86513 +unstrips bytes from front of packets
86514 +.PD
86515 +.SS "Packet Storage"
86516 +.PP
86517 +.PD 0
86518 +.TP 20
86519 +.M FrontDropQueue n
86520 +stores packets in drop-from-front FIFO queue
86521 +.TP 20
86522 +.M MixedQueue n
86523 +stores packets in a FIFO/LIFO queue
86524 +.TP 20
86525 +.M NotifierQueue n
86526 +stores packets in a FIFO queue
86527 +.TP 20
86528 +.M Queue n
86529 +stores packets in a FIFO queue
86530 +.TP 20
86531 +.M SimpleQueue n
86532 +stores packets in a FIFO queue
86533 +.PD
86534 +.SS "Active Queue Management"
86535 +.PP
86536 +.PD 0
86537 +.TP 20
86538 +.M AdaptiveRED n
86539 +drops packets according to Adaptive RED
86540 +.TP 20
86541 +.M RED n
86542 +drops packets according to RED
86543 +.PD
86544 +.SS "Packet Scheduling"
86545 +.PP
86546 +.PD 0
86547 +.TP 20
86548 +.M DRRSched n
86549 +pulls from inputs with deficit round robin scheduling
86550 +.TP 20
86551 +.M PrioSched n
86552 +pulls from priority-scheduled inputs
86553 +.TP 20
86554 +.M PullSwitch n
86555 +forwards pull requests to settable input
86556 +.TP 20
86557 +.M RoundRobinSched n
86558 +pulls from round-robin inputs
86559 +.TP 20
86560 +.M StaticPullSwitch n
86561 +forwards pull requests to fixed input
86562 +.TP 20
86563 +.M StrideSched n
86564 +pulls from stride-scheduled inputs
86565 +.PD
86566 +.SS "Traffic Shaping"
86567 +.PP
86568 +.PD 0
86569 +.TP 20
86570 +.M BandwidthMeter n
86571 +classifies packet stream by arrival rate
86572 +.TP 20
86573 +.M BandwidthRatedSplitter n
86574 +splits flow of packets at specified bandwidth rate
86575 +.TP 20
86576 +.M BandwidthRatedUnqueue n
86577 +pull-to-push converter
86578 +.TP 20
86579 +.M BandwidthShaper n
86580 +shapes traffic to maximum rate (bytes/s) 
86581 +.TP 20
86582 +.M Burster n
86583 +pull-to-push converter
86584 +.TP 20
86585 +.M CompareBlock n
86586 +drops packets out of rate range
86587 +.TP 20
86588 +.M DelayShaper n
86589 +shapes traffic to meet delay requirements
86590 +.TP 20
86591 +.M DelayUnqueue n
86592 +delay inducing pull-to-push converter
86593 +.TP 20
86594 +.M LinkUnqueue n
86595 +link emulator
86596 +.TP 20
86597 +.M Meter n
86598 +classifies packet stream by rate (pkt/s)
86599 +.TP 20
86600 +.M RatedSplitter n
86601 +splits flow of packets at specified rate
86602 +.TP 20
86603 +.M RatedUnqueue n
86604 +pull-to-push converter
86605 +.TP 20
86606 +.M Shaper n
86607 +shapes traffic to maximum rate (pkt/s) 
86608 +.TP 20
86609 +.M Unqueue n
86610 +pull-to-push converter
86611 +.TP 20
86612 +.M Unqueue2 n
86613 +pull-to-push converter
86614 +.PD
86615 +.SS "Information Elements"
86616 +.PP
86617 +.PD 0
86618 +.TP 20
86619 +.M AddressInfo n
86620 +specifies address information
86621 +.TP 20
86622 +.M AlignmentInfo n
86623 +specifies alignment information
86624 +.TP 20
86625 +.M PortInfo n
86626 +stores named TCP/UDP port information
86627 +.TP 20
86628 +.M ScheduleInfo n
86629 +specifies scheduling parameters
86630 +.TP 20
86631 +.M ScheduleLinux n
86632 +returns to Linux scheduler
86633 +.PD
86634 +.SS "Network Devices"
86635 +.PP
86636 +.PD 0
86637 +.TP 20
86638 +.M FromDevice n
86639 +reads packets from network device (Linux kernel)
86640 +.TP 20
86641 +.M FromDevice.u n
86642 +reads packets from network device (user-level)
86643 +.TP 20
86644 +.M PollDevice n
86645 +polls packets from network device (kernel)
86646 +.TP 20
86647 +.M ToDevice n
86648 +sends packets to network device (Linux kernel)
86649 +.TP 20
86650 +.M ToDevice.u n
86651 +sends packets to network device (user-level)
86652 +.PD
86653 +.SS "Host and Socket Communication"
86654 +.PP
86655 +.PD 0
86656 +.TP 20
86657 +.M FromHost n
86658 +reads packets from Linux
86659 +.TP 20
86660 +.M FromHost.u n
86661 +interface to /dev/net/tun or ethertap (user-level)
86662 +.TP 20
86663 +.M FromRawSocket n
86664 +reads raw IP packets from safe raw socket (user-level)
86665 +.TP 20
86666 +.M FromSocket n
86667 +reads data from socket (user-level)
86668 +.TP 20
86669 +.M KernelFilter n
86670 +block kernel from handling packets
86671 +.TP 20
86672 +.M KernelTap n
86673 +interface to /dev/tap or ethertap (user-level)
86674 +.TP 20
86675 +.M KernelTun n
86676 +interface to /dev/tun or ethertap (user-level)
86677 +.TP 20
86678 +.M RawSocket n
86679 +transports raw IP packets via safe raw sockets (user-level)
86680 +.TP 20
86681 +.M Socket n
86682 +a socket transport (user-level)
86683 +.TP 20
86684 +.M ToHost n
86685 +sends packets to Linux
86686 +.TP 20
86687 +.M ToHost.u n
86688 +sends packets to Linux via Universal TUN/TAP device.
86689 +.TP 20
86690 +.M ToHostSniffers n
86691 +sends packets to Linux packet sniffers
86692 +.TP 20
86693 +.M ToRawSocket n
86694 +sends IP packets through a safe raw socket (user-level)
86695 +.TP 20
86696 +.M ToSocket n
86697 +sends data to socket (user-level)
86698 +.PD
86699 +.SS "Ethernet"
86700 +.PP
86701 +.PD 0
86702 +.TP 20
86703 +.M EnsureEther n
86704 +ensures that IP packets are Ethernet encapsulated
86705 +.TP 20
86706 +.M EtherEncap n
86707 +encapsulates packets in Ethernet header
86708 +.TP 20
86709 +.M EtherMirror n
86710 +swaps Ethernet source and destination
86711 +.TP 20
86712 +.M HostEtherFilter n
86713 +drops Ethernet packets sent to other machines
86714 +.PD
86715 +.SS "ARP"
86716 +.PP
86717 +.PD 0
86718 +.TP 20
86719 +.M ARPFaker n
86720 +periodically generates an ARP reply
86721 +.TP 20
86722 +.M ARPPrint n
86723 +pretty-prints ARP packets a la tcpdump
86724 +.TP 20
86725 +.M ARPQuerier n
86726 +encapsulates IP packets in Ethernet headers found via ARP
86727 +.TP 20
86728 +.M ARPResponder n
86729 +generates responses to ARP queries
86730 +.TP 20
86731 +.M CheckARPHeader n
86732 +checks ARP header
86733 +.PD
86734 +.SS "IPv4"
86735 +.PP
86736 +.PD 0
86737 +.TP 20
86738 +.M CheckIPHeader n
86739 +checks IP header
86740 +.TP 20
86741 +.M CheckIPHeader2 n
86742 +checks IP header, no checksum
86743 +.TP 20
86744 +.M DecIPTTL n
86745 +decrements IP time-to-live, drops dead packets
86746 +.TP 20
86747 +.M FixIPSrc n
86748 +sets IP source field if requested by annotation
86749 +.TP 20
86750 +.M GetIPAddress n
86751 +sets destination IP address annotation from packet data
86752 +.TP 20
86753 +.M IPClassifier n
86754 +classifies IP packets by contents
86755 +.TP 20
86756 +.M IPEncap n
86757 +encapsulates packets in static IP header
86758 +.TP 20
86759 +.M IPFilter n
86760 +filters IP packets by contents
86761 +.TP 20
86762 +.M IPFragmenter n
86763 +fragments large IP packets
86764 +.TP 20
86765 +.M IPGWOptions n
86766 +processes router IP options
86767 +.TP 20
86768 +.M IPInputCombo n
86769 +input combo for IP routing
86770 +.TP 20
86771 +.M IPMirror n
86772 +swaps IP source and destination
86773 +.TP 20
86774 +.M IPNameInfo n
86775 +stores name information about IP packets
86776 +.TP 20
86777 +.M IPOutputCombo n
86778 +output combo for IP routing
86779 +.TP 20
86780 +.M IPPrint n
86781 +pretty-prints IP packets
86782 +.TP 20
86783 +.M IPReassembler n
86784 +Reassembles fragmented IP packets
86785 +.TP 20
86786 +.M MarkIPCE n
86787 +sets IP packets' ECN field to Congestion Experienced
86788 +.TP 20
86789 +.M MarkIPHeader n
86790 +sets IP header annotation
86791 +.TP 20
86792 +.M SetIPAddress n
86793 +sets destination IP address annotations
86794 +.TP 20
86795 +.M SetIPChecksum n
86796 +sets IP packets' checksums
86797 +.TP 20
86798 +.M SetIPDSCP n
86799 +sets IP packets' DSCP fields
86800 +.TP 20
86801 +.M SetRandIPAddress n
86802 +sets destination IP address annotations randomly
86803 +.TP 20
86804 +.M StoreIPAddress n
86805 +stores IP address in packet
86806 +.TP 20
86807 +.M StripIPHeader n
86808 +strips outermost IP header
86809 +.TP 20
86810 +.M UnstripIPHeader n
86811 +restores outermost IP header
86812 +.PD
86813 +.SS "IPv4 Routing"
86814 +.PP
86815 +.PD 0
86816 +.TP 20
86817 +.M DirectIPLookup n
86818 +IP routing lookup using direct-indexed tables
86819 +.TP 20
86820 +.M IPRouteTable n
86821 +IP routing table superclass
86822 +.TP 20
86823 +.M LinearIPLookup n
86824 +simple IP routing table
86825 +.TP 20
86826 +.M LinuxIPLookup n
86827 +interface to Linux's routing table
86828 +.TP 20
86829 +.M RadixIPLookup n
86830 +IP lookup using a radix trie
86831 +.TP 20
86832 +.M RangeIPLookup n
86833 +IP routing lookup through binary search in a very compact table
86834 +.TP 20
86835 +.M RIPSend n
86836 +periodically generates specified RIP II packet
86837 +.TP 20
86838 +.M SortedIPLookup n " (deprecated)"
86839 +simple IP routing table
86840 +.TP 20
86841 +.M StaticIPLookup n
86842 +simple static IP routing table
86843 +.PD
86844 +.SS "ICMP"
86845 +.PP
86846 +.PD 0
86847 +.TP 20
86848 +.M CheckICMPHeader n
86849 +checks ICMP header on ICMP packets
86850 +.TP 20
86851 +.M ICMPError n
86852 +generates ICMP error packets
86853 +.TP 20
86854 +.M ICMPPingEncap n
86855 +encapsulates packets in ICMP ping headers
86856 +.TP 20
86857 +.M ICMPPingResponder n
86858 +responds to ICMP echo requests
86859 +.TP 20
86860 +.M ICMPPingSource n
86861 +periodically sends ICMP echo requests
86862 +.PD
86863 +.SS "Network Address Translation"
86864 +.PP
86865 +.PD 0
86866 +.TP 20
86867 +.M FTPPortMapper n
86868 +manipulates 
86869 +.M IPRewriter "n" 
86870 +for FTP
86871 +.TP 20
86872 +.M ICMPPingRewriter n
86873 +rewrites ICMP echo requests and replies
86874 +.TP 20
86875 +.M ICMPRewriter n
86876 +rewrites ICMP packets based on IP rewriter mappings
86877 +.TP 20
86878 +.M IPAddrPairRewriter n
86879 +rewrites IP packets' addresses by address pair
86880 +.TP 20
86881 +.M IPAddrRewriter n
86882 +rewrites IP packets' addresses
86883 +.TP 20
86884 +.M IPRewriter n
86885 +rewrites TCP/UDP packets' addresses and ports
86886 +.TP 20
86887 +.M IPRewriterPatterns n
86888 +specifies shared 
86889 +.M IPRewriter n 
86890 +patterns
86891 +.TP 20
86892 +.M RoundRobinIPMapper n
86893 +round-robin mapper for 
86894 +.M IPRewriter n 
86895 +.TP 20
86896 +.M SourceIPHashMapper n
86897 +Source IP Hash mapper for 
86898 +.M IPRewriter n 
86899 +.TP 20
86900 +.M TCPRewriter n
86901 +rewrites TCP packets' addresses, ports, and sequence numbers
86902 +.PD
86903 +.SS "TCP"
86904 +.PP
86905 +.PD 0
86906 +.TP 20
86907 +.M CheckTCPHeader n
86908 +checks TCP header on TCP/IP packets
86909 +.TP 20
86910 +.M FastTCPFlows n
86911 +creates packets flows with static TCP/IP/Ethernet headers
86912 +.TP 20
86913 +.M RFC2507Comp n
86914 +RFC2507 IPv4/TCP header compressor.
86915 +.TP 20
86916 +.M RFC2507Decomp n
86917 +RFC2507 IPv4/TCP header decompressor.
86918 +.TP 20
86919 +.M SetTCPChecksum n
86920 +sets TCP packets' checksums
86921 +.PD
86922 +.SS "UDP"
86923 +.PP
86924 +.PD 0
86925 +.TP 20
86926 +.M CheckUDPHeader n
86927 +checks UDP header on UDP/IP packets
86928 +.TP 20
86929 +.M DynamicUDPIPEncap n
86930 +encapsulates packets in dynamic UDP/IP headers
86931 +.TP 20
86932 +.M FastUDPFlows n
86933 +creates packets flows with static UDP/IP/Ethernet headers
86934 +.TP 20
86935 +.M FastUDPSource n
86936 +creates packets with static UDP/IP/Ethernet headers
86937 +.TP 20
86938 +.M SetUDPChecksum n
86939 +sets UDP packets' checksums
86940 +.TP 20
86941 +.M UDPIPEncap n
86942 +encapsulates packets in static UDP/IP headers
86943 +.PD
86944 +.SS "Trace Manipulation"
86945 +.PP
86946 +.PD 0
86947 +.TP 20
86948 +.M FromDump n
86949 +reads packets from a tcpdump file
86950 +.TP 20
86951 +.M ToDump n
86952 +writes packets to a tcpdump file
86953 +.PD
86954 +.SS "TCP/IP Measurement"
86955 +.PP
86956 +.PD 0
86957 +.TP 20
86958 +.M IPRateMonitor n
86959 +measures coming and going IP traffic rates
86960 +.PD
86961 +.SS "CRCs"
86962 +.PP
86963 +.PD 0
86964 +.TP 20
86965 +.M CheckCRC32 n
86966 +checks packet CRC32s
86967 +.TP 20
86968 +.M SetCRC32 n
86969 +calculates CRC32 and prepends to packet
86970 +.PD
86971 +.SS "Paint Annotations"
86972 +.PP
86973 +.PD 0
86974 +.TP 20
86975 +.M CheckPaint n
86976 +checks packets' paint annotation
86977 +.TP 20
86978 +.M Paint n
86979 +sets packet paint annotations
86980 +.TP 20
86981 +.M PaintSwitch n
86982 +sends packet stream to output chosen per-packet
86983 +.TP 20
86984 +.M PaintTee n
86985 +duplicates packets with given paint annotation
86986 +.PD
86987 +.SS "Annotations"
86988 +.PP
86989 +.PD 0
86990 +.TP 20
86991 +.M DropBroadcasts n
86992 +drops link-level broadcast and multicast packets
86993 +.TP 20
86994 +.M SetAnnoByte n
86995 +sets packet user annotations
86996 +.TP 20
86997 +.M SetPacketType n
86998 +sets packet type annotation
86999 +.PD
87000 +.SS "Debugging"
87001 +.PP
87002 +.PD 0
87003 +.TP 20
87004 +.M Error n
87005 +always fails
87006 +.TP 20
87007 +.M Print n
87008 +prints packet contents
87009 +.PD
87010 +.SS "Control"
87011 +.PP
87012 +.PD 0
87013 +.TP 20
87014 +.M ChangeUID n
87015 +relinquish root privilege
87016 +.TP 20
87017 +.M ChatterSocket n
87018 +reports chatter messages to connected sockets
87019 +.TP 20
87020 +.M ControlSocket n
87021 +opens control sockets for other programs
87022 +.TP 20
87023 +.M DriverManager n
87024 +a 
87025 +.M Script "n" 
87026 +that manages driver stop events
87027 +.TP 20
87028 +.M KernelHandlerProxy n
87029 +proxies kernel module handlers at user level
87030 +.TP 20
87031 +.M Message n
87032 +prints a message on configuration
87033 +.TP 20
87034 +.M PokeHandlers n " (deprecated)"
87035 +calls write handlers at specified times
87036 +.TP 20
87037 +.M ProgressBar n
87038 +prints a progress bar to standard error
87039 +.TP 20
87040 +.M QuitWatcher n
87041 +stops router processing
87042 +.TP 20
87043 +.M Script n
87044 +script a Click router configuration
87045 +.PD
87046 +.SS "Multithreaded Click"
87047 +.PP
87048 +.PD 0
87049 +.TP 20
87050 +.M CPUQueue n
87051 +stores packets in FIFO queues.
87052 +.TP 20
87053 +.M CPUSwitch n
87054 +classifies packets by cpu
87055 +.TP 20
87056 +.M LookupIPRouteMP n
87057 +simple static IP routing table
87058 +.TP 20
87059 +.M MSQueue n
87060 +stores packets in a FIFO queue
87061 +.TP 20
87062 +.M SpinlockAcquire n
87063 +acquires spinlock
87064 +.TP 20
87065 +.M SpinlockInfo n
87066 +specifies names of spinlocks
87067 +.TP 20
87068 +.M SpinlockRelease n
87069 +releases spinlock
87070 +.TP 20
87071 +.M StaticThreadSched n
87072 +specifies element and thread scheduling parameters
87073 +.PD
87074 +.SS "devices"
87075 +.PP
87076 +.PD 0
87077 +.TP 20
87078 +.M UMLSwitch n
87079 +Connects to a UML switch daemon
87080 +.PD
87081 +.SH "ALPHABETICAL LIST"
87082 +.PP
87083 +.PD 0
87084 +.TP 20
87085 +.M AdaptiveRED n
87086 +drops packets according to Adaptive RED
87087 +.TP 20
87088 +.M AddressInfo n
87089 +specifies address information
87090 +.TP 20
87091 +.M Align n
87092 +aligns packet data
87093 +.TP 20
87094 +.M AlignmentInfo n
87095 +specifies alignment information
87096 +.TP 20
87097 +.M ARPFaker n
87098 +periodically generates an ARP reply
87099 +.TP 20
87100 +.M ARPPrint n
87101 +pretty-prints ARP packets a la tcpdump
87102 +.TP 20
87103 +.M ARPQuerier n
87104 +encapsulates IP packets in Ethernet headers found via ARP
87105 +.TP 20
87106 +.M ARPResponder n
87107 +generates responses to ARP queries
87108 +.TP 20
87109 +.M AverageCounter n
87110 +measures historical packet count and rate
87111 +.TP 20
87112 +.M BandwidthMeter n
87113 +classifies packet stream by arrival rate
87114 +.TP 20
87115 +.M BandwidthRatedSplitter n
87116 +splits flow of packets at specified bandwidth rate
87117 +.TP 20
87118 +.M BandwidthRatedUnqueue n
87119 +pull-to-push converter
87120 +.TP 20
87121 +.M BandwidthShaper n
87122 +shapes traffic to maximum rate (bytes/s) 
87123 +.TP 20
87124 +.M Burster n
87125 +pull-to-push converter
87126 +.TP 20
87127 +.M ChangeUID n
87128 +relinquish root privilege
87129 +.TP 20
87130 +.M ChatterSocket n
87131 +reports chatter messages to connected sockets
87132 +.TP 20
87133 +.M CheckARPHeader n
87134 +checks ARP header
87135 +.TP 20
87136 +.M CheckCRC32 n
87137 +checks packet CRC32s
87138 +.TP 20
87139 +.M CheckICMPHeader n
87140 +checks ICMP header on ICMP packets
87141 +.TP 20
87142 +.M CheckIPHeader n
87143 +checks IP header
87144 +.TP 20
87145 +.M CheckIPHeader2 n
87146 +checks IP header, no checksum
87147 +.TP 20
87148 +.M CheckLength n
87149 +drops large packets
87150 +.TP 20
87151 +.M CheckPaint n
87152 +checks packets' paint annotation
87153 +.TP 20
87154 +.M CheckTCPHeader n
87155 +checks TCP header on TCP/IP packets
87156 +.TP 20
87157 +.M CheckUDPHeader n
87158 +checks UDP header on UDP/IP packets
87159 +.TP 20
87160 +.M Classifier n
87161 +classifies packets by contents
87162 +.TP 20
87163 +.M CompareBlock n
87164 +drops packets out of rate range
87165 +.TP 20
87166 +.M ControlSocket n
87167 +opens control sockets for other programs
87168 +.TP 20
87169 +.M Counter n
87170 +measures packet count and rate
87171 +.TP 20
87172 +.M CPUQueue n
87173 +stores packets in FIFO queues.
87174 +.TP 20
87175 +.M CPUSwitch n
87176 +classifies packets by cpu
87177 +.TP 20
87178 +.M CycleCountAccum n
87179 +collects differences in cycle counters
87180 +.TP 20
87181 +.M DecIPTTL n
87182 +decrements IP time-to-live, drops dead packets
87183 +.TP 20
87184 +.M DelayShaper n
87185 +shapes traffic to meet delay requirements
87186 +.TP 20
87187 +.M DelayUnqueue n
87188 +delay inducing pull-to-push converter
87189 +.TP 20
87190 +.M DirectIPLookup n
87191 +IP routing lookup using direct-indexed tables
87192 +.TP 20
87193 +.M Discard n
87194 +drops all packets
87195 +.TP 20
87196 +.M DiscardNoFree n
87197 +drops all packets, but does not free any of them.
87198 +.TP 20
87199 +.M DriverManager n
87200 +a 
87201 +.M Script "n" 
87202 +that manages driver stop events
87203 +.TP 20
87204 +.M DropBroadcasts n
87205 +drops link-level broadcast and multicast packets
87206 +.TP 20
87207 +.M DRRSched n
87208 +pulls from inputs with deficit round robin scheduling
87209 +.TP 20
87210 +.M DynamicUDPIPEncap n
87211 +encapsulates packets in dynamic UDP/IP headers
87212 +.TP 20
87213 +.M EnsureEther n
87214 +ensures that IP packets are Ethernet encapsulated
87215 +.TP 20
87216 +.M Error n
87217 +always fails
87218 +.TP 20
87219 +.M EtherEncap n
87220 +encapsulates packets in Ethernet header
87221 +.TP 20
87222 +.M EtherMirror n
87223 +swaps Ethernet source and destination
87224 +.TP 20
87225 +.M FastTCPFlows n
87226 +creates packets flows with static TCP/IP/Ethernet headers
87227 +.TP 20
87228 +.M FastUDPFlows n
87229 +creates packets flows with static UDP/IP/Ethernet headers
87230 +.TP 20
87231 +.M FastUDPSource n
87232 +creates packets with static UDP/IP/Ethernet headers
87233 +.TP 20
87234 +.M FixIPSrc n
87235 +sets IP source field if requested by annotation
87236 +.TP 20
87237 +.M FromDevice n
87238 +reads packets from network device (Linux kernel)
87239 +.TP 20
87240 +.M FromDevice.u n
87241 +reads packets from network device (user-level)
87242 +.TP 20
87243 +.M FromDump n
87244 +reads packets from a tcpdump file
87245 +.TP 20
87246 +.M FromHost n
87247 +reads packets from Linux
87248 +.TP 20
87249 +.M FromHost.u n
87250 +interface to /dev/net/tun or ethertap (user-level)
87251 +.TP 20
87252 +.M FromRawSocket n
87253 +reads raw IP packets from safe raw socket (user-level)
87254 +.TP 20
87255 +.M FromSocket n
87256 +reads data from socket (user-level)
87257 +.TP 20
87258 +.M FrontDropQueue n
87259 +stores packets in drop-from-front FIFO queue
87260 +.TP 20
87261 +.M FTPPortMapper n
87262 +manipulates 
87263 +.M IPRewriter "n" 
87264 +for FTP
87265 +.TP 20
87266 +.M GetIPAddress n
87267 +sets destination IP address annotation from packet data
87268 +.TP 20
87269 +.M HashSwitch n
87270 +classifies packets by hash of contents
87271 +.TP 20
87272 +.M HostEtherFilter n
87273 +drops Ethernet packets sent to other machines
87274 +.TP 20
87275 +.M ICMPError n
87276 +generates ICMP error packets
87277 +.TP 20
87278 +.M ICMPPingEncap n
87279 +encapsulates packets in ICMP ping headers
87280 +.TP 20
87281 +.M ICMPPingResponder n
87282 +responds to ICMP echo requests
87283 +.TP 20
87284 +.M ICMPPingRewriter n
87285 +rewrites ICMP echo requests and replies
87286 +.TP 20
87287 +.M ICMPPingSource n
87288 +periodically sends ICMP echo requests
87289 +.TP 20
87290 +.M ICMPRewriter n
87291 +rewrites ICMP packets based on IP rewriter mappings
87292 +.TP 20
87293 +.M Idle n
87294 +discards packets
87295 +.TP 20
87296 +.M InfiniteSource n
87297 +generates packets whenever scheduled
87298 +.TP 20
87299 +.M IPAddrPairRewriter n
87300 +rewrites IP packets' addresses by address pair
87301 +.TP 20
87302 +.M IPAddrRewriter n
87303 +rewrites IP packets' addresses
87304 +.TP 20
87305 +.M IPClassifier n
87306 +classifies IP packets by contents
87307 +.TP 20
87308 +.M IPEncap n
87309 +encapsulates packets in static IP header
87310 +.TP 20
87311 +.M IPFilter n
87312 +filters IP packets by contents
87313 +.TP 20
87314 +.M IPFragmenter n
87315 +fragments large IP packets
87316 +.TP 20
87317 +.M IPGWOptions n
87318 +processes router IP options
87319 +.TP 20
87320 +.M IPInputCombo n
87321 +input combo for IP routing
87322 +.TP 20
87323 +.M IPMirror n
87324 +swaps IP source and destination
87325 +.TP 20
87326 +.M IPNameInfo n
87327 +stores name information about IP packets
87328 +.TP 20
87329 +.M IPOutputCombo n
87330 +output combo for IP routing
87331 +.TP 20
87332 +.M IPPrint n
87333 +pretty-prints IP packets
87334 +.TP 20
87335 +.M IPRateMonitor n
87336 +measures coming and going IP traffic rates
87337 +.TP 20
87338 +.M IPReassembler n
87339 +Reassembles fragmented IP packets
87340 +.TP 20
87341 +.M IPRewriter n
87342 +rewrites TCP/UDP packets' addresses and ports
87343 +.TP 20
87344 +.M IPRewriterPatterns n
87345 +specifies shared 
87346 +.M IPRewriter n 
87347 +patterns
87348 +.TP 20
87349 +.M IPRouteTable n
87350 +IP routing table superclass
87351 +.TP 20
87352 +.M KernelFilter n
87353 +block kernel from handling packets
87354 +.TP 20
87355 +.M KernelHandlerProxy n
87356 +proxies kernel module handlers at user level
87357 +.TP 20
87358 +.M KernelTap n
87359 +interface to /dev/tap or ethertap (user-level)
87360 +.TP 20
87361 +.M KernelTun n
87362 +interface to /dev/tun or ethertap (user-level)
87363 +.TP 20
87364 +.M LinearIPLookup n
87365 +simple IP routing table
87366 +.TP 20
87367 +.M LinkUnqueue n
87368 +link emulator
87369 +.TP 20
87370 +.M LinuxIPLookup n
87371 +interface to Linux's routing table
87372 +.TP 20
87373 +.M LookupIPRouteMP n
87374 +simple static IP routing table
87375 +.TP 20
87376 +.M MarkIPCE n
87377 +sets IP packets' ECN field to Congestion Experienced
87378 +.TP 20
87379 +.M MarkIPHeader n
87380 +sets IP header annotation
87381 +.TP 20
87382 +.M Message n
87383 +prints a message on configuration
87384 +.TP 20
87385 +.M Meter n
87386 +classifies packet stream by rate (pkt/s)
87387 +.TP 20
87388 +.M MixedQueue n
87389 +stores packets in a FIFO/LIFO queue
87390 +.TP 20
87391 +.M MSQueue n
87392 +stores packets in a FIFO queue
87393 +.TP 20
87394 +.M NotifierQueue n
87395 +stores packets in a FIFO queue
87396 +.TP 20
87397 +.M Null n
87398 +passes packets unchanged
87399 +.TP 20
87400 +.M Null1 n
87401 +copy of 
87402 +.M Null "n" 
87403 +.TP 20
87404 +.M Paint n
87405 +sets packet paint annotations
87406 +.TP 20
87407 +.M PaintSwitch n
87408 +sends packet stream to output chosen per-packet
87409 +.TP 20
87410 +.M PaintTee n
87411 +duplicates packets with given paint annotation
87412 +.TP 20
87413 +.M PerfCountAccum n
87414 +collects differences in Pentium Pro performance metrics
87415 +.TP 20
87416 +.M PerfCountInfo n
87417 +turn on Pentium Pro performance metrics
87418 +.TP 20
87419 +.M PokeHandlers n " (deprecated)"
87420 +calls write handlers at specified times
87421 +.TP 20
87422 +.M PollDevice n
87423 +polls packets from network device (kernel)
87424 +.TP 20
87425 +.M PortInfo n
87426 +stores named TCP/UDP port information
87427 +.TP 20
87428 +.M Print n
87429 +prints packet contents
87430 +.TP 20
87431 +.M PrioSched n
87432 +pulls from priority-scheduled inputs
87433 +.TP 20
87434 +.M ProgressBar n
87435 +prints a progress bar to standard error
87436 +.TP 20
87437 +.M PullNull n
87438 +passes packets unchanged
87439 +.TP 20
87440 +.M PullSwitch n
87441 +forwards pull requests to settable input
87442 +.TP 20
87443 +.M PullTee n
87444 +duplicates packets
87445 +.TP 20
87446 +.M PushNull n
87447 +passes packets unchanged
87448 +.TP 20
87449 +.M Queue n
87450 +stores packets in a FIFO queue
87451 +.TP 20
87452 +.M QuitWatcher n
87453 +stops router processing
87454 +.TP 20
87455 +.M RadixIPLookup n
87456 +IP lookup using a radix trie
87457 +.TP 20
87458 +.M RandomBitErrors n
87459 +changes packet data with some probability
87460 +.TP 20
87461 +.M RandomSample n
87462 +samples packets with some probability
87463 +.TP 20
87464 +.M RandomSource n
87465 +generates random packets whenever scheduled
87466 +.TP 20
87467 +.M RandomSwitch n
87468 +sends packets to random outputs
87469 +.TP 20
87470 +.M RangeIPLookup n
87471 +IP routing lookup through binary search in a very compact table
87472 +.TP 20
87473 +.M RatedSource n
87474 +generates packets at specified rate
87475 +.TP 20
87476 +.M RatedSplitter n
87477 +splits flow of packets at specified rate
87478 +.TP 20
87479 +.M RatedUnqueue n
87480 +pull-to-push converter
87481 +.TP 20
87482 +.M RawSocket n
87483 +transports raw IP packets via safe raw sockets (user-level)
87484 +.TP 20
87485 +.M RED n
87486 +drops packets according to RED
87487 +.TP 20
87488 +.M RFC2507Comp n
87489 +RFC2507 IPv4/TCP header compressor.
87490 +.TP 20
87491 +.M RFC2507Decomp n
87492 +RFC2507 IPv4/TCP header decompressor.
87493 +.TP 20
87494 +.M RIPSend n
87495 +periodically generates specified RIP II packet
87496 +.TP 20
87497 +.M RoundRobinIPMapper n
87498 +round-robin mapper for 
87499 +.M IPRewriter n 
87500 +.TP 20
87501 +.M RoundRobinSched n
87502 +pulls from round-robin inputs
87503 +.TP 20
87504 +.M RoundRobinSwitch n
87505 +sends packets to round-robin outputs
87506 +.TP 20
87507 +.M RoundTripCycleCount n
87508 +measures round trip cycles on a push or pull path
87509 +.TP 20
87510 +.M ScheduleInfo n
87511 +specifies scheduling parameters
87512 +.TP 20
87513 +.M ScheduleLinux n
87514 +returns to Linux scheduler
87515 +.TP 20
87516 +.M Script n
87517 +script a Click router configuration
87518 +.TP 20
87519 +.M SetAnnoByte n
87520 +sets packet user annotations
87521 +.TP 20
87522 +.M SetCRC32 n
87523 +calculates CRC32 and prepends to packet
87524 +.TP 20
87525 +.M SetCycleCount n
87526 +stores cycle count in annotation
87527 +.TP 20
87528 +.M SetIPAddress n
87529 +sets destination IP address annotations
87530 +.TP 20
87531 +.M SetIPChecksum n
87532 +sets IP packets' checksums
87533 +.TP 20
87534 +.M SetIPDSCP n
87535 +sets IP packets' DSCP fields
87536 +.TP 20
87537 +.M SetPacketType n
87538 +sets packet type annotation
87539 +.TP 20
87540 +.M SetPerfCount n
87541 +stores Pentium Pro performance metric in annotation
87542 +.TP 20
87543 +.M SetRandIPAddress n
87544 +sets destination IP address annotations randomly
87545 +.TP 20
87546 +.M SetTCPChecksum n
87547 +sets TCP packets' checksums
87548 +.TP 20
87549 +.M SetTimestamp n
87550 +store the time in the packet's timestamp annotation
87551 +.TP 20
87552 +.M SetUDPChecksum n
87553 +sets UDP packets' checksums
87554 +.TP 20
87555 +.M Shaper n
87556 +shapes traffic to maximum rate (pkt/s) 
87557 +.TP 20
87558 +.M SimpleQueue n
87559 +stores packets in a FIFO queue
87560 +.TP 20
87561 +.M Socket n
87562 +a socket transport (user-level)
87563 +.TP 20
87564 +.M SortedIPLookup n " (deprecated)"
87565 +simple IP routing table
87566 +.TP 20
87567 +.M SourceIPHashMapper n
87568 +Source IP Hash mapper for 
87569 +.M IPRewriter n 
87570 +.TP 20
87571 +.M SpinlockAcquire n
87572 +acquires spinlock
87573 +.TP 20
87574 +.M SpinlockInfo n
87575 +specifies names of spinlocks
87576 +.TP 20
87577 +.M SpinlockRelease n
87578 +releases spinlock
87579 +.TP 20
87580 +.M StaticIPLookup n
87581 +simple static IP routing table
87582 +.TP 20
87583 +.M StaticPullSwitch n
87584 +forwards pull requests to fixed input
87585 +.TP 20
87586 +.M StaticSwitch n
87587 +sends packet stream to fixed output
87588 +.TP 20
87589 +.M StaticThreadSched n
87590 +specifies element and thread scheduling parameters
87591 +.TP 20
87592 +.M StoreData n
87593 +changes packet data
87594 +.TP 20
87595 +.M StoreIPAddress n
87596 +stores IP address in packet
87597 +.TP 20
87598 +.M StrideSched n
87599 +pulls from stride-scheduled inputs
87600 +.TP 20
87601 +.M StrideSwitch n
87602 +sends packets to stride-scheduled outputs
87603 +.TP 20
87604 +.M Strip n
87605 +strips bytes from front of packets
87606 +.TP 20
87607 +.M StripIPHeader n
87608 +strips outermost IP header
87609 +.TP 20
87610 +.M StripToNetworkHeader n
87611 +strips everything preceding network header
87612 +.TP 20
87613 +.M Suppressor n
87614 +passes packets unchanged, optionally dropping some input ports
87615 +.TP 20
87616 +.M Switch n
87617 +sends packet stream to settable output
87618 +.TP 20
87619 +.M TCPRewriter n
87620 +rewrites TCP packets' addresses, ports, and sequence numbers
87621 +.TP 20
87622 +.M Tee n
87623 +duplicates packets
87624 +.TP 20
87625 +.M TimedSink n
87626 +periodically pulls and drops a packet
87627 +.TP 20
87628 +.M TimedSource n
87629 +periodically generates a packet
87630 +.TP 20
87631 +.M ToDevice n
87632 +sends packets to network device (Linux kernel)
87633 +.TP 20
87634 +.M ToDevice.u n
87635 +sends packets to network device (user-level)
87636 +.TP 20
87637 +.M ToDump n
87638 +writes packets to a tcpdump file
87639 +.TP 20
87640 +.M ToHost n
87641 +sends packets to Linux
87642 +.TP 20
87643 +.M ToHost.u n
87644 +sends packets to Linux via Universal TUN/TAP device.
87645 +.TP 20
87646 +.M ToHostSniffers n
87647 +sends packets to Linux packet sniffers
87648 +.TP 20
87649 +.M ToRawSocket n
87650 +sends IP packets through a safe raw socket (user-level)
87651 +.TP 20
87652 +.M ToSocket n
87653 +sends data to socket (user-level)
87654 +.TP 20
87655 +.M Truncate n
87656 +limit packet length.
87657 +.TP 20
87658 +.M UDPIPEncap n
87659 +encapsulates packets in static UDP/IP headers
87660 +.TP 20
87661 +.M UMLSwitch n
87662 +Connects to a UML switch daemon
87663 +.TP 20
87664 +.M Unqueue n
87665 +pull-to-push converter
87666 +.TP 20
87667 +.M Unqueue2 n
87668 +pull-to-push converter
87669 +.TP 20
87670 +.M Unstrip n
87671 +unstrips bytes from front of packets
87672 +.TP 20
87673 +.M UnstripIPHeader n
87674 +restores outermost IP header
87675 +.PD
87676 diff -Nurb click-1.6.0/inst/share/man/mann/elements.n click-1.6.0-27/inst/share/man/mann/elements.n
87677 --- click-1.6.0/inst/share/man/mann/elements.n  1969-12-31 19:00:00.000000000 -0500
87678 +++ click-1.6.0-27/inst/share/man/mann/elements.n       2009-02-11 14:08:52.000000000 -0500
87679 @@ -0,0 +1,1323 @@
87680 +.\" -*- mode: nroff -*-
87681 +.\" Generated by 'click-elem2man'
87682 +.de M
87683 +.IR "\\$1" "(\\$2)\\$3"
87684 +..
87685 +.de RM
87686 +.RI "\\$1" "\\$2" "(\\$3)\\$4"
87687 +..
87688 +.TH "ELEMENTS" n "11/Feb/2009" "Click"
87689 +.SH "NAME"
87690 +elements - documented Click element classes
87691 +.SH "DESCRIPTION"
87692 +This page lists all Click element classes that have manual page documentation.
87693 +.\"html <p><a href="#BY+FUNCTION"><b>By Function</b></a>:
87694 +.\"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>
87695 +.\"html <a href="#ALPHABETICAL+LIST"><b>Alphabetical List</b></a></p>
87696 +.SH "BY FUNCTION"
87697 +.SS "Basic Sources and Sinks"
87698 +.PP
87699 +.PD 0
87700 +.TP 20
87701 +.M Discard n
87702 +drops all packets
87703 +.TP 20
87704 +.M DiscardNoFree n
87705 +drops all packets, but does not free any of them.
87706 +.TP 20
87707 +.M Idle n
87708 +discards packets
87709 +.TP 20
87710 +.M InfiniteSource n
87711 +generates packets whenever scheduled
87712 +.TP 20
87713 +.M RandomSource n
87714 +generates random packets whenever scheduled
87715 +.TP 20
87716 +.M RatedSource n
87717 +generates packets at specified rate
87718 +.TP 20
87719 +.M TimedSink n
87720 +periodically pulls and drops a packet
87721 +.TP 20
87722 +.M TimedSource n
87723 +periodically generates a packet
87724 +.PD
87725 +.SS "Basic Classification and Selection"
87726 +.PP
87727 +.PD 0
87728 +.TP 20
87729 +.M CheckLength n
87730 +drops large packets
87731 +.TP 20
87732 +.M Classifier n
87733 +classifies packets by contents
87734 +.TP 20
87735 +.M HashSwitch n
87736 +classifies packets by hash of contents
87737 +.TP 20
87738 +.M RandomSample n
87739 +samples packets with some probability
87740 +.TP 20
87741 +.M RandomSwitch n
87742 +sends packets to random outputs
87743 +.TP 20
87744 +.M RoundRobinSwitch n
87745 +sends packets to round-robin outputs
87746 +.TP 20
87747 +.M StaticSwitch n
87748 +sends packet stream to fixed output
87749 +.TP 20
87750 +.M StrideSwitch n
87751 +sends packets to stride-scheduled outputs
87752 +.TP 20
87753 +.M Suppressor n
87754 +passes packets unchanged, optionally dropping some input ports
87755 +.TP 20
87756 +.M Switch n
87757 +sends packet stream to settable output
87758 +.PD
87759 +.SS "Basic Packet Transfer"
87760 +.PP
87761 +.PD 0
87762 +.TP 20
87763 +.M Null n
87764 +passes packets unchanged
87765 +.TP 20
87766 +.M Null1 n
87767 +copy of 
87768 +.M Null "n" 
87769 +.TP 20
87770 +.M PullNull n
87771 +passes packets unchanged
87772 +.TP 20
87773 +.M PullTee n
87774 +duplicates packets
87775 +.TP 20
87776 +.M PushNull n
87777 +passes packets unchanged
87778 +.TP 20
87779 +.M Tee n
87780 +duplicates packets
87781 +.PD
87782 +.SS "Counters"
87783 +.PP
87784 +.PD 0
87785 +.TP 20
87786 +.M AverageCounter n
87787 +measures historical packet count and rate
87788 +.TP 20
87789 +.M Counter n
87790 +measures packet count and rate
87791 +.TP 20
87792 +.M CycleCountAccum n
87793 +collects differences in cycle counters
87794 +.TP 20
87795 +.M PerfCountAccum n
87796 +collects differences in Pentium Pro performance metrics
87797 +.TP 20
87798 +.M PerfCountInfo n
87799 +turn on Pentium Pro performance metrics
87800 +.TP 20
87801 +.M RoundTripCycleCount n
87802 +measures round trip cycles on a push or pull path
87803 +.TP 20
87804 +.M SetCycleCount n
87805 +stores cycle count in annotation
87806 +.TP 20
87807 +.M SetPerfCount n
87808 +stores Pentium Pro performance metric in annotation
87809 +.PD
87810 +.SS "Timestamps"
87811 +.PP
87812 +.PD 0
87813 +.TP 20
87814 +.M SetTimestamp n
87815 +store the time in the packet's timestamp annotation
87816 +.PD
87817 +.SS "Basic Packet Modification"
87818 +.PP
87819 +.PD 0
87820 +.TP 20
87821 +.M Align n
87822 +aligns packet data
87823 +.TP 20
87824 +.M RandomBitErrors n
87825 +changes packet data with some probability
87826 +.TP 20
87827 +.M StoreData n
87828 +changes packet data
87829 +.TP 20
87830 +.M Strip n
87831 +strips bytes from front of packets
87832 +.TP 20
87833 +.M StripToNetworkHeader n
87834 +strips everything preceding network header
87835 +.TP 20
87836 +.M Truncate n
87837 +limit packet length.
87838 +.TP 20
87839 +.M Unstrip n
87840 +unstrips bytes from front of packets
87841 +.PD
87842 +.SS "Packet Storage"
87843 +.PP
87844 +.PD 0
87845 +.TP 20
87846 +.M FrontDropQueue n
87847 +stores packets in drop-from-front FIFO queue
87848 +.TP 20
87849 +.M MixedQueue n
87850 +stores packets in a FIFO/LIFO queue
87851 +.TP 20
87852 +.M NotifierQueue n
87853 +stores packets in a FIFO queue
87854 +.TP 20
87855 +.M Queue n
87856 +stores packets in a FIFO queue
87857 +.TP 20
87858 +.M SimpleQueue n
87859 +stores packets in a FIFO queue
87860 +.PD
87861 +.SS "Active Queue Management"
87862 +.PP
87863 +.PD 0
87864 +.TP 20
87865 +.M AdaptiveRED n
87866 +drops packets according to Adaptive RED
87867 +.TP 20
87868 +.M RED n
87869 +drops packets according to RED
87870 +.PD
87871 +.SS "Packet Scheduling"
87872 +.PP
87873 +.PD 0
87874 +.TP 20
87875 +.M DRRSched n
87876 +pulls from inputs with deficit round robin scheduling
87877 +.TP 20
87878 +.M PrioSched n
87879 +pulls from priority-scheduled inputs
87880 +.TP 20
87881 +.M PullSwitch n
87882 +forwards pull requests to settable input
87883 +.TP 20
87884 +.M RoundRobinSched n
87885 +pulls from round-robin inputs
87886 +.TP 20
87887 +.M StaticPullSwitch n
87888 +forwards pull requests to fixed input
87889 +.TP 20
87890 +.M StrideSched n
87891 +pulls from stride-scheduled inputs
87892 +.PD
87893 +.SS "Traffic Shaping"
87894 +.PP
87895 +.PD 0
87896 +.TP 20
87897 +.M BandwidthMeter n
87898 +classifies packet stream by arrival rate
87899 +.TP 20
87900 +.M BandwidthRatedSplitter n
87901 +splits flow of packets at specified bandwidth rate
87902 +.TP 20
87903 +.M BandwidthRatedUnqueue n
87904 +pull-to-push converter
87905 +.TP 20
87906 +.M BandwidthShaper n
87907 +shapes traffic to maximum rate (bytes/s) 
87908 +.TP 20
87909 +.M Burster n
87910 +pull-to-push converter
87911 +.TP 20
87912 +.M CompareBlock n
87913 +drops packets out of rate range
87914 +.TP 20
87915 +.M DelayShaper n
87916 +shapes traffic to meet delay requirements
87917 +.TP 20
87918 +.M DelayUnqueue n
87919 +delay inducing pull-to-push converter
87920 +.TP 20
87921 +.M LinkUnqueue n
87922 +link emulator
87923 +.TP 20
87924 +.M Meter n
87925 +classifies packet stream by rate (pkt/s)
87926 +.TP 20
87927 +.M RatedSplitter n
87928 +splits flow of packets at specified rate
87929 +.TP 20
87930 +.M RatedUnqueue n
87931 +pull-to-push converter
87932 +.TP 20
87933 +.M Shaper n
87934 +shapes traffic to maximum rate (pkt/s) 
87935 +.TP 20
87936 +.M Unqueue n
87937 +pull-to-push converter
87938 +.TP 20
87939 +.M Unqueue2 n
87940 +pull-to-push converter
87941 +.PD
87942 +.SS "Information Elements"
87943 +.PP
87944 +.PD 0
87945 +.TP 20
87946 +.M AddressInfo n
87947 +specifies address information
87948 +.TP 20
87949 +.M AlignmentInfo n
87950 +specifies alignment information
87951 +.TP 20
87952 +.M PortInfo n
87953 +stores named TCP/UDP port information
87954 +.TP 20
87955 +.M ScheduleInfo n
87956 +specifies scheduling parameters
87957 +.TP 20
87958 +.M ScheduleLinux n
87959 +returns to Linux scheduler
87960 +.PD
87961 +.SS "Network Devices"
87962 +.PP
87963 +.PD 0
87964 +.TP 20
87965 +.M FromDevice n
87966 +reads packets from network device (Linux kernel)
87967 +.TP 20
87968 +.M FromDevice.u n
87969 +reads packets from network device (user-level)
87970 +.TP 20
87971 +.M PollDevice n
87972 +polls packets from network device (kernel)
87973 +.TP 20
87974 +.M ToDevice n
87975 +sends packets to network device (Linux kernel)
87976 +.TP 20
87977 +.M ToDevice.u n
87978 +sends packets to network device (user-level)
87979 +.PD
87980 +.SS "Host and Socket Communication"
87981 +.PP
87982 +.PD 0
87983 +.TP 20
87984 +.M FromHost n
87985 +reads packets from Linux
87986 +.TP 20
87987 +.M FromHost.u n
87988 +interface to /dev/net/tun or ethertap (user-level)
87989 +.TP 20
87990 +.M FromRawSocket n
87991 +reads raw IP packets from safe raw socket (user-level)
87992 +.TP 20
87993 +.M FromSocket n
87994 +reads data from socket (user-level)
87995 +.TP 20
87996 +.M KernelFilter n
87997 +block kernel from handling packets
87998 +.TP 20
87999 +.M KernelTap n
88000 +interface to /dev/tap or ethertap (user-level)
88001 +.TP 20
88002 +.M KernelTun n
88003 +interface to /dev/tun or ethertap (user-level)
88004 +.TP 20
88005 +.M RawSocket n
88006 +transports raw IP packets via safe raw sockets (user-level)
88007 +.TP 20
88008 +.M Socket n
88009 +a socket transport (user-level)
88010 +.TP 20
88011 +.M ToHost n
88012 +sends packets to Linux
88013 +.TP 20
88014 +.M ToHost.u n
88015 +sends packets to Linux via Universal TUN/TAP device.
88016 +.TP 20
88017 +.M ToHostSniffers n
88018 +sends packets to Linux packet sniffers
88019 +.TP 20
88020 +.M ToRawSocket n
88021 +sends IP packets through a safe raw socket (user-level)
88022 +.TP 20
88023 +.M ToSocket n
88024 +sends data to socket (user-level)
88025 +.PD
88026 +.SS "Ethernet"
88027 +.PP
88028 +.PD 0
88029 +.TP 20
88030 +.M EnsureEther n
88031 +ensures that IP packets are Ethernet encapsulated
88032 +.TP 20
88033 +.M EtherEncap n
88034 +encapsulates packets in Ethernet header
88035 +.TP 20
88036 +.M EtherMirror n
88037 +swaps Ethernet source and destination
88038 +.TP 20
88039 +.M HostEtherFilter n
88040 +drops Ethernet packets sent to other machines
88041 +.PD
88042 +.SS "ARP"
88043 +.PP
88044 +.PD 0
88045 +.TP 20
88046 +.M ARPFaker n
88047 +periodically generates an ARP reply
88048 +.TP 20
88049 +.M ARPPrint n
88050 +pretty-prints ARP packets a la tcpdump
88051 +.TP 20
88052 +.M ARPQuerier n
88053 +encapsulates IP packets in Ethernet headers found via ARP
88054 +.TP 20
88055 +.M ARPResponder n
88056 +generates responses to ARP queries
88057 +.TP 20
88058 +.M CheckARPHeader n
88059 +checks ARP header
88060 +.PD
88061 +.SS "IPv4"
88062 +.PP
88063 +.PD 0
88064 +.TP 20
88065 +.M CheckIPHeader n
88066 +checks IP header
88067 +.TP 20
88068 +.M CheckIPHeader2 n
88069 +checks IP header, no checksum
88070 +.TP 20
88071 +.M DecIPTTL n
88072 +decrements IP time-to-live, drops dead packets
88073 +.TP 20
88074 +.M FixIPSrc n
88075 +sets IP source field if requested by annotation
88076 +.TP 20
88077 +.M GetIPAddress n
88078 +sets destination IP address annotation from packet data
88079 +.TP 20
88080 +.M IPClassifier n
88081 +classifies IP packets by contents
88082 +.TP 20
88083 +.M IPEncap n
88084 +encapsulates packets in static IP header
88085 +.TP 20
88086 +.M IPFilter n
88087 +filters IP packets by contents
88088 +.TP 20
88089 +.M IPFragmenter n
88090 +fragments large IP packets
88091 +.TP 20
88092 +.M IPGWOptions n
88093 +processes router IP options
88094 +.TP 20
88095 +.M IPInputCombo n
88096 +input combo for IP routing
88097 +.TP 20
88098 +.M IPMirror n
88099 +swaps IP source and destination
88100 +.TP 20
88101 +.M IPNameInfo n
88102 +stores name information about IP packets
88103 +.TP 20
88104 +.M IPOutputCombo n
88105 +output combo for IP routing
88106 +.TP 20
88107 +.M IPPrint n
88108 +pretty-prints IP packets
88109 +.TP 20
88110 +.M IPReassembler n
88111 +Reassembles fragmented IP packets
88112 +.TP 20
88113 +.M MarkIPCE n
88114 +sets IP packets' ECN field to Congestion Experienced
88115 +.TP 20
88116 +.M MarkIPHeader n
88117 +sets IP header annotation
88118 +.TP 20
88119 +.M SetIPAddress n
88120 +sets destination IP address annotations
88121 +.TP 20
88122 +.M SetIPChecksum n
88123 +sets IP packets' checksums
88124 +.TP 20
88125 +.M SetIPDSCP n
88126 +sets IP packets' DSCP fields
88127 +.TP 20
88128 +.M SetRandIPAddress n
88129 +sets destination IP address annotations randomly
88130 +.TP 20
88131 +.M StoreIPAddress n
88132 +stores IP address in packet
88133 +.TP 20
88134 +.M StripIPHeader n
88135 +strips outermost IP header
88136 +.TP 20
88137 +.M UnstripIPHeader n
88138 +restores outermost IP header
88139 +.PD
88140 +.SS "IPv4 Routing"
88141 +.PP
88142 +.PD 0
88143 +.TP 20
88144 +.M DirectIPLookup n
88145 +IP routing lookup using direct-indexed tables
88146 +.TP 20
88147 +.M IPRouteTable n
88148 +IP routing table superclass
88149 +.TP 20
88150 +.M LinearIPLookup n
88151 +simple IP routing table
88152 +.TP 20
88153 +.M LinuxIPLookup n
88154 +interface to Linux's routing table
88155 +.TP 20
88156 +.M RadixIPLookup n
88157 +IP lookup using a radix trie
88158 +.TP 20
88159 +.M RangeIPLookup n
88160 +IP routing lookup through binary search in a very compact table
88161 +.TP 20
88162 +.M RIPSend n
88163 +periodically generates specified RIP II packet
88164 +.TP 20
88165 +.M SortedIPLookup n " (deprecated)"
88166 +simple IP routing table
88167 +.TP 20
88168 +.M StaticIPLookup n
88169 +simple static IP routing table
88170 +.PD
88171 +.SS "ICMP"
88172 +.PP
88173 +.PD 0
88174 +.TP 20
88175 +.M CheckICMPHeader n
88176 +checks ICMP header on ICMP packets
88177 +.TP 20
88178 +.M ICMPError n
88179 +generates ICMP error packets
88180 +.TP 20
88181 +.M ICMPPingEncap n
88182 +encapsulates packets in ICMP ping headers
88183 +.TP 20
88184 +.M ICMPPingResponder n
88185 +responds to ICMP echo requests
88186 +.TP 20
88187 +.M ICMPPingSource n
88188 +periodically sends ICMP echo requests
88189 +.PD
88190 +.SS "Network Address Translation"
88191 +.PP
88192 +.PD 0
88193 +.TP 20
88194 +.M FTPPortMapper n
88195 +manipulates 
88196 +.M IPRewriter "n" 
88197 +for FTP
88198 +.TP 20
88199 +.M ICMPPingRewriter n
88200 +rewrites ICMP echo requests and replies
88201 +.TP 20
88202 +.M ICMPRewriter n
88203 +rewrites ICMP packets based on IP rewriter mappings
88204 +.TP 20
88205 +.M IPAddrPairRewriter n
88206 +rewrites IP packets' addresses by address pair
88207 +.TP 20
88208 +.M IPAddrRewriter n
88209 +rewrites IP packets' addresses
88210 +.TP 20
88211 +.M IPRewriter n
88212 +rewrites TCP/UDP packets' addresses and ports
88213 +.TP 20
88214 +.M IPRewriterPatterns n
88215 +specifies shared 
88216 +.M IPRewriter n 
88217 +patterns
88218 +.TP 20
88219 +.M RoundRobinIPMapper n
88220 +round-robin mapper for 
88221 +.M IPRewriter n 
88222 +.TP 20
88223 +.M SourceIPHashMapper n
88224 +Source IP Hash mapper for 
88225 +.M IPRewriter n 
88226 +.TP 20
88227 +.M TCPRewriter n
88228 +rewrites TCP packets' addresses, ports, and sequence numbers
88229 +.PD
88230 +.SS "TCP"
88231 +.PP
88232 +.PD 0
88233 +.TP 20
88234 +.M CheckTCPHeader n
88235 +checks TCP header on TCP/IP packets
88236 +.TP 20
88237 +.M FastTCPFlows n
88238 +creates packets flows with static TCP/IP/Ethernet headers
88239 +.TP 20
88240 +.M RFC2507Comp n
88241 +RFC2507 IPv4/TCP header compressor.
88242 +.TP 20
88243 +.M RFC2507Decomp n
88244 +RFC2507 IPv4/TCP header decompressor.
88245 +.TP 20
88246 +.M SetTCPChecksum n
88247 +sets TCP packets' checksums
88248 +.PD
88249 +.SS "UDP"
88250 +.PP
88251 +.PD 0
88252 +.TP 20
88253 +.M CheckUDPHeader n
88254 +checks UDP header on UDP/IP packets
88255 +.TP 20
88256 +.M DynamicUDPIPEncap n
88257 +encapsulates packets in dynamic UDP/IP headers
88258 +.TP 20
88259 +.M FastUDPFlows n
88260 +creates packets flows with static UDP/IP/Ethernet headers
88261 +.TP 20
88262 +.M FastUDPSource n
88263 +creates packets with static UDP/IP/Ethernet headers
88264 +.TP 20
88265 +.M SetUDPChecksum n
88266 +sets UDP packets' checksums
88267 +.TP 20
88268 +.M UDPIPEncap n
88269 +encapsulates packets in static UDP/IP headers
88270 +.PD
88271 +.SS "Trace Manipulation"
88272 +.PP
88273 +.PD 0
88274 +.TP 20
88275 +.M FromDump n
88276 +reads packets from a tcpdump file
88277 +.TP 20
88278 +.M ToDump n
88279 +writes packets to a tcpdump file
88280 +.PD
88281 +.SS "TCP/IP Measurement"
88282 +.PP
88283 +.PD 0
88284 +.TP 20
88285 +.M IPRateMonitor n
88286 +measures coming and going IP traffic rates
88287 +.PD
88288 +.SS "CRCs"
88289 +.PP
88290 +.PD 0
88291 +.TP 20
88292 +.M CheckCRC32 n
88293 +checks packet CRC32s
88294 +.TP 20
88295 +.M SetCRC32 n
88296 +calculates CRC32 and prepends to packet
88297 +.PD
88298 +.SS "Paint Annotations"
88299 +.PP
88300 +.PD 0
88301 +.TP 20
88302 +.M CheckPaint n
88303 +checks packets' paint annotation
88304 +.TP 20
88305 +.M Paint n
88306 +sets packet paint annotations
88307 +.TP 20
88308 +.M PaintSwitch n
88309 +sends packet stream to output chosen per-packet
88310 +.TP 20
88311 +.M PaintTee n
88312 +duplicates packets with given paint annotation
88313 +.PD
88314 +.SS "Annotations"
88315 +.PP
88316 +.PD 0
88317 +.TP 20
88318 +.M DropBroadcasts n
88319 +drops link-level broadcast and multicast packets
88320 +.TP 20
88321 +.M SetAnnoByte n
88322 +sets packet user annotations
88323 +.TP 20
88324 +.M SetPacketType n
88325 +sets packet type annotation
88326 +.PD
88327 +.SS "Debugging"
88328 +.PP
88329 +.PD 0
88330 +.TP 20
88331 +.M Error n
88332 +always fails
88333 +.TP 20
88334 +.M Print n
88335 +prints packet contents
88336 +.PD
88337 +.SS "Control"
88338 +.PP
88339 +.PD 0
88340 +.TP 20
88341 +.M ChangeUID n
88342 +relinquish root privilege
88343 +.TP 20
88344 +.M ChatterSocket n
88345 +reports chatter messages to connected sockets
88346 +.TP 20
88347 +.M ControlSocket n
88348 +opens control sockets for other programs
88349 +.TP 20
88350 +.M DriverManager n
88351 +a 
88352 +.M Script "n" 
88353 +that manages driver stop events
88354 +.TP 20
88355 +.M KernelHandlerProxy n
88356 +proxies kernel module handlers at user level
88357 +.TP 20
88358 +.M Message n
88359 +prints a message on configuration
88360 +.TP 20
88361 +.M PokeHandlers n " (deprecated)"
88362 +calls write handlers at specified times
88363 +.TP 20
88364 +.M ProgressBar n
88365 +prints a progress bar to standard error
88366 +.TP 20
88367 +.M QuitWatcher n
88368 +stops router processing
88369 +.TP 20
88370 +.M Script n
88371 +script a Click router configuration
88372 +.PD
88373 +.SS "Multithreaded Click"
88374 +.PP
88375 +.PD 0
88376 +.TP 20
88377 +.M CPUQueue n
88378 +stores packets in FIFO queues.
88379 +.TP 20
88380 +.M CPUSwitch n
88381 +classifies packets by cpu
88382 +.TP 20
88383 +.M LookupIPRouteMP n
88384 +simple static IP routing table
88385 +.TP 20
88386 +.M MSQueue n
88387 +stores packets in a FIFO queue
88388 +.TP 20
88389 +.M SpinlockAcquire n
88390 +acquires spinlock
88391 +.TP 20
88392 +.M SpinlockInfo n
88393 +specifies names of spinlocks
88394 +.TP 20
88395 +.M SpinlockRelease n
88396 +releases spinlock
88397 +.TP 20
88398 +.M StaticThreadSched n
88399 +specifies element and thread scheduling parameters
88400 +.PD
88401 +.SS "devices"
88402 +.PP
88403 +.PD 0
88404 +.TP 20
88405 +.M UMLSwitch n
88406 +Connects to a UML switch daemon
88407 +.PD
88408 +.SH "ALPHABETICAL LIST"
88409 +.PP
88410 +.PD 0
88411 +.TP 20
88412 +.M AdaptiveRED n
88413 +drops packets according to Adaptive RED
88414 +.TP 20
88415 +.M AddressInfo n
88416 +specifies address information
88417 +.TP 20
88418 +.M Align n
88419 +aligns packet data
88420 +.TP 20
88421 +.M AlignmentInfo n
88422 +specifies alignment information
88423 +.TP 20
88424 +.M ARPFaker n
88425 +periodically generates an ARP reply
88426 +.TP 20
88427 +.M ARPPrint n
88428 +pretty-prints ARP packets a la tcpdump
88429 +.TP 20
88430 +.M ARPQuerier n
88431 +encapsulates IP packets in Ethernet headers found via ARP
88432 +.TP 20
88433 +.M ARPResponder n
88434 +generates responses to ARP queries
88435 +.TP 20
88436 +.M AverageCounter n
88437 +measures historical packet count and rate
88438 +.TP 20
88439 +.M BandwidthMeter n
88440 +classifies packet stream by arrival rate
88441 +.TP 20
88442 +.M BandwidthRatedSplitter n
88443 +splits flow of packets at specified bandwidth rate
88444 +.TP 20
88445 +.M BandwidthRatedUnqueue n
88446 +pull-to-push converter
88447 +.TP 20
88448 +.M BandwidthShaper n
88449 +shapes traffic to maximum rate (bytes/s) 
88450 +.TP 20
88451 +.M Burster n
88452 +pull-to-push converter
88453 +.TP 20
88454 +.M ChangeUID n
88455 +relinquish root privilege
88456 +.TP 20
88457 +.M ChatterSocket n
88458 +reports chatter messages to connected sockets
88459 +.TP 20
88460 +.M CheckARPHeader n
88461 +checks ARP header
88462 +.TP 20
88463 +.M CheckCRC32 n
88464 +checks packet CRC32s
88465 +.TP 20
88466 +.M CheckICMPHeader n
88467 +checks ICMP header on ICMP packets
88468 +.TP 20
88469 +.M CheckIPHeader n
88470 +checks IP header
88471 +.TP 20
88472 +.M CheckIPHeader2 n
88473 +checks IP header, no checksum
88474 +.TP 20
88475 +.M CheckLength n
88476 +drops large packets
88477 +.TP 20
88478 +.M CheckPaint n
88479 +checks packets' paint annotation
88480 +.TP 20
88481 +.M CheckTCPHeader n
88482 +checks TCP header on TCP/IP packets
88483 +.TP 20
88484 +.M CheckUDPHeader n
88485 +checks UDP header on UDP/IP packets
88486 +.TP 20
88487 +.M Classifier n
88488 +classifies packets by contents
88489 +.TP 20
88490 +.M CompareBlock n
88491 +drops packets out of rate range
88492 +.TP 20
88493 +.M ControlSocket n
88494 +opens control sockets for other programs
88495 +.TP 20
88496 +.M Counter n
88497 +measures packet count and rate
88498 +.TP 20
88499 +.M CPUQueue n
88500 +stores packets in FIFO queues.
88501 +.TP 20
88502 +.M CPUSwitch n
88503 +classifies packets by cpu
88504 +.TP 20
88505 +.M CycleCountAccum n
88506 +collects differences in cycle counters
88507 +.TP 20
88508 +.M DecIPTTL n
88509 +decrements IP time-to-live, drops dead packets
88510 +.TP 20
88511 +.M DelayShaper n
88512 +shapes traffic to meet delay requirements
88513 +.TP 20
88514 +.M DelayUnqueue n
88515 +delay inducing pull-to-push converter
88516 +.TP 20
88517 +.M DirectIPLookup n
88518 +IP routing lookup using direct-indexed tables
88519 +.TP 20
88520 +.M Discard n
88521 +drops all packets
88522 +.TP 20
88523 +.M DiscardNoFree n
88524 +drops all packets, but does not free any of them.
88525 +.TP 20
88526 +.M DriverManager n
88527 +a 
88528 +.M Script "n" 
88529 +that manages driver stop events
88530 +.TP 20
88531 +.M DropBroadcasts n
88532 +drops link-level broadcast and multicast packets
88533 +.TP 20
88534 +.M DRRSched n
88535 +pulls from inputs with deficit round robin scheduling
88536 +.TP 20
88537 +.M DynamicUDPIPEncap n
88538 +encapsulates packets in dynamic UDP/IP headers
88539 +.TP 20
88540 +.M EnsureEther n
88541 +ensures that IP packets are Ethernet encapsulated
88542 +.TP 20
88543 +.M Error n
88544 +always fails
88545 +.TP 20
88546 +.M EtherEncap n
88547 +encapsulates packets in Ethernet header
88548 +.TP 20
88549 +.M EtherMirror n
88550 +swaps Ethernet source and destination
88551 +.TP 20
88552 +.M FastTCPFlows n
88553 +creates packets flows with static TCP/IP/Ethernet headers
88554 +.TP 20
88555 +.M FastUDPFlows n
88556 +creates packets flows with static UDP/IP/Ethernet headers
88557 +.TP 20
88558 +.M FastUDPSource n
88559 +creates packets with static UDP/IP/Ethernet headers
88560 +.TP 20
88561 +.M FixIPSrc n
88562 +sets IP source field if requested by annotation
88563 +.TP 20
88564 +.M FromDevice n
88565 +reads packets from network device (Linux kernel)
88566 +.TP 20
88567 +.M FromDevice.u n
88568 +reads packets from network device (user-level)
88569 +.TP 20
88570 +.M FromDump n
88571 +reads packets from a tcpdump file
88572 +.TP 20
88573 +.M FromHost n
88574 +reads packets from Linux
88575 +.TP 20
88576 +.M FromHost.u n
88577 +interface to /dev/net/tun or ethertap (user-level)
88578 +.TP 20
88579 +.M FromRawSocket n
88580 +reads raw IP packets from safe raw socket (user-level)
88581 +.TP 20
88582 +.M FromSocket n
88583 +reads data from socket (user-level)
88584 +.TP 20
88585 +.M FrontDropQueue n
88586 +stores packets in drop-from-front FIFO queue
88587 +.TP 20
88588 +.M FTPPortMapper n
88589 +manipulates 
88590 +.M IPRewriter "n" 
88591 +for FTP
88592 +.TP 20
88593 +.M GetIPAddress n
88594 +sets destination IP address annotation from packet data
88595 +.TP 20
88596 +.M HashSwitch n
88597 +classifies packets by hash of contents
88598 +.TP 20
88599 +.M HostEtherFilter n
88600 +drops Ethernet packets sent to other machines
88601 +.TP 20
88602 +.M ICMPError n
88603 +generates ICMP error packets
88604 +.TP 20
88605 +.M ICMPPingEncap n
88606 +encapsulates packets in ICMP ping headers
88607 +.TP 20
88608 +.M ICMPPingResponder n
88609 +responds to ICMP echo requests
88610 +.TP 20
88611 +.M ICMPPingRewriter n
88612 +rewrites ICMP echo requests and replies
88613 +.TP 20
88614 +.M ICMPPingSource n
88615 +periodically sends ICMP echo requests
88616 +.TP 20
88617 +.M ICMPRewriter n
88618 +rewrites ICMP packets based on IP rewriter mappings
88619 +.TP 20
88620 +.M Idle n
88621 +discards packets
88622 +.TP 20
88623 +.M InfiniteSource n
88624 +generates packets whenever scheduled
88625 +.TP 20
88626 +.M IPAddrPairRewriter n
88627 +rewrites IP packets' addresses by address pair
88628 +.TP 20
88629 +.M IPAddrRewriter n
88630 +rewrites IP packets' addresses
88631 +.TP 20
88632 +.M IPClassifier n
88633 +classifies IP packets by contents
88634 +.TP 20
88635 +.M IPEncap n
88636 +encapsulates packets in static IP header
88637 +.TP 20
88638 +.M IPFilter n
88639 +filters IP packets by contents
88640 +.TP 20
88641 +.M IPFragmenter n
88642 +fragments large IP packets
88643 +.TP 20
88644 +.M IPGWOptions n
88645 +processes router IP options
88646 +.TP 20
88647 +.M IPInputCombo n
88648 +input combo for IP routing
88649 +.TP 20
88650 +.M IPMirror n
88651 +swaps IP source and destination
88652 +.TP 20
88653 +.M IPNameInfo n
88654 +stores name information about IP packets
88655 +.TP 20
88656 +.M IPOutputCombo n
88657 +output combo for IP routing
88658 +.TP 20
88659 +.M IPPrint n
88660 +pretty-prints IP packets
88661 +.TP 20
88662 +.M IPRateMonitor n
88663 +measures coming and going IP traffic rates
88664 +.TP 20
88665 +.M IPReassembler n
88666 +Reassembles fragmented IP packets
88667 +.TP 20
88668 +.M IPRewriter n
88669 +rewrites TCP/UDP packets' addresses and ports
88670 +.TP 20
88671 +.M IPRewriterPatterns n
88672 +specifies shared 
88673 +.M IPRewriter n 
88674 +patterns
88675 +.TP 20
88676 +.M IPRouteTable n
88677 +IP routing table superclass
88678 +.TP 20
88679 +.M KernelFilter n
88680 +block kernel from handling packets
88681 +.TP 20
88682 +.M KernelHandlerProxy n
88683 +proxies kernel module handlers at user level
88684 +.TP 20
88685 +.M KernelTap n
88686 +interface to /dev/tap or ethertap (user-level)
88687 +.TP 20
88688 +.M KernelTun n
88689 +interface to /dev/tun or ethertap (user-level)
88690 +.TP 20
88691 +.M LinearIPLookup n
88692 +simple IP routing table
88693 +.TP 20
88694 +.M LinkUnqueue n
88695 +link emulator
88696 +.TP 20
88697 +.M LinuxIPLookup n
88698 +interface to Linux's routing table
88699 +.TP 20
88700 +.M LookupIPRouteMP n
88701 +simple static IP routing table
88702 +.TP 20
88703 +.M MarkIPCE n
88704 +sets IP packets' ECN field to Congestion Experienced
88705 +.TP 20
88706 +.M MarkIPHeader n
88707 +sets IP header annotation
88708 +.TP 20
88709 +.M Message n
88710 +prints a message on configuration
88711 +.TP 20
88712 +.M Meter n
88713 +classifies packet stream by rate (pkt/s)
88714 +.TP 20
88715 +.M MixedQueue n
88716 +stores packets in a FIFO/LIFO queue
88717 +.TP 20
88718 +.M MSQueue n
88719 +stores packets in a FIFO queue
88720 +.TP 20
88721 +.M NotifierQueue n
88722 +stores packets in a FIFO queue
88723 +.TP 20
88724 +.M Null n
88725 +passes packets unchanged
88726 +.TP 20
88727 +.M Null1 n
88728 +copy of 
88729 +.M Null "n" 
88730 +.TP 20
88731 +.M Paint n
88732 +sets packet paint annotations
88733 +.TP 20
88734 +.M PaintSwitch n
88735 +sends packet stream to output chosen per-packet
88736 +.TP 20
88737 +.M PaintTee n
88738 +duplicates packets with given paint annotation
88739 +.TP 20
88740 +.M PerfCountAccum n
88741 +collects differences in Pentium Pro performance metrics
88742 +.TP 20
88743 +.M PerfCountInfo n
88744 +turn on Pentium Pro performance metrics
88745 +.TP 20
88746 +.M PokeHandlers n " (deprecated)"
88747 +calls write handlers at specified times
88748 +.TP 20
88749 +.M PollDevice n
88750 +polls packets from network device (kernel)
88751 +.TP 20
88752 +.M PortInfo n
88753 +stores named TCP/UDP port information
88754 +.TP 20
88755 +.M Print n
88756 +prints packet contents
88757 +.TP 20
88758 +.M PrioSched n
88759 +pulls from priority-scheduled inputs
88760 +.TP 20
88761 +.M ProgressBar n
88762 +prints a progress bar to standard error
88763 +.TP 20
88764 +.M PullNull n
88765 +passes packets unchanged
88766 +.TP 20
88767 +.M PullSwitch n
88768 +forwards pull requests to settable input
88769 +.TP 20
88770 +.M PullTee n
88771 +duplicates packets
88772 +.TP 20
88773 +.M PushNull n
88774 +passes packets unchanged
88775 +.TP 20
88776 +.M Queue n
88777 +stores packets in a FIFO queue
88778 +.TP 20
88779 +.M QuitWatcher n
88780 +stops router processing
88781 +.TP 20
88782 +.M RadixIPLookup n
88783 +IP lookup using a radix trie
88784 +.TP 20
88785 +.M RandomBitErrors n
88786 +changes packet data with some probability
88787 +.TP 20
88788 +.M RandomSample n
88789 +samples packets with some probability
88790 +.TP 20
88791 +.M RandomSource n
88792 +generates random packets whenever scheduled
88793 +.TP 20
88794 +.M RandomSwitch n
88795 +sends packets to random outputs
88796 +.TP 20
88797 +.M RangeIPLookup n
88798 +IP routing lookup through binary search in a very compact table
88799 +.TP 20
88800 +.M RatedSource n
88801 +generates packets at specified rate
88802 +.TP 20
88803 +.M RatedSplitter n
88804 +splits flow of packets at specified rate
88805 +.TP 20
88806 +.M RatedUnqueue n
88807 +pull-to-push converter
88808 +.TP 20
88809 +.M RawSocket n
88810 +transports raw IP packets via safe raw sockets (user-level)
88811 +.TP 20
88812 +.M RED n
88813 +drops packets according to RED
88814 +.TP 20
88815 +.M RFC2507Comp n
88816 +RFC2507 IPv4/TCP header compressor.
88817 +.TP 20
88818 +.M RFC2507Decomp n
88819 +RFC2507 IPv4/TCP header decompressor.
88820 +.TP 20
88821 +.M RIPSend n
88822 +periodically generates specified RIP II packet
88823 +.TP 20
88824 +.M RoundRobinIPMapper n
88825 +round-robin mapper for 
88826 +.M IPRewriter n 
88827 +.TP 20
88828 +.M RoundRobinSched n
88829 +pulls from round-robin inputs
88830 +.TP 20
88831 +.M RoundRobinSwitch n
88832 +sends packets to round-robin outputs
88833 +.TP 20
88834 +.M RoundTripCycleCount n
88835 +measures round trip cycles on a push or pull path
88836 +.TP 20
88837 +.M ScheduleInfo n
88838 +specifies scheduling parameters
88839 +.TP 20
88840 +.M ScheduleLinux n
88841 +returns to Linux scheduler
88842 +.TP 20
88843 +.M Script n
88844 +script a Click router configuration
88845 +.TP 20
88846 +.M SetAnnoByte n
88847 +sets packet user annotations
88848 +.TP 20
88849 +.M SetCRC32 n
88850 +calculates CRC32 and prepends to packet
88851 +.TP 20
88852 +.M SetCycleCount n
88853 +stores cycle count in annotation
88854 +.TP 20
88855 +.M SetIPAddress n
88856 +sets destination IP address annotations
88857 +.TP 20
88858 +.M SetIPChecksum n
88859 +sets IP packets' checksums
88860 +.TP 20
88861 +.M SetIPDSCP n
88862 +sets IP packets' DSCP fields
88863 +.TP 20
88864 +.M SetPacketType n
88865 +sets packet type annotation
88866 +.TP 20
88867 +.M SetPerfCount n
88868 +stores Pentium Pro performance metric in annotation
88869 +.TP 20
88870 +.M SetRandIPAddress n
88871 +sets destination IP address annotations randomly
88872 +.TP 20
88873 +.M SetTCPChecksum n
88874 +sets TCP packets' checksums
88875 +.TP 20
88876 +.M SetTimestamp n
88877 +store the time in the packet's timestamp annotation
88878 +.TP 20
88879 +.M SetUDPChecksum n
88880 +sets UDP packets' checksums
88881 +.TP 20
88882 +.M Shaper n
88883 +shapes traffic to maximum rate (pkt/s) 
88884 +.TP 20
88885 +.M SimpleQueue n
88886 +stores packets in a FIFO queue
88887 +.TP 20
88888 +.M Socket n
88889 +a socket transport (user-level)
88890 +.TP 20
88891 +.M SortedIPLookup n " (deprecated)"
88892 +simple IP routing table
88893 +.TP 20
88894 +.M SourceIPHashMapper n
88895 +Source IP Hash mapper for 
88896 +.M IPRewriter n 
88897 +.TP 20
88898 +.M SpinlockAcquire n
88899 +acquires spinlock
88900 +.TP 20
88901 +.M SpinlockInfo n
88902 +specifies names of spinlocks
88903 +.TP 20
88904 +.M SpinlockRelease n
88905 +releases spinlock
88906 +.TP 20
88907 +.M StaticIPLookup n
88908 +simple static IP routing table
88909 +.TP 20
88910 +.M StaticPullSwitch n
88911 +forwards pull requests to fixed input
88912 +.TP 20
88913 +.M StaticSwitch n
88914 +sends packet stream to fixed output
88915 +.TP 20
88916 +.M StaticThreadSched n
88917 +specifies element and thread scheduling parameters
88918 +.TP 20
88919 +.M StoreData n
88920 +changes packet data
88921 +.TP 20
88922 +.M StoreIPAddress n
88923 +stores IP address in packet
88924 +.TP 20
88925 +.M StrideSched n
88926 +pulls from stride-scheduled inputs
88927 +.TP 20
88928 +.M StrideSwitch n
88929 +sends packets to stride-scheduled outputs
88930 +.TP 20
88931 +.M Strip n
88932 +strips bytes from front of packets
88933 +.TP 20
88934 +.M StripIPHeader n
88935 +strips outermost IP header
88936 +.TP 20
88937 +.M StripToNetworkHeader n
88938 +strips everything preceding network header
88939 +.TP 20
88940 +.M Suppressor n
88941 +passes packets unchanged, optionally dropping some input ports
88942 +.TP 20
88943 +.M Switch n
88944 +sends packet stream to settable output
88945 +.TP 20
88946 +.M TCPRewriter n
88947 +rewrites TCP packets' addresses, ports, and sequence numbers
88948 +.TP 20
88949 +.M Tee n
88950 +duplicates packets
88951 +.TP 20
88952 +.M TimedSink n
88953 +periodically pulls and drops a packet
88954 +.TP 20
88955 +.M TimedSource n
88956 +periodically generates a packet
88957 +.TP 20
88958 +.M ToDevice n
88959 +sends packets to network device (Linux kernel)
88960 +.TP 20
88961 +.M ToDevice.u n
88962 +sends packets to network device (user-level)
88963 +.TP 20
88964 +.M ToDump n
88965 +writes packets to a tcpdump file
88966 +.TP 20
88967 +.M ToHost n
88968 +sends packets to Linux
88969 +.TP 20
88970 +.M ToHost.u n
88971 +sends packets to Linux via Universal TUN/TAP device.
88972 +.TP 20
88973 +.M ToHostSniffers n
88974 +sends packets to Linux packet sniffers
88975 +.TP 20
88976 +.M ToRawSocket n
88977 +sends IP packets through a safe raw socket (user-level)
88978 +.TP 20
88979 +.M ToSocket n
88980 +sends data to socket (user-level)
88981 +.TP 20
88982 +.M Truncate n
88983 +limit packet length.
88984 +.TP 20
88985 +.M UDPIPEncap n
88986 +encapsulates packets in static UDP/IP headers
88987 +.TP 20
88988 +.M UMLSwitch n
88989 +Connects to a UML switch daemon
88990 +.TP 20
88991 +.M Unqueue n
88992 +pull-to-push converter
88993 +.TP 20
88994 +.M Unqueue2 n
88995 +pull-to-push converter
88996 +.TP 20
88997 +.M Unstrip n
88998 +unstrips bytes from front of packets
88999 +.TP 20
89000 +.M UnstripIPHeader n
89001 +restores outermost IP header
89002 +.PD
89003 Files click-1.6.0/inst.tar.gz and click-1.6.0-27/inst.tar.gz differ
89004 diff -Nurb click-1.6.0/installch click-1.6.0-27/installch
89005 --- click-1.6.0/installch       1969-12-31 19:00:00.000000000 -0500
89006 +++ click-1.6.0-27/installch    2009-01-28 16:15:43.000000000 -0500
89007 @@ -0,0 +1,66 @@
89008 +#! /bin/sh
89009 +#
89010 +# installch - install a program, script, or datafile if changed
89011 +#
89012 +# Copyright (c) 2006 Mazu Networks, Inc.
89013 +#
89014 +# Permission is hereby granted, free of charge, to any person obtaining a
89015 +# copy of this software and associated documentation files (the "Software"),
89016 +# to deal in the Software without restriction, subject to the conditions
89017 +# listed in the Click LICENSE file. These conditions include: you must
89018 +# preserve this copyright notice, and you cannot mention the copyright
89019 +# holders in advertising related to the Software without their permission.
89020 +# The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
89021 +# notice is a summary of the Click LICENSE file; the license in that file is
89022 +# legally binding.
89023 +
89024 +install=${INSTALL-/usr/bin/install -c}
89025 +src=
89026 +dst=
89027 +multi=
89028 +mode=0755
89029 +user=`id -u`
89030 +group=`id -g`
89031 +
89032 +while [ x"$1" != x ]; do
89033 +    case $1 in
89034 +    -m)
89035 +       mode="$2"; install="$install -m $2"; shift; shift; continue;;
89036 +    -*)
89037 +       echo "installch: unknown option $1" 1>&2; exit 1;;
89038 +    *)
89039 +       if [ x"$src" = x ]; then
89040 +           src="$1"
89041 +       elif [ x"$dst" = x ]; then
89042 +           dst="$1"
89043 +       else
89044 +           multi=1; src="$src $dst"; dst="$1"
89045 +       fi
89046 +       shift; continue;;
89047 +    esac
89048 +done
89049 +
89050 +if [ x"$dst" = x ]; then
89051 +    echo "installch: too few arguments" 1>&2; exit 1
89052 +fi
89053 +
89054 +if [ x"$multi" = 1 -a ! -d "$dst" ]; then
89055 +    echo "installch: last argument must be directory" 1>&2; exit 1
89056 +fi
89057 +
89058 +doinstall () {
89059 +    while [ x"$1" != x ]; do
89060 +       if [ -d "$dst" ]; then d="$dst/"`basename "$1"`; else d="$dst"; fi
89061 +       if [ -r "$d" ] && cmp "$1" "$d" >/dev/null; then
89062 +           chmod $mode "$d" || exit 1
89063 +           chgrp $group "$d" || exit 1
89064 +       else
89065 +           $install "$1" "$d" || exit 1
89066 +       fi
89067 +       shift
89068 +    done
89069 +}
89070 +
89071 +doinstall $src
89072 +
89073 +exit 0
89074 diff -Nurb click-1.6.0/lib/bitvector.cc.orig click-1.6.0-27/lib/bitvector.cc.orig
89075 --- click-1.6.0/lib/bitvector.cc.orig   1969-12-31 19:00:00.000000000 -0500
89076 +++ click-1.6.0-27/lib/bitvector.cc.orig        2007-07-16 19:47:50.000000000 -0400
89077 @@ -0,0 +1,216 @@
89078 +// -*- c-basic-offset: 4; related-file-name: "../include/click/bitvector.hh" -*-
89079 +/*
89080 + * bitvector.{cc,hh} -- generic bit vector class
89081 + * Eddie Kohler
89082 + *
89083 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
89084 + * Copyright (c) 2002 International Computer Science Institute
89085 + *
89086 + * Permission is hereby granted, free of charge, to any person obtaining a
89087 + * copy of this software and associated documentation files (the "Software"),
89088 + * to deal in the Software without restriction, subject to the conditions
89089 + * listed in the Click LICENSE file. These conditions include: you must
89090 + * preserve this copyright notice, and you cannot mention the copyright
89091 + * holders in advertising related to the Software without their permission.
89092 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
89093 + * notice is a summary of the Click LICENSE file; the license in that file is
89094 + * legally binding.
89095 + */
89096 +
89097 +#include <click/config.h>
89098 +#include <click/bitvector.hh>
89099 +CLICK_DECLS
89100 +
89101 +void
89102 +Bitvector::finish_copy_constructor(const Bitvector &o)
89103 +{
89104 +    int nn = max_word();
89105 +    _data = new uint32_t[nn + 1];
89106 +    for (int i = 0; i <= nn; i++)
89107 +       _data[i] = o._data[i];
89108 +}
89109 +
89110 +void
89111 +Bitvector::clear()
89112 +{
89113 +    int nn = max_word();
89114 +    for (int i = 0; i <= nn; i++)
89115 +       _data[i] = 0;
89116 +}
89117 +
89118 +bool
89119 +Bitvector::zero() const
89120 +{
89121 +    int nn = max_word();
89122 +    for (int i = 0; i <= nn; i++)
89123 +       if (_data[i])
89124 +           return false;
89125 +    return true;
89126 +}
89127 +
89128 +void
89129 +Bitvector::resize_to_max(int new_max, bool valid_n)
89130 +{
89131 +    int want_u = (new_max >> 5) + 1;
89132 +    int have_u = (valid_n ? max_word() : MAX_INLINE_WORD) + 1;
89133 +    if (have_u < MAX_INLINE_WORD + 1)
89134 +       have_u = MAX_INLINE_WORD + 1;
89135 +    if (want_u <= have_u)
89136 +       return;
89137 +
89138 +    uint32_t *new_data = new uint32_t[want_u];
89139 +    memcpy(new_data, _data, have_u * sizeof(uint32_t));
89140 +    memset(new_data + have_u, 0, (want_u - have_u) * sizeof(uint32_t));
89141 +    if (_data != &_f0)
89142 +       delete[] _data;
89143 +    _data = new_data;
89144 +}
89145 +
89146 +void
89147 +Bitvector::clear_last()
89148 +{
89149 +    if ((_max&0x1F) != 0x1F) {
89150 +       uint32_t mask = (1U << ((_max&0x1F)+1)) - 1;
89151 +       _data[_max>>5] &= mask;
89152 +    } else if (_max < 0)
89153 +       _data[0] = 0;
89154 +}
89155 +
89156 +Bitvector &
89157 +Bitvector::operator=(const Bitvector &o)
89158 +{
89159 +#if CLICK_LINUXMODULE || CLICK_BSDMODULE
89160 +    // We might not have been initialized properly.
89161 +    if (!_data)
89162 +       _max = -1, _data = &_f0;
89163 +#endif
89164 +    if (&o == this)
89165 +       /* nada */;
89166 +    else if (o.max_word() <= MAX_INLINE_WORD)
89167 +       memcpy(_data, o._data, 8);
89168 +    else {
89169 +       if (_data != &_f0)
89170 +           delete[] _data;
89171 +       _data = new uint32_t[o.max_word() + 1];
89172 +       memcpy(_data, o._data, (o.max_word() + 1) * sizeof(uint32_t));
89173 +    }
89174 +    _max = o._max;
89175 +    return *this;
89176 +}
89177 +
89178 +Bitvector &
89179 +Bitvector::assign(int n, bool value)
89180 +{
89181 +    resize(n);
89182 +    uint32_t bits = (value ? 0xFFFFFFFFU : 0U);
89183 +    int copy = max_word();
89184 +    for (int i = 0; i <= copy; i++)
89185 +       _data[i] = bits;
89186 +    if (value)
89187 +       clear_last();
89188 +    return *this;
89189 +}
89190 +
89191 +void
89192 +Bitvector::negate()
89193 +{
89194 +    int nn = max_word();
89195 +    uint32_t *data = _data;
89196 +    for (int i = 0; i <= nn; i++)
89197 +       data[i] = ~data[i];
89198 +    clear_last();
89199 +}
89200 +
89201 +Bitvector &
89202 +Bitvector::operator&=(const Bitvector &o)
89203 +{
89204 +    assert(o._max == _max);
89205 +    int nn = max_word();
89206 +    uint32_t *data = _data, *o_data = o._data;
89207 +    for (int i = 0; i <= nn; i++)
89208 +       data[i] &= o_data[i];
89209 +    return *this;
89210 +}
89211 +
89212 +Bitvector &
89213 +Bitvector::operator|=(const Bitvector &o)
89214 +{
89215 +    if (o._max > _max)
89216 +       resize(o._max + 1);
89217 +    int nn = max_word();
89218 +    uint32_t *data = _data, *o_data = o._data;
89219 +    for (int i = 0; i <= nn; i++)
89220 +       data[i] |= o_data[i];
89221 +    return *this;
89222 +}
89223 +
89224 +Bitvector &
89225 +Bitvector::operator^=(const Bitvector &o)
89226 +{
89227 +    assert(o._max == _max);
89228 +    int nn = max_word();
89229 +    uint32_t *data = _data, *o_data = o._data;
89230 +    for (int i = 0; i <= nn; i++)
89231 +       data[i] ^= o_data[i];
89232 +    return *this;
89233 +}
89234 +
89235 +void
89236 +Bitvector::or_at(const Bitvector &o, int offset)
89237 +{
89238 +    assert(offset >= 0 && offset + o._max <= _max);
89239 +    uint32_t bits_1st = offset&0x1F;
89240 +    int my_pos = offset>>5;
89241 +    int o_pos = 0;
89242 +    int my_max_word = max_word();
89243 +    int o_max_word = o.max_word();
89244 +    uint32_t *data = _data;
89245 +    uint32_t *o_data = o._data;
89246 +
89247 +    while (true) {
89248 +       uint32_t val = o_data[o_pos];
89249 +       data[my_pos] |= (val << bits_1st);
89250 +
89251 +       my_pos++;
89252 +       if (my_pos > my_max_word)
89253 +           break;
89254 +    
89255 +       if (bits_1st)
89256 +           data[my_pos] |= (val >> (32 - bits_1st));
89257 +    
89258 +       o_pos++;
89259 +       if (o_pos > o_max_word)
89260 +           break;
89261 +    }
89262 +}
89263 +
89264 +void
89265 +Bitvector::or_with_difference(const Bitvector &o, Bitvector &diff)
89266 +{
89267 +    if (o._max > _max)
89268 +       resize(o._max + 1);
89269 +    if (diff._max > _max)
89270 +       diff.resize(o._max + 1);
89271 +    int nn = max_word();
89272 +    uint32_t *data = _data, *diff_data = diff._data;
89273 +    const uint32_t *o_data = o._data;
89274 +    for (int i = 0; i <= nn; i++) {
89275 +       diff_data[i] = o_data[i] & ~data[i];
89276 +       data[i] |= o_data[i];
89277 +    }
89278 +}
89279 +
89280 +bool
89281 +Bitvector::nonzero_intersection(const Bitvector &o) const
89282 +{
89283 +    int nn = o.max_word();
89284 +    if (nn > max_word())
89285 +       nn = max_word();
89286 +    const uint32_t *data = _data, *o_data = o._data;
89287 +    for (int i = 0; i <= nn; i++)
89288 +       if (data[i] & o_data[i])
89289 +           return true;
89290 +    return false;
89291 +}
89292 +
89293 +CLICK_ENDDECLS
89294 diff -Nurb click-1.6.0/lib/in_cksum.c.orig click-1.6.0-27/lib/in_cksum.c.orig
89295 --- click-1.6.0/lib/in_cksum.c.orig     1969-12-31 19:00:00.000000000 -0500
89296 +++ click-1.6.0-27/lib/in_cksum.c.orig  2007-07-16 19:47:50.000000000 -0400
89297 @@ -0,0 +1,111 @@
89298 +/* -*- c-basic-offset: 4 -*-
89299 + *
89300 + * in_cksum.c -- Internet checksum
89301 + * borrowed, with bug fixes, from one of the BSDs
89302 + */
89303 +
89304 +#include <click/config.h>
89305 +#if CLICK_BSDMODULE
89306 +# include <sys/param.h>
89307 +# include <sys/proc.h>
89308 +#endif
89309 +#include <clicknet/ip.h>
89310 +#if CLICK_LINUXMODULE
89311 +# include <linux/string.h>
89312 +#else
89313 +# include <string.h>
89314 +#endif
89315 +
89316 +#if !CLICK_LINUXMODULE
89317 +uint16_t
89318 +click_in_cksum(const unsigned char *addr, int len)
89319 +{
89320 +    int nleft = len;
89321 +    const uint16_t *w = (const uint16_t *)addr;
89322 +    uint32_t sum = 0;
89323 +    uint16_t answer = 0;
89324 +    
89325 +    /*
89326 +     * Our algorithm is simple, using a 32 bit accumulator (sum), we add
89327 +     * sequential 16 bit words to it, and at the end, fold back all the
89328 +     * carry bits from the top 16 bits into the lower 16 bits.
89329 +     */
89330 +    while (nleft > 1)  {
89331 +       sum += *w++;
89332 +       nleft -= 2;
89333 +    }
89334 +  
89335 +    /* mop up an odd byte, if necessary */
89336 +    if (nleft == 1) {
89337 +       *(unsigned char *)(&answer) = *(const unsigned char *)w ;
89338 +       sum += answer;
89339 +    }
89340 +  
89341 +    /* add back carry outs from top 16 bits to low 16 bits */
89342 +    sum = (sum & 0xffff) + (sum >> 16);
89343 +    sum += (sum >> 16);
89344 +    /* guaranteed now that the lower 16 bits of sum are correct */
89345 +  
89346 +    answer = ~sum;              /* truncate to 16 bits */
89347 +    return answer;
89348 +}
89349 +
89350 +uint16_t
89351 +click_in_cksum_pseudohdr_raw(uint32_t csum, uint32_t src, uint32_t dst, int proto, int packet_len)
89352 +{
89353 +    assert(csum <= 0xFFFF);
89354 +    csum = ~csum & 0xFFFF;
89355 +# ifdef __i386__
89356 +    // borrowed from Linux
89357 +    __asm__("\n\
89358 +       addl %1, %0\n\
89359 +       adcl %2, %0\n\
89360 +       adcl %3, %0\n\
89361 +       adcl $0, %0\n"
89362 +           : "=r" (csum)
89363 +           : "g" (src), "g" (dst), "g" ((htons(packet_len) << 16) + (proto << 8)), "0" (csum));
89364 +    __asm__("\n\
89365 +       addl %1, %0\n\
89366 +       adcl $0xffff, %0\n"
89367 +           : "=r" (csum)
89368 +           : "r" (csum << 16), "0" (csum & 0xFFFF0000));
89369 +    return (~csum) >> 16;
89370 +# else
89371 +    csum += (src & 0xffff) + (src >> 16);
89372 +    csum += (dst & 0xffff) + (dst >> 16);
89373 +    csum += htons(packet_len) + htons(proto);
89374 +    csum = (csum & 0xffff) + (csum >> 16);
89375 +    return ~(csum + (csum >> 16)) & 0xFFFF;
89376 +# endif
89377 +}
89378 +#endif
89379 +
89380 +uint16_t
89381 +click_in_cksum_pseudohdr_hard(uint32_t csum, const struct click_ip *iph, int packet_len)
89382 +{
89383 +    const uint8_t *opt = (const uint8_t *)(iph + 1);
89384 +    const uint8_t *end_opt = ((const uint8_t *)iph) + (iph->ip_hl << 2);
89385 +    while (opt < end_opt) {
89386 +       /* check one-byte options */
89387 +       if (*opt == IPOPT_NOP) {
89388 +           opt++;
89389 +           continue;
89390 +       } else if (*opt == IPOPT_EOL)
89391 +           break;
89392 +
89393 +       /* check option length */
89394 +       if (opt + 1 >= end_opt || opt[1] < 2 || opt + opt[1] > end_opt)
89395 +           break;
89396 +
89397 +       /* grab correct final destination from source routing option */
89398 +       if ((*opt == IPOPT_SSRR || *opt == IPOPT_LSRR) && opt[1] >= 7) {
89399 +           uint32_t daddr;
89400 +           memcpy(&daddr, opt + opt[1] - 4, 4);
89401 +           return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, daddr, iph->ip_p, packet_len);
89402 +       }
89403 +
89404 +       opt += opt[1];
89405 +    }
89406 +    
89407 +    return click_in_cksum_pseudohdr_raw(csum, iph->ip_src.s_addr, iph->ip_dst.s_addr, iph->ip_p, packet_len);
89408 +}
89409 diff -Nurb click-1.6.0/lib/ino.cc click-1.6.0-27/lib/ino.cc
89410 --- click-1.6.0/lib/ino.cc      2007-09-11 15:39:22.000000000 -0400
89411 +++ click-1.6.0-27/lib/ino.cc   2009-01-20 22:34:50.000000000 -0500
89412 @@ -34,6 +34,16 @@
89413      _generation = 0;
89414  }
89415  
89416 +#define DT_UNKNOWN      0
89417 +#define DT_FIFO         1
89418 +#define DT_CHR          2
89419 +#define DT_DIR          4
89420 +#define DT_BLK          6
89421 +#define DT_REG          8
89422 +#define DT_LNK          10
89423 +#define DT_SOCK         12
89424 +#define DT_WHT          14
89425 +
89426  void
89427  ClickIno::cleanup()
89428  {
89429 diff -Nurb click-1.6.0/lib/ino.cc.orig click-1.6.0-27/lib/ino.cc.orig
89430 --- click-1.6.0/lib/ino.cc.orig 1969-12-31 19:00:00.000000000 -0500
89431 +++ click-1.6.0-27/lib/ino.cc.orig      2007-09-11 15:39:22.000000000 -0400
89432 @@ -0,0 +1,440 @@
89433 +// -*- c-basic-offset: 4; related-file-name: "../include/click/ino.hh" -*-
89434 +/*
89435 + * ino.{cc,hh} -- inode numbers for Click file systems
89436 + * Eddie Kohler
89437 + *
89438 + * Copyright (c) 2002 International Computer Science Institute
89439 + *
89440 + * Permission is hereby granted, free of charge, to any person obtaining a
89441 + * copy of this software and associated documentation files (the "Software")
89442 + * to deal in the Software without restriction, subject to the conditions
89443 + * listed in the Click LICENSE file. These conditions include: you must
89444 + * preserve this copyright notice, and you cannot mention the copyright
89445 + * holders in advertising related to the Software without their permission.
89446 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
89447 + * notice is a summary of the Click LICENSE file; the license in that file is
89448 + * legally binding.
89449 + */
89450 +
89451 +#include <click/config.h>
89452 +#include <click/glue.hh>
89453 +#include <click/ino.hh>
89454 +#include <click/router.hh>
89455 +#if INO_DEBUG
89456 +# include <click/straccum.hh>
89457 +#endif
89458 +CLICK_DECLS
89459 +
89460 +void
89461 +ClickIno::initialize()
89462 +{
89463 +    _x = 0;
89464 +    _nentries = _cap = 0;
89465 +    _router = 0;
89466 +    _generation = 0;
89467 +}
89468 +
89469 +void
89470 +ClickIno::cleanup()
89471 +{
89472 +    for (int i = 0; i < _cap; i++)
89473 +       _x[i].name.~String();
89474 +    CLICK_LFREE(_x, sizeof(Entry) * _cap);
89475 +    initialize();
89476 +}
89477 +
89478 +int
89479 +ClickIno::grow(int min_size)
89480 +{
89481 +    if (_cap >= min_size)
89482 +       return 0;
89483 +    int new_cap = (_cap ? _cap : 128);
89484 +    while (new_cap < min_size)
89485 +       new_cap *= 2;
89486 +    // cheat on memory: bad me!
89487 +    Entry *nse = (Entry *)CLICK_LALLOC(sizeof(Entry) * new_cap);
89488 +    if (!nse)
89489 +       return -ENOMEM;
89490 +    memcpy(nse, _x, sizeof(Entry) * _cap);
89491 +    for (int i = _cap; i < new_cap; i++)
89492 +       new((void *)&nse[i]) String();
89493 +    CLICK_LFREE(_x, sizeof(Entry) * _cap);
89494 +    _x = nse;
89495 +    _cap = new_cap;
89496 +    return 0;
89497 +}
89498 +
89499 +
89500 +static int
89501 +entry_compar(const void *v1, const void *v2)
89502 +{
89503 +    const ClickIno::Entry *a = reinterpret_cast<const ClickIno::Entry *>(v1);
89504 +    const ClickIno::Entry *b = reinterpret_cast<const ClickIno::Entry *>(v2);
89505 +    return String::compare(a->name, b->name);
89506 +}
89507 +
89508 +int
89509 +ClickIno::true_prepare(Router *r, uint32_t generation)
89510 +{
89511 +    // config lock must be held!
89512 +
89513 +    int nelem = (r ? r->nelements() : 0) + 1;
89514 +    if (grow(nelem) < 0)
89515 +       return -ENOMEM;
89516 +
89517 +    // add sentinel entry
89518 +    _x[0].name = String();
89519 +    _x[0].elementno_plus1 = 0;
89520 +    _x[0].xindex = 0;
89521 +    _x[0].skip = 0;
89522 +    _x[0].flags = 0;
89523 +    _nentries = 1;
89524 +
89525 +    // exit early if router is empty
89526 +    if (nelem == 1) {
89527 +       _generation = generation;
89528 +       _router = r;
89529 +       _x[0].flags = X_SUBDIR_CONFLICTS_CALCULATED;
89530 +       return 0;
89531 +    }
89532 +
89533 +    // add entries for actual elements
89534 +    for (int i = 1; i < nelem; i++) {
89535 +       _x[i].name = r->ename(i - 1);
89536 +       _x[i].elementno_plus1 = i;
89537 +       _x[i].skip = 0;
89538 +       _x[i].flags = 0;
89539 +    }
89540 +
89541 +    // sort _x
89542 +    click_qsort(&_x[1], nelem - 1, sizeof(Entry), entry_compar);
89543 +
89544 +    // add new _x entries for intermediate directories
89545 +    int n = nelem;
89546 +    for (int i = 1; i < nelem; i++) {
89547 +       // make local copies of the names since we might resize _x
89548 +       String name = _x[i].name;
89549 +       String last_name = _x[i-1].name;
89550 +       int slash = name.find_right('/');
89551 +       // rely on '/' being less than any other valid name character in
89552 +       // ASCII. If the prefix of "last_name" matches the part of "name"
89553 +       // before a slash, then we know that "last_name" matches the whole
89554 +       // component (rather than a fake match like "a/b/cc" <-> "a/b/c/e").
89555 +       while (slash >= 0 && (last_name.length() < slash || memcmp(name.data(), last_name.data(), slash) != 0)) {
89556 +           if (n >= _cap && grow(n + 1) < 0)
89557 +               return -ENOMEM;
89558 +           _x[n].name = name.substring(0, slash);
89559 +           _x[n].elementno_plus1 = n;
89560 +           _x[n].skip = 0;
89561 +           _x[n].flags = X_FAKE;
89562 +           slash = _x[n].name.find_right('/');
89563 +           n++;
89564 +       }
89565 +    }
89566
89567 +    // resort _x if necessary
89568 +    if (n != nelem)
89569 +       click_qsort(&_x[1], n - 1, sizeof(Entry), entry_compar);
89570 +
89571 +    // calculate 'skip'
89572 +    _x[0].skip = n - 1;
89573 +    for (int i = 1; i < n - 1; i++) {
89574 +       const String &name = _x[i].name;
89575 +       int length = name.length();
89576 +       int j = i + 1;
89577 +       while (j < n && _x[j].name.length() > length
89578 +              && _x[j].name[length] == '/') {
89579 +           assert(_x[j].name.substring(0, length) == name);
89580 +           _x[i].skip++;
89581 +           j++;
89582 +       }
89583 +    }
89584 +
89585 +    // calculate 'xindex'
89586 +    for (int i = 1; i < n; i++)
89587 +       _x[_x[i].elementno_plus1].xindex = i;
89588 +
89589 +    // done
89590 +    _nentries = n;
89591 +    _generation = generation;
89592 +    _router = r;
89593 +    return 0;
89594 +}
89595 +
89596 +
89597 +static int
89598 +string_compar(const void *v1, const void *v2)
89599 +{
89600 +    const String *a = reinterpret_cast<const String *>(v1);
89601 +    const String *b = reinterpret_cast<const String *>(v2);
89602 +    return String::compare(*a, *b);
89603 +}
89604 +
89605 +void
89606 +ClickIno::calculate_handler_conflicts(int parent_elementno)
89607 +{
89608 +    // configuration lock must be held!
89609 +    
89610 +    // no conflicts if no router, no children, or this element is fake
89611 +    assert(parent_elementno >= -1 && parent_elementno < _nentries - 1);
89612 +    int parent_xindex = xindex(parent_elementno);
89613 +    if ((_x[parent_xindex].flags & (X_FAKE | X_SUBDIR_CONFLICTS_CALCULATED))
89614 +       || _x[parent_xindex].skip == 0) {
89615 +       _x[parent_xindex].flags |= X_SUBDIR_CONFLICTS_CALCULATED;
89616 +       return;
89617 +    }
89618 +
89619 +    // find the relevant handler indexes and names
89620 +    Vector<int> his;
89621 +    Router::element_hindexes(Router::element(_router, parent_elementno), his);
89622 +    Vector<String> names;
89623 +    for (int* hip = his.begin(); hip < his.end(); hip++) {
89624 +       const Handler* h = Router::handler(_router, *hip);
89625 +       if (h->visible())
89626 +           names.push_back(h->name());
89627 +    }
89628 +
89629 +    // sort names
89630 +    if (names.size())
89631 +       click_qsort(&names[0], names.size(), sizeof(String), string_compar);
89632 +
89633 +    // run over the arrays, marking conflicts
89634 +    int xi = parent_xindex + 1;
89635 +    int next_xi = next_xindex(parent_elementno);
89636 +    int hi = 0;
89637 +    int name_start = (parent_xindex ? _x[parent_xindex].name.length() + 1 : 0);
89638 +    while (xi < next_xi && hi < names.size()) {
89639 +       int compare = String::compare(_x[xi].name.substring(name_start), names[hi]);
89640 +       if (compare == 0) {     // there is a conflict
89641 +           _x[xi].flags |= X_HANDLER_CONFLICT;
89642 +           xi += _x[xi].skip + 1;
89643 +           hi++;
89644 +       } else if (compare < 0)
89645 +           xi += _x[xi].skip + 1;
89646 +       else
89647 +           hi++;
89648 +    }
89649 +
89650 +    // mark subdirectory as calculated
89651 +    _x[parent_xindex].flags |= X_SUBDIR_CONFLICTS_CALCULATED;
89652 +}
89653 +
89654 +
89655 +int
89656 +ClickIno::nlink(ino_t ino)
89657 +{
89658 +    // must be called with config_lock held
89659 +    int elementno = INO_ELEMENTNO(ino);
89660 +
89661 +    // it might be a handler
89662 +    if (INO_ISHANDLER(ino)) {
89663 +       int xi = xindex(elementno);
89664 +       // one for the number directory (or global directory), plus one if the
89665 +       // name directory exists (for element handlers whose element name
89666 +       // isn't a handler conflict)
89667 +       return 1 + (xi > 0 && !(_x[xi].flags & X_HANDLER_CONFLICT));
89668 +    }
89669 +    
89670 +    // otherwise, it is a directory
89671 +    int nlink = 2;
89672 +    if (INO_DT_HAS_U(ino) && _router)
89673 +       nlink += _router->nelements();
89674 +    if (INO_DT_HAS_N(ino)) {
89675 +       int xi = xindex(elementno) + 1;
89676 +       if (!(_x[xi - 1].flags & X_SUBDIR_CONFLICTS_CALCULATED))
89677 +           calculate_handler_conflicts(elementno);
89678 +       int next_xi = next_xindex(elementno);
89679 +       while (xi < next_xi) {
89680 +           if (!(_x[xi].flags & X_HANDLER_CONFLICT) || INO_DIRTYPE(ino) == INO_DT_N)
89681 +               nlink++;
89682 +           xi += _x[xi].skip + 1;
89683 +       }
89684 +    }
89685 +    return nlink;
89686 +}
89687 +
89688 +int
89689 +ClickIno::name_search(const String &n, int first_xi, int last_xi, int name_offset) const
89690 +{
89691 +    while (first_xi <= last_xi) {
89692 +       int mid = (first_xi + last_xi) >> 1;
89693 +       int cmp = String::compare(n, _x[mid].name.substring(name_offset));
89694 +       if (cmp == 0)
89695 +           return mid;
89696 +       else if (cmp < 0)
89697 +           last_xi = mid - 1;
89698 +       else
89699 +           first_xi = mid + 1;
89700 +    }
89701 +    return -1;
89702 +}
89703 +
89704 +ino_t
89705 +ClickIno::lookup(ino_t ino, const String &component)
89706 +{
89707 +    // must be called with config_lock held
89708 +    int elementno = INO_ELEMENTNO(ino);
89709 +    int nelements = (_router ? _router->nelements() : 0);
89710 +
89711 +    // quit early on empty string
89712 +    if (!component.length())
89713 +       return 0;
89714 +
89715 +    // quick check for dot
89716 +    if (component[0] == '.' && component.length() == 1)
89717 +       return ino;
89718 +    
89719 +    // look for numbers
89720 +    if (INO_DT_HAS_U(ino) && component[0] >= '1' && component[0] <= '9') {
89721 +       int eindex = component[0] - '0';
89722 +       for (int i = 1; i < component.length(); i++)
89723 +           if (component[i] >= '0' && component[i] <= '9' && eindex < 1000000000)
89724 +               eindex = (eindex * 10) + component[i] - '0';
89725 +           else
89726 +               goto number_failed;
89727 +       eindex--;
89728 +       if (!_router || eindex >= _router->nelements())
89729 +           goto number_failed;
89730 +       return INO_MKHDIR(eindex);
89731 +    }
89732 +    
89733 +  number_failed:
89734 +    // look for handlers
89735 +    if (INO_DT_HAS_H(ino) && elementno < nelements) {
89736 +       Element *element = Router::element(_router, elementno);
89737 +       int hi = Router::hindex(element, component);
89738 +       if (hi >= 0)
89739 +           if (Router::handler(_router, hi)->visible())
89740 +               return INO_MKHANDLER(elementno, hi);
89741 +    }
89742 +
89743 +    // look for names
89744 +    if (INO_DT_HAS_N(ino)) {
89745 +       // delimit boundaries of search region
89746 +       int first_xi = xindex(elementno) + 1;
89747 +       int last_xi = next_xindex(elementno) - 1;
89748 +       int name_offset = _x[first_xi - 1].name.length() + 1;
89749 +       int found = name_search(component, first_xi, last_xi, (name_offset > 1 ? name_offset : 0));
89750 +       if (found >= 0) 
89751 +           return INO_MKHNDIR(ClickIno::elementno(found));
89752 +    }
89753 +
89754 +    // check for dot dot
89755 +    if (component[0] == '.' && component.length() == 2 && component[1] == '.') {
89756 +       int xi = xindex(elementno);
89757 +       int slash = _x[xi].name.find_right('/');
89758 +       if (slash < 0 || INO_DIRTYPE(ino) == INO_DT_H)
89759 +           return INO_GLOBALDIR;
89760 +       int found = name_search(_x[xi].name.substring(0, slash), 1, _nentries - 1, 0);
89761 +       if (found >= 0)
89762 +           return INO_MKHNDIR(ClickIno::elementno(found));
89763 +       panic("clickfs: ..");   // should never happen
89764 +    }
89765 +
89766 +    // no luck
89767 +    return 0;
89768 +}
89769 +
89770 +int
89771 +ClickIno::readdir(ino_t ino, uint32_t &f_pos, filldir_t filldir, void *thunk)
89772 +{
89773 +    // File positions:
89774 +    // 0x00000-0x0FFFF  ignored
89775 +    // 0x10000-0x1FFFF  handlers
89776 +    // 0x20000-0x2FFFF  numbers
89777 +    // 0x30000-0x3FFFF names
89778 +
89779 +#define RD_HOFF                0x10000
89780 +#define RD_UOFF                0x20000
89781 +#define RD_NOFF                0x30000
89782 +#define RD_XOFF                0x40000
89783 +#define FILLDIR(a, b, c, d, e, f)  do { if (!filldir(a, b, c, d, e, f)) return 0; } while (0)
89784 +    
89785 +    int elementno = INO_ELEMENTNO(ino);
89786 +    int nelements = (_router ? _router->nelements() : 0);
89787 +
89788 +    // handler names
89789 +    if (f_pos < RD_HOFF)
89790 +       f_pos = RD_HOFF;
89791 +    if (f_pos < RD_UOFF && INO_DT_HAS_H(ino) && elementno < nelements) {
89792 +       Element *element = Router::element(_router, elementno);
89793 +       Vector<int> his;
89794 +       Router::element_hindexes(element, his);
89795 +       while (f_pos >= RD_HOFF && f_pos < his.size() + RD_HOFF) {
89796 +           const Handler* h = Router::handler(_router, his[f_pos - RD_HOFF]);
89797 +           if (h->visible())
89798 +               FILLDIR(h->name().data(), h->name().length(), INO_MKHANDLER(elementno, his[f_pos - RD_HOFF]), DT_REG, f_pos, thunk);
89799 +           f_pos++;
89800 +       }
89801 +    }
89802 +
89803 +    // subdirectory numbers
89804 +    if (f_pos < RD_UOFF)
89805 +       f_pos = RD_UOFF;
89806 +    if (f_pos < RD_NOFF && INO_DT_HAS_U(ino) && _router) {
89807 +       char buf[10];
89808 +       int nelem = _router->nelements();
89809 +       while (f_pos >= RD_UOFF && f_pos < RD_UOFF + nelem) {
89810 +           int elem = f_pos - RD_UOFF;
89811 +           sprintf(buf, "%d", elem + 1);
89812 +           FILLDIR(buf, strlen(buf), INO_MKHDIR(elem), DT_DIR, f_pos, thunk);
89813 +           f_pos++;
89814 +       }
89815 +    }
89816 +
89817 +    // figure out edges of directory
89818 +    int xi = xindex(elementno) + 1;
89819 +    int next_xi = next_xindex(elementno);
89820 +
89821 +    // subdirectory names
89822 +    if (f_pos < RD_NOFF)
89823 +       f_pos = RD_NOFF;
89824 +    if (f_pos < RD_XOFF && INO_DT_HAS_N(ino)) {
89825 +       bool include_conflicts = (INO_DIRTYPE(ino) == INO_DT_N);
89826 +       if (!include_conflicts && !(_x[xi - 1].flags & X_SUBDIR_CONFLICTS_CALCULATED))
89827 +           calculate_handler_conflicts(elementno);
89828 +       int name_offset = _x[xi - 1].name.length();
89829 +       if (name_offset > 0)
89830 +           name_offset++;      // skip slash
89831 +       for (int j = RD_NOFF; xi < next_xi; xi += _x[xi].skip + 1, j++)
89832 +           if (f_pos == j) {
89833 +               if (!(_x[xi].flags & X_HANDLER_CONFLICT) || include_conflicts)
89834 +                   FILLDIR(_x[xi].name.data() + name_offset, _x[xi].name.length() - name_offset, INO_MKHNDIR(ClickIno::elementno(xi)), DT_DIR, f_pos, thunk);
89835 +               f_pos++;
89836 +           }
89837 +    }
89838 +    
89839 +    f_pos = RD_XOFF;
89840 +    return 1;
89841 +}
89842 +
89843 +#if INO_DEBUG
89844 +String
89845 +ClickIno::info() const
89846 +{
89847 +    StringAccum sa;
89848 +    for (int i = 0; i < _nentries; i++) {
89849 +       sa << i << ". " << _x[i].name;
89850 +       if (_x[i].name.length() >= 40)
89851 +           sa << ' ';
89852 +       else
89853 +           sa.append("                                                                                                                                       ", 40 - _x[i].name.length());
89854 +       sa << 'E' << (_x[i].elementno_plus1 - 1) << '/'
89855 +          << 'X' << _x[i].xindex << '\t'
89856 +          << "->" << (i + 1 + _x[i].skip);
89857 +       if (_x[i].flags) {
89858 +           sa << '\t';
89859 +           if (_x[i].flags & X_FAKE)
89860 +               sa << 'F';
89861 +           if (_x[i].flags & X_HANDLER_CONFLICT)
89862 +               sa << 'H';
89863 +           if (_x[i].flags & X_SUBDIR_CONFLICTS_CALCULATED)
89864 +               sa << 'S';
89865 +       }
89866 +       sa << '\n';
89867 +    }
89868 +    return sa.take_string();
89869 +}
89870 +#endif
89871 +
89872 +CLICK_ENDDECLS
89873 diff -Nurb click-1.6.0/lib/nameinfo.cc.orig click-1.6.0-27/lib/nameinfo.cc.orig
89874 --- click-1.6.0/lib/nameinfo.cc.orig    1969-12-31 19:00:00.000000000 -0500
89875 +++ click-1.6.0-27/lib/nameinfo.cc.orig 2007-07-16 19:47:50.000000000 -0400
89876 @@ -0,0 +1,536 @@
89877 +// -*- c-basic-offset: 4; related-file-name: "../include/click/nameinfo.hh" -*-
89878 +/*
89879 + * nameinfo.{cc,hh} -- stores name information
89880 + * Eddie Kohler
89881 + *
89882 + * Copyright (c) 2005 The Regents of the University of California
89883 + *
89884 + * Permission is hereby granted, free of charge, to any person obtaining a
89885 + * copy of this software and associated documentation files (the "Software"),
89886 + * to deal in the Software without restriction, subject to the conditions
89887 + * listed in the Click LICENSE file. These conditions include: you must
89888 + * preserve this copyright notice, and you cannot mention the copyright
89889 + * holders in advertising related to the Software without their permission.
89890 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
89891 + * notice is a summary of the Click LICENSE file; the license in that file is
89892 + * legally binding.
89893 + */
89894 +
89895 +#include <click/config.h>
89896 +#include <click/nameinfo.hh>
89897 +#include <click/glue.hh>
89898 +#include <click/confparse.hh>
89899 +#include <click/router.hh>
89900 +#include <click/error.hh>
89901 +CLICK_DECLS
89902 +
89903 +static NameInfo *the_name_info;
89904 +
89905 +void
89906 +NameDB::define(const String &, const void *, int)
89907 +{
89908 +}
89909 +
89910 +String
89911 +NameDB::revfind(const void *, int)
89912 +{
89913 +    return String();
89914 +}
89915 +
89916 +
89917 +bool
89918 +StaticNameDB::query(const String &name, void *value, int vsize)
89919 +{
89920 +    assert(vsize == 4);
89921 +    const char *namestr = name.c_str();
89922 +    int l = 0, r = _nentries - 1;
89923 +    while (l <= r) {
89924 +       int m = (l + r) / 2;
89925 +       int cmp = strcmp(namestr, _entries[m].name);
89926 +       if (cmp == 0) {
89927 +           *reinterpret_cast<uint32_t *>(value) = _entries[m].value;
89928 +           return true;
89929 +       } else if (cmp < 0)
89930 +           r = m - 1;
89931 +       else
89932 +           l = m + 1;
89933 +    }
89934 +    return false;
89935 +}
89936 +
89937 +String
89938 +StaticNameDB::revfind(const void *value, int vsize)
89939 +{
89940 +    assert(vsize == 4);
89941 +    uint32_t ivalue;
89942 +    memcpy(&ivalue, value, 4);
89943 +    for (int i = 0; i < _nentries; i++)
89944 +       if (_entries[i].value == ivalue)
89945 +           return String::stable_string(_entries[i].name);
89946 +    return String();
89947 +}
89948 +
89949 +
89950 +void *
89951 +DynamicNameDB::find(const String &name, bool create)
89952 +{
89953 +    if (_sorted > 20)
89954 +       sort();
89955 +
89956 +    if (_sorted == 100) {
89957 +       int l = 0, r = _names.size() - 1, m;
89958 +       while (l <= r) {
89959 +           m = (l + r) / 2;
89960 +           int cmp = String::compare(name, _names[m]);
89961 +           if (cmp == 0)
89962 +               return _values.data() + value_size() * m;
89963 +           else if (cmp < 0)
89964 +               r = m - 1;
89965 +           else
89966 +               l = m + 1;
89967 +       }
89968 +    } else {
89969 +       _sorted++;
89970 +       for (int i = 0; i < _names.size(); i++)
89971 +           if (name == _names[i])
89972 +               return _values.data() + value_size() * i;
89973 +    }
89974 +
89975 +    if (create) {
89976 +       _sorted = 0;
89977 +       _names.push_back(name);
89978 +       _values.extend(value_size());
89979 +       return _values.data() + _values.length() - value_size();
89980 +    } else
89981 +       return 0;
89982 +}
89983 +
89984 +static int
89985 +namelist_sort_compar(const void *athunk, const void *bthunk, void *othunk)
89986 +{
89987 +    const int *a = (const int *) athunk, *b = (const int *) bthunk;
89988 +    const String *o = (const String *) othunk;
89989 +    return String::compare(o[*a], o[*b]);
89990 +}
89991 +
89992 +void
89993 +DynamicNameDB::sort()
89994 +{
89995 +    if (_sorted == 100 || _names.size() == 0)
89996 +       return;
89997 +    
89998 +    Vector<int> permutation(_names.size(), 0);
89999 +    for (int i = 0; i < _names.size(); i++)
90000 +       permutation[i] = i;
90001 +    click_qsort(permutation.begin(), permutation.size(), sizeof(int), namelist_sort_compar, _names.begin());
90002 +    
90003 +    Vector<String> new_names(_names.size(), String());
90004 +    StringAccum new_values(_values.length());
90005 +    new_values.extend(_values.length());
90006 +
90007 +    String *nn = new_names.begin();
90008 +    char *nv = new_values.data();
90009 +    for (int i = 0; i < _names.size(); i++, nn++, nv += value_size()) {
90010 +       *nn = _names[permutation[i]];
90011 +       memcpy(nv, _values.data() + value_size() * permutation[i], value_size());
90012 +    }
90013 +
90014 +    _names.swap(new_names);
90015 +    _values.swap(new_values);
90016 +    _sorted = 100;
90017 +}
90018 +
90019 +bool
90020 +DynamicNameDB::query(const String& name, void* value, int vsize)
90021 +{
90022 +    assert(value_size() == vsize);
90023 +    if (void *x = find(name, false)) {
90024 +       memcpy(value, x, vsize);
90025 +       return true;
90026 +    } else
90027 +       return false;
90028 +}
90029 +
90030 +void
90031 +DynamicNameDB::define(const String& name, const void* value, int vsize)
90032 +{
90033 +    assert(value_size() == vsize);
90034 +    if (void *x = find(name, true))
90035 +       memcpy(x, value, vsize);
90036 +}
90037 +
90038 +
90039 +String
90040 +DynamicNameDB::revfind(const void *value, int vsize)
90041 +{
90042 +    const uint8_t *dx = (const uint8_t *) _values.data();
90043 +    for (int i = 0; i < _names.size(); i++, dx += vsize)
90044 +       if (memcmp(dx, value, vsize) == 0)
90045 +           return _names[i];
90046 +    return String();
90047 +}
90048 +
90049 +
90050 +NameInfo::NameInfo()
90051 +{
90052 +#ifdef CLICK_NAMEDB_CHECK
90053 +    _check_generation = (uintptr_t) this;
90054 +#endif
90055 +}
90056 +
90057 +NameInfo::~NameInfo()
90058 +{
90059 +    for (int i = 0; i < _namedbs.size(); i++)
90060 +       delete _namedbs[i];
90061 +}
90062 +
90063 +void
90064 +NameInfo::static_initialize()
90065 +{
90066 +    the_name_info = new NameInfo;
90067 +}
90068 +
90069 +void
90070 +NameInfo::static_cleanup()
90071 +{
90072 +    delete the_name_info;
90073 +}
90074 +
90075 +#if 0
90076 +String
90077 +NameInfo::NameList::rlookup(uint32_t val)
90078 +{
90079 +    assert(_value_size == 4);
90080 +    const uint32_t *x = (const uint32_t *) _values.value_size();
90081 +    for (int i = 0; i < _names.size(); i++)
90082 +       if (x[i] == val)
90083 +           return _names[i];
90084 +    return String();
90085 +}
90086 +#endif
90087 +
90088 +NameDB *
90089 +NameInfo::namedb(uint32_t type, int vsize, const String &prefix, NameDB *install)
90090 +{
90091 +    NameDB *db;
90092 +
90093 +    // binary-search types
90094 +    int l = 0, r = _namedb_roots.size() - 1, m;
90095 +    while (l <= r) {
90096 +       m = (l + r) / 2;
90097 +       if (type == _namedb_roots[m]->_type)
90098 +           goto found_root;
90099 +       else if (type < _namedb_roots[m]->_type)
90100 +           r = m - 1;
90101 +       else
90102 +           l = m + 1;
90103 +    }
90104 +
90105 +    // type not found
90106 +    if (install == install_dynamic_sentinel())
90107 +       install = new DynamicNameDB(type, prefix, vsize);
90108 +    if (install) {
90109 +       assert(!install->_installed);
90110 +       install->_installed = this;
90111 +       _namedbs.push_back(install);
90112 +       _namedb_roots.insert(_namedb_roots.begin() + l, install);
90113 +       return install;
90114 +    } else
90115 +       return 0;
90116 +
90117 +  found_root:
90118 +    // walk tree to find prefix match; keep track of closest prefix
90119 +    db = _namedb_roots[m];
90120 +    NameDB *closest = 0;
90121 +    while (db) {
90122 +       if (db->_prefix.length() <= prefix.length()
90123 +           && memcmp(db->_prefix.data(), prefix.data(), db->_prefix.length()) == 0) {
90124 +           closest = db;
90125 +           db = db->_prefix_child;
90126 +       } else
90127 +           db = db->_prefix_sibling;
90128 +    }
90129 +
90130 +    // prefix found?
90131 +    if (closest && closest->_prefix == prefix) {
90132 +       assert(vsize < 0 || closest->_value_size == vsize);
90133 +       return closest;
90134 +    }
90135 +    
90136 +    // prefix not found
90137 +    if (install == install_dynamic_sentinel())
90138 +       install = new DynamicNameDB(type, prefix, vsize);
90139 +    if (install) {
90140 +       assert(!install->_installed);
90141 +       install->_installed = this;
90142 +       _namedbs.push_back(install);
90143 +       install->_prefix_parent = closest;
90144 +       NameDB **pp = (closest ? &closest->_prefix_child : &_namedb_roots[m]);
90145 +       install->_prefix_sibling = *pp;
90146 +       *pp = install;
90147 +       // adopt nodes that should be our children
90148 +       pp = &install->_prefix_sibling;
90149 +       while (*pp) {
90150 +           if (prefix.length() < (*pp)->_prefix.length()
90151 +               && memcmp((*pp)->_prefix.data(), prefix.data(), prefix.length()) == 0) {
90152 +               NameDB *new_child = *pp;
90153 +               *pp = new_child->_prefix_sibling;
90154 +               new_child->_prefix_parent = install;
90155 +               new_child->_prefix_sibling = install->_prefix_child;
90156 +               install->_prefix_child = new_child;
90157 +           } else
90158 +               pp = &(*pp)->_prefix_sibling;
90159 +       }
90160 +       return install;
90161 +    } else {
90162 +       assert(!closest || vsize < 0 || closest->_value_size == vsize);
90163 +       return closest;
90164 +    }
90165 +}
90166 +
90167 +NameDB *
90168 +NameInfo::getdb(uint32_t type, const Element *e, int vsize, bool create)
90169 +{
90170 +    if (e) {
90171 +       if (NameInfo *ni = (create ? e->router()->force_name_info() : e->router()->name_info())) {
90172 +           NameDB *install = (create ? ni->install_dynamic_sentinel() : 0);
90173 +           String ename = e->name();
90174 +           int last_slash = ename.find_right('/');
90175 +           if (last_slash >= 0)
90176 +               return ni->namedb(type, vsize, ename.substring(0, last_slash + 1), install);
90177 +           else
90178 +               return ni->namedb(type, vsize, String(), install);
90179 +       }
90180 +    }
90181 +
90182 +    NameDB *install = (create ? the_name_info->install_dynamic_sentinel() : 0);
90183 +    return the_name_info->namedb(type, vsize, String(), install);
90184 +}
90185 +
90186 +void
90187 +NameInfo::installdb(NameDB *db, const Element *prefix)
90188 +{
90189 +    NameInfo *ni = (prefix ? prefix->router()->force_name_info() : the_name_info);
90190 +    NameDB *curdb = ni->namedb(db->type(), db->value_size(), db->prefix(), db);
90191 +    if (curdb != db) {
90192 +       assert(!curdb->_prefix_child || curdb->_prefix_child->prefix().length() > db->prefix().length());
90193 +       db->_installed = ni;
90194 +       db->_prefix_child = curdb->_prefix_child;
90195 +       db->_prefix_parent = curdb;
90196 +       curdb->_prefix_child = db;
90197 +       for (NameDB *child = db->_prefix_child; child; child = child->_prefix_sibling)
90198 +           child->_prefix_parent = db;
90199 +       ni->_namedbs.push_back(db);
90200 +    }
90201 +#if CLICK_NAMEDB_CHECK
90202 +    ni->check(ErrorHandler::default_handler());
90203 +#endif
90204 +}
90205 +
90206 +void
90207 +NameInfo::removedb(NameDB *db)
90208 +{
90209 +    if (!db->_installed)
90210 +       return;
90211 +    
90212 +    // This is an uncommon operation, so don't worry about its performance.
90213 +    NameInfo *ni = db->_installed;
90214 +    int m;
90215 +    for (m = 0; m < ni->_namedb_roots.size(); m++)
90216 +       if (ni->_namedb_roots[m]->_type == db->_type)
90217 +           break;
90218 +
90219 +    NameDB **pp = (db->_prefix_parent ? &db->_prefix_parent->_prefix_child
90220 +                  : &ni->_namedb_roots[m]);
90221 +    // Remove from sibling list
90222 +    for (NameDB *sib = *pp; sib != db; sib = sib->_prefix_sibling)
90223 +       /* do nothing */;
90224 +    // Patch children in
90225 +    *pp = db->_prefix_sibling;
90226 +    while (NameDB *cdb = db->_prefix_child) {
90227 +       db->_prefix_child = cdb->_prefix_sibling;
90228 +       cdb->_prefix_parent = db->_prefix_parent;
90229 +       cdb->_prefix_sibling = *pp;
90230 +       *pp = cdb;
90231 +    }
90232 +    // Maybe remove root
90233 +    if (!*pp && !db->_prefix_parent)
90234 +       ni->_namedb_roots.erase(pp);
90235 +    // Remove from _namedbs
90236 +    for (int i = 0; i < ni->_namedbs.size(); i++)
90237 +       if (ni->_namedbs[i] == db) {
90238 +           ni->_namedbs[i] = ni->_namedbs.back();
90239 +           ni->_namedbs.pop_back();
90240 +           break;
90241 +       }
90242 +    // Mark as not installed
90243 +    db->_installed = 0;
90244 +
90245 +#if CLICK_NAMEDB_CHECK
90246 +    ni->check(ErrorHandler::default_handler());
90247 +#endif
90248 +}
90249 +
90250 +bool
90251 +NameInfo::query(uint32_t type, const Element *e, const String &name, void *value, int vsize)
90252 +{
90253 +    while (1) {
90254 +       NameDB *db = getdb(type, e, vsize, false);
90255 +       while (db) {
90256 +           if (db->query(name, value, vsize))
90257 +               return true;
90258 +           db = db->prefix_parent();
90259 +       }
90260 +       if (!e)
90261 +           return false;
90262 +       e = 0;
90263 +    }
90264 +}
90265 +
90266 +bool
90267 +NameInfo::query_int(uint32_t type, const Element *e, const String &name, int32_t *value)
90268 +{
90269 +    return query(type, e, name, value, 4) || cp_integer(name, value);
90270 +}
90271 +
90272 +bool
90273 +NameInfo::query_int(uint32_t type, const Element *e, const String &name, uint32_t *value)
90274 +{
90275 +    return query(type, e, name, value, 4) || cp_integer(name, value);
90276 +}
90277 +
90278 +String
90279 +NameInfo::revquery(uint32_t type, const Element *e, const void *value, int vsize)
90280 +{
90281 +    while (1) {
90282 +       NameDB *db = getdb(type, e, vsize, false);
90283 +       while (db) {
90284 +           if (String s = db->revfind(value, vsize))
90285 +               return s;
90286 +           db = db->prefix_parent();
90287 +       }
90288 +       if (!e)
90289 +           return String();
90290 +       e = 0;
90291 +    }
90292 +}
90293 +
90294 +
90295 +#ifdef CLICK_NAMEDB_CHECK
90296 +void
90297 +NameInfo::check(ErrorHandler *errh)
90298 +{
90299 +    StringAccum sa;
90300 +    sa << "NameInfo[" << (void*) this << "]: ";
90301 +    PrefixErrorHandler perrh(errh, sa.take_string());
90302 +    _check_generation++;
90303 +    for (int i = 0; i < _namedb_roots.size(); i++) {
90304 +       NameDB *db = _namedb_roots[i];
90305 +       if (i < _namedb_roots.size() - 1
90306 +           && db->type() >= _namedb_roots[i+1]->type())
90307 +           perrh.error("db roots out of order at %i (%x/%x)", i, (unsigned) db->type(), (unsigned) _namedb_roots[i+1]->type());
90308 +       checkdb(db, 0, &perrh);
90309 +    }
90310 +    for (int i = 0; i < _namedbs.size(); i++)
90311 +       if (_namedbs[i]->_check_generation != _check_generation)
90312 +           perrh.error("DB[%x %s %p] in namedbs, but inaccessible", _namedbs[i]->_type, _namedbs[i]->_prefix.c_str(), _namedbs[i]);
90313 +}
90314 +
90315 +void
90316 +NameInfo::checkdb(NameDB *db, NameDB *parent, ErrorHandler *errh)
90317 +{
90318 +    StringAccum sa;
90319 +    sa.snprintf(20, "DB[%x ", db->_type);
90320 +    if (db->_prefix)
90321 +       sa << db->_prefix << ' ';
90322 +    sa << (void*) db << "]: ";
90323 +    PrefixErrorHandler perrh(errh, sa.take_string());
90324 +
90325 +    // check self
90326 +    if (!db->_installed)
90327 +       perrh.error("not installed");
90328 +    else if (db->_installed != this)
90329 +       perrh.error("installed in %p, not this NameInfo", db->_installed);
90330 +    if (db->_check_generation == _check_generation)
90331 +       perrh.error("installed in more than one place");
90332 +    db->_check_generation = _check_generation;
90333 +    for (int i = 0; i < _namedbs.size(); i++)
90334 +       if (_namedbs[i] == db)
90335 +           goto found_in_namedbs;
90336 +    perrh.error("not in _namedbs");
90337 +  found_in_namedbs:
90338 +    
90339 +    // check parent relationships
90340 +    if (db->_prefix_parent != parent)
90341 +       perrh.error("bad parent (%p/%p)", db->_prefix_parent, parent);
90342 +    else if (parent && (db->_prefix.length() < parent->_prefix.length()
90343 +                       || db->_prefix.substring(0, parent->_prefix.length()) != parent->_prefix))
90344 +       perrh.error("parent prefix (%s) disagrees with prefix", parent->_prefix.c_str());
90345 +    if (db->_prefix && db->_prefix.back() != '/')
90346 +       perrh.error("prefix doesn't end with '/'");
90347 +    if (parent && parent->_type != db->_type)
90348 +       perrh.error("parent DB[%x %s %p] has different type", parent->_type, parent->_prefix.c_str(), parent);
90349 +    if (parent && parent->_value_size != db->_value_size)
90350 +       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);
90351 +    
90352 +    // check sibling relationships
90353 +    for (NameDB* sib = db->_prefix_sibling; sib; sib = sib->_prefix_sibling) {
90354 +       int l1 = db->_prefix.length(), l2 = sib->_prefix.length();
90355 +       if (l1 < l2 ? sib->_prefix.substring(0, l1) == db->_prefix
90356 +           : db->_prefix.substring(0, l2) == sib->_prefix)
90357 +           perrh.error("sibling DB[%x %s %p] should have parent/child relationship", sib->_type, sib->_prefix.c_str(), sib);
90358 +       if (sib->_type != db->_type)
90359 +           perrh.error("sibling DB[%x %s %p] has different type", sib->_type, sib->_prefix.c_str(), sib);
90360 +       if (sib->_value_size != db->_value_size)
90361 +           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);
90362 +    }
90363 +    
90364 +    // check db itself
90365 +    db->check(&perrh);
90366 +
90367 +    // recurse down and to the side
90368 +    perrh.message("OK");
90369 +    if (db->_prefix_child) {
90370 +       PrefixErrorHandler perrh2(errh, "  ");
90371 +       checkdb(db->_prefix_child, db, &perrh2);
90372 +    }
90373 +    if (db->_prefix_sibling)
90374 +       checkdb(db->_prefix_sibling, parent, errh);
90375 +}
90376 +
90377 +void
90378 +NameDB::check(ErrorHandler *)
90379 +{
90380 +}
90381 +
90382 +void
90383 +StaticNameDB::check(ErrorHandler *errh)
90384 +{
90385 +    for (int i = 0; i < _nentries - 1; i++)
90386 +       if (strcmp(_entries[i].name, _entries[i+1].name) >= 0)
90387 +           errh->error("entries %d/%d (%s/%s) out of order", i, i+1, _entries[i].name, _entries[i+1].name);
90388 +}
90389 +
90390 +void
90391 +DynamicNameDB::check(ErrorHandler *errh)
90392 +{
90393 +    if (_sorted == 100)
90394 +       for (int i = 0; i < _names.size() - 1; i++)
90395 +           if (String::compare(_names[i], _names[i+1]) >=0)
90396 +               errh->error("entries %d/%d (%s/%s) out of order", i, i+1, _names[i].c_str(), _names[i+1].c_str());
90397 +    if (_values.length() != _names.size() * value_size())
90398 +       errh->error("odd value length %d (should be %d)", _values.length(), _names.size() * value_size());
90399 +}
90400 +
90401 +void
90402 +NameInfo::check(const Element *e, ErrorHandler *errh)
90403 +{
90404 +    if (e)
90405 +       if (NameInfo *ni = e->router()->name_info())
90406 +           ni->check(errh);
90407 +    the_name_info->check(errh);
90408 +}
90409 +#endif
90410 +
90411 +
90412 +CLICK_ENDDECLS
90413 diff -Nurb click-1.6.0/lib/straccum.cc.orig click-1.6.0-27/lib/straccum.cc.orig
90414 --- click-1.6.0/lib/straccum.cc.orig    1969-12-31 19:00:00.000000000 -0500
90415 +++ click-1.6.0-27/lib/straccum.cc.orig 2007-08-28 01:08:36.000000000 -0400
90416 @@ -0,0 +1,302 @@
90417 +// -*- c-basic-offset: 4; related-file-name: "../include/click/straccum.hh" -*-
90418 +/*
90419 + * straccum.{cc,hh} -- build up strings with operator<<
90420 + * Eddie Kohler
90421 + *
90422 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
90423 + * Copyright (c) 2007 Regents of the University of California
90424 + *
90425 + * Permission is hereby granted, free of charge, to any person obtaining a
90426 + * copy of this software and associated documentation files (the "Software"),
90427 + * to deal in the Software without restriction, subject to the conditions
90428 + * listed in the Click LICENSE file. These conditions include: you must
90429 + * preserve this copyright notice, and you cannot mention the copyright
90430 + * holders in advertising related to the Software without their permission.
90431 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
90432 + * notice is a summary of the Click LICENSE file; the license in that file is
90433 + * legally binding.
90434 + */
90435 +
90436 +#include <click/config.h>
90437 +#include <click/straccum.hh>
90438 +#include <click/string.hh>
90439 +#include <click/glue.hh>
90440 +#include <click/confparse.hh>
90441 +#include <click/timestamp.hh>
90442 +#include <stdarg.h>
90443 +CLICK_DECLS
90444 +
90445 +/** @class StringAccum
90446 + * @brief Efficiently build up Strings from pieces.
90447 + *
90448 + * Like the String class, StringAccum represents a string of characters.
90449 + * However, unlike a String, a StringAccum is inherently mutable, and
90450 + * efficiently supports building up a large string from many smaller pieces.
90451 + *
90452 + * StringAccum objects support operator<<() operations for most fundamental
90453 + * data types.  A StringAccum is generally built up by operator<<(), and then
90454 + * turned into a String by the take_string() method.  Extracting the String
90455 + * from a StringAccum does no memory allocation or copying; the StringAccum's
90456 + * memory is donated to the String.
90457 + *
90458 + * <h3>Out-of-memory StringAccums</h3>
90459 + *
90460 + * When there is not enough memory to add requested characters to a
90461 + * StringAccum object, the object becomes a special "out-of-memory" string.
90462 + * Out-of-memory strings are contagious: the result of any concatenation
90463 + * operation involving an out-of-memory string is another out-of-memory
90464 + * string.  Calling take_string() on an out-of-memory StringAccum returns an
90465 + * out-of-memory String.
90466 + *
90467 + * Out-of-memory StringAccum objects nominally have zero characters.
90468 + */
90469 +    
90470 +
90471 +void
90472 +StringAccum::make_out_of_memory()
90473 +{
90474 +    assert(_cap >= 0);
90475 +    CLICK_LFREE(_s, _cap);
90476 +    _s = reinterpret_cast<unsigned char *>(const_cast<char *>(String::out_of_memory_data()));
90477 +    _cap = -1;
90478 +    _len = 0;
90479 +}
90480 +
90481 +bool
90482 +StringAccum::grow(int want)
90483 +{
90484 +    // can't append to out-of-memory strings
90485 +    if (_cap < 0)
90486 +       return false;
90487 +  
90488 +    int ncap = (_cap ? _cap * 2 : 128);
90489 +    while (ncap <= want)
90490 +       ncap *= 2;
90491 +  
90492 +    unsigned char *n = (unsigned char *) CLICK_LALLOC(ncap);
90493 +    if (!n) {
90494 +       make_out_of_memory();
90495 +       return false;
90496 +    }
90497 +  
90498 +    if (_s)
90499 +       memcpy(n, _s, _cap);
90500 +    CLICK_LFREE(_s, _cap);
90501 +    _s = n;
90502 +    _cap = ncap;
90503 +    return true;
90504 +}
90505 +
90506 +/** @brief Append @a len copies of character @a c to this StringAccum. */
90507 +void
90508 +StringAccum::append_fill(int c, int len)
90509 +{
90510 +    if (char *s = extend(len))
90511 +       memset(s, c, len);
90512 +}
90513 +
90514 +/** @brief Null-terminate this StringAccum and return its data.
90515 +
90516 +    Note that the null character does not contribute to the StringAccum's
90517 +    length(), and later append() and similar operations can overwrite it.  If
90518 +    appending the null character fails, the StringAccum becomes out-of-memory
90519 +    and the returned value is a null string. */
90520 +const char *
90521 +StringAccum::c_str()
90522 +{
90523 +    if (_len < _cap || grow(_len))
90524 +       _s[_len] = '\0';
90525 +    return reinterpret_cast<char *>(_s);
90526 +}
90527 +
90528 +/** @brief Return a String object with this StringAccum's contents.
90529 +
90530 +    This operation donates the StringAccum's memory to the returned String.
90531 +    After a call to take_string(), the StringAccum object becomes empty, and
90532 +    any future append() operations may cause memory allocations.  If the
90533 +    StringAccum is out-of-memory, the returned String is also out-of-memory.
90534 +    However, take_string() resets the StringAccum's out-of-memory state. */
90535 +String
90536 +StringAccum::take_string()
90537 +{
90538 +    int len = length();
90539 +    int cap = _cap;
90540 +    char *str = reinterpret_cast<char *>(_s);
90541 +    if (len > 0) {
90542 +       _s = 0;
90543 +       _len = _cap = 0;
90544 +       return String::claim_string(str, len, cap);
90545 +    } else if (!out_of_memory())
90546 +       return String();
90547 +    else {
90548 +       clear();
90549 +       return String::out_of_memory_string();
90550 +    }
90551 +}
90552 +
90553 +/** @brief Swaps this StringAccum's contents with @a o. */
90554 +void
90555 +StringAccum::swap(StringAccum &o)
90556 +{
90557 +    unsigned char *os = o._s;
90558 +    int olen = o._len, ocap = o._cap;
90559 +    o._s = _s;
90560 +    o._len = _len, o._cap = _cap;
90561 +    _s = os;
90562 +    _len = olen, _cap = ocap;
90563 +}
90564 +
90565 +/** @relates StringAccum
90566 +    @brief Append decimal representation of @a i to @a sa.
90567 +    @return @a sa */
90568 +StringAccum &
90569 +operator<<(StringAccum &sa, long i)
90570 +{
90571 +    if (char *x = sa.reserve(24)) {
90572 +       int len = sprintf(x, "%ld", i);
90573 +       sa.adjust_length(len);
90574 +    }
90575 +    return sa;
90576 +}
90577 +
90578 +/** @relates StringAccum
90579 +    @brief Append decimal representation of @a u to @a sa.
90580 +    @return @a sa */
90581 +StringAccum &
90582 +operator<<(StringAccum &sa, unsigned long u)
90583 +{
90584 +    if (char *x = sa.reserve(24)) {
90585 +       int len = sprintf(x, "%lu", u);
90586 +       sa.adjust_length(len);
90587 +    }
90588 +    return sa;
90589 +}
90590 +
90591 +/** @brief Append representation of @a num to this StringAccum.
90592 +    @param  num        number to append
90593 +    @param  base       numeric base: must be 8, 10, or 16
90594 +    @param  uppercase  true means use uppercase letters in base 16 */
90595 +void
90596 +StringAccum::append_numeric(String::uint_large_t num, int base, bool uppercase)
90597 +{
90598 +    // Unparse a large integer. Linux kernel sprintf can't handle %lld, so we
90599 +    // provide our own function, and use it everywhere to catch bugs.
90600 +  
90601 +    char buf[256];
90602 +    char *trav = buf + 256;
90603 +
90604 +    assert(base == 10 || base == 16 || base == 8);
90605 +    if (base != 10) {
90606 +       const char *digits = (uppercase ? "0123456789ABCDEF" : "0123456789abcdef");
90607 +       while (num > 0) {
90608 +           *--trav = digits[num & (base - 1)];
90609 +           num >>= (base >> 3) + 2;
90610 +       }
90611 +    }
90612 +  
90613 +    while (num > 0) {
90614 +       // k = Approx[num/10] -- know that k <= num/10
90615 +       String::uint_large_t k = (num >> 4) + (num >> 5) + (num >> 8)
90616 +           + (num >> 9) + (num >> 12) + (num >> 13) + (num >> 16)
90617 +           + (num >> 17);
90618 +       String::uint_large_t m;
90619 +
90620 +       // increase k until it exactly equals floor(num/10). on exit, m is
90621 +       // the remainder: m < 10 and num == 10*k + m.
90622 +       while (1) {
90623 +           // d = 10*k
90624 +           String::uint_large_t d = (k << 3) + (k << 1);
90625 +           m = num - d;
90626 +           if (m < 10)
90627 +               break;
90628 +       
90629 +           // delta = Approx[m/10] -- know that delta <= m/10
90630 +           String::uint_large_t delta = (m >> 4) + (m >> 5) + (m >> 8) + (m >> 9);
90631 +           if (m >= 0x1000)
90632 +               delta += (m >> 12) + (m >> 13) + (m >> 16) + (m >> 17);
90633 +       
90634 +           // delta might have underflowed: add at least 1
90635 +           k += (delta ? delta : 1);
90636 +       }
90637 +      
90638 +       *--trav = '0' + (unsigned)m;
90639 +       num = k;
90640 +    }
90641 +  
90642 +    // make sure at least one 0 is written
90643 +    if (trav == buf + 256)
90644 +       *--trav = '0';
90645 +
90646 +    append(trav, buf + 256);
90647 +}
90648 +
90649 +/** @overload */
90650 +void
90651 +StringAccum::append_numeric(String::int_large_t num, int base, bool uppercase)
90652 +{
90653 +    if (num < 0) {
90654 +       *this << '-';
90655 +       append_numeric(static_cast<String::uint_large_t>(-num), base, uppercase);
90656 +    } else
90657 +       append_numeric(static_cast<String::uint_large_t>(num), base, uppercase);
90658 +}
90659 +
90660 +#if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
90661 +/** @relates StringAccum
90662 +    @brief Append decimal representation of @a d to @a sa.
90663 +    @return @a sa */
90664 +StringAccum &
90665 +operator<<(StringAccum &sa, double d)
90666 +{
90667 +    if (char *x = sa.reserve(256)) {
90668 +       int len = sprintf(x, "%.12g", d);
90669 +       sa.adjust_length(len);
90670 +    }
90671 +    return sa;
90672 +}
90673 +#endif
90674 +
90675 +/** @relates StringAccum
90676 +    @brief Append hexadecimal representation @a ptr's value to @a sa.
90677 +    @return @a sa */
90678 +StringAccum &
90679 +operator<<(StringAccum &sa, void *ptr)
90680 +{
90681 +    if (char *x = sa.reserve(30)) {
90682 +       int len = sprintf(x, "%p", ptr);
90683 +       sa.adjust_length(len);
90684 +    }
90685 +    return sa;
90686 +}
90687 +
90688 +/** @brief Append result of snprintf() to this StringAccum.
90689 +    @param  n       maximum number of characters to print
90690 +    @param  format  format argument to snprintf()
90691 +
90692 +    The terminating null character is not appended to the string.
90693 +    
90694 +    @note The safe vsnprintf() variant is called if it exists.  It does in
90695 +    the Linux kernel, and on modern Unix variants.  However,
90696 +    if it does not exist on your machine, then this function is actually
90697 +    unsafe, and you should make sure that the printf() invocation represented
90698 +    by your arguments will never write more than @a n characters, not
90699 +    including the terminating null. */
90700 +StringAccum &
90701 +StringAccum::snprintf(int n, const char *format, ...)
90702 +{
90703 +    va_list val;
90704 +    va_start(val, format);
90705 +    if (char *x = reserve(n + 1)) {
90706 +#if CLICK_LINUXMODULE || HAVE_VSNPRINTF
90707 +       int len = vsnprintf(x, n + 1, format, val);
90708 +#else
90709 +       int len = vsprintf(x, format, val);
90710 +       assert(len <= n);
90711 +#endif
90712 +       adjust_length(len);
90713 +    }
90714 +    va_end(val);
90715 +    return *this;
90716 +}
90717 +
90718 +CLICK_ENDDECLS
90719 diff -Nurb click-1.6.0/lib/string.cc.orig click-1.6.0-27/lib/string.cc.orig
90720 --- click-1.6.0/lib/string.cc.orig      1969-12-31 19:00:00.000000000 -0500
90721 +++ click-1.6.0-27/lib/string.cc.orig   2007-09-09 23:45:30.000000000 -0400
90722 @@ -0,0 +1,836 @@
90723 +// -*- c-basic-offset: 4; related-file-name: "../include/click/string.hh" -*-
90724 +/*
90725 + * string.{cc,hh} -- a String class with shared substrings
90726 + * Eddie Kohler
90727 + *
90728 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
90729 + * Copyright (c) 2004-2007 Regents of the University of California
90730 + *
90731 + * Permission is hereby granted, free of charge, to any person obtaining a
90732 + * copy of this software and associated documentation files (the "Software"),
90733 + * to deal in the Software without restriction, subject to the conditions
90734 + * listed in the Click LICENSE file. These conditions include: you must
90735 + * preserve this copyright notice, and you cannot mention the copyright
90736 + * holders in advertising related to the Software without their permission.
90737 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
90738 + * notice is a summary of the Click LICENSE file; the license in that file is
90739 + * legally binding.
90740 + */
90741 +
90742 +#include <click/config.h>
90743 +#include <click/string.hh>
90744 +#include <click/straccum.hh>
90745 +#include <click/glue.hh>
90746 +CLICK_DECLS
90747 +
90748 +/** @file string.hh
90749 + * @brief Click's String class.
90750 + */
90751 +
90752 +/** @class String
90753 + * @brief A string of characters.
90754 + *
90755 + * The String class represents a string of characters.  Strings may be
90756 + * constructed from C strings, characters, numbers, and so forth.  They may
90757 + * also be added together.  The underlying character arrays are dynamically
90758 + * allocated; String operations allocate and free memory as needed.  A String
90759 + * and its substrings generally share memory.  Accessing a character by index
90760 + * takes O(1) time; so does creating a substring.
90761 + *
90762 + * <h3>Initialization</h3>
90763 + *
90764 + * The String implementation must be explicitly initialized before use; see
90765 + * static_initialize().  Explicit initialization is used because static
90766 + * constructors and other automatic initialization tricks don't work in the
90767 + * kernel.  However, at user level, you can declare a String::Initializer
90768 + * object to initialize the library.
90769 + *
90770 + * <h3>Out-of-memory strings</h3>
90771 + *
90772 + * When there is not enough memory to create a particular string, a special
90773 + * "out-of-memory" string is returned instead.  Out-of-memory strings are
90774 + * contagious: the result of any concatenation operation involving an
90775 + * out-of-memory string is another out-of-memory string.  Thus, the final
90776 + * result of a series of String operations will be an out-of-memory string,
90777 + * even if the out-of-memory condition occurs in the middle.
90778 + *
90779 + * Out-of-memory strings have zero characters, but they aren't equal to other
90780 + * empty strings.  If @a s is a normal String (even an empty string), and @a
90781 + * oom is an out-of-memory string, then @a s @< @a oom.
90782 + *
90783 + * All out-of-memory strings are equal and share the same data(), which is
90784 + * different from the data() of any other string.  See
90785 + * String::out_of_memory_data().  The String::out_of_memory_string() function
90786 + * returns an out-of-memory string.
90787 + */
90788 +
90789 +String::Memo *String::null_memo = 0;
90790 +String::Memo *String::permanent_memo = 0;
90791 +String::Memo *String::oom_memo = 0;
90792 +String *String::null_string_p = 0;
90793 +String *String::oom_string_p = 0;
90794 +const char String::oom_string_data = 0;
90795 +
90796 +/** @cond never */
90797 +inline
90798 +String::Memo::Memo()
90799 +  : _capacity(0), _real_data("")
90800 +{
90801 +    _refcount = 0;
90802 +    _dirty = 0;
90803 +}
90804 +
90805 +inline
90806 +String::Memo::Memo(char *data, int dirty, int capacity)
90807 +  : _capacity(capacity), _real_data(data)
90808 +{
90809 +    _refcount = 0;
90810 +    _dirty = dirty;
90811 +}
90812 +
90813 +String::Memo::Memo(int dirty, int capacity)
90814 +  : _capacity(capacity), _real_data((char *) CLICK_LALLOC(capacity))
90815 +{
90816 +    assert(capacity >= dirty);
90817 +    _refcount = 1;
90818 +    _dirty = dirty;
90819 +}
90820 +
90821 +String::Memo::~Memo()
90822 +{
90823 +  if (_capacity) {
90824 +    assert(_capacity >= _dirty);
90825 +    CLICK_LFREE(_real_data, _capacity);
90826 +  }
90827 +}
90828 +/** @endcond never */
90829 +
90830 +
90831 +/** @brief Create a String containing the ASCII base-10 representation of @a i.
90832 + */
90833 +String::String(int i)
90834 +{
90835 +  char buf[128];
90836 +  sprintf(buf, "%d", i);
90837 +  assign(buf, -1);
90838 +}
90839 +
90840 +/** @brief Create a String containing the ASCII base-10 representation of @a u.
90841 + */
90842 +String::String(unsigned u)
90843 +{
90844 +  char buf[128];
90845 +  sprintf(buf, "%u", u);
90846 +  assign(buf, -1);
90847 +}
90848 +
90849 +/** @brief Create a String containing the ASCII base-10 representation of @a i.
90850 + */
90851 +String::String(long i)
90852 +{
90853 +  char buf[128];
90854 +  sprintf(buf, "%ld", i);
90855 +  assign(buf, -1);
90856 +}
90857 +
90858 +/** @brief Create a String containing the ASCII base-10 representation of @a u.
90859 + */
90860 +String::String(unsigned long u)
90861 +{
90862 +  char buf[128];
90863 +  sprintf(buf, "%lu", u);
90864 +  assign(buf, -1);
90865 +}
90866 +
90867 +// Implemented a [u]int64_t converter in StringAccum
90868 +// (use the code even at user level to hunt out bugs)
90869 +
90870 +#if HAVE_LONG_LONG
90871 +/** @brief Create a String containing the ASCII base-10 representation of @a q.
90872 + */
90873 +String::String(long long q)
90874 +{
90875 +  StringAccum sa;
90876 +  sa << q;
90877 +  assign(sa.data(), sa.length());
90878 +}
90879 +
90880 +/** @brief Create a String containing the ASCII base-10 representation of @a q.
90881 + */
90882 +String::String(unsigned long long q)
90883 +{
90884 +  StringAccum sa;
90885 +  sa << q;
90886 +  assign(sa.data(), sa.length());
90887 +}
90888 +#endif
90889 +
90890 +#if HAVE_INT64_TYPES && !HAVE_INT64_IS_LONG && !HAVE_INT64_IS_LONG_LONG
90891 +/** @brief Create a String containing the ASCII base-10 representation of @a q.
90892 + */
90893 +String::String(int64_t q)
90894 +{
90895 +  StringAccum sa;
90896 +  sa << q;
90897 +  assign(sa.data(), sa.length());
90898 +}
90899 +
90900 +/** @brief Create a String containing the ASCII base-10 representation of @a q.
90901 + */
90902 +String::String(uint64_t q)
90903 +{
90904 +  StringAccum sa;
90905 +  sa << q;
90906 +  assign(sa.data(), sa.length());
90907 +}
90908 +#endif
90909 +
90910 +#ifdef CLICK_USERLEVEL
90911 +
90912 +/** @brief Create a String containing the ASCII base-10 representation of @a d.
90913 + * @note This function is only available at user level.
90914 + */
90915 +String::String(double d)
90916 +{
90917 +  char buf[128];
90918 +  int len = sprintf(buf, "%.12g", d);
90919 +  assign(buf, len);
90920 +}
90921 +
90922 +#endif
90923 +
90924 +String
90925 +String::claim_string(char *str, int len, int capacity)
90926 +{
90927 +  assert(str && len > 0 && capacity >= len);
90928 +  Memo *new_memo = new Memo(str, len, capacity);
90929 +  if (new_memo)
90930 +    return String(str, len, new_memo);
90931 +  else
90932 +    return String(&oom_string_data, 0, oom_memo);
90933 +}
90934 +
90935 +/** @brief Return a String that directly references the first @a len
90936 + * characters of @a s.
90937 + *
90938 + * This function is suitable for static constant strings whose data is known
90939 + * to stay around forever, such as C string constants.  If @a len @< 0, treats
90940 + * @a s as a null-terminated C string.
90941 + */
90942 +String
90943 +String::stable_string(const char *s, int len)
90944 +{
90945 +  if (len < 0)
90946 +    len = (s ? strlen(s) : 0);
90947 +  return String(s, len, permanent_memo);
90948 +}
90949 +
90950 +/** @brief Create and return a String containing @a len random characters. */
90951 +String
90952 +String::garbage_string(int len)
90953 +{
90954 +  String s;
90955 +  s.append_garbage(len);
90956 +  return s;
90957 +}
90958 +
90959 +/** @brief Create and return a String containing an ASCII representation of @a num.
90960 + *  @param  num        Number.
90961 + *  @param  base       Base; must be 8, 10, or 16.  Defaults to 10.
90962 + *  @param  uppercase  If true, then use uppercase letters in base 16.
90963 + */
90964 +String
90965 +String::numeric_string(int_large_t num, int base, bool uppercase)
90966 +{
90967 +    StringAccum sa;
90968 +    sa.append_numeric(num, base, uppercase);
90969 +    return sa.take_string();
90970 +}
90971 +
90972 +/** @brief Create and return a String containing an ASCII representation of @a num.
90973 + *  @param  num        Number.
90974 + *  @param  base       Base; must be 8, 10, or 16.  Defaults to 10.
90975 + *  @param  uppercase  If true, then use uppercase letters in base 16.
90976 + */
90977 +String
90978 +String::numeric_string(uint_large_t num, int base, bool uppercase)
90979 +{
90980 +    StringAccum sa;
90981 +    sa.append_numeric(num, base, uppercase);
90982 +    return sa.take_string();
90983 +}
90984 +
90985 +void
90986 +String::make_out_of_memory()
90987 +{
90988 +  if (_memo)
90989 +    deref();
90990 +  _memo = oom_memo;
90991 +  _memo->_refcount++;
90992 +  _data = _memo->_real_data;
90993 +  _length = 0;
90994 +}
90995 +
90996 +void
90997 +String::assign(const char *str, int len)
90998 +{
90999 +  if (!str) {
91000 +    assert(len <= 0);
91001 +    len = 0;
91002 +  } else if (len < 0)
91003 +    len = strlen(str);
91004 +  
91005 +  if (len == 0) {
91006 +    _memo = (str == &oom_string_data ? oom_memo : null_memo);
91007 +    _memo->_refcount++;
91008 +    
91009 +  } else {
91010 +    // Make 'capacity' a multiple of 16 characters and bigger than 'len'.
91011 +    int capacity = (len + 16) & ~15;
91012 +    _memo = new Memo(len, capacity);
91013 +    if (!_memo || !_memo->_real_data) {
91014 +      make_out_of_memory();
91015 +      return;
91016 +    }
91017 +    memcpy(_memo->_real_data, str, len);
91018 +  }
91019 +  
91020 +  _data = _memo->_real_data;
91021 +  _length = len;
91022 +}
91023 +
91024 +/** @brief Append @a len random characters to this string.
91025 +    @return  Modifiable pointer to the appended random characters.
91026 +
91027 +    The caller may safely modify the returned memory.  Null is returned if the
91028 +    string becomes out-of-memory. */
91029 +char *
91030 +String::append_garbage(int len)
91031 +{
91032 +    // Appending anything to "out of memory" leaves it as "out of memory"
91033 +    if (len <= 0 || _memo == oom_memo)
91034 +       return 0;
91035 +  
91036 +    // If we can, append into unused space. First, we check that there's
91037 +    // enough unused space for 'len' characters to fit; then, we check
91038 +    // that the unused space immediately follows the data in '*this'.
91039 +    uint32_t dirty = _memo->_dirty;
91040 +    if (_memo->_capacity > dirty + len) {
91041 +       char *real_dirty = _memo->_real_data + dirty;
91042 +       if (real_dirty == _data + _length
91043 +           && _memo->_dirty.compare_and_swap(dirty, dirty + len)) {
91044 +           _length += len;
91045 +           assert(_memo->_dirty < _memo->_capacity);
91046 +           return real_dirty;
91047 +       }
91048 +    }
91049 +  
91050 +    // Now we have to make new space. Make sure the new capacity is a
91051 +    // multiple of 16 characters and that it is at least 16. But for large
91052 +    // strings, allocate a power of 2, since power-of-2 sizes minimize waste
91053 +    // in frequently-used allocators, like Linux kmalloc.
91054 +    int new_capacity = (_length + len < 1024 ? (_length + 16) & ~15 : 1024);
91055 +    while (new_capacity < _length + len)
91056 +       new_capacity *= 2;
91057 +
91058 +#if CLICK_DMALLOC
91059 +    // Keep total allocation a power of 2 by leaving extra space for the
91060 +    // DMALLOC Chunk.
91061 +    if (_length + len < new_capacity - 32)
91062 +       new_capacity -= 32;
91063 +#endif
91064 +    
91065 +    Memo *new_memo = new Memo(_length + len, new_capacity);
91066 +    if (!new_memo || !new_memo->_real_data) {
91067 +       delete new_memo;
91068 +       make_out_of_memory();
91069 +       return 0;
91070 +    }
91071 +
91072 +    char *new_data = new_memo->_real_data;
91073 +    memcpy(new_data, _data, _length);
91074 +  
91075 +    deref();
91076 +    _data = new_data;
91077 +    new_data += _length;       // now new_data points to the garbage
91078 +    _length += len;
91079 +    _memo = new_memo;
91080 +    return new_data;
91081 +}
91082 +
91083 +/** @brief Append the first @a len characters of @a suffix to this string.
91084 + *
91085 + * @param suffix data to append
91086 + * @param len length of data
91087 + *
91088 + * If @a len @< 0, treats @a suffix as a null-terminated C string. */ 
91089 +void
91090 +String::append(const char *suffix, int len)
91091 +{
91092 +    if (!suffix) {
91093 +       assert(len <= 0);
91094 +       len = 0;
91095 +    } else if (len < 0)
91096 +       len = strlen(suffix);
91097 +
91098 +    if (suffix == &oom_string_data)
91099 +       // Appending "out of memory" to a regular string makes it "out of
91100 +       // memory"
91101 +       make_out_of_memory();
91102 +    else if (char *space = append_garbage(len))
91103 +       memcpy(space, suffix, len);
91104 +}
91105 +
91106 +/** @brief Append @a len copies of character @a c to this string. */
91107 +void
91108 +String::append_fill(int c, int len)
91109 +{
91110 +    assert(len >= 0);
91111 +    if (char *space = append_garbage(len))
91112 +       memset(space, c, len);
91113 +}
91114 +
91115 +/** @brief Ensure the string's data is unshared and return a mutable pointer
91116 + * to it. */
91117 +char *
91118 +String::mutable_data()
91119 +{
91120 +  // If _memo has a capacity (it's not one of the special strings) and it's
91121 +  // uniquely referenced, return _data right away.
91122 +  if (_memo->_capacity && _memo->_refcount == 1)
91123 +    return const_cast<char *>(_data);
91124 +  
91125 +  // Otherwise, make a copy of it. Rely on: deref() doesn't change _data or
91126 +  // _length; and if _capacity == 0, then deref() doesn't free _real_data.
91127 +  assert(!_memo->_capacity || _memo->_refcount > 1);
91128 +  deref();
91129 +  assign(_data, _length);
91130 +  return const_cast<char *>(_data);
91131 +}
91132 +
91133 +/** @brief Null-terminates the string and returns a mutable pointer to its
91134 + * data.
91135 + * @sa String::c_str */
91136 +char *
91137 +String::mutable_c_str()
91138 +{
91139 +  (void) mutable_data();
91140 +  (void) c_str();
91141 +  return const_cast<char *>(_data);
91142 +}
91143 +
91144 +/** @brief Null-terminates the string.
91145 + *
91146 + * The terminating null character isn't considered part of the string, so
91147 + * this->length() doesn't change.  Returns a corresponding C string pointer.
91148 + * The returned pointer is semi-temporary; it will persist until the string is
91149 + * destroyed, or someone appends to it. */
91150 +const char *
91151 +String::c_str() const
91152 +{
91153 +  // If _memo has no capacity, then this is one of the special strings (null
91154 +  // or PermString). We are guaranteed, in these strings, that _data[_length]
91155 +  // exists. We can return _data immediately if we have a '\0' in the right
91156 +  // place.
91157 +  if (!_memo->_capacity && _data[_length] == '\0')
91158 +    return _data;
91159 +  
91160 +  // Otherwise, this invariant must hold (there's more real data in _memo than
91161 +  // in our substring).
91162 +  assert(!_memo->_capacity
91163 +        || _memo->_real_data + _memo->_dirty >= _data + _length);
91164 +  
91165 +  // Has the character after our substring been set?
91166 +  uint32_t dirty = _memo->_dirty;
91167 +  if (_memo->_real_data + dirty == _data + _length) {
91168 +      if (_memo->_capacity > dirty
91169 +         && _memo->_dirty.compare_and_swap(dirty, dirty + 1)) {
91170 +         // Character after our substring has not been set. Change it to '\0'.
91171 +         // This case will never occur on special strings.
91172 +         char *real_data = const_cast<char *>(_data);
91173 +         real_data[_length] = '\0';
91174 +         return _data;
91175 +      }
91176 +    
91177 +  } else {
91178 +    // Character after our substring has been set. OK to return _data if it is
91179 +    // already '\0'.
91180 +    if (_data[_length] == '\0')
91181 +      return _data;
91182 +  }
91183 +  
91184 +  // If we get here, we must make a copy of our portion of the string.
91185 +  {
91186 +    String s(_data, _length);
91187 +    deref();
91188 +    assign(s);
91189 +  }
91190 +  
91191 +  char *real_data = const_cast<char *>(_data);
91192 +  real_data[_length] = '\0';
91193 +  _memo->_dirty++;             // include '\0' in used portion of _memo
91194 +  return _data;
91195 +}
91196 +
91197 +/** @brief Returns a substring of this string, consisting of the @a len
91198 + * characters starting at index @a pos.
91199 + * 
91200 + * @param pos substring's first position relative to the string.
91201 + * @param len length of the substring.
91202 + *
91203 + * If @a pos is negative, starts that far from the end of the string.  If @a
91204 + * len is negative, leaves that many characters off the end of the string.
91205 + * (This follows perl's semantics.)  Returns a null string if the adjusted @a
91206 + * pos is out of range.  Truncates the substring if @a len goes beyond the end
91207 + * of the string.
91208 + */
91209 +String
91210 +String::substring(int pos, int len) const
91211 +{
91212 +    if (pos < 0)
91213 +       pos += _length;
91214 +    if (len < 0)
91215 +       len = _length - pos + len;
91216 +    if (pos + len > _length)
91217 +       len = _length - pos;
91218 +  
91219 +    if (pos < 0 || len <= 0)
91220 +       return String();
91221 +    else
91222 +       return String(_data + pos, len, _memo);
91223 +}
91224 +
91225 +/** @brief Search for a character in a string.
91226 + *
91227 + * @param c character to search for
91228 + * @param start initial search position
91229 + *
91230 + * Return the index of the leftmost occurence of @a c, starting at index @a
91231 + * start and working up to the end of the string.  Returns -1 if @a c is not
91232 + * found. */
91233 +int
91234 +String::find_left(char c, int start) const
91235 +{
91236 +    if (start < 0)
91237 +       start = 0;
91238 +    for (int i = start; i < _length; i++)
91239 +       if (_data[i] == c)
91240 +           return i;
91241 +    return -1;
91242 +}
91243 +
91244 +/** @brief Search for a substring in a string.
91245 + *
91246 + * @param str substring to search for
91247 + * @param start initial search position
91248 + *
91249 + * Return the index of the leftmost occurence of the substring @a str, starting
91250 + * at index @a start and working up to the end of the string.  Returns -1 if
91251 + * @a str is not found. */
91252 +int
91253 +String::find_left(const String &str, int start) const
91254 +{
91255 +    if (start < 0)
91256 +       start = 0;
91257 +    if (start >= length())
91258 +       return -1;
91259 +    if (!str.length())
91260 +       return 0;
91261 +    int first_c = (unsigned char)str[0];
91262 +    int pos = start, max_pos = length() - str.length();
91263 +    for (pos = find_left(first_c, pos); pos >= 0 && pos <= max_pos;
91264 +        pos = find_left(first_c, pos + 1))
91265 +       if (!memcmp(_data + pos, str._data, str.length()))
91266 +           return pos;
91267 +    return -1;
91268 +}
91269 +
91270 +/** @brief Search for a character in a string.
91271 + *
91272 + * @param c character to search for
91273 + * @param start initial search position
91274 + *
91275 + * Return the index of the rightmost occurence of the character @a c, starting
91276 + * at index @a start and working back to the beginning of the string.  Returns
91277 + * -1 if @a c is not found.  @a start may start beyond the end of the
91278 + * string. */
91279 +int
91280 +String::find_right(char c, int start) const
91281 +{
91282 +    if (start >= _length)
91283 +       start = _length - 1;
91284 +    for (int i = start; i >= 0; i--)
91285 +       if (_data[i] == c)
91286 +           return i;
91287 +    return -1;
91288 +}
91289 +
91290 +static String
91291 +hard_lower(const String &s, int pos)
91292 +{
91293 +    String new_s(s.data(), s.length());
91294 +    char *x = const_cast<char *>(new_s.data()); // know it's mutable
91295 +    int len = s.length();
91296 +    for (; pos < len; pos++)
91297 +       x[pos] = tolower(x[pos]);
91298 +    return new_s;
91299 +}
91300 +
91301 +/** @brief Returns a lowercased version of this string.
91302 + *
91303 + * Translates the ASCII characters 'A' through 'Z' into their lowercase
91304 + * equivalents. */
91305 +String
91306 +String::lower() const
91307 +{
91308 +    // avoid copies
91309 +    for (int i = 0; i < _length; i++)
91310 +       if (_data[i] >= 'A' && _data[i] <= 'Z')
91311 +           return hard_lower(*this, i);
91312 +    return *this;
91313 +}
91314 +
91315 +static String
91316 +hard_upper(const String &s, int pos)
91317 +{
91318 +    String new_s(s.data(), s.length());
91319 +    char *x = const_cast<char *>(new_s.data()); // know it's mutable
91320 +    int len = s.length();
91321 +    for (; pos < len; pos++)
91322 +       x[pos] = toupper(x[pos]);
91323 +    return new_s;
91324 +}
91325 +
91326 +/** @brief Returns an uppercased version of this string.
91327 + *
91328 + * Translates the ASCII characters 'a' through 'z' into their uppercase
91329 + * equivalents. */
91330 +String
91331 +String::upper() const
91332 +{
91333 +    // avoid copies
91334 +    for (int i = 0; i < _length; i++)
91335 +       if (_data[i] >= 'a' && _data[i] <= 'z')
91336 +           return hard_upper(*this, i);
91337 +    return *this;
91338 +}
91339 +
91340 +static String
91341 +hard_printable(const String &s, int pos)
91342 +{
91343 +    StringAccum sa(s.length() * 2);
91344 +    sa.append(s.data(), pos);
91345 +    const unsigned char *x = reinterpret_cast<const unsigned char *>(s.data());
91346 +    int len = s.length();
91347 +    for (; pos < len; pos++) {
91348 +       if (x[pos] >= 32 && x[pos] < 127)
91349 +           sa << x[pos];
91350 +       else if (x[pos] < 32)
91351 +           sa << '^' << (unsigned char)(x[pos] + 64);
91352 +       else if (char *buf = sa.extend(4, 1))
91353 +           sprintf(buf, "\\%03o", x[pos]);
91354 +    }
91355 +    return sa.take_string();
91356 +}
91357 +
91358 +/** @brief Returns a "printable" version of this string.
91359 + *
91360 + * Translates control characters 0-31 into "control" sequences, such as "^@"
91361 + * for the null character, and characters 127-255 into octal escape sequences,
91362 + * such as "\377" for 255. */
91363 +String
91364 +String::printable() const
91365 +{
91366 +    // avoid copies
91367 +    for (int i = 0; i < _length; i++)
91368 +       if (_data[i] < 32 || _data[i] > 126)
91369 +           return hard_printable(*this, i);
91370 +    return *this;
91371 +}
91372 +
91373 +/** @brief Returns a substring with spaces trimmed from the end. */
91374 +String
91375 +String::trim_space() const
91376 +{
91377 +    for (int i = _length - 1; i >= 0; i--)
91378 +       if (!isspace(_data[i]))
91379 +           return substring(0, i + 1);
91380 +    // return out-of-memory string if input is out-of-memory string
91381 +    return (_length ? String() : *this);
91382 +}
91383 +
91384 +/** @brief Returns a hex-quoted version of the string.
91385 + *
91386 + * For example, the string "Abcd" would convert to "\<41626364>". */
91387 +String
91388 +String::quoted_hex() const
91389 +{
91390 +    static const char hex_digits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
91391 +    StringAccum sa;
91392 +    char *buf;
91393 +    if (out_of_memory() || !(buf = sa.extend(length() * 2 + 3)))
91394 +       return out_of_memory_string();
91395 +    *buf++ = '\\';
91396 +    *buf++ = '<';
91397 +    const uint8_t *e = reinterpret_cast<const uint8_t*>(end());
91398 +    for (const uint8_t *x = reinterpret_cast<const uint8_t*>(begin()); x < e; x++) {
91399 +       *buf++ = hex_digits[(*x >> 4) & 0xF];
91400 +       *buf++ = hex_digits[*x & 0xF];
91401 +    }
91402 +    *buf++ = '>';
91403 +    return sa.take_string();
91404 +}
91405 +
91406 +/** @brief Hash function.
91407 + * @return The hash value of this String.
91408 + *
91409 + * Equal String objects always have equal hashcode() values.
91410 + */
91411 +size_t
91412 +String::hashcode() const
91413 +{
91414 +    int l = length();
91415 +    const char *d = data();
91416 +    if (!l)
91417 +       return 0;
91418 +    else if (l == 1)
91419 +       return d[0] | (d[0] << 8);
91420 +    else if (l < 4)
91421 +       return d[0] + (d[1] << 3) + (l << 12);
91422 +    else
91423 +       return d[0] + (d[1] << 8) + (d[2] << 16) + (d[3] << 24)
91424 +           + (l << 12) + (d[l-1] << 10);
91425 +}
91426 +
91427 +/** @brief Return true iff this string is equal to the data in @a s.
91428 + * @param s string data to compare to
91429 + * @param len length of @a s
91430 + * 
91431 + * Same as String::compare(*this, String(s, len)) == 0.  If @a len @< 0, then
91432 + * treats @a s as a null-terminated C string.
91433 + *
91434 + * @sa String::compare(const String &a, const String &b) */
91435 +bool
91436 +String::equals(const char *s, int len) const
91437 +{
91438 +    // It'd be nice to make "out-of-memory" strings compare unequal to
91439 +    // anything, even themseleves, but this would be a bad idea for Strings
91440 +    // used as (for example) keys in hashtables. Instead, "out-of-memory"
91441 +    // strings compare unequal to other null strings, but equal to each other.
91442 +    if (len < 0)
91443 +       len = strlen(s);
91444 +    if (_length != len)
91445 +       return false;
91446 +    else if (_data == s)
91447 +       return true;
91448 +    else if (len == 0)
91449 +       return (s != &oom_string_data && _memo != oom_memo);
91450 +    else
91451 +       return memcmp(_data, s, len) == 0;
91452 +}
91453 +
91454 +/** @brief Compare this string with the data in @a s.
91455 + * @param s string data to compare to
91456 + * @param len length of @a s
91457 + * 
91458 + * Same as String::compare(*this, String(s, len)).  If @a len @< 0, then treats
91459 + * @a s as a null-terminated C string.
91460 + *
91461 + * @sa String::compare(const String &a, const String &b) */
91462 +int
91463 +String::compare(const char *s, int len) const
91464 +{
91465 +    if (len < 0)
91466 +       len = strlen(s);
91467 +    if (_data == s)
91468 +       return _length - len;
91469 +    else if (_memo == oom_memo)
91470 +       return 1;
91471 +    else if (s == &oom_string_data)
91472 +       return -1;
91473 +    else if (_length == len)
91474 +       return memcmp(_data, s, len);
91475 +    else if (_length < len) {
91476 +       int v = memcmp(_data, s, _length);
91477 +       return (v ? v : -1);
91478 +    } else {
91479 +       int v = memcmp(_data, s, len);
91480 +       return (v ? v : 1);
91481 +    }
91482 +}
91483 +
91484 +
91485 +/** @class String::Initializer
91486 + * @brief Initializes the String implementation.
91487 + *
91488 + * This class's constructor initializes the String implementation by calling
91489 + * String::static_initialize().  You should declare a String::Initializer
91490 + * object at global scope in any file that declares a global String object.
91491 + * For example:
91492 + * @code
91493 + *    static String::Initializer initializer;
91494 + *    String global_string = "100";
91495 + * @endcode */
91496 +
91497 +String::Initializer::Initializer()
91498 +{
91499 +    String::static_initialize();
91500 +}
91501 +
91502 +/** @brief Initialize the String implementation.
91503 + *
91504 + * This function must be called before any String functionality is used.  It
91505 + * is safe to call it multiple times.
91506 + *
91507 + * @note Elements don't need to worry about static_initialize(); Click drivers
91508 + * have already called it for you.
91509 + *
91510 + * @sa String::Initializer */
91511 +void
91512 +String::static_initialize()
91513 +{
91514 +    // function called to initialize static globals
91515 +    if (!null_memo) {
91516 +#if CLICK_DMALLOC
91517 +       CLICK_DMALLOC_REG("str0");
91518 +#endif
91519 +       null_memo = new Memo;
91520 +       null_memo->_refcount++;
91521 +       permanent_memo = new Memo;
91522 +       permanent_memo->_refcount++;
91523 +       // use a separate string for oom_memo's data, so we can distinguish
91524 +       // the pointer
91525 +       oom_memo = new Memo;
91526 +       oom_memo->_refcount++;
91527 +       oom_memo->_real_data = const_cast<char*>(&oom_string_data);
91528 +       null_string_p = new String;
91529 +       oom_string_p = new String(&oom_string_data, 0, oom_memo);
91530 +#if CLICK_DMALLOC
91531 +       CLICK_DMALLOC_REG("????");
91532 +#endif
91533 +    }
91534 +}
91535 +
91536 +/** @brief Clean up the String implementation.
91537 + *
91538 + * Call this function to release any memory allocated by the String
91539 + * implementation. */
91540 +void
91541 +String::static_cleanup()
91542 +{
91543 +    if (null_string_p) {
91544 +       delete null_string_p;
91545 +       null_string_p = 0;
91546 +       delete oom_string_p;
91547 +       oom_string_p = 0;
91548 +       if (oom_memo->_refcount.dec_and_test())
91549 +           delete oom_memo;
91550 +       if (permanent_memo->_refcount.dec_and_test())
91551 +           delete permanent_memo;
91552 +       if (null_memo->_refcount.dec_and_test())
91553 +           delete null_memo;
91554 +       null_memo = permanent_memo = oom_memo = 0;
91555 +    }
91556 +}
91557 +
91558 +CLICK_ENDDECLS
91559 diff -Nurb click-1.6.0/lib/vectorv.cc.orig click-1.6.0-27/lib/vectorv.cc.orig
91560 --- click-1.6.0/lib/vectorv.cc.orig     1969-12-31 19:00:00.000000000 -0500
91561 +++ click-1.6.0-27/lib/vectorv.cc.orig  2007-07-16 19:47:50.000000000 -0400
91562 @@ -0,0 +1,125 @@
91563 +/*
91564 + * vectorv.cc -- template specialization for Vector<void*>
91565 + * Eddie Kohler
91566 + *
91567 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
91568 + *
91569 + * Permission is hereby granted, free of charge, to any person obtaining a
91570 + * copy of this software and associated documentation files (the "Software"),
91571 + * to deal in the Software without restriction, subject to the conditions
91572 + * listed in the Click LICENSE file. These conditions include: you must
91573 + * preserve this copyright notice, and you cannot mention the copyright
91574 + * holders in advertising related to the Software without their permission.
91575 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
91576 + * notice is a summary of the Click LICENSE file; the license in that file is
91577 + * legally binding.
91578 + */
91579 +
91580 +#include <click/config.h>
91581 +#include <click/glue.hh>
91582 +#include <click/vector.hh>
91583 +CLICK_DECLS
91584 +
91585 +Vector<void*>::Vector(const Vector<void*> &o)
91586 +  : _l(0), _n(0), _capacity(0)
91587 +{
91588 +  *this = o;
91589 +}
91590 +
91591 +Vector<void*>::~Vector()
91592 +{
91593 +  delete[] _l;
91594 +}
91595 +
91596 +Vector<void*> &
91597 +Vector<void*>::operator=(const Vector<void*> &o)
91598 +{
91599 +  if (&o != this) {
91600 +    _n = 0;
91601 +    if (reserve(o._n)) {
91602 +      _n = o._n;
91603 +      memcpy(_l, o._l, sizeof(void *) * _n);
91604 +    }
91605 +  }
91606 +  return *this;
91607 +}
91608 +
91609 +Vector<void*> &
91610 +Vector<void*>::assign(size_type n, void* e)
91611 +{
91612 +  _n = 0;
91613 +  resize(n, e);
91614 +  return *this;
91615 +}
91616 +
91617 +bool
91618 +Vector<void*>::reserve(size_type want)
91619 +{
91620 +  if (want < 0)
91621 +    want = (_capacity > 0 ? _capacity * 2 : 4);
91622 +  if (want <= _capacity)
91623 +    return true;
91624 +  
91625 +  void** new_l = new void*[want];
91626 +  if (!new_l)
91627 +    return false;
91628 +  
91629 +  memcpy(new_l, _l, sizeof(void*) * _n);
91630 +  delete[] _l;
91631 +  
91632 +  _l = new_l;
91633 +  _capacity = want;
91634 +  return true;
91635 +}
91636 +
91637 +Vector<void*>::iterator
91638 +Vector<void*>::insert(iterator i, void* e)
91639 +{
91640 +  assert(i >= begin() && i <= end());
91641 +  size_type pos = i - begin();
91642 +  if (_n < _capacity || reserve(RESERVE_GROW)) {
91643 +    i = begin() + pos;
91644 +    memmove(i + 1, i, (end() - i) * sizeof(void*));
91645 +    *i = e;
91646 +    _n++;
91647 +  }
91648 +  return i;
91649 +}
91650 +
91651 +Vector<void*>::iterator
91652 +Vector<void*>::erase(iterator a, iterator b)
91653 +{
91654 +  if (b > a) {
91655 +    assert(a >= begin() && b <= end());
91656 +    memmove(a, b, (end() - b) * sizeof(void*));
91657 +    _n -= b - a;
91658 +    return a;
91659 +  } else
91660 +    return b;
91661 +}
91662 +
91663 +void
91664 +Vector<void*>::resize(size_type nn, void* e)
91665 +{
91666 +  if (nn <= _capacity || reserve(nn)) {
91667 +    for (size_type i = _n; i < nn; i++)
91668 +      _l[i] = e;
91669 +    _n = nn;
91670 +  }
91671 +}
91672 +
91673 +void
91674 +Vector<void*>::swap(Vector<void*>& o)
91675 +{
91676 +  void **l = _l;
91677 +  size_type n = _n;
91678 +  size_type cap = _capacity;
91679 +  _l = o._l;
91680 +  _n = o._n;
91681 +  _capacity = o._capacity;
91682 +  o._l = l;
91683 +  o._n = n;
91684 +  o._capacity = cap;
91685 +}
91686 +
91687 +CLICK_ENDDECLS
91688 diff -Nurb click-1.6.0/linuxmodule/.tmp_versions/click.mod click-1.6.0-27/linuxmodule/.tmp_versions/click.mod
91689 --- click-1.6.0/linuxmodule/.tmp_versions/click.mod     1969-12-31 19:00:00.000000000 -0500
91690 +++ click-1.6.0-27/linuxmodule/.tmp_versions/click.mod  2009-02-11 16:55:09.000000000 -0500
91691 @@ -0,0 +1,2 @@
91692 +/d/click/click-1.6.0-27/linuxmodule/click.ko
91693 +/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
91694 diff -Nurb click-1.6.0/linuxmodule/.tmp_versions/proclikefs.mod click-1.6.0-27/linuxmodule/.tmp_versions/proclikefs.mod
91695 --- click-1.6.0/linuxmodule/.tmp_versions/proclikefs.mod        1969-12-31 19:00:00.000000000 -0500
91696 +++ click-1.6.0-27/linuxmodule/.tmp_versions/proclikefs.mod     2009-02-11 16:55:09.000000000 -0500
91697 @@ -0,0 +1,2 @@
91698 +/d/click/click-1.6.0-27/linuxmodule/proclikefs.ko
91699 +/d/click/click-1.6.0-27/linuxmodule/proclikefsmod.o
91700 diff -Nurb click-1.6.0/linuxmodule/Makefile click-1.6.0-27/linuxmodule/Makefile
91701 --- click-1.6.0/linuxmodule/Makefile    1969-12-31 19:00:00.000000000 -0500
91702 +++ click-1.6.0-27/linuxmodule/Makefile 2009-01-28 16:15:43.000000000 -0500
91703 @@ -0,0 +1,294 @@
91704 +## The following line supports click-mkmindriver and should not be changed.
91705 +## Click linuxmodule driver Makefile ##
91706 +SHELL = /bin/sh
91707 +
91708 +subdir := linuxmodule
91709 +conf_auxdir = $(top_srcdir)
91710 +
91711 +prefix = /d/click/click-1.6.0-27/inst
91712 +exec_prefix = /d/click/click-1.6.0-27/inst
91713 +bindir = /d/click/click-1.6.0-27/inst/bin
91714 +sbindir = /d/click/click-1.6.0-27/inst/sbin
91715 +libdir = /d/click/click-1.6.0-27/inst/lib
91716 +linuxdir = /d/kernels/linux-2.6.27.10-clickport
91717 +
91718 +LIB_CXX_OBJS = string.o straccum.o nameinfo.o \
91719 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
91720 +       ipaddress.o ipflowid.o etheraddress.o \
91721 +       packet.o \
91722 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
91723 +       element.o \
91724 +       confparse.o variableenv.o lexer.o elemfilter.o \
91725 +       routerthread.o router.o master.o handlercall.o notifier.o \
91726 +       integers.o iptable.o \
91727 +       driver.o ino.o \
91728 +       $(EXTRA_DRIVER_OBJS)
91729 +
91730 +EXTRA_DRIVER_OBJS = 
91731 +
91732 +LIB_C_OBJS = crc32.o in_cksum.o
91733 +
91734 +LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o
91735 +
91736 +LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o
91737 +
91738 +STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
91739 +       errorelement.o portinfo.o scheduleinfo.o
91740 +
91741 +ifndef MINDRIVER
91742 +DRIVER = click
91743 +ELEMENTSCONF = elements
91744 +KSYMS = ksyms
91745 +else
91746 +DRIVER = $(MINDRIVER)click
91747 +ELEMENTSCONF = elements_$(MINDRIVER)
91748 +KSYMS = ksyms_$(MINDRIVER)
91749 +endif
91750 +
91751 +INSTALLOBJS = $(DRIVER).o proclikefs.o
91752 +
91753 +
91754 +ifeq (1,1)
91755 +
91756 +##########################################################################
91757 +## LINUX 2.6                                                           ##
91758 +
91759 +KERNELPATH = /d/kernels/linux-2.6.27.10-clickport
91760 +
91761 +ifeq ($(KBUILD_EXTMOD),)
91762 +top_srcdir := ..
91763 +srcdir := .
91764 +top_builddir := ..
91765 +else
91766 +ifeq (.,.)
91767 +top_srcdir := $(src)/..
91768 +srcdir := $(src)
91769 +else
91770 +ifeq ($(patsubst /%,/,.),/)
91771 +top_srcdir := ..
91772 +srcdir := .
91773 +else
91774 +top_srcdir := $(obj)/..
91775 +srcdir := $(obj)/.
91776 +endif
91777 +endif
91778 +top_builddir := $(obj)/..
91779 +endif
91780 +
91781 +CLICKINSTALL = /usr/bin/install -c
91782 +CLICKINSTALL_DATA = /usr/bin/install -c -m 644
91783 +CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs
91784 +
91785 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26
91786 +
91787 +CLICKCC = gcc -w -W -Wall
91788 +CLICKCXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
91789 +
91790 +LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \
91791 +       -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \
91792 +       -e s,-Wdeclaration-after-statement,, \
91793 +       -e s,-Wno-pointer-sign,, -e s,-fno-common,,)
91794 +CLICKCPPFLAGS =  -DCLICK_LINUXMODULE
91795 +CLICKCFLAGS =  -O2
91796 +CLICKCXXFLAGS =  -O2
91797 +CLICKDEPCFLAGS = -Wp,-MD,$(depfile)
91798 +
91799 +CLICKDEFS = -DHAVE_CONFIG_H 
91800 +CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
91801 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default
91802 +
91803 +CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
91804 +       $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
91805 +COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
91806 +       $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
91807 +
91808 +quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@)
91809 +cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $<
91810 +
91811 +quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@)
91812 +cmd_ccompile = $(COMPILE) -c -o $@ $<
91813 +
91814 +EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) 
91815 +
91816 +obj-m += $(INSTALLOBJS)
91817 +
91818 +$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
91819 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \
91820 +       $(KSYMS).o $(ELEMENTSCONF).o
91821 +proclikefs-objs = proclikefsmod.o
91822 +
91823 +KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
91824 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS)
91825 +
91826 +all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always
91827 +       $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules
91828 +
91829 +
91830 +$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc
91831 +       $(call if_changed_dep,cxxcompile)
91832 +
91833 +$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c
91834 +       $(call if_changed_dep,ccompile)
91835 +
91836 +$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc
91837 +       $(call if_changed_dep,cxxcompile)
91838 +
91839 +$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c
91840 +       $(call if_changed_dep,ccompile)
91841 +
91842 +$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc
91843 +       $(call if_changed_dep,cxxcompile)
91844 +
91845 +$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc
91846 +       $(call if_changed_dep,cxxcompile)
91847 +
91848 +$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c
91849 +       $(call if_changed_rule,cc_o_c)
91850 +
91851 +$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk)
91852 +       $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c
91853 +$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c
91854 +       $(call if_changed_dep,ccompile)
91855 +
91856 +ifneq ($(MAKECMDGOALS),clean)
91857 +-include $(obj)/$(ELEMENTSCONF).mk
91858 +endif
91859 +
91860 +# Don't install in Linux directories for now
91861 +# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install
91862 +install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all
91863 +       $(CLICKmkinstalldirs) $(DESTDIR)$(libdir)
91864 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
91865 +install-man:
91866 +       :
91867 +uninstall:
91868 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
91869 +
91870 +else
91871 +
91872 +##########################################################################
91873 +## LINUX 2.4                                                           ##
91874 +
91875 +top_srcdir := ..
91876 +srcdir := .
91877 +top_builddir := ..
91878 +
91879 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard
91880 +
91881 +CC = gcc -w -W -Wall
91882 +CPP = gcc -W -Wall -E
91883 +CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
91884 +CXXCPP = g++ -W -Wall  -E
91885 +LD = ld
91886 +STRIP = strip
91887 +INSTALL = /usr/bin/install -c
91888 +INSTALL_DATA = /usr/bin/install -c -m 644
91889 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
91890 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make
91891 +
91892 +ifeq ($(V),1)
91893 +ccompile = $(COMPILE) $(1)
91894 +cxxcompile = $(CXXCOMPILE) $(1)
91895 +else
91896 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
91897 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
91898 +endif
91899 +
91900 +.SUFFIXES:
91901 +.SUFFIXES: .c .cc .o .S .s .i .ii
91902 +
91903 +.c.o:
91904 +       $(call ccompile,-c $< -o $@,CC)
91905 +.c.i:
91906 +       $(call ccompile,-E $< > $@,CPP)
91907 +.s.o:
91908 +       $(call ccompile,-c $< -o $@,ASM)
91909 +.S.o:
91910 +       $(call ccompile,-c $< -o $@,ASM)
91911 +.cc.o:
91912 +       $(call cxxcompile,-c $< -o $@,CXX)
91913 +.cc.s:
91914 +       $(call cxxcompile,-S $< -o $@,CXX -S)
91915 +.cc.ii:
91916 +       $(call cxxcompile,-E $< > $@,CXXCPP)
91917 +
91918 +
91919 +OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \
91920 +       $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o
91921 +
91922 +CPPFLAGS =  -DCLICK_LINUXMODULE
91923 +CFLAGS =  -O2
91924 +CXXFLAGS =  -O2
91925 +DEPCFLAGS = -MD
91926 +
91927 +DEFS = -DHAVE_CONFIG_H 
91928 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
91929 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
91930 +LDFLAGS = 
91931 +LIBS = 
91932 +
91933 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
91934 +CXXLD = $(CXX)
91935 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
91936 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
91937 +CCLD = $(CC)
91938 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
91939 +
91940 +all: $(INSTALLOBJS)
91941 +
91942 +ifneq ($(MAKECMDGOALS),clean)
91943 +-include $(ELEMENTSCONF).mk
91944 +endif
91945 +
91946 +$(DRIVER).o: Makefile $(OBJS)
91947 +       $(LD) -r -o $(DRIVER).o $(OBJS)
91948 +       $(STRIP) -g $(DRIVER).o
91949 +
91950 +proclikefs.o: proclikefs.c Makefile
91951 +       $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@
91952 +
91953 +DEPFILES := $(wildcard *.d)
91954 +ifneq ($(DEPFILES),)
91955 +include $(DEPFILES)
91956 +endif
91957 +
91958 +install: $(INSTALLOBJS)
91959 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
91960 +       for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
91961 +install-man:
91962 +       :
91963 +uninstall:
91964 +       for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
91965 +
91966 +endif
91967 +
91968 +
91969 +##########################################################################
91970 +## ANY LINUX                                                           ##
91971 +
91972 +elemlist:
91973 +       @/bin/rm -f elements.conf
91974 +       @$(MAKE) elements.conf
91975 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
91976 +       echo "linuxmodule  app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf
91977 +$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
91978 +       $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
91979 +$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
91980 +       $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
91981 +       @rm -f $(ELEMENTSCONF).d
91982 +
91983 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
91984 +       cd $(top_builddir) \
91985 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
91986 +
91987 +always:
91988 +       @:
91989 +
91990 +clean:
91991 +       -rm -f *~ *.d *.o *.mod.c *.ko
91992 +       -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd
91993 +       -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf
91994 +distclean: clean
91995 +       -rm -f Makefile
91996 +
91997 +.PHONY: all clean distclean elemlist install uninstall always
91998 diff -Nurb click-1.6.0/linuxmodule/Makefile.in click-1.6.0-27/linuxmodule/Makefile.in
91999 --- click-1.6.0/linuxmodule/Makefile.in 2007-09-12 18:26:17.000000000 -0400
92000 +++ click-1.6.0-27/linuxmodule/Makefile.in      2009-01-27 12:21:27.000000000 -0500
92001 @@ -95,7 +95,7 @@
92002  
92003  CLICKDEFS = @DEFS@ 
92004  CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
92005 -       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
92006 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include -I$(linuxdir)/include/asm/mach-default
92007  
92008  CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
92009         $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
92010 diff -Nurb click-1.6.0/linuxmodule/Makefile.in.orig click-1.6.0-27/linuxmodule/Makefile.in.orig
92011 --- click-1.6.0/linuxmodule/Makefile.in.orig    1969-12-31 19:00:00.000000000 -0500
92012 +++ click-1.6.0-27/linuxmodule/Makefile.in.orig 2007-09-12 18:26:17.000000000 -0400
92013 @@ -0,0 +1,294 @@
92014 +## The following line supports click-mkmindriver and should not be changed.
92015 +## Click linuxmodule driver Makefile ##
92016 +SHELL = @SHELL@
92017 +
92018 +subdir := linuxmodule
92019 +conf_auxdir = @conf_auxdir@
92020 +
92021 +prefix = @prefix@
92022 +exec_prefix = @exec_prefix@
92023 +bindir = @bindir@
92024 +sbindir = @sbindir@
92025 +libdir = @libdir@
92026 +linuxdir = @linuxdir@
92027 +
92028 +LIB_CXX_OBJS = string.o straccum.o nameinfo.o \
92029 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
92030 +       ipaddress.o ipflowid.o etheraddress.o \
92031 +       packet.o \
92032 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
92033 +       element.o \
92034 +       confparse.o variableenv.o lexer.o elemfilter.o \
92035 +       routerthread.o router.o master.o handlercall.o notifier.o \
92036 +       integers.o iptable.o \
92037 +       driver.o ino.o \
92038 +       $(EXTRA_DRIVER_OBJS)
92039 +
92040 +EXTRA_DRIVER_OBJS = @EXTRA_DRIVER_OBJS@
92041 +
92042 +LIB_C_OBJS = crc32.o in_cksum.o
92043 +
92044 +LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o
92045 +
92046 +LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o
92047 +
92048 +STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
92049 +       errorelement.o portinfo.o scheduleinfo.o
92050 +
92051 +ifndef MINDRIVER
92052 +DRIVER = click
92053 +ELEMENTSCONF = elements
92054 +KSYMS = ksyms
92055 +else
92056 +DRIVER = $(MINDRIVER)click
92057 +ELEMENTSCONF = elements_$(MINDRIVER)
92058 +KSYMS = ksyms_$(MINDRIVER)
92059 +endif
92060 +
92061 +INSTALLOBJS = $(DRIVER).o proclikefs.o
92062 +
92063 +
92064 +ifeq (@LINUXMODULE_2_6@,1)
92065 +
92066 +##########################################################################
92067 +## LINUX 2.6                                                           ##
92068 +
92069 +KERNELPATH = @linuxdir@
92070 +
92071 +ifeq ($(KBUILD_EXTMOD),)
92072 +top_srcdir := @top_srcdir@
92073 +srcdir := @srcdir@
92074 +top_builddir := ..
92075 +else
92076 +ifeq (@srcdir@,.)
92077 +top_srcdir := $(src)/..
92078 +srcdir := $(src)
92079 +else
92080 +ifeq ($(patsubst /%,/,@srcdir@),/)
92081 +top_srcdir := @top_srcdir@
92082 +srcdir := @srcdir@
92083 +else
92084 +top_srcdir := $(obj)/@top_srcdir@
92085 +srcdir := $(obj)/@srcdir@
92086 +endif
92087 +endif
92088 +top_builddir := $(obj)/..
92089 +endif
92090 +
92091 +CLICKINSTALL = @INSTALL@
92092 +CLICKINSTALL_DATA = @INSTALL@ -m 644
92093 +CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs
92094 +
92095 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26
92096 +
92097 +CLICKCC = @KERNEL_CC@
92098 +CLICKCXX = @KERNEL_CXX@
92099 +
92100 +LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \
92101 +       -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \
92102 +       -e s,-Wdeclaration-after-statement,, \
92103 +       -e s,-Wno-pointer-sign,, -e s,-fno-common,,)
92104 +CLICKCPPFLAGS = @CPPFLAGS@ -DCLICK_LINUXMODULE
92105 +CLICKCFLAGS = @CFLAGS_NDEBUG@
92106 +CLICKCXXFLAGS = @CXXFLAGS_NDEBUG@
92107 +CLICKDEPCFLAGS = -Wp,-MD,$(depfile)
92108 +
92109 +CLICKDEFS = @DEFS@ 
92110 +CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
92111 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
92112 +
92113 +CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
92114 +       $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
92115 +COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
92116 +       $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
92117 +
92118 +quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@)
92119 +cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $<
92120 +
92121 +quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@)
92122 +cmd_ccompile = $(COMPILE) -c -o $@ $<
92123 +
92124 +EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) 
92125 +
92126 +obj-m += $(INSTALLOBJS)
92127 +
92128 +$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
92129 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \
92130 +       $(KSYMS).o $(ELEMENTSCONF).o
92131 +proclikefs-objs = proclikefsmod.o
92132 +
92133 +KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
92134 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS)
92135 +
92136 +all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always
92137 +       $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules
92138 +
92139 +
92140 +$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc
92141 +       $(call if_changed_dep,cxxcompile)
92142 +
92143 +$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c
92144 +       $(call if_changed_dep,ccompile)
92145 +
92146 +$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc
92147 +       $(call if_changed_dep,cxxcompile)
92148 +
92149 +$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c
92150 +       $(call if_changed_dep,ccompile)
92151 +
92152 +$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc
92153 +       $(call if_changed_dep,cxxcompile)
92154 +
92155 +$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc
92156 +       $(call if_changed_dep,cxxcompile)
92157 +
92158 +$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c
92159 +       $(call if_changed_rule,cc_o_c)
92160 +
92161 +$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk)
92162 +       $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c
92163 +$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c
92164 +       $(call if_changed_dep,ccompile)
92165 +
92166 +ifneq ($(MAKECMDGOALS),clean)
92167 +-include $(obj)/$(ELEMENTSCONF).mk
92168 +endif
92169 +
92170 +# Don't install in Linux directories for now
92171 +# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install
92172 +install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all
92173 +       $(CLICKmkinstalldirs) $(DESTDIR)$(libdir)
92174 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
92175 +install-man:
92176 +       :
92177 +uninstall:
92178 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
92179 +
92180 +else
92181 +
92182 +##########################################################################
92183 +## LINUX 2.4                                                           ##
92184 +
92185 +top_srcdir := @top_srcdir@
92186 +srcdir := @srcdir@
92187 +top_builddir := ..
92188 +
92189 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard
92190 +
92191 +CC = @KERNEL_CC@
92192 +CPP = @CPP@
92193 +CXX = @KERNEL_CXX@
92194 +CXXCPP = @CXXCPP@
92195 +LD = @LD@
92196 +STRIP = @STRIP@
92197 +INSTALL = @INSTALL@
92198 +INSTALL_DATA = @INSTALL@ -m 644
92199 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
92200 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make
92201 +
92202 +ifeq ($(V),1)
92203 +ccompile = $(COMPILE) $(1)
92204 +cxxcompile = $(CXXCOMPILE) $(1)
92205 +else
92206 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
92207 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
92208 +endif
92209 +
92210 +.SUFFIXES:
92211 +.SUFFIXES: .c .cc .o .S .s .i .ii
92212 +
92213 +.c.o:
92214 +       $(call ccompile,-c $< -o $@,CC)
92215 +.c.i:
92216 +       $(call ccompile,-E $< > $@,CPP)
92217 +.s.o:
92218 +       $(call ccompile,-c $< -o $@,ASM)
92219 +.S.o:
92220 +       $(call ccompile,-c $< -o $@,ASM)
92221 +.cc.o:
92222 +       $(call cxxcompile,-c $< -o $@,CXX)
92223 +.cc.s:
92224 +       $(call cxxcompile,-S $< -o $@,CXX -S)
92225 +.cc.ii:
92226 +       $(call cxxcompile,-E $< > $@,CXXCPP)
92227 +
92228 +
92229 +OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \
92230 +       $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o
92231 +
92232 +CPPFLAGS = @CPPFLAGS@ -DCLICK_LINUXMODULE
92233 +CFLAGS = @CFLAGS_NDEBUG@
92234 +CXXFLAGS = @CXXFLAGS_NDEBUG@
92235 +DEPCFLAGS = @DEPCFLAGS@
92236 +
92237 +DEFS = @DEFS@ 
92238 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
92239 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
92240 +LDFLAGS = @LDFLAGS@
92241 +LIBS = @LIBS@
92242 +
92243 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
92244 +CXXLD = $(CXX)
92245 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
92246 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
92247 +CCLD = $(CC)
92248 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
92249 +
92250 +all: $(INSTALLOBJS)
92251 +
92252 +ifneq ($(MAKECMDGOALS),clean)
92253 +-include $(ELEMENTSCONF).mk
92254 +endif
92255 +
92256 +$(DRIVER).o: Makefile $(OBJS)
92257 +       $(LD) -r -o $(DRIVER).o $(OBJS)
92258 +       $(STRIP) -g $(DRIVER).o
92259 +
92260 +proclikefs.o: proclikefs.c Makefile
92261 +       $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@
92262 +
92263 +DEPFILES := $(wildcard *.d)
92264 +ifneq ($(DEPFILES),)
92265 +include $(DEPFILES)
92266 +endif
92267 +
92268 +install: $(INSTALLOBJS)
92269 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
92270 +       for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
92271 +install-man:
92272 +       :
92273 +uninstall:
92274 +       for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
92275 +
92276 +endif
92277 +
92278 +
92279 +##########################################################################
92280 +## ANY LINUX                                                           ##
92281 +
92282 +elemlist:
92283 +       @/bin/rm -f elements.conf
92284 +       @$(MAKE) elements.conf
92285 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
92286 +       echo "linuxmodule @element_groups@" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf
92287 +$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
92288 +       $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
92289 +$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
92290 +       $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
92291 +       @rm -f $(ELEMENTSCONF).d
92292 +
92293 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
92294 +       cd $(top_builddir) \
92295 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
92296 +
92297 +always:
92298 +       @:
92299 +
92300 +clean:
92301 +       -rm -f *~ *.d *.o *.mod.c *.ko
92302 +       -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd
92303 +       -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf
92304 +distclean: clean
92305 +       -rm -f Makefile
92306 +
92307 +.PHONY: all clean distclean elemlist install uninstall always
92308 diff -Nurb click-1.6.0/linuxmodule/Makefile.orig click-1.6.0-27/linuxmodule/Makefile.orig
92309 --- click-1.6.0/linuxmodule/Makefile.orig       1969-12-31 19:00:00.000000000 -0500
92310 +++ click-1.6.0-27/linuxmodule/Makefile.orig    2009-01-19 15:15:55.000000000 -0500
92311 @@ -0,0 +1,294 @@
92312 +## The following line supports click-mkmindriver and should not be changed.
92313 +## Click linuxmodule driver Makefile ##
92314 +SHELL = /bin/sh
92315 +
92316 +subdir := linuxmodule
92317 +conf_auxdir = $(top_srcdir)
92318 +
92319 +prefix = /usr/local
92320 +exec_prefix = ${prefix}
92321 +bindir = /usr/local/bin
92322 +sbindir = /usr/local/sbin
92323 +libdir = /usr/local/lib
92324 +linuxdir = /d/kernels/linux-2.6.27.10-click
92325 +
92326 +LIB_CXX_OBJS = string.o straccum.o nameinfo.o \
92327 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
92328 +       ipaddress.o ipflowid.o etheraddress.o \
92329 +       packet.o \
92330 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
92331 +       element.o \
92332 +       confparse.o variableenv.o lexer.o elemfilter.o \
92333 +       routerthread.o router.o master.o handlercall.o notifier.o \
92334 +       integers.o iptable.o \
92335 +       driver.o ino.o \
92336 +       $(EXTRA_DRIVER_OBJS)
92337 +
92338 +EXTRA_DRIVER_OBJS = 
92339 +
92340 +LIB_C_OBJS = crc32.o in_cksum.o
92341 +
92342 +LINUXMODULE_CXX_OBJS = config.o sched.o module.o clickfs.o skbmgr.o
92343 +
92344 +LINUXMODULE_C_OBJS = kernelversion.o read-pmc.o
92345 +
92346 +STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
92347 +       errorelement.o portinfo.o scheduleinfo.o
92348 +
92349 +ifndef MINDRIVER
92350 +DRIVER = click
92351 +ELEMENTSCONF = elements
92352 +KSYMS = ksyms
92353 +else
92354 +DRIVER = $(MINDRIVER)click
92355 +ELEMENTSCONF = elements_$(MINDRIVER)
92356 +KSYMS = ksyms_$(MINDRIVER)
92357 +endif
92358 +
92359 +INSTALLOBJS = $(DRIVER).o proclikefs.o
92360 +
92361 +
92362 +ifeq (1,1)
92363 +
92364 +##########################################################################
92365 +## LINUX 2.6                                                           ##
92366 +
92367 +KERNELPATH = /d/kernels/linux-2.6.27.10-click
92368 +
92369 +ifeq ($(KBUILD_EXTMOD),)
92370 +top_srcdir := ..
92371 +srcdir := .
92372 +top_builddir := ..
92373 +else
92374 +ifeq (.,.)
92375 +top_srcdir := $(src)/..
92376 +srcdir := $(src)
92377 +else
92378 +ifeq ($(patsubst /%,/,.),/)
92379 +top_srcdir := ..
92380 +srcdir := .
92381 +else
92382 +top_srcdir := $(obj)/..
92383 +srcdir := $(obj)/.
92384 +endif
92385 +endif
92386 +top_builddir := $(obj)/..
92387 +endif
92388 +
92389 +CLICKINSTALL = /usr/bin/install -c
92390 +CLICKINSTALL_DATA = /usr/bin/install -c -m 644
92391 +CLICKmkinstalldirs = $(conf_auxdir)/mkinstalldirs
92392 +
92393 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make --linux26
92394 +
92395 +CLICKCC = gcc -w -W -Wall
92396 +CLICKCXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
92397 +
92398 +LINUXCFLAGS = $(shell echo "$(CPPFLAGS) $(CFLAGS)" | sed \
92399 +       -e s,-fno-unit-at-a-time,, -e s,-Wstrict-prototypes,, \
92400 +       -e s,-Wdeclaration-after-statement,, \
92401 +       -e s,-Wno-pointer-sign,, -e s,-fno-common,,)
92402 +CLICKCPPFLAGS =  -DCLICK_LINUXMODULE
92403 +CLICKCFLAGS =  -O2
92404 +CLICKCXXFLAGS =  -O2
92405 +CLICKDEPCFLAGS = -Wp,-MD,$(depfile)
92406 +
92407 +CLICKDEFS = -DHAVE_CONFIG_H 
92408 +CLICKINCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
92409 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
92410 +
92411 +CXXCOMPILE = $(CLICKCXX) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
92412 +       $(CLICKCXXFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
92413 +COMPILE = $(CLICKCC) $(LINUXCFLAGS) $(CLICKCPPFLAGS) $(CLICKCFLAGS) \
92414 +       $(CLICKDEFS) $(CLICKINCLUDES) $(CLICKDEPCFLAGS)
92415 +
92416 +quiet_cmd_cxxcompile = CXX $(quiet_modtag) $(subst $(obj)/,,$@)
92417 +cmd_cxxcompile = $(CXXCOMPILE) -c -o $@ $<
92418 +
92419 +quiet_cmd_ccompile = CC $(quiet_modtag) $(subst $(obj)/,,$@)
92420 +cmd_ccompile = $(COMPILE) -c -o $@ $<
92421 +
92422 +EXTRA_CFLAGS = $(CLICKCPPFLAGS) $(CLICKCFLAGS) $(CLICKDEFS) $(CLICKINCLUDES) 
92423 +
92424 +obj-m += $(INSTALLOBJS)
92425 +
92426 +$(DRIVER)-objs = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
92427 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS) \
92428 +       $(KSYMS).o $(ELEMENTSCONF).o
92429 +proclikefs-objs = proclikefsmod.o
92430 +
92431 +KSYM_OBJS = $(LIB_C_OBJS) $(LIB_CXX_OBJS) $(STD_ELEMENT_OBJS) \
92432 +       $(ELEMENT_OBJS) $(LINUXMODULE_C_OBJS) $(LINUXMODULE_CXX_OBJS)
92433 +
92434 +all: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc always
92435 +       $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules
92436 +
92437 +
92438 +$(addprefix $(obj)/,$(LIB_CXX_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.cc
92439 +       $(call if_changed_dep,cxxcompile)
92440 +
92441 +$(addprefix $(obj)/,$(LIB_C_OBJS)): $(obj)/%.o : $(top_srcdir)/lib/%.c
92442 +       $(call if_changed_dep,ccompile)
92443 +
92444 +$(addprefix $(obj)/,$(LINUXMODULE_CXX_OBJS)): $(obj)/%.o : $(srcdir)/%.cc
92445 +       $(call if_changed_dep,cxxcompile)
92446 +
92447 +$(addprefix $(obj)/,$(LINUXMODULE_C_OBJS)): $(obj)/%.o : $(srcdir)/%.c
92448 +       $(call if_changed_dep,ccompile)
92449 +
92450 +$(addprefix $(obj)/,$(STD_ELEMENT_OBJS)): $(obj)/%.o : $(top_srcdir)/elements/standard/%.cc
92451 +       $(call if_changed_dep,cxxcompile)
92452 +
92453 +$(obj)/$(ELEMENTSCONF).o : $(obj)/$(ELEMENTSCONF).cc
92454 +       $(call if_changed_dep,cxxcompile)
92455 +
92456 +$(obj)/proclikefsmod.o : $(srcdir)/proclikefs.c
92457 +       $(call if_changed_rule,cc_o_c)
92458 +
92459 +$(obj)/$(KSYMS).c: $(addprefix $(obj)/,$(KSYM_OBJS)) $(top_builddir)/click-buildtool $(addprefix $(obj)/,$(ELEMENTSCONF).mk)
92460 +       $(top_builddir)/click-buildtool ksyms -C $(obj) -x kernelversion.o $(KSYM_OBJS) > $(obj)/$(KSYMS).c
92461 +$(obj)/$(KSYMS).o: $(obj)/$(KSYMS).c
92462 +       $(call if_changed_dep,ccompile)
92463 +
92464 +ifneq ($(MAKECMDGOALS),clean)
92465 +-include $(obj)/$(ELEMENTSCONF).mk
92466 +endif
92467 +
92468 +# Don't install in Linux directories for now
92469 +# $(MAKE) -C $(KERNELPATH) M=$(shell pwd) modules_install
92470 +install: Makefile $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc all
92471 +       $(CLICKmkinstalldirs) $(DESTDIR)$(libdir)
92472 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do $(CLICKINSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
92473 +install-man:
92474 +       :
92475 +uninstall:
92476 +       for i in $(patsubst %.o,%.ko,$(INSTALLOBJS)); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
92477 +
92478 +else
92479 +
92480 +##########################################################################
92481 +## LINUX 2.4                                                           ##
92482 +
92483 +top_srcdir := ..
92484 +srcdir := .
92485 +top_builddir := ..
92486 +
92487 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard
92488 +
92489 +CC = gcc -w -W -Wall
92490 +CPP = gcc -W -Wall -E
92491 +CXX = g++ -w -W -Wall -fno-exceptions -fno-rtti  -D__SMP__
92492 +CXXCPP = g++ -W -Wall  -E
92493 +LD = ld
92494 +STRIP = strip
92495 +INSTALL = /usr/bin/install -c
92496 +INSTALL_DATA = /usr/bin/install -c -m 644
92497 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
92498 +CLICK_ELEM2MAKE = $(top_builddir)/click-buildtool elem2make
92499 +
92500 +ifeq ($(V),1)
92501 +ccompile = $(COMPILE) $(1)
92502 +cxxcompile = $(CXXCOMPILE) $(1)
92503 +else
92504 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
92505 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
92506 +endif
92507 +
92508 +.SUFFIXES:
92509 +.SUFFIXES: .c .cc .o .S .s .i .ii
92510 +
92511 +.c.o:
92512 +       $(call ccompile,-c $< -o $@,CC)
92513 +.c.i:
92514 +       $(call ccompile,-E $< > $@,CPP)
92515 +.s.o:
92516 +       $(call ccompile,-c $< -o $@,ASM)
92517 +.S.o:
92518 +       $(call ccompile,-c $< -o $@,ASM)
92519 +.cc.o:
92520 +       $(call cxxcompile,-c $< -o $@,CXX)
92521 +.cc.s:
92522 +       $(call cxxcompile,-S $< -o $@,CXX -S)
92523 +.cc.ii:
92524 +       $(call cxxcompile,-E $< > $@,CXXCPP)
92525 +
92526 +
92527 +OBJS = $(LIB_CXX_OBJS) $(LIB_C_OBJS) $(STD_ELEMENT_OBJS) $(ELEMENT_OBJS) \
92528 +       $(LINUXMODULE_CXX_OBJS) $(LINUXMODULE_C_OBJS) $(ELEMENTSCONF).o
92529 +
92530 +CPPFLAGS =  -DCLICK_LINUXMODULE
92531 +CFLAGS =  -O2
92532 +CXXFLAGS =  -O2
92533 +DEPCFLAGS = -MD
92534 +
92535 +DEFS = -DHAVE_CONFIG_H 
92536 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
92537 +       -I$(srcdir) -I$(top_srcdir) -I$(linuxdir)/include
92538 +LDFLAGS = 
92539 +LIBS = 
92540 +
92541 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
92542 +CXXLD = $(CXX)
92543 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
92544 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
92545 +CCLD = $(CC)
92546 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
92547 +
92548 +all: $(INSTALLOBJS)
92549 +
92550 +ifneq ($(MAKECMDGOALS),clean)
92551 +-include $(ELEMENTSCONF).mk
92552 +endif
92553 +
92554 +$(DRIVER).o: Makefile $(OBJS)
92555 +       $(LD) -r -o $(DRIVER).o $(OBJS)
92556 +       $(STRIP) -g $(DRIVER).o
92557 +
92558 +proclikefs.o: proclikefs.c Makefile
92559 +       $(COMPILE) -D__KERNEL__ -DMODULE -c $< -o $@
92560 +
92561 +DEPFILES := $(wildcard *.d)
92562 +ifneq ($(DEPFILES),)
92563 +include $(DEPFILES)
92564 +endif
92565 +
92566 +install: $(INSTALLOBJS)
92567 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
92568 +       for i in $(INSTALLOBJS); do $(INSTALL_DATA) $$i $(DESTDIR)$(libdir)/$$i; done
92569 +install-man:
92570 +       :
92571 +uninstall:
92572 +       for i in $(INSTALLOBJS); do /bin/rm -f $(DESTDIR)$(libdir)/$$i; done
92573 +
92574 +endif
92575 +
92576 +
92577 +##########################################################################
92578 +## ANY LINUX                                                           ##
92579 +
92580 +elemlist:
92581 +       @/bin/rm -f elements.conf
92582 +       @$(MAKE) elements.conf
92583 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
92584 +       echo "linuxmodule  app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r linuxmodule -p $(top_srcdir) > elements.conf
92585 +$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
92586 +       $(CLICK_ELEM2MAKE) -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
92587 +$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
92588 +       $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
92589 +       @rm -f $(ELEMENTSCONF).d
92590 +
92591 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
92592 +       cd $(top_builddir) \
92593 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
92594 +
92595 +always:
92596 +       @:
92597 +
92598 +clean:
92599 +       -rm -f *~ *.d *.o *.mod.c *.ko
92600 +       -rm -f .version .*.o.flags .*.o.d .*.o.cmd .*.ko.cmd
92601 +       -rm -f $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc $(KSYMS).c elements.conf
92602 +distclean: clean
92603 +       -rm -f Makefile
92604 +
92605 +.PHONY: all clean distclean elemlist install uninstall always
92606 diff -Nurb click-1.6.0/linuxmodule/Module.symvers click-1.6.0-27/linuxmodule/Module.symvers
92607 --- click-1.6.0/linuxmodule/Module.symvers      1969-12-31 19:00:00.000000000 -0500
92608 +++ click-1.6.0-27/linuxmodule/Module.symvers   2009-02-11 16:55:10.000000000 -0500
92609 @@ -0,0 +1,3826 @@
92610 +0x00000000     _ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92611 +0x00000000     _ZTV7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92612 +0x00000000     _ZNK7MSQueue10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92613 +0x00000000     _ZTV4IPRw       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92614 +0x00000000     _ZN8IPMirror13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92615 +0x00000000     _Z20click_cleanup_configv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92616 +0x00000000     _ZN13AlignmentInfo5queryEP7ElementiRiS2_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92617 +0x00000000     _ZN6ToHostC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92618 +0x00000000     _ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92619 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE8capacityEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92620 +0x00000000     _ZTV10IPRewriter        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92621 +0x00000000     _ZN12ICMPRewriter13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92622 +0x00000000     _ZlsR11StringAccumRK12EtherAddress      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92623 +0x00000000     _ZN7PullTeeC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92624 +0x00000000     _ZN7PullTeeC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92625 +0x00000000     _ZNK15SpinlockRelease10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92626 +0x00000000     _ZNK10Classifier16count_inbranchesER6VectorIiE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92627 +0x00000000     _ZN10ClassifierC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92628 +0x00000000     _ZN5AlignD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92629 +0x00000000     _ZN5AlignC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92630 +0x00000000     _ZN7HashMapI9IPAddressjED1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92631 +0x00000000     _ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92632 +0x00000000     _ZN6VectorIjEC2EiRKj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92633 +0x00000000     _ZN6VectorIjEC1EiRKj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92634 +0x00000000     _ZN10PacketTestC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92635 +0x00000000     _ZNK8ToDevice10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92636 +0x00000000     _ZN8RFC2507c13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92637 +0x00000000     _ZN6VectorIN7IPTable5EntryEE4veltEPS1_i /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92638 +0x00000000     _ZN7IPEncap12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92639 +0x00000000     _ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92640 +0x00000000     _ZNK10EtherEncap20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92641 +0x00000000     _ZTV18SilentErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92642 +0x00000000     _ZNK11DelayShaper10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92643 +0x00000000     _ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92644 +0x00000000     _ZN14InfiniteSource8run_taskEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92645 +0x00000000     _ZN11TCPRewriter4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92646 +0x00000000     cpUnsignedReal10        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92647 +0x00000000     _ZN10VectorTestD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92648 +0x00000000     _ZNK10UDPIPEncap10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92649 +0x00000000     _ZN8ToDevice17static_initializeEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92650 +0x00000000     _ZN16RoundRobinSwitchC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92651 +0x00000000     _ZN16RoundRobinSwitchC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92652 +0x00000000     __assert_fail   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92653 +0x00000000     _ZN6VectorIN10BpfyFilter4InsnEED1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92654 +0x00000000     _ZN6VectorIN10Classifier4ExprEED1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92655 +0x00000000     _ZN8ToDevice12queue_packetEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92656 +0x00000000     _ZNK7HashMapI9IPAddressjE16dynamic_resizingEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92657 +0x00000000     _ZN6VectorIN6Router6HookupEE4backEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92658 +0x00000000     _ZN13SetPacketTypeD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92659 +0x00000000     _ZN13SetPacketTypeD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92660 +0x00000000     _ZN13SetPacketTypeD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92661 +0x00000000     _ZN13SetPacketTypeC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92662 +0x00000000     _ZN13SetPacketTypeC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92663 +0x00000000     _ZN6Router15add_requirementERK6String   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92664 +0x00000000     _ZTV13QueueYankTest     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92665 +0x00000000     _ZN13QueueYankTest9run_timerEP5Timer    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92666 +0x00000000     _ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92667 +0x00000000     _ZTV13CheckIPHeader     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92668 +0x00000000     _ZNK3Tee10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92669 +0x00000000     _ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92670 +0x00000000     _ZNK8PortInfo10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92671 +0x00000000     _ZTV12IPInputCombo      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92672 +0x00000000     _ZNK8FixIPSrc10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92673 +0x00000000     _ZNK8DecIPTTL10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92674 +0x00000000     _ZN16ICMPPingRewriter4pushEiP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92675 +0x00000000     _ZN6PacketC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92676 +0x00000000     _ZN6MasterC2Ei  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92677 +0x00000000     _ZN6VectorIN7IPTable5EntryEE9pop_frontEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92678 +0x00000000     _ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92679 +0x00000000     _ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92680 +0x00000000     _ZN12AnyDeviceMap6insertEP9AnyDeviceb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92681 +0x00000000     _ZN6String18make_out_of_memoryEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92682 +0x00000000     _ZNK12RandomSource10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92683 +0x00000000     _ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92684 +0x00000000     _ZNK12FastUDPFlows10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92685 +0x00000000     _ZN10CheckPaintD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92686 +0x00000000     _ZN8Unqueue212add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92687 +0x00000000     _ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92688 +0x00000000     _ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92689 +0x00000000     _ZN8IPFilter9Primitive13simple_negateEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92690 +0x00000000     cpHandlerCallWrite      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92691 +0x00000000     _ZN14BigHashMapTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92692 +0x00000000     _ZN6VectorI9IPAddressE6resizeEiRKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92693 +0x00000000     _ZN14SortedIPLookup10sort_tableEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92694 +0x00000000     _ZNK8PortInfo15configure_phaseEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92695 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC1EiRKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92696 +0x00000000     _ZN9IPAddress11make_prefixEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92697 +0x00000000     _ZN7HashMapI6StringiE6insertERKS0_RKi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92698 +0x00000000     _ZNK5Lexer8Compound10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92699 +0x00000000     _ZN6VectorIN7IPTable5EntryEE5frontEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92700 +0x00000000     _ZN8IPFilter4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92701 +0x00000000     cpOptional      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92702 +0x00000000     _ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92703 +0x00000000     _ZNK5Lexer12element_typeERK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92704 +0x00000000     _ZTV7Unqueue    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92705 +0x00000000     _ZNK18RoundRobinIPMapper10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92706 +0x00000000     _ZN6Router12set_runcountEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92707 +0x00000000     _ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92708 +0x00000000     _ZTV10CrapFilter        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92709 +0x00000000     _ZN8NameInfo9installdbEP6NameDBPK7Element       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92710 +0x00000000     _ZN11QuitWatcher10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92711 +0x00000000     _ZTV12StaticNameDB      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92712 +0x00000000     _ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92713 +0x00000000     _ZNK13ICMPPingEncap5flagsEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92714 +0x00000000     cpIPPrefix      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92715 +0x00000000     _ZNK6Router10attachmentERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92716 +0x00000000     _ZN7MSQueue7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92717 +0x00000000     _ZN5Lexer22process_line_directiveEPKc   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92718 +0x00000000     _ZN10Classifier19negate_expr_subtreeER6VectorIiE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92719 +0x00000000     _ZNK6String9find_leftERKS_i     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92720 +0x00000000     _ZN13ScheduleLinux12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92721 +0x00000000     _ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92722 +0x00000000     _ZNK8RTCycles10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92723 +0x00000000     _ZN6RouterC1ERK6StringP6Master  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92724 +0x00000000     _ZNK14PerfCountAccum10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92725 +0x00000000     _ZN14CheckARPHeader12reason_textsE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92726 +0x00000000     _ZN6VectorIPvEC1ERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92727 +0x00000000     _ZNK17_HashMap_iteratorI6StringiE4pairEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92728 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE4backEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92729 +0x00000000     _ZN11DelayShaperC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92730 +0x00000000     _ZN11DelayShaperC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92731 +0x00000000     _ZN15BandwidthShaperD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92732 +0x00000000     _ZTV13RatedSplitter     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92733 +0x00000000     _ZN16ICMPPingRewriter7MappingC1Eb       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92734 +0x00000000     _ZN14CheckIPHeader2D1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92735 +0x00000000     _ZN14CheckIPHeader2C1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92736 +0x00000000     _ZNK6VectorI9IPAddressE4veltEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92737 +0x00000000     _ZN7HashMapI9IPAddressjE4swapERS1_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92738 +0x00000000     _ZN5Lexer11yconnectionEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92739 +0x00000000     _ZTV12IPRouteTable      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92740 +0x00000000     _ZN11StringAccumC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92741 +0x00000000     _ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92742 +0x00000000     _ZNK6VectorIN7IPTable5EntryEEixEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92743 +0x00000000     _ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92744 +0x00000000     _ZN12ErrorHandler14static_cleanupEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92745 +0x00000000     _ZN14ComparePacketsD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92746 +0x00000000     _ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92747 +0x00000000     _ZN11CiscyFilter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92748 +0x00000000     click_config_generation /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92749 +0x00000000     _ZN6ToHost12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92750 +0x00000000     _ZN6String14static_cleanupEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92751 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE5beginEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92752 +0x00000000     _ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92753 +0x00000000     _Z20skbmgr_allocate_skbsjjPi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92754 +0x00000000     _ZN4IPRwD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92755 +0x00000000     _ZN4IPRwD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92756 +0x00000000     _ZN4IPRwD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92757 +0x00000000     _ZN4IPRwC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92758 +0x00000000     _ZN4IPRwC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92759 +0x00000000     _ZNK11IPGWOptions10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92760 +0x00000000     _ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92761 +0x00000000     _ZN10EtherEncap4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92762 +0x00000000     _ZNK8SetCRC3210port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92763 +0x00000000     _ZN11SetAnnoByte13simple_actionEP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92764 +0x00000000     _ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92765 +0x00000000     _ZN7Element19nelements_allocatedE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92766 +0x00000000     _ZN6VectorI6StringEC1ERKS1_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92767 +0x00000000     _ZNK16SetRandIPAddress10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92768 +0x00000000     _ZTV16ICMPPingRewriter  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92769 +0x00000000     _ZNK10Classifier4Expr10compatibleERKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92770 +0x00000000     _ZN10ARPQuerier9handle_ipEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92771 +0x00000000     _ZN6VectorI9IPAddressE5beginEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92772 +0x00000000     _ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92773 +0x00000000     _ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92774 +0x00000000     _ZN15PushNullElementC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92775 +0x00000000     _ZN15PullNullElementC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92776 +0x00000000     _ZNK10EtherEncap10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92777 +0x00000000     _ZN14SetUDPChecksumD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92778 +0x00000000     _ZN14SetTCPChecksumD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92779 +0x00000000     _ZN9PrioSched7cleanupEN7Element12CleanupStageE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92780 +0x00000000     _ZN13QueueYankTest9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92781 +0x00000000     _ZN14ICMPPingSource12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92782 +0x00000000     _ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92783 +0x00000000     _ZN13ICMPPingEncap12read_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92784 +0x00000000     _ZN10BpfyFilterC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92785 +0x00000000     _ZN6ToHostD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92786 +0x00000000     _ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92787 +0x00000000     _ZNK11ErrorVeneer9nwarningsEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92788 +0x4a54e14b     proclikefs_register_filesystem  /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
92789 +0x00000000     _ZNK14StoreIPAddress10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92790 +0x00000000     _ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92791 +0x00000000     _ZNK7HashMapI6StringiEixERKS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92792 +0x00000000     _ZN6VectorIN6Router6HookupEE10push_frontERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92793 +0x00000000     _ZN6VectorI9IPAddressED2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92794 +0x00000000     _ZN6VectorI9IPAddressED1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92795 +0x00000000     _ZN6VectorI9IPAddressEC2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92796 +0x00000000     _ZN6VectorI9IPAddressEC1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92797 +0x00000000     _ZNK18SourceIPHashMapper10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92798 +0x00000000     cpIP6Prefix     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92799 +0x00000000     _ZNK11LinkUnqueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92800 +0x00000000     _ZN12FastTCPFlows12change_portsEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92801 +0x00000000     _ZTV7Burster    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92802 +0x00000000     _ZN14DropBroadcasts13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92803 +0x00000000     _ZN7Discard12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92804 +0x00000000     _Z7cp_timeRK6StringP7timeval    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92805 +0x00000000     _ZNK12RatedUnqueue10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92806 +0x00000000     _ZNK11StrideSched7ticketsEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92807 +0x00000000     _ZN15SpinlockAcquireD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92808 +0x00000000     _ZN8ToDevice7cleanupEN7Element12CleanupStageE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92809 +0x00000000     _ZNK7HashMapI8IPFlowIDbE5findpERKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92810 +0x00000000     _ZNK12MarkIPHeader10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92811 +0x00000000     _ZNK4IPRw15configure_phaseEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92812 +0x00000000     _ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92813 +0x00000000     _ZN6VectorIN6Router6HookupEE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92814 +0x00000000     _ZN11PaintSwitchC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92815 +0x00000000     _ZN11PaintSwitchC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92816 +0x00000000     _ZN13IPReassemblerD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92817 +0x00000000     _ZN13IPReassemblerD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92818 +0x00000000     _ZN13IPReassemblerD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92819 +0x00000000     _ZN13IPReassemblerC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92820 +0x00000000     _ZN13IPReassemblerC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92821 +0x00000000     _ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92822 +0x00000000     _ZN10UDPIPEncapD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92823 +0x00000000     _ZN6Router14static_cleanupEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92824 +0x00000000     _ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92825 +0x00000000     _ZN8DRRSched4castEPKc   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92826 +0x00000000     _ZNK9Bitvector4zeroEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92827 +0x00000000     _ZN11IPGWOptions12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92828 +0x00000000     _ZN11ErrorVeneerD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92829 +0x00000000     _ZN11ErrorVeneerD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92830 +0x00000000     _ZTV8Unqueue2   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92831 +0x00000000     _ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92832 +0x00000000     _ZN7IPEncapC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92833 +0x00000000     _ZN7IPEncapC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92834 +0x00000000     _ZNK8DRRSched10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92835 +0x00000000     _ZN13HashMap_Arena10hard_allocEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92836 +0x00000000     _ZN6PacketD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92837 +0x00000000     _ZN6MasterD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92838 +0x00000000     _ZN5Lexer10add_tunnelE6StringS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92839 +0x00000000     _ZN10IPRewriter4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92840 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92841 +0x00000000     _ZN9Bitvector6negateEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92842 +0x00000000     _ZNK6String5upperEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92843 +0x00000000     _ZNK6String5lowerEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92844 +0x00000000     _ZN8MarkIPCE12read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92845 +0x00000000     _ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92846 +0x00000000     _ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92847 +0x00000000     _ZNK17DynamicUDPIPEncap10class_nameEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92848 +0x00000000     _ZN7HashMapI8IPFlowIDbE3endEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92849 +0x00000000     _ZN10ARPQuerier10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92850 +0x00000000     _ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92851 +0x00000000     _Z17cp_unparse_real10ii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92852 +0x00000000     _ZNK14CheckIPHeader210class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92853 +0x00000000     _ZN11AddressInfo14query_ethernetE6StringPhP7Element     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92854 +0x00000000     _ZN5TimerC2EP4Task      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92855 +0x00000000     _ZN11RatedSource12setup_packetEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92856 +0x00000000     _ZN12MarkIPHeader13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92857 +0x00000000     _ZN8Notifier14EMPTY_NOTIFIERE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92858 +0x00000000     _ZNK9TimedSink10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92859 +0x00000000     _ZN6VectorI7IPRouteE4swapERS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92860 +0x00000000     _ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92861 +0x00000000     _ZNK13IPReassembler10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92862 +0x00000000     _ZN8DecIPTTL7drop_itEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92863 +0x00000000     update_crc      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92864 +0x00000000     _ZN7HashMapI8IPFlowIDbED2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92865 +0x00000000     _ZN7HashMapI8IPFlowIDbEC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92866 +0x00000000     _ZN6VectorIiE5frontEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92867 +0x00000000     _ZN10EtherEncap12read_handlerEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92868 +0x00000000     _ZN8CPUQueue10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92869 +0x00000000     _ZN12ErrorHandler8lwarningERK6StringPKcz        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92870 +0x00000000     _ZNK6VectorI9IPAddressE8capacityEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92871 +0x00000000     _ZN6VectorI9IPAddressE5eraseEPS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92872 +0x00000000     _ZNK15SpinlockAcquire10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92873 +0x00000000     _ZTV13SetCycleCount     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92874 +0x00000000     _ZNK6VectorIP7ElementEixEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92875 +0x00000000     _ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92876 +0x00000000     _ZNK13CheckIPHeader5flagsEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92877 +0x00000000     _ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92878 +0x00000000     _ZNK6Router9elandmarkEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92879 +0x00000000     _ZN11LinkUnqueue10read_paramEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92880 +0x00000000     _ZNK11StrideSched10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92881 +0x00000000     _ZN5Lexer9TunnelEnd4findERKN6Router6HookupE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92882 +0x00000000     _ZTV18IPAddrPairRewriter        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92883 +0x00000000     _ZNK14InfiniteSource20can_live_reconfigureEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92884 +0x00000000     _ZN20HashMap_ArenaFactory11the_factoryE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92885 +0x00000000     _ZTV17DynamicUDPIPEncap /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92886 +0x00000000     _ZN5Lexer4yvarEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92887 +0x00000000     _Z16cp_unparse_real2yi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92888 +0x00000000     _ZN10Suppressor12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92889 +0x00000000     _ZN13DynamicNameDB4sortEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92890 +0x00000000     _Z8cp_scanfPKcS0_S0_z   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92891 +0x00000000     _ZN17ICMPPingResponder13simple_actionEP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92892 +0x00000000     _ZN20LandmarkErrorHandlerD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92893 +0x00000000     _ZN20LandmarkErrorHandlerD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92894 +0x00000000     _ZNK7HashMapI6StringiE16dynamic_resizingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92895 +0x00000000     _ZThn60_N14InfiniteSourceD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92896 +0x00000000     _ZThn60_N14InfiniteSourceD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92897 +0x00000000     _ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92898 +0x00000000     _ZN6VectorIjE6assignEiRKj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92899 +0x00000000     _ZN10SuppressorD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92900 +0x00000000     _ZNK9StoreData10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92901 +0x00000000     _ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92902 +0x00000000     _ZTV12SetIPAddress      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92903 +0x00000000     _ZN7HashMapI8IPFlowIDbE7resize0Ej       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92904 +0x00000000     _ZNK8RFC2507d10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92905 +0x00000000     _ZNK8RFC2507c10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92906 +0x00000000     _ZN15PullNullElement4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92907 +0x00000000     _ZN14FrontDropQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92908 +0x00000000     _ZN14FrontDropQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92909 +0x00000000     _Z10cp_is_wordRK6String /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92910 +0x00000000     _ZN8ToDevice13change_deviceEP10net_device       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92911 +0x00000000     _ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92912 +0x00000000     _ZN12FastUDPFlows10get_packetEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92913 +0x00000000     _ZN6VectorIiE9pop_frontEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92914 +0x00000000     _ZN4Task10initializeEP7Elementb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92915 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE3endEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92916 +0x00000000     _ZN8DRRSched7cleanupEN7Element12CleanupStageE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92917 +0x00000000     _ZNK16StaticPullSwitch10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92918 +0x00000000     _ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92919 +0x00000000     _ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92920 +0x00000000     _ZTV11RatedSource       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92921 +0x00000000     _Z21click_clear_error_logv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92922 +0x00000000     _ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92923 +0x00000000     _ZN17ICMPPingResponderD2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92924 +0x00000000     _ZN17ICMPPingResponderD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92925 +0x00000000     _ZN17ICMPPingResponderD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92926 +0x00000000     _ZN17ICMPPingResponderC2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92927 +0x00000000     _ZN17ICMPPingResponderC1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92928 +0x00000000     _ZTV7RRSched    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92929 +0x00000000     _ZN14BandwidthMeter17read_rate_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92930 +0x00000000     _ZNK6VectorIN6Router6HookupEE4veltEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92931 +0x00000000     _ZN7HashMapI6StringiEC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92932 +0x00000000     _ZN7HashMapI6StringiEC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92933 +0x00000000     _ZNK15SpinlockAcquire10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92934 +0x00000000     _ZN6Packet10shift_dataEib       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92935 +0x00000000     _ZNK14SchedOrderTest10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92936 +0x767af9e9     proclikefs_reinitialize_supers  /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
92937 +0x00000000     _ZN6String13null_string_pE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92938 +0x00000000     _ZNK14IPAddrRewriter10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92939 +0x00000000     click_lalloc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92940 +0x00000000     _Z9cp_real10RK6StringiPj        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92941 +0x00000000     _Z9cp_real10RK6StringiPi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92942 +0x00000000     _ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92943 +0x00000000     _ZN7RRSchedC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92944 +0x00000000     _ZN7RRSchedC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92945 +0x00000000     _ZNK16ICMPPingRewriter10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92946 +0x00000000     _ZN10FromDeviceC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92947 +0x00000000     _ZN12ErrorHandler19set_default_handlerEPS_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92948 +0x00000000     _ZNK11TimedSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92949 +0x00000000     _ZTV14SetTCPChecksum    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92950 +0x00000000     _ZN8RFC2507d6decodeERPKhRt      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92951 +0x00000000     _ZNK6String9printableEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92952 +0x00000000     _ZTV13SetIPChecksum     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92953 +0x00000000     _ZN14IPAddrRewriter4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92954 +0x00000000     _ZNK6VectorI6StringE4sizeEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92955 +0x00000000     _ZN4Task17strong_unscheduleEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92956 +0x00000000     _ZN4Task17strong_rescheduleEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92957 +0x00000000     _ZN13FullNoteQueue4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92958 +0x00000000     _ZN13PerfCountInfo4castEPKc     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92959 +0x00000000     _ZN6VectorIN6Router6HookupEE7reserveEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92960 +0x00000000     _ZN13ScheduleLinuxD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92961 +0x00000000     _ZN13ScheduleLinuxD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92962 +0x00000000     _ZN13ScheduleLinuxD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92963 +0x00000000     _ZN13ScheduleLinuxC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92964 +0x00000000     _ZN13ScheduleLinuxC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92965 +0x00000000     _ZNK5Paint10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92966 +0x00000000     _ZTV14InfiniteSource    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92967 +0x00000000     _ZNK13ICMPPingEncap10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92968 +0x00000000     _ZN6VectorI9IPAddressE6insertEPS0_RKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92969 +0x00000000     _ZNK20StripToNetworkHeader10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92970 +0x00000000     _ZN6Script9run_timerEP5Timer    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92971 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92972 +0x00000000     _ZN10ClassifierD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92973 +0x00000000     _ZNK6String9find_leftEci        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92974 +0x00000000     _ZTV16VariableExpander  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92975 +0x00000000     _ZN12ARPResponder12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92976 +0x00000000     _ZN10PacketTestD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92977 +0x00000000     _ZN6VectorIN6Router6HookupEEC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92978 +0x00000000     _ZNK6Router20element_ports_stringEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92979 +0x00000000     _ZN14PerfCountAccum4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92980 +0x00000000     _ZN5Paint9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92981 +0x00000000     _ZN6VectorIN6Router6HookupEED1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92982 +0x00000000     _ZNK7Element10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92983 +0x00000000     _ZTV11CiscyFilter       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92984 +0x00000000     _ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92985 +0x00000000     _ZTV14ToHostSniffers    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92986 +0x00000000     _ZN8Notifier15remove_listenerEP4Task    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92987 +0x00000000     _ZN4IdleD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92988 +0x00000000     _ZN4IdleD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92989 +0x00000000     _ZN4IdleD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92990 +0x00000000     _ZN4IdleC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92991 +0x00000000     _ZN4IdleC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92992 +0x00000000     _ZN15HostEtherFilterD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92993 +0x00000000     _ZN10CheckPaint4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92994 +0x00000000     _ZN6VectorIN6Router6HookupEE6assignEiRKS1_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92995 +0x00000000     _ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92996 +0x00000000     _ZNK12RandomSample10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92997 +0x00000000     _ZNK7HashMapI6StringiE3endEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92998 +0x00000000     _ZN11IPGWOptionsC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
92999 +0x00000000     _ZN11IPGWOptionsC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93000 +0x00000000     _ZN7Element4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93001 +0x00000000     _ZN6VectorIiE6assignEiRKi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93002 +0x00000000     _ZNK3RED10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93003 +0x00000000     _ZN12SetPerfCountD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93004 +0x00000000     _ZN12SetPerfCountD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93005 +0x00000000     _ZN12SetPerfCountD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93006 +0x00000000     _ZN12SetPerfCountC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93007 +0x00000000     _ZN12SetPerfCountC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93008 +0x00000000     _ZNK13DiscardNoFree10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93009 +0x00000000     _ZNK8MarkIPCE10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93010 +0x00000000     _ZNK13IPOutputCombo10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93011 +0x00000000     _ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93012 +0x00000000     _Z30cp_register_stringlist_argtypePKcS0_i       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93013 +0x00000000     _ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93014 +0x00000000     _ZNK13AlignmentInfo6query1EP7ElementiRiS2_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93015 +0x00000000     _ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93016 +0x00000000     _ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93017 +0x00000000     _ZN11QuitWatcherC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93018 +0x00000000     _ZN11QuitWatcherC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93019 +0x00000000     _ZN5Lexer23expand_compound_elementEiR19VariableEnvironment      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93020 +0x00000000     _ZN7Element12PUSH_TO_PULLE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93021 +0x00000000     _Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93022 +0x00000000     _ZNK8Truncate10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93023 +0x00000000     _ZNK14MessageElement10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93024 +0x00000000     _ZN7HashMapI9IPAddressjE6insertERKS0_RKj        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93025 +0x00000000     _ZTV7PullTee    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93026 +0x00000000     _ZN8RFC2507c7encodeXEiiPcRi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93027 +0x00000000     _ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93028 +0x00000000     _ZNK11SimpleQueue10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93029 +0x00000000     _ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93030 +0x00000000     _ZTV20StripToNetworkHeader      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93031 +0x00000000     _ZTV13StripIPHeader     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93032 +0x00000000     _ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93033 +0x00000000     _ZN14IPAddrRewriterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93034 +0x00000000     _ZN14IPAddrRewriterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93035 +0x00000000     _ZN7HashMapI8IPFlowIDPvE6resizeEj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93036 +0x00000000     _ZN7HashMapI8IPFlowIDPvE6removeERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93037 +0x00000000     _ZNK17ICMPPingResponder10class_nameEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93038 +0x00000000     _ZN6ShaperC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93039 +0x00000000     _ZN12RandomSample4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93040 +0x00000000     _ZTV5Lexer      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93041 +0x00000000     _ZNK7Element13configurationER6VectorI6StringE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93042 +0x00000000     _ZN5MeterD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93043 +0x00000000     _ZN5MeterC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93044 +0x00000000     _ZN6VectorIiE5eraseEPiS1_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93045 +0x00000000     _ZN6VectorI9IPAddressEC2EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93046 +0x00000000     _ZN6VectorI9IPAddressEC1EiRKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93047 +0x00000000     _Z19click_cleanup_schedv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93048 +0x00000000     _ZNK14LinearIPLookup12lookup_entryE9IPAddress   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93049 +0x00000000     _ZNK12RandomSource10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93050 +0x00000000     _ZN14ICMPPingSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93051 +0x00000000     _ZN14ICMPPingSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93052 +0x00000000     _ZNK12FastUDPFlows10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93053 +0x00000000     _ZN14ComparePackets5checkEP6PacketS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93054 +0x00000000     _ZN13RadixIPLookupD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93055 +0x00000000     _ZN13RadixIPLookupD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93056 +0x00000000     _ZN13RadixIPLookupD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93057 +0x00000000     _ZN13RadixIPLookupC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93058 +0x00000000     _ZN13RadixIPLookupC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93059 +0x00000000     _ZN8NameInfoD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93060 +0x00000000     _ZN8NameInfoD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93061 +0x00000000     _ZN8NameInfoC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93062 +0x00000000     _ZN8NameInfoC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93063 +0x00000000     _ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93064 +0x00000000     _ZN14CheckTCPHeader12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93065 +0x00000000     _ZN11SimpleQueue12read_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93066 +0x00000000     _ZNK3RED13configurationER6VectorI6StringE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93067 +0x00000000     _ZN14PerfCountAccumD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93068 +0x00000000     _ZN14PerfCountAccumC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93069 +0x00000000     _ZN12IPRouteTableD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93070 +0x00000000     _ZN12IPRouteTableD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93071 +0x00000000     _ZNK8IPFilter5flagsEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93072 +0x00000000     _ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93073 +0x00000000     _ZN13DiscardNoFree12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93074 +0x00000000     _ZN6VectorIN7IPTable5EntryEE4at_uEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93075 +0x00000000     _ZNK6Shaper10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93076 +0x00000000     _ZTV16UpstreamNotifier  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93077 +0x00000000     click_fsmode    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93078 +0x00000000     _ZN12ErrorHandler5debugEPKcz    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93079 +0x00000000     _ZNK7Unqueue10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93080 +0x00000000     _ZNK10PullSwitch10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93081 +0x00000000     _ZN10PollDeviceC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93082 +0x00000000     _ZN10LexerExtraD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93083 +0x00000000     _ZN10IPNameInfo17static_initializeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93084 +0x00000000     _ZN12ErrorHandler12ERROR_RESULTE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93085 +0x00000000     cpHandlerCallPtrRead    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93086 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93087 +0x00000000     _ZNK17_HashMap_iteratorI6StringiE5valueEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93088 +0x00000000     _ZN6String14append_garbageEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93089 +0x00000000     _ZTV17ICMPPingResponder /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93090 +0x00000000     _ZN8ClickIno7cleanupEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93091 +0x00000000     cpWriteHandlerCall      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93092 +0x00000000     _Z10cp_integerRK6StringiPi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93093 +0x00000000     _ZN6VectorI6StringE6resizeEiRKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93094 +0x00000000     _ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93095 +0x00000000     _ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93096 +0x00000000     _ZN11NullElementC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93097 +0x00000000     _ZN11NullElementC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93098 +0x00000000     _ZN5Lexer8CompoundD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93099 +0x00000000     _ZN5Lexer8CompoundD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93100 +0x00000000     _ZN12DelayUnqueue12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93101 +0x00000000     _ZN6ToHost14static_cleanupEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93102 +0x00000000     _ZN5Timer10unscheduleEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93103 +0x00000000     _ZN6VectorIiE3endEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93104 +0x00000000     _ZNK12StaticSwitch10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93105 +0x00000000     _ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93106 +0x00000000     _ZTV21LinuxModuleLexerExtra     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93107 +0x00000000     _ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93108 +0x00000000     _Z20cp_va_static_cleanupv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93109 +0x00000000     _ZNK11CheckPacket10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93110 +0x00000000     _ZN6VectorIPvE6resizeEiS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93111 +0x00000000     _ZNK3RED12check_paramsEjjjjP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93112 +0x00000000     _ZN10ARPQuerier11expire_hookEP5TimerPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93113 +0x00000000     _ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93114 +0x00000000     _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93115 +0x00000000     _ZNK7Element4nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93116 +0x00000000     _ZN10CheckCRC32C1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93117 +0x00000000     _ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93118 +0x00000000     _Z10cp_keywordRK6StringPS_S2_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93119 +0x00000000     _ZN15CheckICMPHeaderC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93120 +0x00000000     _ZN10RandomSeedC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93121 +0x00000000     _ZN7HashMapI6StringiE15find_pair_forceERKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93122 +0x00000000     _ZN6VectorI9IPAddressE7reserveEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93123 +0x00000000     _ZNK12RandomSwitch10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93124 +0x00000000     _ZN5PaintD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93125 +0x00000000     _ZN5PaintC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93126 +0x00000000     _ZTV14StaticIPLookup    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93127 +0x00000000     _ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93128 +0x00000000     _ZN8SetCRC3213simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93129 +0x00000000     _ZN10EtherEncapC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93130 +0x00000000     _ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93131 +0x00000000     _ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93132 +0x00000000     _ZN9BitvectoroRERKS_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93133 +0x00000000     _ZN9BitvectoreOERKS_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93134 +0x00000000     _ZN9BitvectoraSERKS_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93135 +0x00000000     _ZN9BitvectoraNERKS_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93136 +0x00000000     _ZN5TimerC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93137 +0x00000000     _ZN8NameInfo14static_cleanupEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93138 +0x00000000     _ZN6String4MemoC1Eii    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93139 +0x00000000     _Z7cp_wordRK6StringPS_S2_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93140 +0x00000000     _ZN6VectorIjE6insertEPjRKj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93141 +0x00000000     _ZN14ActiveNotifierD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93142 +0x00000000     _ZNK12GetIPAddress10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93143 +0x00000000     _ZN10Classifier21redirect_expr_subtreeEiiii     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93144 +0x00000000     _ZN22BandwidthRatedSplitterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93145 +0x00000000     _ZN22BandwidthRatedSplitterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93146 +0x00000000     _ZN22BandwidthRatedSplitterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93147 +0x00000000     _ZN22BandwidthRatedSplitterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93148 +0x00000000     _ZN22BandwidthRatedSplitterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93149 +0x00000000     _ZNK13ConfParseTest10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93150 +0x00000000     _ZTV7Unstrip    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93151 +0x00000000     _ZN13NotifierQueueD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93152 +0x00000000     _ZN13NotifierQueueD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93153 +0x00000000     _ZN13NotifierQueueD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93154 +0x00000000     _ZN13NotifierQueueC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93155 +0x00000000     _ZN13NotifierQueueC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93156 +0x00000000     _ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93157 +0x00000000     _ZN10BpfyFilterD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93158 +0x00000000     _ZNK13QueueYankTest10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93159 +0x00000000     _ZN4IPRw7MappingC2Eb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93160 +0x00000000     _ZN4IPRw7MappingC1Eb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93161 +0x00000000     _ZN8FromHost20set_device_addressesEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93162 +0x00000000     _ZNK13CheckIPHeader10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93163 +0x00000000     _ZN3RED10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93164 +0x00000000     _ZN5Lexer10lex_configEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93165 +0x00000000     _ZNK9IPAddress17unparse_with_maskES_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93166 +0x00000000     _ZN7HashMapI8IPFlowIDPvE4swapERS2_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93167 +0x00000000     _ZTV7Counter    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93168 +0x00000000     _ZN10PullSwitchC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93169 +0x00000000     _ZN14LinearIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93170 +0x00000000     _ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93171 +0x00000000     _ZNK13SetPacketType20can_live_reconfigureEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93172 +0x00000000     _ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93173 +0x00000000     _ZN13IPOutputComboD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93174 +0x00000000     _ZN13IPOutputComboD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93175 +0x00000000     _ZN13IPOutputComboD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93176 +0x00000000     _ZN13IPOutputComboC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93177 +0x00000000     _ZN13IPOutputComboC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93178 +0x00000000     _ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93179 +0x00000000     _ZN16StaticPullSwitchC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93180 +0x00000000     _ZN16StaticPullSwitchC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93181 +0x00000000     _ZN15LookupIPRouteMP10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93182 +0x00000000     _ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93183 +0x00000000     _ZN7Counter9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93184 +0x00000000     _ZN8ARPFaker13make_responseEPhS0_S0_S0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93185 +0x00000000     _ZNK9IPAddress7unparseEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93186 +0x00000000     _ZN14ComparePackets12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93187 +0x00000000     _ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93188 +0x00000000     _ZN14CheckUDPHeader12reason_textsE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93189 +0x00000000     _ZNK10PacketTest10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93190 +0x00000000     _ZN11StringAccum4swapERS_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93191 +0x00000000     _ZN7Discard8run_taskEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93192 +0x00000000     cp_errno        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93193 +0x00000000     _ZN7RIPSendC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93194 +0x00000000     _ZN7RIPSendC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93195 +0x00000000     _ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93196 +0x00000000     _ZN11IPFieldInfo14static_cleanupEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93197 +0x00000000     _ZNK12RatedUnqueue10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93198 +0x00000000     _ZNK7Burster10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93199 +0x00000000     _ZN6Script17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93200 +0x00000000     _ZTV16RoundRobinSwitch  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93201 +0x00000000     _ZNK7Element13configurationEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93202 +0x00000000     _ZNK14CheckUDPHeader10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93203 +0x00000000     _ZNK6VectorIjE8capacityEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93204 +0x00000000     _ZNK6VectorIiE8capacityEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93205 +0x00000000     _ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93206 +0x00000000     _ZNK6VectorI9IPAddressE5emptyEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93207 +0x00000000     _ZN6String12claim_stringEPcii   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93208 +0x00000000     _ZN11EnsureEther8smactionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93209 +0x00000000     _ZN7Element13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93210 +0x00000000     _ZN8CPUQueue4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93211 +0x00000000     _ZN12RouterThreadD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93212 +0x00000000     _ZN12RouterThreadD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93213 +0x00000000     _ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93214 +0x00000000     _ZN10IPRewriterC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93215 +0x00000000     _ZN7Discard10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93216 +0x00000000     _Z8cp_real2RK6StringiPj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93217 +0x00000000     _Z8cp_real2RK6StringiPi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93218 +0x00000000     _ZN10Classifier21bubble_sort_and_exprsEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93219 +0x00000000     _ZN6ShaperD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93220 +0x00000000     _ZNK8PaintTee10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93221 +0x00000000     _ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93222 +0x00000000     _ZN7IPTableD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93223 +0x00000000     _ZN7IPTableD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93224 +0x00000000     _ZNK7Element10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93225 +0x00000000     _ZNK10UDPIPEncap5flagsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93226 +0x00000000     _ZNK8ToDevice10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93227 +0x00000000     _ZNK11TCPRewriter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93228 +0x00000000     _ZNK9StoreData10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93229 +0x00000000     _ZNK9SetIPDSCP10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93230 +0x00000000     _ZN14SchedOrderTestD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93231 +0x00000000     _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93232 +0x00000000     _ZTV8PortInfo   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93233 +0x00000000     srandom /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93234 +0x00000000     _ZTV8FixIPSrc   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93235 +0x00000000     _ZTV8DecIPTTL   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93236 +0x00000000     _ZN6VectorIiE8pop_backEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93237 +0x00000000     _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93238 +0x00000000     _ZN14InfiniteSource12setup_packetEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93239 +0x00000000     _ZN6VectorIN7IPTable5EntryEE2atEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93240 +0x00000000     _ZNK12ErrorElement10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93241 +0x00000000     _ZN12RandomSource12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93242 +0x00000000     _ZN7Element13COMPLETE_FLOWE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93243 +0x00000000     cpArgument      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93244 +0x00000000     _ZNK13RatedSplitter10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93245 +0x00000000     _ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93246 +0x00000000     _ZN8RFC2507c10make_otherEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93247 +0x00000000     _ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93248 +0x00000000     _ZNK16UpstreamNotifier10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93249 +0x00000000     _ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93250 +0x00000000     _ZNK14CheckARPHeader10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93251 +0x00000000     _ZN6SwitchD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93252 +0x00000000     _ZNK6Router20unparse_requirementsER11StringAccumRK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93253 +0x00000000     __cxa_pure_virtual      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93254 +0x00000000     _ZNK11EtherMirror10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93255 +0x00000000     _ZN8DecIPTTL12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93256 +0x00000000     _Z19cp_unparse_intervalRK7timeval       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93257 +0x00000000     _ZNK12SetPerfCount10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93258 +0x00000000     _ZN14InfiniteSource7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93259 +0x00000000     _ZThn60_N11DelayShaperD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93260 +0x00000000     _ZThn60_N11DelayShaperD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93261 +0x00000000     _ZN7HashMapI8IPFlowIDbEC1ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93262 +0x00000000     _ZN7HashMapI6StringiE4swapERS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93263 +0x00000000     _ZN6VectorI6StringE5beginEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93264 +0x00000000     cpIPAddressList /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93265 +0x00000000     _ZN11SimpleQueue4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93266 +0x00000000     _ZNK11CheckLength10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93267 +0x00000000     _Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93268 +0x00000000     _ZNK7Element9flow_codeEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93269 +0x00000000     _ZNK10BpfyFilter10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93270 +0x00000000     _ZN6ScriptD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93271 +0x00000000     _ZN15LookupIPRouteMPD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93272 +0x00000000     _ZN15LookupIPRouteMPD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93273 +0x00000000     _ZNK10CheckCRC3210class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93274 +0x00000000     _ZNK12EtherAddress7unparseEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93275 +0x00000000     _ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93276 +0x00000000     _ZN10ARPQuerier10read_tableEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93277 +0x00000000     _ZN6Master3useEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93278 +0x00000000     _ZN8MarkIPCED2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93279 +0x00000000     _ZN8MarkIPCED1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93280 +0x00000000     _ZN8MarkIPCED0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93281 +0x00000000     _ZN8MarkIPCEC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93282 +0x00000000     _ZN8MarkIPCEC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93283 +0x00000000     _ZN14BigHashMapTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93284 +0x00000000     _ZNK7Unqueue10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93285 +0x00000000     _ZN14ToHostSniffersD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93286 +0x00000000     _ZN14ToHostSniffersC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93287 +0x00000000     _ZN6VectorI6StringE10push_frontERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93288 +0x00000000     _ZTV11EnsureEther       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93289 +0x00000000     _ZNK7Element20can_live_reconfigureEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93290 +0x00000000     _ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93291 +0x00000000     _ZN8RTCycles4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93292 +0x00000000     _ZTV14ActiveNotifier    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93293 +0x00000000     _ZN10Classifier4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93294 +0x00000000     _ZNK7HashMapI8IPFlowIDbE8nbucketsEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93295 +0x00000000     _ZN18RoundRobinIPMapper4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93296 +0x00000000     _ZN14CheckTCPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93297 +0x00000000     _ZN14CheckTCPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93298 +0x00000000     _ZN11SetAnnoByte12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93299 +0x00000000     _ZN11EtherMirrorD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93300 +0x00000000     _ZN11EtherMirrorD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93301 +0x00000000     _ZN11EtherMirrorD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93302 +0x00000000     _ZN13DiscardNoFreeD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93303 +0x00000000     _ZN13DiscardNoFreeD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93304 +0x00000000     _ZN13DiscardNoFreeD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93305 +0x00000000     _ZN13DiscardNoFreeC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93306 +0x00000000     _ZN13DiscardNoFreeC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93307 +0x00000000     _ZN10Classifier18DominatorOptimizer3runEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93308 +0x00000000     _ZTV6ToHost     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93309 +0x00000000     _ZNK7HashMapI6StringiE8nbucketsEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93310 +0x00000000     _ZN10FromDeviceD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93311 +0x00000000     _ZNK8RTCycles10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93312 +0x00000000     _ZNK6Router15context_messageEiPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93313 +0x00000000     _ZN11LinkUnqueue10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93314 +0x00000000     _ZTV14AverageCounter    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93315 +0x00000000     _ZNK11AddressInfo10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93316 +0x00000000     _ZNK7RRSched10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93317 +0x00000000     _ZN11StrideSchedD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93318 +0x00000000     _ZN11StrideSchedD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93319 +0x00000000     _ZN11StrideSchedD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93320 +0x00000000     _ZN14StaticIPLookup12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93321 +0x00000000     _ZN6VectorIN11CiscyFilter4InsnEE7reserveEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93322 +0x00000000     _ZN10VectorTestC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93323 +0x00000000     _ZN11StrideSched7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93324 +0x00000000     _ZN11StringAccum11take_stringEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93325 +0x00000000     _ZN12DelayUnqueue10read_paramEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93326 +0x00000000     _ZNK13RatedSplitter13configurationER6VectorI6StringE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93327 +0x00000000     click_assert_failed     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93328 +0x00000000     _ZN6VectorIN5Lexer11ElementTypeEED1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93329 +0x00000000     _ZN5Lexer5unlexERK6Lexeme       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93330 +0x00000000     _Z11cp_unargvecRK6VectorI6StringE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93331 +0x00000000     _ZN16UpstreamNotifier9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93332 +0x00000000     _ZNK14ComparePackets10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93333 +0x00000000     _ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93334 +0x00000000     _ZN18SourceIPHashMapper4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93335 +0x00000000     _ZN16SetRandIPAddress4pickEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93336 +0x00000000     _ZNK11PaintSwitch13configurationER6VectorI6StringE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93337 +0x00000000     _ZN7Element17set_handler_flagsERK6Stringi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93338 +0x00000000     _ZNK6VectorIN6Router6HookupEE8capacityEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93339 +0x00000000     _ZN16ICMPPingRewriterC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93340 +0x00000000     _ZN16ICMPPingRewriterC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93341 +0x00000000     _ZN10CheckPaintC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93342 +0x00000000     _ZN14CheckARPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93343 +0x00000000     _ZN14CheckARPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93344 +0x00000000     _ZTV12SetTimestamp      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93345 +0x00000000     _ZNK8SetCRC3210processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93346 +0x00000000     _ZN13RatedSplitter4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93347 +0x00000000     _ZNK13FTPPortMapper10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93348 +0x00000000     _ZN6VectorI6StringE4backEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93349 +0x00000000     _ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93350 +0x00000000     _ZNK10PollDevice10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93351 +0x00000000     _ZN12FastTCPFlows12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93352 +0x00000000     _ZNK10ARPQuerier20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93353 +0x00000000     _ZN14ComparePackets10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93354 +0x00000000     _ZNK12RandomSample10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93355 +0x00000000     _ZN6VectorI7IPRouteE5eraseEPS0_S2_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93356 +0x00000000     _ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93357 +0x00000000     _ZN11TCPRewriter5llrpcEjPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93358 +0x00000000     _ZN6Router16element_hindexesEPK7ElementR6VectorIiE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93359 +0x00000000     _ZNK16RoundRobinSwitch10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93360 +0x00000000     _ZN12PokeHandlers3addEP7ElementRK6StringS4_i    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93361 +0x00000000     _ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93362 +0x00000000     _ZNK13SetCycleCount10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93363 +0x00000000     _ZNK4Idle10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93364 +0x00000000     _ZNK17DynamicUDPIPEncap10processingEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93365 +0x00000000     _ZNK6VectorIjE5emptyEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93366 +0x00000000     _ZNK6VectorIiE5emptyEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93367 +0x00000000     _ZN8PaintTeeD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93368 +0x00000000     _ZN8PaintTeeD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93369 +0x00000000     _ZN8PaintTeeD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93370 +0x00000000     _ZN8PaintTeeC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93371 +0x00000000     _ZN8PaintTeeC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93372 +0x00000000     _ZTV5Paint      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93373 +0x00000000     cpBool  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93374 +0x00000000     _ZNK6VectorI9IPAddressEixEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93375 +0x00000000     _ZNK7PullTee10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93376 +0x00000000     _ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93377 +0x00000000     _ZN9Bitvector23finish_copy_constructorERKS_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93378 +0x00000000     _ZNK13FullNoteQueue10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93379 +0x00000000     _ZN10FromDevice12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93380 +0x00000000     _ZN12DelayUnqueue10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93381 +0x00000000     _ZTV11NullElement       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93382 +0x00000000     _ZN4Idle4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93383 +0x00000000     _Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93384 +0x00000000     _ZN13QueueYankTestD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93385 +0x00000000     _ZN13QueueYankTestD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93386 +0x00000000     _ZN13QueueYankTestD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93387 +0x00000000     _ZN13QueueYankTestC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93388 +0x00000000     _ZN13QueueYankTestC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93389 +0x00000000     _ZNK15CheckICMPHeader10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93390 +0x00000000     _ZN7HashMapI6StringiE6resizeEj  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93391 +0x00000000     _ZN6VectorI6StringE5eraseEPS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93392 +0x00000000     _Z9cp_real10RK6StringiiPj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93393 +0x00000000     _ZNK7Burster10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93394 +0x00000000     _ZNK12ARPResponder10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93395 +0x00000000     _ZN6VectorIiE5beginEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93396 +0x00000000     _ZN10PollDeviceD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93397 +0x00000000     _ZN17CastElementFilterC2ERK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93398 +0x00000000     _ZN17CastElementFilterC1ERK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93399 +0x00000000     _ZN14DropBroadcastsD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93400 +0x00000000     _ZN12SetPerfCount4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93401 +0x00000000     _ZNK8DRRSched10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93402 +0x00000000     _ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93403 +0x00000000     _ZN8NameInfo9query_intEjPK7ElementRK6StringPj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93404 +0x00000000     _ZNK15HostEtherFilter10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93405 +0x00000000     _ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93406 +0x00000000     _ZN6Script10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93407 +0x00000000     _ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93408 +0x00000000     _ZNK12IPClassifier10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93409 +0x00000000     _ZNK12DelayUnqueue10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93410 +0x00000000     _ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93411 +0x00000000     _ZNK16StaticPullSwitch10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93412 +0x00000000     _ZN12ErrorHandler5fatalEPKcz    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93413 +0x00000000     _ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93414 +0x00000000     _ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93415 +0x00000000     _ZNK13SetIPChecksum10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93416 +0x00000000     _ZN11LinkUnqueue12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93417 +0x00000000     _ZNK9CPUSwitch10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93418 +0x00000000     _ZNK6VectorIN6Router6HookupEE4backEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93419 +0x00000000     _ZNK12StaticSwitch10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93420 +0x00000000     _ZN10CheckCRC32D0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93421 +0x00000000     _ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93422 +0x00000000     _ZN11SetAnnoByteC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93423 +0x00000000     _ZN11SetAnnoByteC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93424 +0x00000000     _ZN15CycleCountAccumC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93425 +0x00000000     _ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93426 +0x00000000     _ZN10RandomSeedD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93427 +0x00000000     _ZN10EtherEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93428 +0x00000000     _ZNK6VectorIN6Router6HookupEEixEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93429 +0x00000000     _ZNK11LinkUnqueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93430 +0x00000000     _ZN12IPRouteTable4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93431 +0x00000000     _ZNK10HashSwitch10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93432 +0x00000000     _ZNK10CheckPaint10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93433 +0x00000000     _ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93434 +0x00000000     _ZN7HashMapI6StringiE11findp_forceERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93435 +0x00000000     _ZNK14SetTCPChecksum10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93436 +0x00000000     _ZN6Script8add_insnEiiiRK6String        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93437 +0x00000000     _ZN10EtherEncapD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93438 +0x00000000     _ZNK12StrideSwitch10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93439 +0x00000000     _ZNK6VectorIN6Router6HookupEE5beginEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93440 +0x00000000     _ZNK6VectorI6StringE4backEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93441 +0x00000000     _ZN15PushNullElementD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93442 +0x00000000     _ZN15PullNullElementD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93443 +0x00000000     _ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93444 +0x00000000     _ZN11StringAccum8snprintfEiPKcz /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93445 +0x00000000     _ZN14SortedIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93446 +0x00000000     _ZN14SortedIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93447 +0x00000000     _ZNK14InfiniteSource10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93448 +0x00000000     _ZN10CrapFilterD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93449 +0x00000000     click_master    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93450 +0x00000000     _ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93451 +0x00000000     _ZN7IPEncap12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93452 +0x00000000     _ZNK11SetAnnoByte20can_live_reconfigureEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93453 +0x00000000     _ZNK8RFC2507d10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93454 +0x00000000     _ZNK8RFC2507c10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93455 +0x00000000     _ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93456 +0x00000000     _ZNK10ARPQuerier10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93457 +0x00000000     _ZN5Align4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93458 +0x00000000     _ZN10UDPIPEncapC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93459 +0x00000000     _ZN6VectorIN6Router6HookupEE3endEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93460 +0x00000000     _ZN4Task10initializeEP6Routerb  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93461 +0x00000000     _ZN10PullSwitch12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93462 +0x00000000     _ZN5Lexer7ytunnelEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93463 +0x00000000     _ZN13IPReassembler5checkEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93464 +0x00000000     _ZNK12GetIPAddress10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93465 +0x00000000     _ZN7Element4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93466 +0x00000000     _ZNK8CPUQueue10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93467 +0x00000000     _ZNK12CompareBlock10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93468 +0x00000000     _ZN10PollDevice12reset_countsEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93469 +0x00000000     _ZN18PrefixErrorHandlerD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93470 +0x00000000     _ZNK7Unstrip10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93471 +0x00000000     _ZN10PullSwitchD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93472 +0x00000000     _ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93473 +0x00000000     _ZNK10EtherEncap10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93474 +0x00000000     _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93475 +0x00000000     _ZN6VectorIjE2atEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93476 +0x00000000     _ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93477 +0x00000000     _ZN6Router14add_connectionEiiii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93478 +0x00000000     _ZN18KernelErrorHandlerD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93479 +0x00000000     _ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93480 +0x00000000     _ZTV13FastUDPSource     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93481 +0x00000000     _ZNK12FastTCPFlows10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93482 +0x00000000     _ZNK8ARPPrint10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93483 +0x00000000     _ZN10IPRewriter21dump_patterns_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93484 +0x00000000     _ZN7Element12connect_portEbiPS_i        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93485 +0x00000000     _Z14cp_is_click_idRK6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93486 +0x00000000     _ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93487 +0x00000000     _ZN11CheckLengthD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93488 +0x00000000     _ZN11CheckLengthD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93489 +0x00000000     _ZN11CheckLengthD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93490 +0x00000000     _ZNK18IPAddrPairRewriter10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93491 +0x00000000     _ZNK7Counter10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93492 +0x00000000     _ZTV14PerfCountAccum    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93493 +0x00000000     _Z13cp_ip_addressRK6StringP9IPAddressP7Element  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93494 +0x00000000     _ZNK7RRSched10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93495 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC2EiRKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93496 +0x00000000     _ZNK15CycleCountAccum10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93497 +0x00000000     _ZN7Unqueue8run_taskEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93498 +0x00000000     _ZN12RandomSource10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93499 +0x00000000     _ZN6Master15process_pendingEP12RouterThread     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93500 +0x00000000     _ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93501 +0x00000000     _ZN10IPRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93502 +0x00000000     cpShort /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93503 +0x00000000     _ZN9Bitvector18or_with_differenceERKS_RS_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93504 +0x00000000     _ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93505 +0x00000000     _ZN10IPRewriterD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93506 +0x00000000     _ZN14InfiniteSource4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93507 +0x00000000     _ZNK17ICMPPingResponder10processingEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93508 +0x00000000     _ZN17DynamicUDPIPEncap13simple_actionEP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93509 +0x00000000     _ZNK12ScheduleInfo15configure_phaseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93510 +0x00000000     _ZNK13RadixIPLookup10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93511 +0x00000000     _ZN7Unqueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93512 +0x00000000     _ZNK10UDPIPEncap10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93513 +0x00000000     _ZN9TimedSinkD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93514 +0x00000000     _ZN9TimedSinkD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93515 +0x00000000     _ZN9TimedSinkD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93516 +0x00000000     _ZN9TimedSinkC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93517 +0x00000000     _ZN9TimedSinkC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93518 +0x00000000     _ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93519 +0x00000000     _ZTV8MarkIPCE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93520 +0x00000000     _ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93521 +0x00000000     _ZN8ARPFaker10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93522 +0x00000000     _Z19cp_expand_in_quotesRK6Stringi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93523 +0x00000000     _ZNK7HashMapI9IPAddressjE5emptyEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93524 +0x00000000     _ZN15RandomBitErrorsC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93525 +0x00000000     _ZN18IPRewriterPatternsD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93526 +0x00000000     _ZN18IPRewriterPatternsC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93527 +0x00000000     _ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93528 +0x00000000     _ZN14StaticIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93529 +0x00000000     _ZN14StaticIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93530 +0x00000000     _ZN6Switch9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93531 +0x00000000     strtol  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93532 +0x00000000     _ZNK7Unqueue10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93533 +0x00000000     _ZN12ErrorHandler6lfatalERK6StringPKcz  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93534 +0x00000000     _ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93535 +0x00000000     _ZN17DynamicUDPIPEncapD2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93536 +0x00000000     _ZN17DynamicUDPIPEncapD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93537 +0x00000000     _ZN17DynamicUDPIPEncapD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93538 +0x00000000     _ZN17DynamicUDPIPEncapC2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93539 +0x00000000     _ZN17DynamicUDPIPEncapC1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93540 +0x00000000     _ZN15SpinlockRelease13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93541 +0x00000000     _ZN16ICMPPingRewriter10initializeEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93542 +0x00000000     _ZNK13ICMPPingEncap10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93543 +0x00000000     _Z10cp_unquoteRK6String /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93544 +0x00000000     _ZNK8Truncate10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93545 +0x00000000     _ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93546 +0x00000000     _ZN6Router21check_hookup_elementsEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93547 +0x00000000     _ZN12GetIPAddress13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93548 +0x00000000     _ZNK6Switch10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93549 +0x00000000     _ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93550 +0x00000000     _ZN6VectorI6StringE7reserveEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93551 +0x00000000     _ZNK15CycleCountAccum10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93552 +0x00000000     _ZN6Script9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93553 +0x00000000     _ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93554 +0x00000000     _ZN11DelayShaper4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93555 +0x00000000     _ZN12AnyDeviceMap10initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93556 +0x00000000     _ZN6VectorIiEC2ERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93557 +0x00000000     _ZN10PullSwitch5llrpcEjPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93558 +0x00000000     _ZN6VectorIiEaSERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93559 +0x00000000     _ZN6VectorIiEC1ERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93560 +0x00000000     _ZN10Classifier18start_expr_subtreeER6VectorIiE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93561 +0x00000000     _ZN13SetIPChecksumD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93562 +0x00000000     _ZN13SetIPChecksumD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93563 +0x00000000     _ZN13SetIPChecksumD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93564 +0x00000000     _ZN13SetIPChecksumC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93565 +0x00000000     _ZN13SetIPChecksumC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93566 +0x00000000     _ZN11LinkUnqueueC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93567 +0x00000000     _ZN11LinkUnqueueC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93568 +0x00000000     _ZN6VectorIN7IPTable5EntryEE5beginEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93569 +0x00000000     cpInterval      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93570 +0x00000000     _ZNK6VectorIjE4at_uEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93571 +0x00000000     _ZNK6VectorIiE4at_uEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93572 +0x00000000     _ZN7HashMapI6StringiEaSERKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93573 +0x00000000     _ZN7HashMapI6StringiEC2ERKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93574 +0x00000000     _ZN7HashMapI6StringiEC1ERKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93575 +0x00000000     _ZNK7PullTee10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93576 +0x00000000     _ZNK12SetPerfCount10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93577 +0x00000000     _ZN14InfiniteSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93578 +0x00000000     _ZN14InfiniteSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93579 +0x00000000     _ZN12IPFragmenter12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93580 +0x00000000     _ZTV15UnstripIPHeader   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93581 +0x00000000     _ZN15RecycledSkbPool10initializeEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93582 +0x00000000     _ZNK13IPOutputCombo10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93583 +0x00000000     _ZN6ToHost7cleanupEN7Element12CleanupStageE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93584 +0x00000000     _ZN12SetTimestamp13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93585 +0x00000000     _ZN5Strip9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93586 +0x00000000     _ZN11EtherMirror13simple_actionEP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93587 +0x00000000     _ZNK6Router4findERK6StringS0_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93588 +0x00000000     _ZN16UpstreamNotifier4castEPKc  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93589 +0x00000000     _ZN14SchedOrderTest12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93590 +0x00000000     _ZN18RoundRobinIPMapperD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93591 +0x00000000     _ZN7HashMapI6StringiE5beginEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93592 +0x00000000     _ZN3RED11should_dropEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93593 +0x00000000     _ZN7Element7cleanupENS_12CleanupStageE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93594 +0x00000000     _ZN8ARPPrintD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93595 +0x00000000     _ZN8ARPPrintD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93596 +0x00000000     _ZN8ARPPrintD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93597 +0x00000000     _ZN8ARPPrintC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93598 +0x00000000     _ZN8ARPPrintC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93599 +0x00000000     _ZN9StoreData13simple_actionEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93600 +0x00000000     _ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93601 +0x00000000     _ZN10IPRewriter5llrpcEjPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93602 +0x00000000     cpArguments     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93603 +0x00000000     _ZN10ClassifierC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93604 +0x00000000     _ZNK6VectorIN6Router6HookupEE3endEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93605 +0x00000000     _ZN10PacketTestC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93606 +0x00000000     _ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93607 +0x00000000     _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93608 +0x00000000     _ZN6VectorI6StringE9push_backERKS0_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93609 +0x00000000     _ZTV9SetIPDSCP  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93610 +0x00000000     _ZN7Handler17the_blank_handlerE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93611 +0x00000000     _ZN10IPRewriter11udp_gc_hookEP5TimerPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93612 +0x00000000     _ZN10IPRewriter11tcp_gc_hookEP5TimerPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93613 +0x00000000     _ZNK10Classifier10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93614 +0x00000000     _ZTV14CheckIPHeader2    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93615 +0x00000000     _ZNK7HashMapI6StringiE4findERKS0_RKi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93616 +0x00000000     _ZN6Router15force_name_infoEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93617 +0x00000000     _ZN5PrintD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93618 +0x00000000     _ZN5PrintC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93619 +0x00000000     _ZN10FromDevice7got_skbEP7sk_buff       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93620 +0x00000000     _ZN15UnstripIPHeaderC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93621 +0x00000000     _ZN10Suppressor10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93622 +0x00000000     _ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93623 +0x00000000     _ZN12FastTCPFlows10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93624 +0x00000000     cpString        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93625 +0x00000000     _ZN10VectorTestD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93626 +0x00000000     _ZN6VectorIN6Router6HookupEE6resizeEiRKS1_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93627 +0x00000000     _ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93628 +0x00000000     _ZN8TruncateD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93629 +0x00000000     _ZN8TruncateD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93630 +0x00000000     _ZN8TruncateD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93631 +0x00000000     _ZN8TruncateC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93632 +0x00000000     _ZN8TruncateC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93633 +0x00000000     _ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93634 +0x00000000     _ZNK11SimpleQueue10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93635 +0x00000000     _ZN8IPMapperD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93636 +0x00000000     _ZN8IPMapperD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93637 +0x00000000     _ZN4Task11add_pendingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93638 +0x00000000     _ZN18SourceIPHashMapperD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93639 +0x00000000     _ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93640 +0x00000000     _ZN14AverageCounterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93641 +0x00000000     _ZN14AverageCounterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93642 +0x00000000     _ZNK9IPAddress18mask_to_prefix_lenEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93643 +0x00000000     _ZTV16BaseErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93644 +0x00000000     _ZN11CiscyFilterD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93645 +0x00000000     _ZN11CiscyFilterD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93646 +0x00000000     _ZN11CiscyFilterD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93647 +0x00000000     cpIgnore        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93648 +0x00000000     _ZTV8Notifier   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93649 +0x00000000     _ZN7DiscardD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93650 +0x00000000     _ZN7DiscardD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93651 +0x00000000     _ZN7DiscardD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93652 +0x00000000     _ZN10CheckPaintD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93653 +0x00000000     _ZNK7Burster10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93654 +0x00000000     _ZNK10RandomSeed15configure_phaseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93655 +0x00000000     _ZN6VectorIN7IPTable5EntryEE5clearEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93656 +0x00000000     _ZNK6Router19unparse_connectionsER11StringAccumRK6String        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93657 +0x00000000     _ZN14FrontDropQueue4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93658 +0x00000000     _ZTV10VectorTest        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93659 +0x00000000     _ZTV10RandomSeed        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93660 +0x00000000     _ZN8SortTest10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93661 +0x00000000     _Z10cp_integerRK6StringiPx      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93662 +0x00000000     _ZN6VectorIiED2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93663 +0x00000000     _ZN6VectorIiEC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93664 +0x00000000     _ZN6VectorIiEC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93665 +0x00000000     _ZN6VectorIiE10push_frontERKi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93666 +0x00000000     _ZN3RED14read_parameterEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93667 +0x00000000     _ZN5LexerD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93668 +0x00000000     _ZN5LexerC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93669 +0x00000000     _ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93670 +0x00000000     _ZN6VectorIiED1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93671 +0x00000000     _ZN6Router6HookupC1Eii  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93672 +0x00000000     _ZNK11RatedSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93673 +0x00000000     _ZNK11PaintSwitch10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93674 +0x00000000     _ZN6VectorI9IPAddressE9push_backERKS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93675 +0x00000000     _ZN16SetRandIPAddressC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93676 +0x00000000     _ZN16SetRandIPAddressC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93677 +0x00000000     _ZN15RandomBitErrors13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93678 +0x00000000     _ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93679 +0x00000000     _ZN12FastTCPFlows8NO_LIMITE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93680 +0x00000000     _ZNK7Unstrip10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93681 +0x00000000     _ZN7RIPSend9run_timerEP5Timer   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93682 +0x00000000     _ZN8NameInfo6namedbEjiRK6StringP6NameDB /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93683 +0x00000000     _ZN8NameInfo17static_initializeEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93684 +0x00000000     _ZN12ARPResponder12read_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93685 +0x00000000     _ZNK6Router7unparseER11StringAccumRK6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93686 +0x00000000     _ZN13FastUDPSource5resetEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93687 +0x00000000     _ZN6VectorIN10BpfyFilter4InsnEE7reserveEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93688 +0x00000000     _ZN6VectorIN10Classifier4ExprEE7reserveEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93689 +0x00000000     _ZN4TaskD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93690 +0x00000000     _ZN4TaskD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93691 +0x00000000     _ZN12PokeHandlers10timer_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93692 +0x00000000     _ZN10IPNameInfo14static_cleanupEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93693 +0x00000000     _ZNK8FromHost10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93694 +0x00000000     _ZNK9Bitvector20nonzero_intersectionERKS_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93695 +0x00000000     _ZN13FTPPortMapper10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93696 +0x00000000     _ZNK7Counter10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93697 +0x00000000     _ZNK14CheckTCPHeader10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93698 +0x00000000     _ZN8Unqueue2D2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93699 +0x00000000     _ZN8Unqueue2D1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93700 +0x00000000     _ZN8Unqueue2D0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93701 +0x00000000     _ZN8Unqueue2C2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93702 +0x00000000     _ZN8Unqueue2C1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93703 +0x00000000     _ZN3Tee9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93704 +0x00000000     _ZN5StripD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93705 +0x00000000     _ZN5StripC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93706 +0x00000000     _ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93707 +0x00000000     _ZTV8PaintTee   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93708 +0x00000000     _ZlsR11StringAccumRKN10Classifier4ExprE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93709 +0x00000000     _ZN10Classifier14optimize_exprsEP12ErrorHandleri        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93710 +0x00000000     _ZN5Timer14schedule_afterERK9Timestamp  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93711 +0x00000000     _ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93712 +0x00000000     _ZN8IPFilter9Primitive5clearEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93713 +0x00000000     _Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93714 +0x00000000     _ZNK13QueueYankTest10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93715 +0x00000000     _ZTV11SetAnnoByte       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93716 +0x00000000     _ZN14LinearIPLookup10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93717 +0x00000000     _ZNK8FromHost15configure_phaseEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93718 +0x00000000     _ZNK13CheckIPHeader10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93719 +0x00000000     _ZN19VariableEnvironmentD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93720 +0x00000000     _ZNK6VectorI9IPAddressE4backEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93721 +0x00000000     _ZTV3RED        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93722 +0x00000000     _ZTV10PullSwitch        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93723 +0x00000000     _ZNK8IPMirror10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93724 +0x00000000     _ZN8IPFlowIDC2EPK6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93725 +0x00000000     _ZN8IPFlowIDC1EPK6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93726 +0x00000000     click_cleanup_packages  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93727 +0x00000000     _ZNK11DelayShaper10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93728 +0x00000000     _ZNK11CiscyFilter10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93729 +0x00000000     _ZNK7HashMapI9IPAddressjE8nbucketsEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93730 +0x00000000     _ZNK12ARPResponder10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93731 +0x00000000     _ZN7MSQueue12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93732 +0x00000000     _ZN13CheckIPHeader17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93733 +0x00000000     _ZNK6ToHost10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93734 +0x00000000     _ZN5PaintD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93735 +0x00000000     _ZN15LookupIPRouteMP4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93736 +0x00000000     _ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93737 +0x00000000     _Z24click_check_header_sizesv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93738 +0x00000000     _ZN14CheckUDPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93739 +0x00000000     _ZN14CheckUDPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93740 +0x00000000     _ZNK9PrioSched10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93741 +0x00000000     _ZN12PokeHandlers7unpauseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93742 +0x00000000     _ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93743 +0x00000000     _ZNK19VariableEnvironment5valueERK6StringRb     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93744 +0x00000000     _ZN7IPPrintC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93745 +0x00000000     _ZN7IPPrintC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93746 +0x00000000     _ZN12IPInputComboD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93747 +0x00000000     _ZN12IPInputComboD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93748 +0x00000000     _ZN12IPInputComboD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93749 +0x00000000     _ZN12IPInputComboC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93750 +0x00000000     _ZN12IPInputComboC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93751 +0x00000000     _ZN6VectorI6StringE6insertEPS0_RKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93752 +0x00000000     _ZN12RatedUnqueue12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93753 +0x00000000     _ZNK5Paint10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93754 +0x00000000     _Z11cp_ip_route6StringP7IPRoutebP7Element       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93755 +0x00000000     _ZN19VariableEnvironmentC2EPS_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93756 +0x00000000     _ZNK8Unqueue210port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93757 +0x00000000     _ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93758 +0x00000000     _ZNK12DelayUnqueue10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93759 +0x00000000     cpHandlerCallRead       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93760 +0x00000000     _Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93761 +0x00000000     _ZN7HashMapI6StringiE5clearEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93762 +0x00000000     _ZNK4Task6masterEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93763 +0x00000000     _ZNK13ScheduleLinux10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93764 +0x00000000     _ZN12RouterThreadC2EP6Masteri   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93765 +0x00000000     _ZN12RouterThreadC1EP6Masteri   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93766 +0x00000000     _ZNK7Element15hotswap_elementEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93767 +0x00000000     _ZN7Element16initialize_portsEPKiS1_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93768 +0x00000000     _ZN15CheckICMPHeaderD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93769 +0x00000000     _ZN15CheckICMPHeaderD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93770 +0x00000000     _ZN12SetIPAddressD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93771 +0x00000000     _ZN12SetIPAddressD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93772 +0x00000000     _ZN12SetIPAddressD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93773 +0x00000000     _ZN12SetIPAddressC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93774 +0x00000000     _ZN12SetIPAddressC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93775 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE5frontEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93776 +0x00000000     _ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93777 +0x00000000     _ZN9Bitvector5clearEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93778 +0x00000000     _ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93779 +0x00000000     _ZN17RecycledSkbBucket7cleanupEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93780 +0x00000000     _ZTV14MessageElement    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93781 +0x00000000     _ZN13AlignmentInfoD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93782 +0x00000000     _ZN13AlignmentInfoD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93783 +0x00000000     _ZN13AlignmentInfoD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93784 +0x00000000     _ZN13AlignmentInfoC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93785 +0x00000000     _ZN13AlignmentInfoC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93786 +0x00000000     _ZN14SchedOrderTest10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93787 +0x00000000     _ZNK7RRSched10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93788 +0x00000000     _ZN14ICMPPingSource4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93789 +0x00000000     _ZN9Bitvector6assignEib /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93790 +0x00000000     _ZNK14AverageCounter10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93791 +0x00000000     _ZN6StringC2Ey  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93792 +0x00000000     _ZN6StringC2Ex  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93793 +0x00000000     _ZN6StringC2Em  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93794 +0x00000000     _ZN6StringC2El  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93795 +0x00000000     _ZN6StringC2Ej  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93796 +0x00000000     _ZN6StringC2Ei  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93797 +0x00000000     _ZdlPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93798 +0x00000000     _ZdaPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93799 +0x00000000     _ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93800 +0x00000000     _ZN10HashSwitchD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93801 +0x00000000     _ZN14BandwidthMeterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93802 +0x00000000     _ZN6VectorIPvED2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93803 +0x00000000     _ZNK5Paint10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93804 +0x00000000     _ZN12ErrorElement10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93805 +0x00000000     _Z9cp_expandRK6StringR16VariableExpanderb       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93806 +0x00000000     _ZN6VectorIiE4swapERS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93807 +0x00000000     _ZN6VectorIN6Router6HookupEED2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93808 +0x00000000     _ZN6VectorIN6Router6HookupEEC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93809 +0x00000000     _ZN6Script8ExpanderD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93810 +0x00000000     _ZN6VectorI6StringE6assignEiRKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93811 +0x00000000     _ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93812 +0x00000000     _ZN7Element9PORTS_1_0E  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93813 +0x00000000     _ZN7Element9PORTS_0_0E  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93814 +0x00000000     _ZN6Packet14expensive_pushEj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93815 +0x00000000     _Z10cp_integerPKcS0_iPy /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93816 +0x00000000     _Z10cp_integerPKcS0_iPx /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93817 +0x00000000     _Z10cp_integerPKcS0_iPj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93818 +0x00000000     _Z10cp_integerPKcS0_iPi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93819 +0x00000000     _ZNK13RatedSplitter10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93820 +0x00000000     _ZN9PrioSched4pullEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93821 +0x00000000     _ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93822 +0x00000000     _ZN10Classifier18DominatorOptimizer12shift_branchEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93823 +0x00000000     _ZN10UDPIPEncapD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93824 +0x00000000     _ZN6VectorI9IPAddressE4swapERS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93825 +0x00000000     _ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93826 +0x00000000     _ZN15CheckICMPHeader12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93827 +0x00000000     _ZNK14SetUDPChecksum10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93828 +0x00000000     _ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93829 +0x00000000     _ZN12CompareBlockD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93830 +0x00000000     _ZN12CompareBlockD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93831 +0x00000000     _ZN12CompareBlockD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93832 +0x00000000     _ZN12CompareBlockC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93833 +0x00000000     _ZN12CompareBlockC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93834 +0x00000000     _ZN5Lexer9ycompoundE6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93835 +0x00000000     _ZNK10FromDevice10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93836 +0x00000000     _ZN10CheckCRC3213simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93837 +0x00000000     _ZN3REDD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93838 +0x00000000     _ZN3REDD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93839 +0x00000000     _ZN3REDD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93840 +0x00000000     _ZN3REDC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93841 +0x00000000     _ZN3REDC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93842 +0x00000000     _ZN7Element4PULLE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93843 +0x00000000     _ZNK12CompareBlock10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93844 +0x00000000     _ZN7HashMapI8IPFlowIDbE6removeERKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93845 +0x00000000     _ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93846 +0x00000000     _ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93847 +0x00000000     _ZN8CPUQueue12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93848 +0x00000000     _ZN10ARPQuerier10read_statsEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93849 +0x00000000     _ZNK6VectorI9IPAddressE4sizeEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93850 +0x00000000     _ZN7IPEncap10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93851 +0x00000000     _ZN13ElementFilter6filterER6VectorIP7ElementE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93852 +0x00000000     _ZN14ActiveNotifier15remove_listenerEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93853 +0x00000000     _ZTV5Meter      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93854 +0x00000000     _ZNK8ARPFaker10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93855 +0x00000000     _Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93856 +0x00000000     _ZTV6Shaper     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93857 +0x00000000     _ZNK15LookupIPRouteMP10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93858 +0x00000000     _ZNK12FastTCPFlows10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93859 +0x00000000     _ZN12PokeHandlers11STOP_MARKERE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93860 +0x00000000     _ZTV12MarkIPHeader      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93861 +0x00000000     _ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93862 +0x00000000     _ZNK12ICMPRewriter10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93863 +0x00000000     _ZNK6VectorI6StringEixEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93864 +0x00000000     _ZNK11IPGWOptions10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93865 +0x00000000     _ZN12FastUDPFlows4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93866 +0x00000000     _ZN10BpfyFilter10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93867 +0x00000000     _ZTV9CPUSwitch  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93868 +0x00000000     _Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93869 +0x00000000     _ZNK7PullTee10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93870 +0x00000000     _ZNK15PushNullElement10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93871 +0x00000000     _ZNK15PullNullElement10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93872 +0x00000000     _ZTV13DynamicNameDB     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93873 +0x00000000     _ZNK12IPInputCombo10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93874 +0x00000000     _ZN14ComparePackets12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93875 +0x00000000     _ZN5Lexer8Compound6finishEPS_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93876 +0x00000000     _ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93877 +0x00000000     _ZN11TCPRewriter4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93878 +0x00000000     _ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93879 +0x00000000     _ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93880 +0x00000000     _ZN16UpstreamNotifierD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93881 +0x00000000     _ZN16UpstreamNotifierD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93882 +0x00000000     _ZN16UpstreamNotifierD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93883 +0x00000000     _ZN7Element8AGNOSTICE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93884 +0x00000000     _ZNK10Classifier4Expr15not_implies_notERKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93885 +0x00000000     _ZN6VectorI7IPRouteED1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93886 +0x00000000     _ZN7Counter12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93887 +0x00000000     _Z16cp_unparse_real2ii  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93888 +0x00000000     _Z17click_init_configv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93889 +0x00000000     _ZN7HashMapI6StringiE6removeERKS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93890 +0x00000000     _ZN8CPUQueue4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93891 +0x00000000     _ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93892 +0x00000000     _ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93893 +0x00000000     _ZN8Notifier13FULL_NOTIFIERE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93894 +0x00000000     _ZN14MessageElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93895 +0x00000000     _ZN7IPFieldC2Eiii       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93896 +0x00000000     _ZN7IPFieldC1Eiii       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93897 +0x00000000     _ZNK12SpinlockInfo15configure_phaseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93898 +0x00000000     _ZN7UnstripD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93899 +0x00000000     _ZN7UnstripD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93900 +0x00000000     _ZN7UnstripD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93901 +0x00000000     _ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93902 +0x00000000     _ZN6VectorIN6Router6HookupEE4veltEPS1_i /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93903 +0x00000000     _ZN5Lexer11get_elementE6StringiRKS0_S2_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93904 +0x00000000     _ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93905 +0x00000000     _Z15cp_unparse_boolb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93906 +0x00000000     _ZN20StripToNetworkHeaderC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93907 +0x00000000     _ZN20StripToNetworkHeaderC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93908 +0x00000000     _ZN14StoreIPAddressD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93909 +0x00000000     _ZN14StoreIPAddressC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93910 +0x00000000     _ZNK15LookupIPRouteMP10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93911 +0x00000000     _ZN12ErrorHandler13prepend_linesERK6StringS2_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93912 +0x00000000     _ZN10Classifier25combine_compatible_statesEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93913 +0x00000000     _ZN7Burster9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93914 +0x00000000     _ZN9TimedSink10initializeEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93915 +0x00000000     _ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93916 +0x00000000     _ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93917 +0x00000000     _ZN8ToDevice10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93918 +0x00000000     _ZNK15PushNullElement10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93919 +0x00000000     _ZNK15PullNullElement10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93920 +0x00000000     _ZN5Lexer9skip_lineEPKc /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93921 +0x00000000     _Z19cp_seconds_as_microRK6StringPj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93922 +0x00000000     _ZN8RTCycles12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93923 +0x00000000     _ZNK12IPFragmenter10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93924 +0x00000000     _ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93925 +0x00000000     _ZN10FromDeviceC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93926 +0x00000000     _ZN12ErrorHandler8lmessageERK6StringPKcz        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93927 +0x00000000     _ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93928 +0x00000000     _Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93929 +0x00000000     _ZNK23_HashMap_const_iteratorI6StringiE4pairEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93930 +0x00000000     _ZNK23_HashMap_const_iteratorI6StringiE4liveEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93931 +0x00000000     _ZTV10BpfyFilter        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93932 +0x00000000     _Z24dev_get_by_ether_addressRK6StringP7Element  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93933 +0x00000000     _ZNK7HashMapI8IPFlowIDbE6bucketERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93934 +0x00000000     _ZN7HashMapI9IPAddressjE3endEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93935 +0x00000000     _ZN6VectorIN6Router6HookupEE9pop_frontEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93936 +0x00000000     _ZN7MSQueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93937 +0x00000000     _ZN7MSQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93938 +0x00000000     _ZNK16BaseErrorHandler7nerrorsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93939 +0x00000000     _ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93940 +0x00000000     _ZN6VectorI6StringE4swapERS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93941 +0x00000000     _ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93942 +0x00000000     _ZN6Master11kill_routerEP6Router        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93943 +0x00000000     _ZNK13DriverManager10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93944 +0x00000000     _ZN6Switch4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93945 +0x00000000     _ZNK13SetCycleCount10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93946 +0x00000000     _ZN7RRSched10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93947 +0x00000000     _ZN10Classifier12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93948 +0x00000000     _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93949 +0x00000000     _ZN6VectorIN6Router6HookupEEC1EiRKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93950 +0x00000000     _ZNK10Suppressor10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93951 +0x00000000     click_dmalloc_totalnew  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93952 +0x00000000     _ZN6VectorIN6Router6HookupEE5frontEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93953 +0x00000000     _ZNK6String10quoted_hexEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93954 +0x00000000     _ZN14ICMPPingSource11make_packetEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93955 +0x00000000     _ZN12ErrorHandler19has_default_handlerEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93956 +0x00000000     _ZN10ClassifierD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93957 +0x00000000     _ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93958 +0x00000000     _ZN10PacketTestD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93959 +0x00000000     _ZNK10CheckCRC3210processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93960 +0x00000000     _ZN8FromHostD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93961 +0x00000000     _ZN8FromHostD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93962 +0x00000000     _ZN8FromHostD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93963 +0x00000000     _ZN8FromHostC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93964 +0x00000000     _ZN8FromHostC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93965 +0x00000000     _ZNK13FastUDPSource10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93966 +0x00000000     _ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93967 +0x00000000     _ZN9AnyDevice12clear_deviceEP12AnyDeviceMap     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93968 +0x00000000     _ZNK7HashMapI8IPFlowIDbEixERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93969 +0x00000000     _ZN11StrideSched4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93970 +0x00000000     _ZN11StringAccum4growEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93971 +0x00000000     _ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93972 +0x00000000     _ZN6String14permanent_memoE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93973 +0x00000000     _ZTVN6Script8ExpanderE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93974 +0x00000000     _ZNK13DiscardNoFree10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93975 +0x00000000     _ZNK7Unstrip10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93976 +0x00000000     _ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93977 +0x00000000     _ZN8RTCycles4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93978 +0x00000000     _ZTV15RandomBitErrors   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93979 +0x00000000     _ZN7Element9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93980 +0x00000000     _ZN14CheckTCPHeader12reason_textsE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93981 +0x00000000     _ZNK7HashMapI6StringiE5emptyEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93982 +0x00000000     _ZN14PerfCountAccum4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93983 +0x00000000     _ZN14IPAddrRewriter9run_timerEP5Timer   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93984 +0x00000000     _ZN11EnsureEther4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93985 +0x00000000     _ZN6VectorIiE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93986 +0x00000000     _ZN8ToDevice8run_taskEP4Task    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93987 +0x00000000     _ZN7HashMapI9IPAddressjED2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93988 +0x00000000     _ZN11StrideSched10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93989 +0x00000000     _ZN5Lexer8yrequireEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93990 +0x00000000     _ZNK13AlignmentInfo10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93991 +0x00000000     _Z11click_qsortPvjjPFiPKvS1_E   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93992 +0x00000000     _ZN13FullNoteQueue4castEPKc     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93993 +0x00000000     _ZNK7Counter10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93994 +0x00000000     _ZN6Router11add_elementEP7ElementRK6StringS4_S4_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93995 +0x00000000     _ZNK9ICMPError12valid_sourceE7in_addr   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93996 +0x00000000     _ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93997 +0x00000000     _ZTV14CheckARPHeader    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93998 +0x00000000     _ZN7HashMapI9IPAddressjE5beginEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
93999 +0x00000000     _ZNK14PerfCountAccum10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94000 +0x00000000     _ZNK15BandwidthShaper10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94001 +0x00000000     _ZN3RED13set_C1_and_C2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94002 +0x00000000     _ZN7UnqueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94003 +0x00000000     _ZN7UnqueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94004 +0x00000000     _ZN7UnqueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94005 +0x00000000     _ZNK4Idle5flagsEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94006 +0x00000000     _ZNK14ICMPPingSource10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94007 +0x00000000     _ZN4Task10error_hookEPS_Pv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94008 +0x00000000     _ZN16SetRandIPAddress13simple_actionEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94009 +0x00000000     _ZTV18PrefixErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94010 +0x00000000     _ZN5Timer8set_hookEP7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94011 +0x00000000     _ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94012 +0x00000000     _ZNK11StringAccum8capacityEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94013 +0x00000000     _ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94014 +0x00000000     _ZNK13SetIPChecksum10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94015 +0x00000000     _ZN8IPFilter19length_checked_pushEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94016 +0x00000000     _ZN8DRRSched10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94017 +0x00000000     cpIPAddressOrPrefix     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94018 +0x00000000     _ZNK6VectorI6StringE8capacityEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94019 +0x00000000     _ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94020 +0x00000000     _ZN6RouterD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94021 +0x00000000     _ZNK11EnsureEther10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94022 +0x00000000     _ZN15BandwidthShaperC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94023 +0x00000000     _ZN8IPFlowIDC2EPK8click_ip      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94024 +0x00000000     _ZN8IPFlowIDC1EPK8click_ip      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94025 +0x00000000     _Z12init_clickfsv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94026 +0x00000000     _ZN14CheckIPHeader2D0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94027 +0x00000000     _ZNK3Tee10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94028 +0x00000000     _ZN6Switch5llrpcEjPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94029 +0x00000000     _ZN8RFC2507c8make_keyERKNS_5tcpipERS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94030 +0x00000000     _ZNK8CPUQueue10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94031 +0x00000000     cpIP6Address    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94032 +0x00000000     _ZN14BigHashMapTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94033 +0x00000000     _ZN14BigHashMapTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94034 +0x00000000     _ZN6VectorIPvE5eraseEPS0_S2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94035 +0x00000000     _ZNK10PollDevice10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94036 +0x00000000     _ZN10PollDeviceC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94037 +0x00000000     _ZNK7Element2idEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94038 +0x00000000     _ZN14CheckARPHeader13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94039 +0x00000000     _ZN6SwitchC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94040 +0x00000000     _ZNK17StaticThreadSched10class_nameEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94041 +0x00000000     _ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94042 +0x00000000     _ZN10Classifier4Expr4flipEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94043 +0x00000000     _ZNK8ARPPrint10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94044 +0x00000000     _ZlsR11StringAccumRK9Timestamp  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94045 +0x00000000     _ZN6VectorI6StringE5eraseEPS0_S2_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94046 +0x00000000     _ZN20HashMap_ArenaFactoryC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94047 +0x00000000     _ZN20HashMap_ArenaFactoryC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94048 +0x00000000     _ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94049 +0x00000000     _ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94050 +0x00000000     _ZNK17DynamicUDPIPEncap10port_countEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94051 +0x00000000     _ZN12RatedUnqueue10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94052 +0x00000000     _ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94053 +0x00000000     _ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94054 +0x00000000     _ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94055 +0x00000000     _ZNK6VectorI6StringE2atEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94056 +0x00000000     _ZN6ScriptC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94057 +0x00000000     _ZNK8IPFilter10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94058 +0x00000000     _ZN6VectorIjE6resizeEiRKj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94059 +0x00000000     _ZNK6String10trim_spaceEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94060 +0x00000000     _ZN7CounterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94061 +0x00000000     _ZN7CounterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94062 +0x00000000     _ZNK7HashMapI9IPAddressjE5beginEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94063 +0x00000000     _ZN15SpinlockReleaseD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94064 +0x00000000     _ZN13SetCycleCount4pullEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94065 +0x00000000     _ZN10Classifier18DominatorOptimizerC2EPS_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94066 +0x00000000     _ZN10Classifier18DominatorOptimizerC1EPS_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94067 +0x00000000     _ZN10RandomSeedC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94068 +0x00000000     _ZNK13StripIPHeader10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94069 +0x00000000     _ZTV15SpinlockRelease   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94070 +0x00000000     _ZTV14ComparePackets    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94071 +0x00000000     _ZN18IPAddrPairRewriterD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94072 +0x00000000     _ZN18IPAddrPairRewriterC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94073 +0x00000000     _ZTV17StaticThreadSched /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94074 +0x00000000     _ZN10ARPQuerierD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94075 +0x00000000     _ZNK14SetTCPChecksum10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94076 +0x00000000     _ZN10MixedQueue4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94077 +0x00000000     _ZN6ToHostC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94078 +0x00000000     _ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94079 +0x00000000     _ZN13CheckIPHeader13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94080 +0x00000000     _ZN22BandwidthRatedSplitter4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94081 +0x00000000     _ZN14ComparePacketsD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94082 +0x00000000     _ZN14ComparePacketsC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94083 +0x00000000     _ZN7PullTeeD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94084 +0x00000000     _ZN7PullTeeD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94085 +0x00000000     _ZN7PullTeeD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94086 +0x00000000     _Z14skbmgr_cleanupv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94087 +0x00000000     _ZNK12SetIPAddress10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94088 +0x00000000     _ZN10CrapFilterC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94089 +0x00000000     _Z19cp_seconds_as_milliRK6StringPj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94090 +0x00000000     _ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94091 +0x00000000     _ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94092 +0x00000000     _ZNK14InfiniteSource10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94093 +0x00000000     _ZN15CycleCountAccumD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94094 +0x00000000     _ZN15CycleCountAccumD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94095 +0x00000000     _ZN8RFC2507d13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94096 +0x00000000     _ZNK5Lexer18element_type_namesER6VectorI6StringE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94097 +0x00000000     _ZNK7HashMapI8IPFlowIDbE4findERKS0_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94098 +0x00000000     _ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94099 +0x00000000     _ZN18SilentErrorHandlerD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94100 +0x00000000     _ZN11StrideSched12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94101 +0x00000000     _ZTV12RandomSwitch      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94102 +0x00000000     _ZN10ARPQuerier7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94103 +0x00000000     _ZN5TimerC1EP7Element   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94104 +0x00000000     _ZN5Lexer9end_parseEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94105 +0x00000000     _ZNK14FrontDropQueue10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94106 +0x00000000     _ZNK8FixIPSrc10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94107 +0x00000000     _ZNK8DecIPTTL10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94108 +0x00000000     _ZN11SetAnnoByte18value_read_handlerEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94109 +0x00000000     _ZNK11NullElement10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94110 +0x00000000     _ZNK9ICMPError7unicastE7in_addr /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94111 +0x00000000     _ZNK21BandwidthRatedUnqueue10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94112 +0x00000000     _ZN14SetUDPChecksumD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94113 +0x00000000     _ZN14SetUDPChecksumC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94114 +0x00000000     _ZN14SetTCPChecksumD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94115 +0x00000000     _ZN14SetTCPChecksumC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94116 +0x00000000     _ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94117 +0x00000000     _ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94118 +0x00000000     _ZNK6ToHost10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94119 +0x00000000     _ZN6Master20timer_reheapify_fromEiP5Timerb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94120 +0x00000000     _ZTVN5Lexer8CompoundE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94121 +0x00000000     _ZNK10HashSwitch10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94122 +0x00000000     _ZN14FrontDropQueue4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94123 +0x00000000     _ZNK10CheckPaint10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94124 +0x00000000     _ZN6Router6hindexEPK7ElementRK6String   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94125 +0x00000000     _ZN12RandomSample4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94126 +0x00000000     _ZN20HashMap_ArenaFactory14static_cleanupEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94127 +0x00000000     cpUnsignedShort /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94128 +0x00000000     _ZN5Align9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94129 +0x00000000     _ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94130 +0x00000000     _ZN15CycleCountAccum12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94131 +0x00000000     _ZN6VectorIiE6resizeEiRKi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94132 +0x00000000     _ZTV6NameDB     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94133 +0x00000000     _ZN9ICMPError18valid_source_routeEPK8click_ip   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94134 +0x00000000     _ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94135 +0x00000000     _ZN6Router15set_connectionsEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94136 +0x00000000     _ZN12IPInputCombo4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94137 +0x00000000     _ZN6String9null_memoE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94138 +0x00000000     _ZN7RIPSend10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94139 +0x00000000     _ZN11CheckLength4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94140 +0x00000000     _ZN6String6assignEPKci  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94141 +0x00000000     _ZN6String11InitializerC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94142 +0x00000000     _ZN6Switch12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94143 +0x00000000     _ZNK10MixedQueue10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94144 +0x00000000     _ZNK14LinearIPLookup10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94145 +0x00000000     _ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94146 +0x00000000     _ZN20HashMap_ArenaFactory17static_initializeEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94147 +0x00000000     _ZNK10ARPQuerier10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94148 +0x00000000     _ZN13DynamicNameDB4findERK6Stringb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94149 +0x00000000     _ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94150 +0x00000000     _ZTV9PrioSched  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94151 +0x00000000     _Z16cp_unparse_real2xi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94152 +0x00000000     _ZN7HashMapI9IPAddressjEaSERKS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94153 +0x00000000     _ZN7HashMapI9IPAddressjEC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94154 +0x00000000     _ZN6Switch10read_paramEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94155 +0x00000000     _ZN10PullSwitch10read_paramEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94156 +0x00000000     _ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94157 +0x00000000     _ZTV7Discard    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94158 +0x00000000     _ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94159 +0x00000000     _ZN9AnyDeviceD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94160 +0x00000000     _ZN9AnyDeviceD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94161 +0x00000000     _ZN9AnyDeviceD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94162 +0x00000000     _ZN9AnyDeviceC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94163 +0x00000000     _ZN9AnyDeviceC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94164 +0x00000000     _ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94165 +0x00000000     _ZN6Script12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94166 +0x00000000     _ZN6RouterC2ERK6StringP6Master  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94167 +0x00000000     _ZN14InfiniteSource10read_paramEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94168 +0x00000000     _ZN14FrontDropQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94169 +0x00000000     _ZN14FrontDropQueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94170 +0x00000000     _ZTV10UDPIPEncap        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94171 +0x00000000     _ZN6SwitchD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94172 +0x00000000     _ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94173 +0x00000000     _ZN15RandomBitErrorsD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94174 +0x00000000     _ZN14SortedIPLookup4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94175 +0x00000000     _ZNK12IPInputCombo10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94176 +0x00000000     _ZN10ARPQuerier15handle_responseEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94177 +0x00000000     _ZN8ARPFaker9run_timerEP5Timer  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94178 +0x00000000     _ZN6Router14set_attachmentERK6StringPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94179 +0x00000000     _ZN13RadixIPLookup5Radix10free_radixEPS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94180 +0x00000000     _ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94181 +0x00000000     _ZN10UDPIPEncap12read_handlerEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94182 +0x00000000     _ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94183 +0x00000000     _ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94184 +0x00000000     _ZNK14DropBroadcasts10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94185 +0x00000000     _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94186 +0x00000000     _ZN12CompareBlock4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94187 +0x00000000     _ZN6VectorIiE6insertEPiRKi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94188 +0x00000000     _ZN6Script8Expander6expandERK6StringiiR11StringAccum    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94189 +0x00000000     _ZNK17ICMPPingResponder10port_countEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94190 +0x00000000     _ZTV12ErrorElement      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94191 +0x00000000     _ZNK7HashMapI8IPFlowIDbE3endEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94192 +0x00000000     _ZN6VectorIN4IPRw9InputSpecEED1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94193 +0x00000000     _ZN6ScriptD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94194 +0x00000000     _ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94195 +0x00000000     _ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94196 +0x00000000     _ZTV8FromHost   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94197 +0x00000000     _ZNK7HashMapI9IPAddressjEixERKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94198 +0x00000000     _ZN13DynamicNameDBD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94199 +0x00000000     _ZN13DynamicNameDBD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94200 +0x00000000     _ZNK5Meter10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94201 +0x00000000     _ZN10IPRewriter10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94202 +0x00000000     click_remove_element_type       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94203 +0x00000000     _ZN12ARPResponderD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94204 +0x00000000     _ZN12ARPResponderD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94205 +0x00000000     _ZN12ARPResponderD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94206 +0x00000000     _ZN12ARPResponderC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94207 +0x00000000     _ZN12ARPResponderC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94208 +0x00000000     _ZN8RFC2507c8encode16EiiPcRi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94209 +0x00000000     _ZN5Lexer24deanonymize_element_nameERK6Stringi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94210 +0x00000000     _ZNK7HashMapI6StringiE5beginEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94211 +0x00000000     _ZN7HashMapI6StringiE10find_forceERKS0_RKi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94212 +0x00000000     _ZN6Router11make_gportsEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94213 +0x00000000     _ZN10FromDevice12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94214 +0x00000000     _ZN8FixIPSrc13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94215 +0x00000000     _ZN6VectorIiE4at_uEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94216 +0x00000000     _ZN5Lexer18force_element_typeE6String   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94217 +0x00000000     _ZN11EtherMirrorC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94218 +0x00000000     _ZN11EtherMirrorC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94219 +0x00000000     _ZN8DecIPTTLD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94220 +0x00000000     _ZN8DecIPTTLD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94221 +0x00000000     _ZN8DecIPTTLD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94222 +0x00000000     _ZN8DecIPTTLC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94223 +0x00000000     _ZN8DecIPTTLC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94224 +0x00000000     _Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94225 +0x00000000     _ZN15SpinlockAcquire13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94226 +0x00000000     _ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94227 +0x00000000     _ZTV8IPMirror   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94228 +0x00000000     _ZN10FromDeviceD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94229 +0x00000000     _ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94230 +0x00000000     _ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94231 +0x00000000     _ZNK14BandwidthMeter10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94232 +0x00000000     _ZN6ToHostD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94233 +0x00000000     _ZN15HostEtherFilterC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94234 +0x00000000     _ZThn60_N17StaticThreadSchedD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94235 +0x00000000     click_cycle_counter     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94236 +0x00000000     _ZNK4Idle10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94237 +0x00000000     _ZN5AlignD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94238 +0x00000000     _ZN5AlignC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94239 +0x00000000     _ZN11StrideSchedC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94240 +0x00000000     _ZN11StrideSchedC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94241 +0x00000000     click_dmalloc_curnew    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94242 +0x00000000     _ZN10VectorTestC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94243 +0x00000000     _ZNK18IPAddrPairRewriter10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94244 +0x00000000     _ZN18IPAddrPairRewriter12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94245 +0x00000000     _ZNK11TCPRewriter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94246 +0x00000000     _ZN13SetPacketType12unparse_typeEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94247 +0x00000000     _ZNK7HashMapI6StringiE5findpERKS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94248 +0x00000000     _ZN4Task11move_threadEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94249 +0x00000000     _ZN6Router13remove_hookupEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94250 +0x00000000     _ZNK10Classifier4Expr11not_impliesERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94251 +0x00000000     _ZN11CheckPacketD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94252 +0x00000000     _ZN11CheckPacketD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94253 +0x00000000     _ZN11CheckPacketD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94254 +0x00000000     _ZNK7HashMapI6StringiE4findERKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94255 +0x00000000     _ZN16UpstreamNotifier12add_handlersEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94256 +0x00000000     _ZNK7HashMapI8IPFlowIDbE5beginEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94257 +0x00000000     _ZN9ICMPErrorD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94258 +0x00000000     _ZN9ICMPErrorD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94259 +0x00000000     _ZN9ICMPErrorD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94260 +0x00000000     _ZN9ICMPErrorC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94261 +0x00000000     _ZN9ICMPErrorC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94262 +0x00000000     _ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94263 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94264 +0x00000000     _ZNK10IPRewriter10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94265 +0x00000000     _ZTV22BandwidthRatedSplitter    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94266 +0x00000000     _ZN14IPAddrRewriterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94267 +0x00000000     _ZNK6Shaper10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94268 +0x00000000     _ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94269 +0x00000000     _ZN14SchedOrderTest12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94270 +0x00000000     _ZN15UnstripIPHeaderD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94271 +0x00000000     _ZN15UnstripIPHeaderD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94272 +0x00000000     _ZN6VectorIN6Router6HookupEE4at_uEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94273 +0x00000000     _ZN10IPRewriter21dump_mappings_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94274 +0x00000000     _ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94275 +0x00000000     _ZN10Classifier19length_checked_pushEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94276 +0x00000000     _ZN7IPEncapD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94277 +0x00000000     _ZN7IPEncapD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94278 +0x00000000     _ZN7IPEncapD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94279 +0x00000000     _ZNK11RatedSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94280 +0x00000000     _ZN6PacketD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94281 +0x00000000     _ZN6MasterD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94282 +0x00000000     _ZN5Lexer5yportERi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94283 +0x00000000     _ZN7IPTable3addE9IPAddressS0_S0_i       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94284 +0x00000000     _ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94285 +0x00000000     _ZN14ICMPPingSourceD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94286 +0x00000000     _ZN14ICMPPingSourceC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94287 +0x00000000     _ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94288 +0x00000000     _ZNK8Unqueue210processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94289 +0x00000000     _ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94290 +0x00000000     _ZN6Router16force_attachmentERK6String  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94291 +0x00000000     _ZN14PerfCountAccumD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94292 +0x00000000     _ZN5LexerD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94293 +0x00000000     _ZNK10Classifier10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94294 +0x00000000     _ZN6NameDB6defineERK6StringPKvi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94295 +0x00000000     _ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94296 +0x00000000     _ZN3RED12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94297 +0x00000000     _ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94298 +0x00000000     cpHandlerName   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94299 +0xa0d2f184     proclikefs_new_inode_operations /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
94300 +0x00000000     _ZN6Router19new_notifier_signalER14NotifierSignal       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94301 +0x00000000     _ZNK13PerfCountInfo10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94302 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC1ERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94303 +0x00000000     _ZN11CiscyFilter10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94304 +0x00000000     _ZN6VectorIjE5frontEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94305 +0x00000000     _ZTV11StrideSched       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94306 +0x00000000     _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94307 +0x00000000     _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94308 +0x00000000     _ZN13CheckIPHeader12read_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94309 +0x00000000     _ZN8IPMirrorD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94310 +0x00000000     _ZN8IPMirrorD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94311 +0x00000000     _ZN8IPMirrorD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94312 +0x00000000     _ZN8IPMirrorC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94313 +0x00000000     _ZN8IPMirrorC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94314 +0x00000000     _ZN13ElementFilterD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94315 +0x00000000     _ZN13ElementFilterD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94316 +0x00000000     __rtti_user     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94317 +0x00000000     _ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94318 +0x00000000     _ZN12DelayUnqueueD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94319 +0x00000000     _ZN12DelayUnqueueD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94320 +0x00000000     _ZN12DelayUnqueueD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94321 +0x00000000     _ZN12DelayUnqueueC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94322 +0x00000000     _ZN12DelayUnqueueC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94323 +0x00000000     _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94324 +0x00000000     _ZNK10EtherEncap10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94325 +0x00000000     _ZN14AverageCounter13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94326 +0x00000000     _ZN6VectorIjE5eraseEPj  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94327 +0x00000000     _ZN8RFC2507cD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94328 +0x00000000     _ZN8RFC2507cD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94329 +0x00000000     _ZN8RFC2507cD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94330 +0x00000000     _ZN8RFC2507cC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94331 +0x00000000     _ZN8RFC2507cC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94332 +0x00000000     _ZN5Paint13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94333 +0x00000000     _ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94334 +0x00000000     _ZNK11CiscyFilter10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94335 +0x00000000     _ZTV6Switch     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94336 +0x00000000     _ZN5StripD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94337 +0x00000000     _ZN10PollDevice12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94338 +0x00000000     _ZNK12ScheduleInfo10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94339 +0x00000000     _ZN10PollDeviceD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94340 +0x00000000     _ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94341 +0x00000000     _ZN14BandwidthMeter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94342 +0x00000000     _ZTV8ARPFaker   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94343 +0x00000000     _ZN13DynamicNameDB6defineERK6StringPKvi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94344 +0x00000000     _ZN8IPFilterD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94345 +0x00000000     _ZN8IPFilterD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94346 +0x00000000     _ZN8IPFilterD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94347 +0x00000000     _ZN8IPFilterC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94348 +0x00000000     _ZN8IPFilterC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94349 +0x00000000     _ZNK10CrapFilter10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94350 +0x00000000     _ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94351 +0x00000000     _ZN9IPAddressC2ERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94352 +0x00000000     _ZN9IPAddressC1ERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94353 +0x00000000     _ZN7HashMapI8IPFlowIDPvED2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94354 +0x00000000     _ZTV15SpinlockAcquire   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94355 +0x00000000     _ZNK12RandomSource10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94356 +0x00000000     _ZNK12FastUDPFlows10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94357 +0x00000000     _ZN12ErrorHandler17remove_conversionEPNS_10ConversionE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94358 +0x00000000     _ZN6VectorIPvEaSERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94359 +0x00000000     _ZN3RED4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94360 +0x00000000     _ZN6VectorIjE9pop_frontEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94361 +0x00000000     _ZN5Lexer10ystatementEb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94362 +0x00000000     cpInteger64     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94363 +0x00000000     _ZN11TCPRewriter10TCPMappingC1Eb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94364 +0x00000000     _ZN13PerfCountInfoD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94365 +0x00000000     _ZN13PerfCountInfoD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94366 +0x00000000     _ZN13PerfCountInfoD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94367 +0x00000000     _ZN13PerfCountInfoC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94368 +0x00000000     _ZN13PerfCountInfoC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94369 +0x00000000     _Z21click_dmalloc_cleanupv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94370 +0x00000000     _ZTV11TimedSource       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94371 +0x00000000     _ZN6VectorIPvE6assignEiS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94372 +0x00000000     _ZN13SetPacketType13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94373 +0x00000000     _ZN14NotifierSignal12static_valueE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94374 +0x00000000     _ZN10RandomSeed12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94375 +0x00000000     _Z11skbmgr_initv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94376 +0x00000000     _ZTV16SetRandIPAddress  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94377 +0x00000000     _ZN11LinkUnqueue4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94378 +0x00000000     _Z10cp_integerRK6StringiPj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94379 +0x00000000     _ZNK12RatedUnqueue20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94380 +0x00000000     _ZN11AddressInfoD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94381 +0x00000000     _ZN11AddressInfoD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94382 +0x00000000     _ZN11AddressInfoD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94383 +0x00000000     _ZN11AdaptiveREDD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94384 +0x00000000     _ZN11AdaptiveREDD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94385 +0x00000000     _ZN11AdaptiveREDD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94386 +0x00000000     _ZN10RandomSeedD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94387 +0x00000000     _ZN7RRSchedD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94388 +0x00000000     _ZN7RRSchedD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94389 +0x00000000     _ZN7RRSchedD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94390 +0x00000000     _Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94391 +0x00000000     _ZN7HashMapI8IPFlowIDbED1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94392 +0x00000000     _ZN7HashMapI8IPFlowIDbEC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94393 +0x00000000     _ZN6Script4stepEiii     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94394 +0x00000000     _ZN18RoundRobinIPMapperD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94395 +0x00000000     _ZN18RoundRobinIPMapperC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94396 +0x00000000     _ZN10MixedQueueD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94397 +0x00000000     _ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94398 +0x00000000     _ZNK5Lexer17anon_element_nameERK6String /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94399 +0x00000000     _ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94400 +0x00000000     _ZNK14AverageCounter10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94401 +0x00000000     _ZN10HashSwitchC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94402 +0x00000000     _ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94403 +0x00000000     _ZN6VectorIPvED1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94404 +0x00000000     _ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94405 +0x00000000     _ZTV13SetPacketType     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94406 +0x00000000     _ZN6Packet13expensive_putEj     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94407 +0x00000000     _ZN10CrapFilterD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94408 +0x00000000     _ZN8ARPPrint7cleanupEN7Element12CleanupStageE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94409 +0x00000000     _ZNK6VectorI9IPAddressE5frontEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94410 +0x00000000     _ZN12FastTCPFlows5resetEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94411 +0x00000000     _ZN8CPUQueue12read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94412 +0x00000000     _ZN12RouterThread11driver_onceEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94413 +0x00000000     _ZNK6Router14econfigurationEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94414 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE4at_uEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94415 +0x00000000     _ZN12FastUDPFlows12change_portsEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94416 +0x00000000     _ZN10UDPIPEncapC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94417 +0x00000000     _ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94418 +0x00000000     _ZN11SimpleQueue4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94419 +0x00000000     _ZNK12SetIPAddress10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94420 +0x00000000     _ZNK8MarkIPCE10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94421 +0x00000000     _ZN8IPFilter14static_cleanupEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94422 +0x00000000     _Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94423 +0x00000000     _ZN8PortInfoD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94424 +0x00000000     _ZN8PortInfoD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94425 +0x00000000     _ZN8PortInfoD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94426 +0x00000000     _ZN8PortInfoC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94427 +0x00000000     _ZN8PortInfoC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94428 +0x00000000     _ZN8NameInfo8revqueryEjPK7ElementPKvi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94429 +0x00000000     _ZN18SourceIPHashMapperD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94430 +0x00000000     _ZN18SourceIPHashMapperC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94431 +0x00000000     _ZN14CheckUDPHeader13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94432 +0x00000000     _ZNK6VectorIN6Router6HookupEE5frontEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94433 +0x00000000     _ZN6VectorIN6Router6HookupEE2atEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94434 +0x00000000     _ZNK25VerboseFilterErrorHandler13min_verbosityEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94435 +0x00000000     _ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94436 +0x00000000     _ZN14ActiveNotifierD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94437 +0x00000000     _ZN16ICMPPingRewriter9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94438 +0x00000000     _ZTV12StrideSwitch      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94439 +0x00000000     _ZNK13NotifierQueue10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94440 +0x00000000     _ZN11CheckLengthC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94441 +0x00000000     _ZN11CheckLengthC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94442 +0x00000000     _ZN16DevirtualizeInfoC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94443 +0x00000000     _ZN16DevirtualizeInfoC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94444 +0x00000000     _ZNK11SetAnnoByte10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94445 +0x00000000     _ZN14ActiveNotifierC2EN8Notifier8SearchOpE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94446 +0x00000000     _ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94447 +0x00000000     _ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94448 +0x00000000     _ZTV14CheckTCPHeader    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94449 +0x00000000     _ZN12RandomSourceD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94450 +0x00000000     _ZN12RandomSourceD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94451 +0x00000000     _ZN12RandomSourceD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94452 +0x00000000     _ZN12RandomSourceC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94453 +0x00000000     _ZN12RandomSourceC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94454 +0x00000000     _ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94455 +0x00000000     _ZN11ErrorVeneer12reset_countsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94456 +0x00000000     _ZNK14CheckARPHeader10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94457 +0x00000000     _ZN7HashMapI8IPFlowIDbE6resizeEj        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94458 +0x00000000     _ZN6Master10run_routerEP6Routerb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94459 +0x00000000     _ZN13ICMPPingEncap12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94460 +0x00000000     _ZN13FTPPortMapperD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94461 +0x00000000     _ZN13FTPPortMapperD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94462 +0x00000000     _ZN13FTPPortMapperD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94463 +0x00000000     _ZN13FTPPortMapperC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94464 +0x00000000     _ZN13FTPPortMapperC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94465 +0x00000000     _ZN19VariableEnvironment6defineERK6StringS2_b   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94466 +0x00000000     _ZNK6VectorI9IPAddressE2atEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94467 +0x00000000     _ZN14LinearIPLookupD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94468 +0x00000000     _ZN14LinearIPLookupC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94469 +0x00000000     _ZN12RouterThread23unschedule_router_tasksEP6Router     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94470 +0x00000000     _ZN14DropBroadcasts12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94471 +0x00000000     _ZN6VectorI9IPAddressE6assignEiRKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94472 +0x00000000     _ZN13IPReassembler13reap_overfullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94473 +0x00000000     _ZN7Element8run_taskEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94474 +0x00000000     _ZNK14BigHashMapTest10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94475 +0x00000000     _ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94476 +0x00000000     _ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94477 +0x00000000     _Z9cp_argvecRK6StringR6VectorIS_E       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94478 +0x00000000     _ZNK12SetTimestamp10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94479 +0x00000000     _ZN6Script14static_cleanupEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94480 +0x00000000     _ZN12SetPerfCount4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94481 +0x00000000     _ZN19ContextErrorHandlerD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94482 +0x00000000     _ZN6VectorI9IPAddressE9pop_frontEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94483 +0x00000000     _ZNK12RatedUnqueue10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94484 +0x00000000     _ZN14InfiniteSource4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94485 +0x00000000     _ZNK10FromDevice10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94486 +0x00000000     _ZTV25VerboseFilterErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94487 +0x00000000     _ZNK11LinkUnqueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94488 +0x00000000     _ZN17RecycledSkbBucket10initializeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94489 +0x00000000     _ZNK7Handler12unparse_nameEP7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94490 +0x00000000     _ZNK6Router20unparse_declarationsER11StringAccumRK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94491 +0x00000000     _ZN6VectorI7IPRouteE7reserveEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94492 +0x00000000     _ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94493 +0x00000000     _ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94494 +0x00000000     _ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94495 +0x00000000     _ZNK13ICMPPingEncap10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94496 +0x00000000     _ZTV11CheckPacket       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94497 +0x00000000     _ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94498 +0x00000000     _ZN4Task10unscheduleEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94499 +0x00000000     _ZN15LookupIPRouteMPC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94500 +0x00000000     _ZN14SchedOrderTestD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94501 +0x00000000     _ZN14SchedOrderTestC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94502 +0x00000000     _ZN6VectorIjE3endEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94503 +0x00000000     _ZNK7Discard10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94504 +0x00000000     _ZN9ICMPError13is_error_typeEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94505 +0x00000000     _ZN14ToHostSniffersD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94506 +0x00000000     _ZNK6VectorI9IPAddressE4at_uEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94507 +0x00000000     _ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94508 +0x00000000     _ZNK13FastUDPSource10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94509 +0x00000000     _ZN7Counter5llrpcEjPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94510 +0x00000000     _ZNK15UnstripIPHeader10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94511 +0x00000000     _ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94512 +0x00000000     cpFilename      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94513 +0x00000000     _ZN7MSQueue12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94514 +0x00000000     _ZN14CheckTCPHeaderD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94515 +0x00000000     _ZN14CheckTCPHeaderC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94516 +0x00000000     _ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94517 +0x00000000     _ZN3RED11read_queuesEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94518 +0x00000000     _ZNK13IPOutputCombo10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94519 +0x00000000     _ZNK16ICMPPingRewriter10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94520 +0x00000000     _ZTV11ThreadSched       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94521 +0x00000000     _ZN6VectorIN4IPRw9InputSpecEE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94522 +0x00000000     _ZN13IPReassembler13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94523 +0x00000000     _ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94524 +0x00000000     _ZNK14ComparePackets10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94525 +0x00000000     _ZNK12RandomSample20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94526 +0x00000000     _ZN13NotifierQueue4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94527 +0x00000000     _ZN11AddressInfo8query_ipE6StringPhP7Element    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94528 +0x00000000     _ZNK16SetRandIPAddress10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94529 +0x00000000     _ZTV11AdaptiveRED       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94530 +0x00000000     _ZTV14SetUDPChecksum    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94531 +0x00000000     _ZN6VectorIN7IPTable5EntryEE9push_backERKS1_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94532 +0x00000000     click_unprovide /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94533 +0x00000000     _ZN15CycleCountAccum4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94534 +0x00000000     _ZTV8IPFilter   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94535 +0x00000000     _ZN8ClickIno4growEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94536 +0x00000000     _ZNK6VectorIjE3endEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94537 +0x00000000     _ZNK6VectorIiE3endEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94538 +0x00000000     _ZN12PokeHandlers12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94539 +0x00000000     _ZN13IPOutputCombo4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94540 +0x00000000     _ZN11CheckPacket13simple_actionEP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94541 +0x00000000     _ZN12FastTCPFlowsD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94542 +0x00000000     _ZN12FastTCPFlowsD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94543 +0x00000000     _ZN12FastTCPFlowsD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94544 +0x00000000     _ZN12FastTCPFlowsC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94545 +0x00000000     _ZN12FastTCPFlowsC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94546 +0x00000000     _ZN14CheckARPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94547 +0x00000000     _ZN5TimerC1EPFvPS_PvES1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94548 +0x00000000     _ZN10VectorTestD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94549 +0x00000000     _ZN14StoreIPAddress13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94550 +0x00000000     _ZN16RoundRobinSwitchD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94551 +0x00000000     _ZN16RoundRobinSwitchD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94552 +0x00000000     _ZN16RoundRobinSwitchD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94553 +0x00000000     _ZN6String13stable_stringEPKci  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94554 +0x00000000     _ZNK9SetIPDSCP10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94555 +0x00000000     _ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94556 +0x00000000     _ZN8FromHost17static_initializeEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94557 +0x00000000     click_has_provision     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94558 +0x00000000     _ZTV13AnyTaskDevice     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94559 +0x00000000     _ZN7HashMapI6StringiE10find_forceERKS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94560 +0x00000000     _ZNK3Tee10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94561 +0x00000000     _ZNK11TCPRewriter11get_mappingEiRK8IPFlowID     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94562 +0x00000000     _ZN11CiscyFilterC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94563 +0x00000000     _ZN11CiscyFilterC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94564 +0x00000000     _Z25click_new_file_operationsv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94565 +0x00000000     _ZN4Idle4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94566 +0x00000000     cpIPAddress     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94567 +0x00000000     _ZN7Unstrip13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94568 +0x00000000     _ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94569 +0x00000000     _ZN7RIPSendD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94570 +0x00000000     _ZN7RIPSendD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94571 +0x00000000     _ZN7RIPSendD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94572 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94573 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94574 +0x00000000     _ZNK14PerfCountAccum10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94575 +0x00000000     _ZN16ICMPPingRewriter13apply_patternERK8IPFlowID        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94576 +0x00000000     cpWord  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94577 +0x00000000     cpSecondsAsMilli        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94578 +0x00000000     _ZNK5Align10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94579 +0x00000000     _ZNK10Suppressor10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94580 +0x00000000     _ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94581 +0x00000000     _ZNK8PaintTee10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94582 +0x00000000     _ZN7Element11local_llrpcEjPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94583 +0x00000000     _ZN7PullTee4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94584 +0x00000000     _ZNK11EnsureEther10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94585 +0x00000000     cpUnsigned      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94586 +0x00000000     _ZNK10Classifier4Expr9flippableEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94587 +0x00000000     _ZN6ShaperD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94588 +0x00000000     _ZN6VectorIiEixEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94589 +0x00000000     _ZN23_HashMap_const_iteratorI6StringiEppEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94590 +0x00000000     _ZN23_HashMap_const_iteratorI6StringiEppEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94591 +0x00000000     _ZN5MeterD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94592 +0x00000000     _ZN5MeterC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94593 +0x00000000     _ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94594 +0x00000000     _ZN5Align4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94595 +0x00000000     _ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94596 +0x00000000     _ZN6VectorIjE8pop_backEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94597 +0x00000000     _ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94598 +0x00000000     _ZTV11EtherMirror       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94599 +0x00000000     _ZN11AdaptiveRED9run_timerEP5Timer      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94600 +0x00000000     _ZN10PacketTest10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94601 +0x00000000     _ZN13StripIPHeaderD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94602 +0x00000000     _ZN13StripIPHeaderD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94603 +0x00000000     _ZN13StripIPHeaderD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94604 +0x00000000     _ZN13StripIPHeaderC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94605 +0x00000000     _ZN13StripIPHeaderC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94606 +0x00000000     _ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94607 +0x00000000     _ZNK8FixIPSrc10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94608 +0x00000000     _ZNK8DecIPTTL10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94609 +0x00000000     _ZN6VectorIN11CiscyFilter4InsnEED1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94610 +0x00000000     _ZN8NameInfo9query_intEjPK7ElementRK6StringPi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94611 +0x00000000     _ZN7HashMapI9IPAddressjE10find_forceERKS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94612 +0x00000000     _ZN6VectorIiE9push_backERKi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94613 +0x00000000     _ZN6Router19router_read_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94614 +0x00000000     _ZNK12RandomSample10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94615 +0x00000000     _ZN12StaticNameDBD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94616 +0x00000000     _ZN12StaticNameDBD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94617 +0x00000000     _ZN7Discard4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94618 +0x00000000     _ZTV11CheckLength       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94619 +0x00000000     _ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94620 +0x00000000     _ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94621 +0x00000000     _ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94622 +0x00000000     _ZN7Element12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94623 +0x00000000     _ZN15BandwidthShaperD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94624 +0x00000000     _ZN15BandwidthShaperD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94625 +0x00000000     _ZN7HashMapI9IPAddressjE5clearEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94626 +0x00000000     _ZNK6Shaper10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94627 +0x00000000     _ZN7Counter12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94628 +0x00000000     _ZNK10Classifier4Expr11implies_notERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94629 +0x00000000     _ZNK13QueueYankTest10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94630 +0x00000000     cpSecondsAsMicro        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94631 +0x00000000     _ZNK13CheckIPHeader10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94632 +0x00000000     _ZN6VectorIPvE6insertEPS0_S0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94633 +0x00000000     _ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94634 +0x00000000     _ZN9IPAddressC2EPKh     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94635 +0x00000000     _ZN9IPAddressC1EPKh     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94636 +0x00000000     _ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94637 +0x00000000     _ZNK9ICMPError10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94638 +0x00000000     _ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94639 +0x00000000     _ZN6VectorIiE4backEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94640 +0x00000000     _ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94641 +0x00000000     _ZN13DriverManagerD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94642 +0x00000000     _ZN13DriverManagerD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94643 +0x00000000     _ZN13DriverManagerC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94644 +0x00000000     _ZN13DriverManagerC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94645 +0x00000000     _ZN9SetIPDSCP4pushEiP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94646 +0x00000000     _ZNK6Router4findERK6StringP7ElementP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94647 +0x00000000     _ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94648 +0x00000000     _ZNK7HashMapI9IPAddressjE5findpERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94649 +0x00000000     _ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94650 +0x00000000     _ZN13ICMPPingEncapD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94651 +0x00000000     _ZN13ICMPPingEncapD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94652 +0x00000000     _ZN13ICMPPingEncapD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94653 +0x00000000     _ZN13ICMPPingEncapC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94654 +0x00000000     _ZN13ICMPPingEncapC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94655 +0x00000000     _ZNK11SimpleQueue10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94656 +0x00000000     _ZNK6Script10find_labelERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94657 +0x00000000     _ZNK10PullSwitch13configurationER6VectorI6StringE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94658 +0x00000000     _ZN14PerfCountAccum12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94659 +0x00000000     _ZTV17CastElementFilter /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94660 +0x00000000     _ZN10ARPQuerierC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94661 +0x00000000     _ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94662 +0x00000000     _ZN13DiscardNoFree4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94663 +0x00000000     _ZN12DelayUnqueue8run_taskEP4Task       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94664 +0x00000000     _ZN6VectorI6StringE4at_uEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94665 +0x00000000     _ZNK12SpinlockInfo10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94666 +0x00000000     _ZTV11ErrorVeneer       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94667 +0x00000000     _ZN14DropBroadcastsD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94668 +0x00000000     _ZN14DropBroadcastsC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94669 +0x00000000     _ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94670 +0x00000000     _ZN13SetCycleCountD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94671 +0x00000000     _ZN13SetCycleCountD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94672 +0x00000000     _ZN13SetCycleCountD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94673 +0x00000000     _ZN13SetCycleCountC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94674 +0x00000000     _ZN13SetCycleCountC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94675 +0x00000000     _ZN15PushNullElementC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94676 +0x00000000     _ZN15PullNullElementC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94677 +0x00000000     _ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94678 +0x00000000     _ZN10CrapFilter4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94679 +0x00000000     _ZN14SortedIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94680 +0x00000000     _ZN14SortedIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94681 +0x00000000     _ZTV13IPReassembler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94682 +0x00000000     _ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94683 +0x00000000     _ZN6Router25check_hookup_completenessEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94684 +0x00000000     _ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94685 +0x00000000     _ZN6VectorIN7IPTable5EntryEEaSERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94686 +0x00000000     _ZN5TimerC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94687 +0x00000000     _ZN7IPPrint10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94688 +0x00000000     _ZN11TCPRewriterD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94689 +0x00000000     _ZN11TCPRewriterD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94690 +0x00000000     _ZN11TCPRewriterD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94691 +0x00000000     _ZNK11NullElement10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94692 +0x00000000     _ZN13FullNoteQueue4pullEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94693 +0x00000000     _ZN11TCPRewriter7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94694 +0x00000000     _ZNK7Discard10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94695 +0x00000000     _ZN6VectorIN6Router6HookupEEC2EiRKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94696 +0x00000000     _ZN6VectorIiE5clearEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94697 +0x00000000     _ZN5Lexer13lexeme_stringEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94698 +0x00000000     _ZN12ICMPRewriterD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94699 +0x00000000     _ZN12ICMPRewriterD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94700 +0x00000000     _ZN12ICMPRewriterD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94701 +0x00000000     _ZN12ICMPRewriterC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94702 +0x00000000     _ZN12ICMPRewriterC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94703 +0x00000000     _ZN10HashSwitchD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94704 +0x00000000     _ZN12ErrorElementD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94705 +0x00000000     _ZN12ErrorElementD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94706 +0x00000000     _ZN12ErrorElementD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94707 +0x00000000     _ZN12ErrorElementC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94708 +0x00000000     _ZN12ErrorElementC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94709 +0x00000000     cpSeconds       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94710 +0x00000000     cpEthernetAddress       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94711 +0x00000000     _ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94712 +0x00000000     _ZTV14ICMPPingSource    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94713 +0x00000000     _ZNK6VectorIjE4veltEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94714 +0x00000000     _ZNK6VectorIiE4veltEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94715 +0x00000000     _ZN6VectorI6StringED2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94716 +0x00000000     _ZN6VectorI6StringEC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94717 +0x00000000     _ZN6VectorI9IPAddressE4backEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94718 +0x00000000     _ZN15SpinlockAcquireD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94719 +0x00000000     _ZNK13RatedSplitter10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94720 +0x00000000     _ZN8NotifierD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94721 +0x00000000     _ZN8NotifierD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94722 +0x00000000     _ZN8NotifierD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94723 +0x00000000     _ZN5Lexer8Compound20printable_name_c_strEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94724 +0x00000000     _Z9cp_real10RK6StringiPjS2_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94725 +0x00000000     _ZN10UDPIPEncap12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94726 +0x00000000     _ZN17StaticThreadSchedD2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94727 +0x00000000     _ZN17StaticThreadSchedD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94728 +0x00000000     _ZN17StaticThreadSchedD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94729 +0x00000000     _ZN17StaticThreadSchedC2Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94730 +0x00000000     _ZN17StaticThreadSchedC1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94731 +0x00000000     _ZNK12StaticSwitch10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94732 +0x00000000     _ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94733 +0x00000000     _ZN6VectorI9IPAddressE4veltEPS0_i       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94734 +0x00000000     _ZNK12SpinlockInfo5queryERK6StringS2_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94735 +0x00000000     _ZN6VectorIN7IPTable5EntryEE4swapERS2_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94736 +0x00000000     _ZN10UDPIPEncapD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94737 +0x00000000     _ZNK5Lexer8landmarkEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94738 +0x00000000     _ZN5Lexer10skip_quoteEPKcc      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94739 +0x00000000     _ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94740 +0x00000000     _ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94741 +0x00000000     _ZN8FromHost7cleanupEN7Element12CleanupStageE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94742 +0x00000000     _ZN13ScheduleLinux8run_taskEP4Task      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94743 +0x00000000     _ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94744 +0x00000000     _ZN6Packet4makeEjPKhjj  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94745 +0x00000000     _ZN6NameDBD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94746 +0x00000000     _ZNK14StoreIPAddress10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94747 +0x00000000     _Z17cp_unparse_real10ji /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94748 +0x00000000     _ZNK11AddressInfo15configure_phaseEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94749 +0x00000000     _Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94750 +0x00000000     _ZNK6Switch10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94751 +0x00000000     _ZN14StaticIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94752 +0x00000000     _ZN14StaticIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94753 +0x00000000     _ZNK15CheckICMPHeader10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94754 +0x00000000     _ZN7BursterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94755 +0x00000000     _ZN7BursterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94756 +0x00000000     _ZN8SetCRC32D2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94757 +0x00000000     _ZN8SetCRC32D1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94758 +0x00000000     _ZN8SetCRC32D0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94759 +0x00000000     _ZN8SetCRC32C2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94760 +0x00000000     _ZN8SetCRC32C1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94761 +0x00000000     _ZN12PokeHandlers10read_paramEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94762 +0x00000000     _ZNK12GetIPAddress10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94763 +0x00000000     _ZNK10CheckCRC3210port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94764 +0x00000000     _ZNK7IPRoute7unparseEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94765 +0x00000000     _ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94766 +0x00000000     _ZN10FromDevice8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94767 +0x00000000     _ZNK6VectorIjE4backEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94768 +0x00000000     _ZNK6VectorIiE4backEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94769 +0x00000000     _ZN6VectorIN6Router6HookupEE5beginEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94770 +0x00000000     _ZNK16UpstreamNotifier10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94771 +0x00000000     _ZNK6VectorIjEixEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94772 +0x00000000     _ZNK6VectorIiEixEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94773 +0x00000000     _Z12cp_ip_prefixRK6StringPhS2_P7Element /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94774 +0x00000000     _ZNK6Router13find_ehandlerEiRK6Stringb  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94775 +0x00000000     click_random_seed       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94776 +0x00000000     _ZNK12ErrorElement9flow_codeEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94777 +0x00000000     _ZN6VectorIiE5eraseEPi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94778 +0x00000000     _ZTV10MixedQueue        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94779 +0x00000000     _ZN9PrioSchedD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94780 +0x00000000     _ZN9PrioSchedD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94781 +0x00000000     _ZN9PrioSchedD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94782 +0x00000000     _ZN9PrioSchedC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94783 +0x00000000     _ZN9PrioSchedC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94784 +0x00000000     _ZN5Lexer20skip_backslash_angleEPKc     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94785 +0x00000000     _ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94786 +0x00000000     _ZNK15HostEtherFilter10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94787 +0x00000000     _ZNK9CPUSwitch10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94788 +0x00000000     _ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94789 +0x00000000     _ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94790 +0x00000000     _ZN6VectorIjE5beginEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94791 +0x00000000     _ZN12IPFragmenterD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94792 +0x00000000     _ZN12IPFragmenterD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94793 +0x00000000     _ZN12IPFragmenterD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94794 +0x00000000     _ZN12IPFragmenterC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94795 +0x00000000     _ZN12IPFragmenterC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94796 +0x00000000     _Z23cp_va_static_initializev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94797 +0x00000000     _ZN8CPUQueueD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94798 +0x00000000     _ZN8CPUQueueD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94799 +0x00000000     _ZN8CPUQueueD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94800 +0x00000000     _ZN8CPUQueueC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94801 +0x00000000     _ZN8CPUQueueC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94802 +0x00000000     _ZNK10Classifier5flagsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94803 +0x00000000     _ZlsR11StringAccumRK7timeval    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94804 +0x00000000     _ZN10SuppressorD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94805 +0x00000000     _ZNK12SetTimestamp10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94806 +0x00000000     _ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94807 +0x00000000     _ZN14InfiniteSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94808 +0x00000000     _ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94809 +0x00000000     _ZN12RandomSource8run_taskEP4Task       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94810 +0x00000000     _ZNK18IPRewriterPatterns15configure_phaseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94811 +0x00000000     _ZTV12ICMPRewriter      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94812 +0x00000000     _ZN11EnsureEtherD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94813 +0x00000000     _ZN11EnsureEtherD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94814 +0x00000000     _ZN11EnsureEtherD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94815 +0x00000000     _ZN7HashMapI8IPFlowIDiE7resize0Ej       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94816 +0x00000000     _ZN11PaintSwitch4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94817 +0x00000000     _ZNK12ErrorHandler13min_verbosityEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94818 +0x00000000     _ZN6VectorIN12ARPResponder5EntryEEaSERKS2_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94819 +0x00000000     _ZN8ToDevice12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94820 +0x00000000     _ZNK7HashMapI9IPAddressjE9find_pairERKS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94821 +0x00000000     _ZNK11PaintSwitch20can_live_reconfigureEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94822 +0x00000000     _ZN7HashMapI9IPAddressjEC1ERKS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94823 +0x00000000     _ZN15RecycledSkbPool7cleanupEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94824 +0x00000000     _ZN14IPAddrRewriter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94825 +0x00000000     _ZNK15CheckICMPHeader10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94826 +0x00000000     _Z19cp_ethernet_addressRK6StringPhP7Element     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94827 +0x00000000     _ZN10Classifier14program_stringEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94828 +0x00000000     _ZNK6VectorI9IPAddressE5beginEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94829 +0x00000000     _ZN6VectorI9IPAddressEixEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94830 +0x00000000     _ZN7ElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94831 +0x00000000     _ZN7ElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94832 +0x00000000     _ZNK10Classifier4Expr1sEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94833 +0x00000000     _ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94834 +0x00000000     _ZTV14FrontDropQueue    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94835 +0x00000000     _ZN14BandwidthMeter12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94836 +0x00000000     _ZN14SchedOrderTest8run_taskEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94837 +0x00000000     _ZN7HashMapI6StringiED2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94838 +0x00000000     _ZN7HashMapI6StringiED1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94839 +0x00000000     _ZN6VectorI6StringEixEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94840 +0x00000000     cpEnd   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94841 +0x00000000     _ZN12PokeHandlers10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94842 +0x00000000     _ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94843 +0x00000000     _ZN6Router7handlerEPK7ElementRK6String  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94844 +0x00000000     _ZNK10PollDevice10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94845 +0x00000000     _ZN14PerfCountAccum10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94846 +0x00000000     _ZNK7Element15configure_phaseEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94847 +0x00000000     _ZN6VectorI9IPAddressE5clearEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94848 +0x00000000     _ZNK13SetPacketType10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94849 +0x00000000     _ZNK9SetIPDSCP10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94850 +0x00000000     _ZN5Lexer3lexEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94851 +0x00000000     _ZNK15HostEtherFilter10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94852 +0x00000000     _ZN5AlignD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94853 +0x00000000     _ZNK13SetCycleCount10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94854 +0x00000000     _ZTV7IPPrint    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94855 +0x00000000     _ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94856 +0x00000000     _ZN6VectorIN6Router6HookupEE5clearEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94857 +0x00000000     _ZN8FixIPSrc6fix_itEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94858 +0x00000000     _ZNK7HashMapI9IPAddressjE3endEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94859 +0x00000000     _ZThn60_N18RoundRobinIPMapperD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94860 +0x00000000     _ZN7Element20add_default_handlersEb     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94861 +0x00000000     _ZN7MSQueue10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94862 +0x00000000     _ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94863 +0x00000000     _ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94864 +0x00000000     _ZN14AverageCounterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94865 +0x00000000     _ZNK7HashMapI9IPAddressjE4findERKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94866 +0x00000000     _ZNK12SetPerfCount10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94867 +0x00000000     _ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94868 +0x00000000     _ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94869 +0x00000000     _ZNK15RandomBitErrors10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94870 +0x00000000     _ZN10PollDevice8run_taskEP4Task /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94871 +0x00000000     _ZTV14LinearIPLookup    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94872 +0x00000000     click_in_cksum_pseudohdr_hard   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94873 +0x00000000     _ZN15HostEtherFilterD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94874 +0x00000000     _ZN15HostEtherFilterD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94875 +0x00000000     _ZN14ActiveNotifier15listener_changeEPvib       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94876 +0x00000000     _ZTV12IPFragmenter      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94877 +0x00000000     _ZNK3RED10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94878 +0x00000000     _ZNK14SchedOrderTest10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94879 +0x00000000     _ZNK14IPAddrRewriter10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94880 +0x00000000     _ZN8RTCyclesD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94881 +0x00000000     _ZN8RTCyclesD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94882 +0x00000000     _ZN8RTCyclesD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94883 +0x00000000     _ZN8RTCyclesC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94884 +0x00000000     _ZN8RTCyclesC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94885 +0x00000000     _ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94886 +0x00000000     _ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94887 +0x00000000     _Z15cleanup_clickfsv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94888 +0x00000000     _ZNK10ARPQuerier9flow_codeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94889 +0x00000000     _ZNK6String5c_strEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94890 +0x00000000     _ZNK16RoundRobinSwitch10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94891 +0x00000000     _ZN7RRSched4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94892 +0x00000000     _ZNK14IPAddrRewriter13IPAddrMapping7unparseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94893 +0x00000000     _ZNK7HashMapI9IPAddressjE6bucketERKS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94894 +0x00000000     _ZN6VectorI6StringEC2EiRKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94895 +0x00000000     _ZN13SetPacketType10parse_typeERK6String        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94896 +0x00000000     _ZN5Timer11schedule_atERK9Timestamp     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94897 +0x00000000     _ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94898 +0x00000000     _ZN12FastUDPFlows12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94899 +0x00000000     _Znwj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94900 +0x00000000     _Znaj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94901 +0x00000000     _ZNK14CheckTCPHeader10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94902 +0x00000000     _ZN5Strip13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94903 +0x00000000     _ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94904 +0x00000000     _ZNK12ARPResponder20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94905 +0x00000000     _ZN10FromDevice10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94906 +0x00000000     _ZTV14DropBroadcasts    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94907 +0x00000000     cpNamedInteger  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94908 +0x00000000     _ZN7Element10set_nportsEii      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94909 +0x00000000     _ZNK13SetIPChecksum10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94910 +0x00000000     _ZN6Router7elementEPKS_i        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94911 +0x00000000     _ZN11IPFieldInfo17static_initializeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94912 +0x00000000     _ZN12MarkIPHeaderD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94913 +0x00000000     _ZN12MarkIPHeaderD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94914 +0x00000000     _ZN12MarkIPHeaderD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94915 +0x00000000     _ZN12MarkIPHeaderC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94916 +0x00000000     _ZN12MarkIPHeaderC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94917 +0x00000000     _ZNK10IPRewriter10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94918 +0x00000000     _ZlsR11StringAccumRK8IPFlowID   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94919 +0x00000000     _ZNK4Idle9flow_codeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94920 +0x00000000     _ZNK7Element11declarationEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94921 +0x00000000     _ZN6VectorIN7IPTable5EntryEEixEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94922 +0x00000000     _ZTV13ConfParseTest     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94923 +0x00000000     _ZN7IPField7unparseEP7Elementb  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94924 +0x00000000     _ZN7MSQueue4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94925 +0x00000000     _ZN6Master10run_timersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94926 +0x00000000     _ZNK8MarkIPCE10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94927 +0x00000000     _ZNK10HashSwitch10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94928 +0x00000000     _ZTV15CycleCountAccum   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94929 +0x00000000     _ZNK10CheckPaint10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94930 +0x00000000     _ZN14CheckARPHeader12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94931 +0x00000000     _ZN6Master5unuseEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94932 +0x00000000     _ZN5Lexer19lexical_scoping_outEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94933 +0x00000000     _ZN15CheckICMPHeader12reason_textsE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94934 +0x00000000     _ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94935 +0x00000000     _ZN7HashMapI6StringiE20set_dynamic_resizingEb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94936 +0x00000000     _ZN11StringAccum5c_strEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94937 +0x00000000     _Z10cp_integerRK6StringiPy      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94938 +0x00000000     _ZN18PrefixErrorHandlerD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94939 +0x00000000     _ZN8DRRSched4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94940 +0x00000000     _ZN13RadixIPLookup11dump_routesEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94941 +0x00000000     _ZTV10EtherEncap        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94942 +0x00000000     _ZTV14BandwidthMeter    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94943 +0x00000000     _ZTV5Align      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94944 +0x00000000     _ZN14ComparePackets7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94945 +0x00000000     _ZN7Handler12unparse_nameEP7ElementRK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94946 +0x00000000     _ZN12RatedUnqueueD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94947 +0x00000000     _ZN12RatedUnqueueD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94948 +0x00000000     _ZN12RatedUnqueueD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94949 +0x00000000     _ZN12RatedUnqueueC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94950 +0x00000000     _ZN12RatedUnqueueC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94951 +0x00000000     _ZN18KernelErrorHandlerD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94952 +0x00000000     _ZNK14LinearIPLookup5checkEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94953 +0x00000000     _ZN8IPFilter17static_initializeEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94954 +0x00000000     _ZNK7Discard10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94955 +0x00000000     _ZN14CheckUDPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94956 +0x00000000     _ZNK18RoundRobinIPMapper15configure_phaseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94957 +0x00000000     _ZN10PollDevice13change_deviceEP10net_device    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94958 +0x00000000     _ZN6VectorIjEaSERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94959 +0x00000000     _ZN6VectorIjEC2ERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94960 +0x00000000     _ZN6VectorIjEC1ERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94961 +0x00000000     _ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94962 +0x00000000     _ZNK10ARPQuerier10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94963 +0x00000000     _ZNK15SpinlockRelease10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94964 +0x00000000     _ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94965 +0x00000000     _ZN7IPEncap13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94966 +0x00000000     _ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94967 +0x00000000     _ZN6Shaper4pullEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94968 +0x00000000     _ZNK5Print20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94969 +0x00000000     _ZNK13StripIPHeader10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94970 +0x00000000     _ZTV16StaticPullSwitch  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94971 +0x00000000     _ZN9SetIPDSCP4pullEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94972 +0x00000000     _ZN5Meter4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94973 +0x00000000     _ZNK16ICMPPingRewriter10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94974 +0x00000000     _ZN15CheckICMPHeaderC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94975 +0x00000000     _ZN11CheckPacket9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94976 +0x00000000     _ZN6ToHost12read_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94977 +0x00000000     _ZN4IPRw7Mapping5applyEP14WritablePacket        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94978 +0x00000000     _Z28cp_extend_stringlist_argtypePKcz    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94979 +0x00000000     _ZNK6String6equalsEPKci /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94980 +0x00000000     _ZN10MixedQueueC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94981 +0x00000000     _ZN14DropBroadcasts7drop_itEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94982 +0x00000000     _ZN7Counter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94983 +0x00000000     _ZN9Bitvector10clear_lastEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94984 +0x00000000     _ZN10ARPQuerierD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94985 +0x00000000     _ZNK9TimedSink10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94986 +0x00000000     _ZN10HashSwitch4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94987 +0x00000000     _ZNK7Element5flagsEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94988 +0x00000000     _ZNK6VectorIjE2atEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94989 +0x00000000     _ZNK6VectorIiE2atEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94990 +0x00000000     _ZN7Element9run_timerEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94991 +0x00000000     _ZNK10CrapFilter10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94992 +0x00000000     _ZN19VariableEnvironmentD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94993 +0x00000000     _ZN10LexerExtra7requireE6StringP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94994 +0x00000000     _ZNK9Timestamp3secEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94995 +0x00000000     _ZNK14SetUDPChecksum10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94996 +0x00000000     _ZN12SetPerfCount4castEPKc      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94997 +0x00000000     _ZN18IPRewriterPatternsD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94998 +0x00000000     _ZN10CrapFilterC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
94999 +0x00000000     _ZN9CPUSwitch4pushEiP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95000 +0x00000000     _ZN6VectorIiEC2EiRKi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95001 +0x00000000     _ZN6VectorIiEC1EiRKi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95002 +0x00000000     _ZNK12PokeHandlers20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95003 +0x00000000     _ZN7Element10take_stateEPS_P12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95004 +0x00000000     _ZThn60_N17StaticThreadSchedD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95005 +0x00000000     _ZNK14SortedIPLookup10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95006 +0x00000000     _ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95007 +0x00000000     _ZTV11QuitWatcher       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95008 +0x00000000     _ZN10BpfyFilterD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95009 +0x00000000     _Z20cp_unparse_bandwidthj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95010 +0x00000000     _ZNK12ARPResponder10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95011 +0xcd768ff0     proclikefs_new_file_operations  /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
95012 +0x00000000     _ZN11TimedSourceD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95013 +0x00000000     _ZN11TimedSourceD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95014 +0x00000000     _ZN11TimedSourceD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95015 +0x00000000     _ZNK11StrideSched10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95016 +0x00000000     _ZN10PollDevice10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95017 +0x00000000     _ZN5Lexer7connectEiiii  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95018 +0x00000000     _ZN11TimedSource7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95019 +0x00000000     _ZN7HashMapI8IPFlowIDPvE5clearEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95020 +0x00000000     _ZN6VectorIN12ARPResponder5EntryEE7reserveEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95021 +0x00000000     _ZNK8ToDevice10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95022 +0x00000000     _ZN15RecycledSkbPool8allocateEjjiPi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95023 +0x00000000     _ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95024 +0x00000000     _ZN13IPReassembler4reapEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95025 +0x00000000     _ZN11AdaptiveRED10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95026 +0x00000000     _ZTV19VariableEnvironment       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95027 +0x00000000     _ZNK23_HashMap_const_iteratorI6StringiE3keyEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95028 +0x00000000     _ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95029 +0x00000000     _ZNK11SetAnnoByte10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95030 +0x00000000     _ZN3RED10read_statsEP7ElementPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95031 +0x00000000     _ZN10Classifier17init_expr_subtreeER6VectorIiE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95032 +0x00000000     _ZN16StaticPullSwitchD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95033 +0x00000000     _ZN16StaticPullSwitchD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95034 +0x00000000     _ZN16StaticPullSwitchD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95035 +0x00000000     _ZNK12IPInputCombo5flagsEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95036 +0x00000000     _ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95037 +0x00000000     _ZN13DiscardNoFree8run_taskEP4Task      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95038 +0x00000000     _ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95039 +0x00000000     _ZTV12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95040 +0x00000000     _Z14cp_tcpudp_portRK6StringiPtP7Element /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95041 +0x00000000     _ZNK8ToDevice15configure_phaseEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95042 +0x00000000     _ZNK12IPClassifier10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95043 +0x00000000     _ZNK12DelayUnqueue10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95044 +0x00000000     _ZN6PacketC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95045 +0x00000000     _ZN6MasterC1Ei  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95046 +0x00000000     _ZN8IPFilter9Primitive12unparse_typeEii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95047 +0x00000000     _ZN7HashMapI9IPAddressjE7resize0Ej      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95048 +0x00000000     _ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95049 +0x00000000     _ZNK7IPRoute7unparseER11StringAccumb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95050 +0x00000000     _ZN12IPRouteTable4castEPKc      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95051 +0x00000000     _ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95052 +0x00000000     _ZN9SetIPDSCP12add_handlersEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95053 +0x00000000     _ZNK14CheckARPHeader10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95054 +0x00000000     _ZNK6String6lengthEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95055 +0x00000000     _ZTV11PaintSwitch       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95056 +0x00000000     _ZN14BandwidthMeterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95057 +0x00000000     _ZN14BandwidthMeterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95058 +0x00000000     _ZN5TimerC1EP4Task      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95059 +0x00000000     _ZN4Task15true_rescheduleEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95060 +0x00000000     _ZThn60_N18SourceIPHashMapperD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95061 +0x00000000     _Z8int_sqrtj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95062 +0x00000000     _ZTV9ICMPError  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95063 +0x00000000     _ZNK9CPUSwitch10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95064 +0x00000000     _ZNK6VectorIN6Router6HookupEE4at_uEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95065 +0x00000000     _ZN6VectorI6StringE4veltEPS0_i  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95066 +0x00000000     _ZN5Print9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95067 +0x00000000     _ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95068 +0x00000000     _ZNK6String9substringEii        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95069 +0x00000000     _ZNK18SourceIPHashMapper15configure_phaseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95070 +0x00000000     _ZN10IPRewriter4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95071 +0x00000000     _ZN6VectorIjED2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95072 +0x00000000     _ZN6VectorIjED1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95073 +0x00000000     _ZN6VectorIjEC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95074 +0x00000000     _ZN6VectorIjEC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95075 +0x00000000     _ZN6VectorIjE10push_frontERKj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95076 +0x00000000     cpInteger       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95077 +0x00000000     _ZNK11TimedSource10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95078 +0x00000000     _ZN8RFC2507d6decodeERPKhRj      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95079 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC2ERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95080 +0x00000000     _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95081 +0x00000000     _ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95082 +0x00000000     _ZN5Lexer6expectEib     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95083 +0x00000000     _ZNK6ToHost15configure_phaseEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95084 +0x00000000     _ZN6VectorI9IPAddressE5frontEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95085 +0x00000000     _ZNK8FromHost10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95086 +0x00000000     _ZN6VectorI9IPAddressE2atEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95087 +0x00000000     _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95088 +0x00000000     click_router    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95089 +0x00000000     _ZTV7IPEncap    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95090 +0x00000000     _ZN16UpstreamNotifier4pushEiP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95091 +0x00000000     _ZNK6VectorI6StringE4veltEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95092 +0x00000000     _ZN12StrideSwitchD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95093 +0x00000000     _ZN12StrideSwitchD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95094 +0x00000000     _ZN12StrideSwitchD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95095 +0x00000000     _ZN12StrideSwitchC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95096 +0x00000000     _ZN12StrideSwitchC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95097 +0x00000000     _ZNK9PrioSched10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95098 +0x00000000     _ZN12ErrorHandlerD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95099 +0x00000000     _ZN12ErrorHandlerD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95100 +0x00000000     _ZTV11DelayShaper       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95101 +0x00000000     _ZNK12CompareBlock10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95102 +0x00000000     _ZNK14CheckUDPHeader10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95103 +0x00000000     _ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95104 +0x00000000     _ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95105 +0x00000000     _ZN10UDPIPEncap13simple_actionEP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95106 +0x00000000     _ZTV7RIPSend    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95107 +0x00000000     _ZN8Unqueue210read_paramEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95108 +0x00000000     _ZN14StoreIPAddressD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95109 +0x00000000     _ZN8MarkIPCE10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95110 +0x00000000     _ZNK8IPMirror10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95111 +0x00000000     _ZNK8RTCycles10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95112 +0x00000000     _ZN9TimedSink9run_timerEP5Timer /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95113 +0x00000000     _ZNK12PokeHandlers10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95114 +0x00000000     _ZNK12FastTCPFlows10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95115 +0x00000000     _ZN12ErrorHandler6lerrorERK6StringPKcz  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95116 +0x00000000     _ZNK10Classifier10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95117 +0x00000000     _ZNK10RandomSeed20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95118 +0x00000000     _ZN6String8oom_memoE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95119 +0x00000000     _ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95120 +0x00000000     _ZNK8PaintTee10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95121 +0x00000000     _ZN12FastTCPFlows10get_packetEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95122 +0x00000000     _ZN11SimpleQueue5yank1IN33_GLOBAL__N__ZN13QueueYankTestC2Ev3FooEEEP6PacketT_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95123 +0x00000000     _ZTV13FTPPortMapper     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95124 +0x00000000     _ZN6Router15adjust_runcountEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95125 +0x00000000     _ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95126 +0x00000000     cpUnsigned64    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95127 +0x00000000     _ZN6VectorI9IPAddressE4at_uEi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95128 +0x00000000     _ZN6VectorI7IPRouteEC1ERKS1_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95129 +0x00000000     _ZN6Router19initialize_handlersEbb      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95130 +0x00000000     _ZNK5Lexer16element_landmarkEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95131 +0x00000000     _ZN13FastUDPSource10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95132 +0x00000000     cpMandatoryKeywords     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95133 +0x00000000     _ZN15CheckICMPHeader13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95134 +0x00000000     _ZN11TCPRewriter10TCPMappingC2Eb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95135 +0x00000000     _ZN15LookupIPRouteMPD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95136 +0x00000000     _ZN5Lexer19ycompound_argumentsEPNS_8CompoundE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95137 +0x00000000     _ZNK13IPReassembler10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95138 +0x00000000     _ZN13ConfParseTest10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95139 +0x00000000     _ZNK6Switch10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95140 +0x00000000     _ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95141 +0x00000000     _ZNK14ComparePackets10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95142 +0x00000000     _ZN6VectorI6StringE2atEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95143 +0x00000000     _ZN11IPGWOptions14handle_optionsEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95144 +0x00000000     _Z19cp_unparse_intervalRK9Timestamp     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95145 +0x00000000     _ZNK16StaticPullSwitch10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95146 +0x00000000     _ZN7IPPrintD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95147 +0x00000000     _ZN7IPPrintD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95148 +0x00000000     _ZN7IPPrintD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95149 +0x00000000     _ZN17CastElementFilterD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95150 +0x00000000     _ZN17CastElementFilterD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95151 +0x00000000     _ZN10Suppressor4pullEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95152 +0x00000000     _ZNK8SetCRC3210class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95153 +0x00000000     _ZN14MessageElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95154 +0x00000000     _ZN14MessageElementC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95155 +0x00000000     _ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95156 +0x00000000     _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95157 +0x00000000     _ZN9PrioSched10initializeEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95158 +0x00000000     _ZN14LinearIPLookup4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95159 +0x00000000     _ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95160 +0x00000000     _ZNK7HashMapI6StringiE4sizeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95161 +0x00000000     _ZNK12RatedUnqueue13configurationER6VectorI6StringE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95162 +0x00000000     _ZN6VectorI9IPAddressEaSERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95163 +0x00000000     _ZN6VectorI9IPAddressEC2ERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95164 +0x00000000     _ZN6VectorI9IPAddressEC1ERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95165 +0x00000000     _ZN20StripToNetworkHeaderD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95166 +0x00000000     _ZN20StripToNetworkHeaderD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95167 +0x00000000     _ZN20StripToNetworkHeaderD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95168 +0x00000000     _ZTV13FullNoteQueue     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95169 +0x00000000     _ZN12ErrorHandler14silent_handlerEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95170 +0x00000000     _ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95171 +0x00000000     _ZN14ICMPPingSource4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95172 +0x00000000     _ZN12RandomSample12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95173 +0x00000000     _ZNK10PullSwitch20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95174 +0x00000000     _ZN12IPFragmenter4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95175 +0x00000000     _Z12cp_bandwidthRK6StringPj     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95176 +0x00000000     _ZTV20HashMap_ArenaFactory      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95177 +0x00000000     _ZN10RandomSeed9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95178 +0x00000000     _ZN6VectorIjE4swapERS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95179 +0x00000000     _ZN5PrintD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95180 +0x00000000     _ZN5PrintC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95181 +0x00000000     _ZNK14ICMPPingSource10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95182 +0x00000000     _ZN11CheckPacketC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95183 +0x00000000     _ZN11CheckPacketC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95184 +0x00000000     _ZN12FastUDPFlows10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95185 +0x00000000     _Z10cp_elementRK6StringP6RouterP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95186 +0x00000000     _ZN6String4MemoD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95187 +0x00000000     _ZNK7IPPrint10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95188 +0x00000000     _Z21cp_unregister_argtypePKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95189 +0x00000000     _ZN14CheckTCPHeader13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95190 +0x00000000     _ZN6VectorIN12ARPResponder5EntryEED1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95191 +0x00000000     _ZTV14BigHashMapTest    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95192 +0x00000000     _ZN7HashMapI9IPAddressjE11findp_forceERKS0_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95193 +0x00000000     _ZN6String14numeric_stringEyib  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95194 +0x00000000     _ZN6String14numeric_stringExib  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95195 +0x00000000     _ZNK10IPRewriter11get_mappingEiRK8IPFlowID      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95196 +0x00000000     _ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95197 +0x00000000     _ZlsR11StringAccumm     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95198 +0x00000000     _ZlsR11StringAccuml     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95199 +0x00000000     _ZN14ICMPPingSource9run_timerEP5Timer   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95200 +0x00000000     _ZN16ICMPPingRewriterD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95201 +0x00000000     _ZN16ICMPPingRewriterD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95202 +0x00000000     _ZN16ICMPPingRewriterD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95203 +0x00000000     _ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95204 +0x00000000     _ZNK6VectorIjE5beginEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95205 +0x00000000     _ZNK6VectorIiE5beginEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95206 +0x00000000     _ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95207 +0x00000000     _ZN12IPInputCombo4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95208 +0x00000000     _Z13cp_skip_spacePKcS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95209 +0x00000000     _ZNK11CheckPacket10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95210 +0x00000000     _ZN7HashMapI6StringiE9copy_fromERKS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95211 +0x00000000     _ZN3TeeD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95212 +0x00000000     _ZN3TeeD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95213 +0x00000000     _ZN3TeeD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95214 +0x00000000     _ZN3TeeC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95215 +0x00000000     _ZN3TeeC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95216 +0x00000000     _ZNK8ARPFaker10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95217 +0x00000000     _ZNK6String7compareEPKci        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95218 +0x00000000     _ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95219 +0x00000000     _ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95220 +0x00000000     _ZNK8DRRSched10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95221 +0x00000000     _ZNK6ToHost5flagsEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95222 +0x00000000     _ZN13PerfCountUser10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95223 +0x00000000     _ZN5MeterD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95224 +0x00000000     _ZTV11IPGWOptions       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95225 +0x00000000     _ZN18IPAddrPairRewriter4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95226 +0x00000000     _ZN11SetAnnoByte19offset_read_handlerEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95227 +0x00000000     _ZNK5Lexer14remaining_textEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95228 +0x00000000     _ZNK12RandomSwitch10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95229 +0x00000000     _ZNK17DynamicUDPIPEncap5flagsEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95230 +0x00000000     _ZN14BigHashMapTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95231 +0x00000000     _ZN14BigHashMapTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95232 +0x00000000     _ZN6VectorIN7IPTable5EntryEE4backEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95233 +0x00000000     _ZN13SetIPChecksum13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95234 +0x00000000     _ZN13FastUDPSource4pullEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95235 +0x00000000     _ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95236 +0x00000000     _ZNK16UpstreamNotifier10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95237 +0x00000000     _ZN12FastUDPFlows8NO_LIMITE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95238 +0x00000000     _ZNK10VectorTest10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95239 +0x00000000     _ZN10VectorTest10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95240 +0x00000000     _ZNK10RandomSeed10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95241 +0x00000000     _ZN6String17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95242 +0x00000000     _ZN7Counter5resetEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95243 +0x00000000     _ZN11SimpleQueueD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95244 +0x00000000     _ZN11SimpleQueueD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95245 +0x00000000     _ZN11SimpleQueueD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95246 +0x00000000     _ZN8NameInfo5getdbEjPK7Elementib        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95247 +0x00000000     cpIP6AddressOrPrefix    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95248 +0x00000000     _ZN11SimpleQueue7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95249 +0x00000000     _ZTV15LookupIPRouteMP   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95250 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE5emptyEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95251 +0x00000000     _Z7cp_boolRK6StringPb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95252 +0x00000000     _ZN7Burster9run_timerEP5Timer   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95253 +0x00000000     _ZN6VectorI9IPAddressE5eraseEPS0_S2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95254 +0x00000000     _ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95255 +0x00000000     _ZNK15SpinlockAcquire10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95256 +0x00000000     _ZN13RadixIPLookup5Radix6changeEjjij    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95257 +0x00000000     _ZN11TimedSource9run_timerEP5Timer      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95258 +0x00000000     _ZTV13PerfCountUser     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95259 +0x00000000     _ZN20HashMap_ArenaFactory9get_arenaEjPS_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95260 +0x00000000     _ZNK7HashMapI9IPAddressjE4findERKS0_RKj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95261 +0x00000000     _ZN8ClickIno12true_prepareEP6Routerj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95262 +0x00000000     _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95263 +0x00000000     _ZN15RandomBitErrors13set_bit_errorEj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95264 +0x00000000     _ZTV15PushNullElement   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95265 +0x00000000     _ZTV15PullNullElement   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95266 +0x00000000     _ZN14BandwidthMeter19meters_read_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95267 +0x00000000     _ZTV3Tee        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95268 +0x00000000     _ZN11StrideSched11set_ticketsEiiP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95269 +0x00000000     _ZN8Notifier10initializeEP6Router       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95270 +0x00000000     _ZN10Classifier20remove_unused_statesEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95271 +0x00000000     _ZNK13RatedSplitter20can_live_reconfigureEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95272 +0x00000000     _ZN10ARPQuerier4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95273 +0x00000000     _ZNK4Idle10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95274 +0x00000000     _ZN7Element5llrpcEjPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95275 +0x00000000     _ZN14CheckIPHeader2D2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95276 +0x00000000     _ZN14CheckIPHeader2C2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95277 +0x00000000     _ZN6VectorI6StringE8pop_backEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95278 +0x00000000     _ZNK8RFC2507d10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95279 +0x00000000     _ZNK8RFC2507c10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95280 +0x00000000     _ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95281 +0x00000000     _ZTV16DevirtualizeInfo  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95282 +0x00000000     _ZN11TimedSource10read_paramEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95283 +0x00000000     _ZN6Router19check_push_and_pullEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95284 +0x00000000     _ZN5PaintD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95285 +0x00000000     _ZN5PaintC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95286 +0x00000000     _ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95287 +0x00000000     _ZN12StaticNameDB5queryERK6StringPvi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95288 +0x00000000     _ZN14ComparePacketsD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95289 +0x00000000     _ZN14ComparePacketsC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95290 +0x00000000     _ZNK23_HashMap_const_iteratorI6StringiE5valueEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95291 +0x00000000     _ZNK12MarkIPHeader10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95292 +0x00000000     _ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95293 +0x00000000     _ZN10CheckCRC32D2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95294 +0x00000000     _ZTV12ScheduleInfo      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95295 +0x00000000     _ZN15CycleCountAccumC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95296 +0x00000000     _ZN11AddressInfoC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95297 +0x00000000     _ZN11AddressInfoC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95298 +0x00000000     _ZN11AdaptiveREDC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95299 +0x00000000     _ZN11AdaptiveREDC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95300 +0x00000000     _ZN11RatedSource8run_taskEP4Task        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95301 +0x00000000     _Z20click_random_srandomv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95302 +0x00000000     _ZNK10FromDevice10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95303 +0x00000000     _ZN12ErrorHandler17static_initializeEPS_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95304 +0x00000000     _ZN7HashMapI8IPFlowIDbEaSERKS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95305 +0x00000000     _ZNK9StoreData10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95306 +0x00000000     _ZNK6Router15chatter_channelERK6String  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95307 +0x00000000     _ZNK11RatedSource10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95308 +0x00000000     _ZNK10PullSwitch10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95309 +0x00000000     _ZNK7IPTable6lookupE9IPAddressRS0_Ri    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95310 +0x00000000     _ZN12IPFragmenter7optcopyEPK8click_ipPS0_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95311 +0x00000000     _ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95312 +0x00000000     _ZN20HashMap_ArenaFactoryD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95313 +0x00000000     _ZN20HashMap_ArenaFactoryD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95314 +0x00000000     _ZN20HashMap_ArenaFactoryD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95315 +0x00000000     _ZTV6Script     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95316 +0x00000000     _ZTV13RadixIPLookup     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95317 +0x00000000     _ZN7MSQueueD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95318 +0x00000000     _ZN7MSQueueD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95319 +0x00000000     _ZN7MSQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95320 +0x00000000     _ZN10MixedQueueD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95321 +0x00000000     _ZN8ClickIno6lookupEmRK6String  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95322 +0x00000000     _ZN10FromDevice10take_stateEP7ElementP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95323 +0x00000000     _ZN10EtherEncapD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95324 +0x00000000     cpReadHandlerCall       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95325 +0x00000000     _ZN6VectorI6StringEC2ERKS1_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95326 +0x00000000     _ZN6Router17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95327 +0x00000000     _ZTV12RandomSource      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95328 +0x00000000     _ZN14IPAddrRewriter12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95329 +0x00000000     _ZTV12FastUDPFlows      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95330 +0x00000000     _ZN10HashSwitchC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95331 +0x00000000     _ZN16BaseErrorHandlerD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95332 +0x00000000     _ZN16BaseErrorHandlerD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95333 +0x00000000     _ZTV10PacketTest        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95334 +0x00000000     _ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95335 +0x00000000     _ZN11ThreadSchedD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95336 +0x00000000     _ZN11ThreadSchedD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95337 +0x00000000     _ZN11RatedSourceD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95338 +0x00000000     _ZN11RatedSourceD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95339 +0x00000000     _ZN11RatedSourceD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95340 +0x00000000     _ZNK12RandomSample13configurationER6VectorI6StringE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95341 +0x00000000     _ZN15PushNullElementD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95342 +0x00000000     _ZN15PushNullElementD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95343 +0x00000000     _ZN15PullNullElementD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95344 +0x00000000     _ZN15PullNullElementD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95345 +0x00000000     _ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95346 +0x00000000     _ZN14SetUDPChecksumD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95347 +0x00000000     _ZN14SetUDPChecksumC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95348 +0x00000000     _ZN14SetTCPChecksumD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95349 +0x00000000     _ZN14SetTCPChecksumC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95350 +0x00000000     _ZN11RatedSource7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95351 +0x00000000     _ZNK12ErrorElement10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95352 +0x00000000     _ZN7Element9run_timerEP5Timer   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95353 +0x00000000     _ZN10CrapFilterD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95354 +0x00000000     _ZlsR11StringAccumPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95355 +0x00000000     _ZN12RatedUnqueue8run_taskEP4Task       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95356 +0x00000000     _ZN13FullNoteQueueD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95357 +0x00000000     _ZN13FullNoteQueueD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95358 +0x00000000     _ZN13FullNoteQueueD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95359 +0x00000000     _ZN13FullNoteQueueC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95360 +0x00000000     _ZN13FullNoteQueueC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95361 +0x00000000     _ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95362 +0x00000000     _ZN6VectorI9IPAddressE3endEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95363 +0x00000000     _ZNK10Suppressor9flow_codeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95364 +0x00000000     _ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95365 +0x00000000     _ZN14PerfCountAccum12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95366 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE4sizeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95367 +0x00000000     _ZN6VectorI6StringE3endEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95368 +0x00000000     _ZNK14LinearIPLookup10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95369 +0x00000000     _ZN16ICMPPingRewriter7MappingC2Eb       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95370 +0x00000000     _ZNK5Align10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95371 +0x00000000     _ZN10PullSwitchD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95372 +0x00000000     __rtti_si       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95373 +0x00000000     _Z13cp_unspacevecPK6StringS1_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95374 +0x00000000     _ZN14CheckUDPHeader12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95375 +0x00000000     _ZTV15BandwidthShaper   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95376 +0x00000000     _ZN11TCPRewriter10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95377 +0x00000000     _ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95378 +0x00000000     _ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95379 +0x00000000     _ZNK11CiscyFilter10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95380 +0x00000000     _ZNK11CheckLength10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95381 +0x00000000     _ZN6VectorIjE7reserveEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95382 +0x00000000     _ZN14InfiniteSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95383 +0x00000000     _ZN12EtherAddressC1EPKh /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95384 +0x00000000     _ZNK16RoundRobinSwitch10processingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95385 +0x00000000     cpByte  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95386 +0x00000000     _ZN12RandomSwitchD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95387 +0x00000000     _ZN12RandomSwitchD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95388 +0x00000000     _ZN12RandomSwitchD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95389 +0x00000000     _ZN12RandomSwitchC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95390 +0x00000000     _ZN12RandomSwitchC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95391 +0x00000000     _ZNK18IPAddrPairRewriter10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95392 +0x00000000     _ZN12ErrorHandler14set_error_codeEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95393 +0x00000000     _ZNK7Element9port_flowEbiP9Bitvector    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95394 +0x00000000     _ZNK7Element17processing_vectorEPiS0_P12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95395 +0x00000000     _ZNK8Truncate10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95396 +0x00000000     _ZN6ShaperC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95397 +0x00000000     _ZNK9PrioSched10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95398 +0x00000000     _ZN6Master15register_routerEP6Router    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95399 +0x00000000     _ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95400 +0x00000000     _Z21cp_skip_comment_spacePKcS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95401 +0x00000000     _ZNK5Align10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95402 +0x00000000     _ZN14NotifierSignalpLERKS_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95403 +0x00000000     _ZN12IPFragmenter8fragmentEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95404 +0x00000000     _ZN8RFC2507c8encode32EiiPcRi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95405 +0x00000000     _ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95406 +0x00000000     _ZN10IPRewriterD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95407 +0x00000000     _ZN8ClickIno27calculate_handler_conflictsEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95408 +0x00000000     _ZNK14DropBroadcasts10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95409 +0x00000000     _ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95410 +0x00000000     _ZNK11ErrorVeneer7nerrorsEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95411 +0x00000000     _ZN6VectorIN7IPTable5EntryEE8pop_backEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95412 +0x00000000     _ZNK7IPPrint10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95413 +0x00000000     _ZN14FrontDropQueueD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95414 +0x00000000     _ZN12ErrorHandler7messageEPKcz  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95415 +0x00000000     _ZN13CheckIPHeader14static_cleanupEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95416 +0x00000000     _ZN6RouterD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95417 +0x00000000     _ZN15RandomBitErrorsC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95418 +0x00000000     _ZN10FromDevice17static_initializeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95419 +0x00000000     _ZN10ARPQuerier9clear_mapEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95420 +0x00000000     _ZN14ComparePackets9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95421 +0x00000000     _ZTV9TimedSink  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95422 +0x00000000     _ZN8MarkIPCE4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95423 +0x00000000     _ZNK13SetPacketType10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95424 +0x00000000     _ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95425 +0x00000000     click_provide   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95426 +0x00000000     _ZNK7HashMapI6StringiE6bucketERKS0_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95427 +0x00000000     _ZNK6VectorI6StringE5emptyEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95428 +0x00000000     _ZN6SwitchC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95429 +0x00000000     _ZN3RED4pullEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95430 +0x00000000     _ZN6Master5pauseEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95431 +0x00000000     _ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95432 +0x00000000     _ZTV10CheckCRC32        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95433 +0x00000000     _ZNK13AlignmentInfo15configure_phaseEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95434 +0x00000000     _ZN10SuppressorC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95435 +0x00000000     _ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95436 +0x00000000     _ZN14AverageCounter10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95437 +0x00000000     _ZN11ThreadSched22initial_home_thread_idEP4Taskb        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95438 +0x00000000     _ZN10IPRewriter7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95439 +0x00000000     _ZN10Classifier8add_exprER6VectorIiEijj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95440 +0x00000000     _ZN9Bitvector5or_atERKS_i       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95441 +0x00000000     _ZNK10Suppressor10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95442 +0x00000000     _ZNK7Element6masterEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95443 +0x00000000     _ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95444 +0x00000000     _ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95445 +0x00000000     _ZN8Notifier20add_dependent_signalEP14NotifierSignal    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95446 +0x00000000     _ZN8ARPFakerD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95447 +0x00000000     _ZN8ARPFakerD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95448 +0x00000000     _ZN8ARPFakerD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95449 +0x00000000     _ZN8ARPFakerC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95450 +0x00000000     _ZN8ARPFakerC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95451 +0x00000000     _ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95452 +0x00000000     _ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95453 +0x00000000     _ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95454 +0x00000000     _ZNK8IPFilter10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95455 +0x00000000     _ZN7HashMapI8IPFlowIDPvE7resize0Ej      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95456 +0x00000000     click_lfree     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95457 +0x00000000     _ZNK7Element8landmarkEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95458 +0x00000000     _ZN15CycleCountAccum4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95459 +0x00000000     _ZNK14BandwidthMeter10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95460 +0x00000000     _ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95461 +0x00000000     _ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95462 +0x00000000     _ZN14LinearIPLookup11dump_routesEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95463 +0x00000000     _ZNK13FastUDPSource10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95464 +0x00000000     _ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95465 +0x00000000     _ZN7HashMapI9IPAddressjEC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95466 +0x00000000     _ZN16VariableExpanderD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95467 +0x00000000     _ZN16VariableExpanderD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95468 +0x00000000     _ZNK7IPEncap10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95469 +0x00000000     _ZN7Element23read_positional_handlerEPS_Pv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95470 +0x00000000     _ZN8ARPPrint10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95471 +0x00000000     _ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95472 +0x00000000     _ZN6ScriptC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95473 +0x00000000     _ZTV18KernelErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95474 +0x00000000     _ZNK7RIPSend10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95475 +0x00000000     _ZN13FastUDPSource7cleanupEN7Element12CleanupStageE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95476 +0x00000000     _ZN11EnsureEther4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95477 +0x00000000     _ZN7CounterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95478 +0x00000000     _ZN7CounterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95479 +0x00000000     _ZN7CounterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95480 +0x00000000     _ZN6String6appendEPKci  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95481 +0x00000000     _ZTV12RatedUnqueue      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95482 +0x00000000     _ZN6VectorI6StringE5clearEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95483 +0x00000000     _ZN11StringAccum14append_numericEyib    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95484 +0x00000000     _ZN11StringAccum14append_numericExib    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95485 +0x00000000     _ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95486 +0x00000000     _ZNK16DevirtualizeInfo10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95487 +0x00000000     _ZN6VectorIiE4veltEPii  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95488 +0x00000000     _ZN12SetIPAddress13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95489 +0x00000000     _ZN13RatedSplitter12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95490 +0x00000000     _ZN5Lexer8yelementERib  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95491 +0x00000000     _ZNK7HashMapI8IPFlowIDbE4sizeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95492 +0x00000000     _ZN8PaintTee13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95493 +0x00000000     _ZN5Lexer8Compound4castEPKc     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95494 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95495 +0x00000000     _ZN13CheckIPHeader4dropENS_6ReasonEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95496 +0x00000000     _ZN12RandomSample10initializeEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95497 +0x00000000     _ZN6Master12check_driverEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95498 +0x00000000     _ZNK12IPInputCombo10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95499 +0x00000000     _ZTV4Idle       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95500 +0x00000000     _ZNK8SortTest10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95501 +0x00000000     _ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95502 +0x00000000     _ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95503 +0x00000000     _ZN4Task15process_pendingEP12RouterThread       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95504 +0x00000000     _ZNK5Lexer8Compound9signatureEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95505 +0x00000000     _ZN5Lexer18set_remaining_textERK6String /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95506 +0x00000000     _ZN6String12mutable_dataEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95507 +0x00000000     _ZN14ActiveNotifier12add_listenerEP4Task        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95508 +0x00000000     _ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95509 +0x00000000     _ZNK10PollDevice15configure_phaseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95510 +0x00000000     click_logged_errh       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95511 +0x00000000     _ZN11TCPRewriter12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95512 +0x00000000     _ZN12StrideSwitch4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95513 +0x00000000     _ZTV14StoreIPAddress    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95514 +0x00000000     _ZTV10PollDevice        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95515 +0x00000000     _ZNK7HashMapI8IPFlowIDbE5emptyEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95516 +0x00000000     _ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95517 +0x00000000     _ZN8ClickIno10initializeEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95518 +0x00000000     cpUDPPort       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95519 +0x00000000     cpTCPPort       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95520 +0x00000000     cpHandlerCallPtrWrite   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95521 +0x00000000     _ZN15UnstripIPHeaderC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95522 +0x00000000     _ZNK6VectorI6StringE4at_uEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95523 +0x00000000     _ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95524 +0x00000000     _ZN6VectorIN6Router6HookupEEC1ERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95525 +0x00000000     _ZNK10BpfyFilter10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95526 +0x00000000     _ZN12CompareBlock19thresh_read_handlerEP7ElementPv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95527 +0x00000000     _ZN7HashMapI8IPFlowIDbEC2ERKS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95528 +0x00000000     _ZN6Shaper12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95529 +0x00000000     _ZN10PollDevice17static_initializeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95530 +0x00000000     _ZNK4IPRw7Pattern15can_accept_fromERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95531 +0x00000000     _ZN14ICMPPingSourceD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95532 +0x00000000     _ZN11TCPRewriter11tcp_gc_hookEP5TimerPv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95533 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE2atEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95534 +0x00000000     _ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95535 +0x00000000     _ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95536 +0x00000000     _ZN12ErrorHandler15default_handlerEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95537 +0x00000000     _ZN7Element20next_processing_codeERPKcP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95538 +0x00000000     _ZN13NotifierQueue4castEPKc     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95539 +0x00000000     _ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95540 +0xa6ad14ca     proclikefs_put_super    /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
95541 +0x00000000     _ZNK6Packet11user_anno_uEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95542 +0x00000000     _ZNK6Packet11user_anno_cEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95543 +0x00000000     _ZN10CheckPaintD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95544 +0x00000000     _ZN6VectorIN7IPTable5EntryEE7reserveEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95545 +0x00000000     _ZNK14CheckTCPHeader10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95546 +0x00000000     _ZN10Suppressor3setEib  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95547 +0x00000000     _ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95548 +0x00000000     _ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95549 +0x00000000     _ZTV8ToDevice   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95550 +0x00000000     _ZN7HashMapI8IPFlowIDbE5beginEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95551 +0x00000000     _ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95552 +0x00000000     _ZN18IPAddrPairRewriterD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95553 +0x00000000     click_dmalloc_where     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95554 +0x00000000     _ZN12ErrorHandler7warningEPKcz  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95555 +0x00000000     _ZN6ShaperD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95556 +0x00000000     _ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95557 +0x00000000     _ZN6VectorIN7IPTable5EntryEED1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95558 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95559 +0x00000000     _ZN8Unqueue210initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95560 +0x00000000     _ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95561 +0x00000000     _ZN7IPTableC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95562 +0x00000000     _ZN7IPTableC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95563 +0x00000000     click_chatter   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95564 +0x00000000     _ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95565 +0x00000000     _ZN7Element20read_keyword_handlerEPS_Pv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95566 +0x00000000     _ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95567 +0x00000000     _ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95568 +0x00000000     _ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95569 +0x00000000     _Z19skbmgr_recycle_skbsP7sk_buff        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95570 +0x00000000     _ZN16SetRandIPAddressD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95571 +0x00000000     _ZN16SetRandIPAddressD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95572 +0x00000000     _ZN16SetRandIPAddressD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95573 +0x00000000     _ZTV13ScheduleLinux     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95574 +0x00000000     _ZN7RRSched7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95575 +0x00000000     _ZN6Router10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95576 +0x00000000     _ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95577 +0x00000000     _ZN14IPAddrRewriterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95578 +0x00000000     _ZN14IPAddrRewriterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95579 +0x00000000     _Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95580 +0x00000000     _ZN6ToHost17static_initializeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95581 +0x00000000     _ZNK6VectorIjE5frontEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95582 +0x00000000     _ZNK6VectorIiE5frontEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95583 +0x00000000     _ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95584 +0x00000000     _ZN5Lexer11next_lexemeEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95585 +0x00000000     _ZNK6Router15unparse_classesER11StringAccumRK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95586 +0x00000000     _ZNK8IPFilter9Primitive10unparse_opEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95587 +0x00000000     _ZNK16BaseErrorHandler9nwarningsEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95588 +0x00000000     _ZNK5Print10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95589 +0x00000000     _ZN8ClickIno5nlinkEm    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95590 +0x00000000     _ZNK6Shaper20can_live_reconfigureEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95591 +0x00000000     _ZNK6VectorIjE4sizeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95592 +0x00000000     _ZNK6VectorIiE4sizeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95593 +0x00000000     _ZNK12StrideSwitch10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95594 +0x00000000     _ZNK12RandomSwitch10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95595 +0x00000000     _ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95596 +0x00000000     _ZN8SortTestD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95597 +0x00000000     _ZN8SortTestD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95598 +0x00000000     _ZN8SortTestD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95599 +0x00000000     _ZN8SortTestC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95600 +0x00000000     _ZN8SortTestC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95601 +0x00000000     _ZNK5Strip10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95602 +0x00000000     _ZN14PerfCountAccumD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95603 +0x00000000     _ZN14PerfCountAccumC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95604 +0x00000000     _ZN7HashMapI8IPFlowIDbE5clearEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95605 +0x00000000     _ZN6SwitchD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95606 +0x00000000     _ZN11DelayShaperD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95607 +0x00000000     _ZN11DelayShaperD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95608 +0x00000000     _ZN11DelayShaperD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95609 +0x00000000     click_add_element_type  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95610 +0x00000000     _ZNK14InfiniteSource5flagsEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95611 +0x00000000     _ZN11DelayShaper7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95612 +0x00000000     cpTimestamp     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95613 +0x00000000     _ZN12IPRouteTable12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95614 +0x00000000     _ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95615 +0x00000000     _ZN13HashMap_ArenaD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95616 +0x00000000     _ZN13HashMap_ArenaD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95617 +0x00000000     _ZN13HashMap_ArenaC2Ej  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95618 +0x00000000     _ZN13HashMap_ArenaC1Ej  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95619 +0x00000000     _ZN11StringAccumD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95620 +0x00000000     _ZNK4IPRw7Pattern7unparseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95621 +0x00000000     _ZTV10HashSwitch        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95622 +0x00000000     _ZTV10CheckPaint        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95623 +0x00000000     _ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95624 +0x00000000     _Z11click_qsortPvjjPFiPKvS1_S_ES_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95625 +0x00000000     _ZTV20LandmarkErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95626 +0x00000000     _ZN8CPUQueue7cleanupEN7Element12CleanupStageE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95627 +0x00000000     _ZNK12SetIPAddress20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95628 +0x00000000     _ZTV7MSQueue    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95629 +0x00000000     _ZN12ScheduleInfoD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95630 +0x00000000     _ZN12ScheduleInfoD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95631 +0x00000000     _ZN12ScheduleInfoD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95632 +0x00000000     _ZN12ScheduleInfoC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95633 +0x00000000     _ZN12ScheduleInfoC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95634 +0x00000000     _ZN6Router19store_local_handlerEiRK7Handler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95635 +0x00000000     _ZN11RatedSource10read_paramEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95636 +0x00000000     _ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95637 +0x00000000     _ZN16ICMPPingRewriter12add_handlersEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95638 +0x00000000     _ZN12GetIPAddressD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95639 +0x00000000     _ZN12GetIPAddressD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95640 +0x00000000     _ZN12GetIPAddressD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95641 +0x00000000     _ZN12GetIPAddressC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95642 +0x00000000     _ZN12GetIPAddressC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95643 +0x00000000     _ZN8Unqueue28run_taskEP4Task    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95644 +0x00000000     _ZN6ScriptD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95645 +0x00000000     _ZN10MixedQueue4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95646 +0x00000000     _ZN7Element13notify_nportsEiiP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95647 +0x00000000     _ZN10ARPQuerierC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95648 +0x00000000     _ZTV12RandomSample      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95649 +0x00000000     _ZN14CheckARPHeader12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95650 +0x00000000     _ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95651 +0x00000000     _ZN18IPAddrPairRewriter10initializeEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95652 +0x00000000     _ZTV14SchedOrderTest    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95653 +0x00000000     _ZNK11StrideSched10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95654 +0x00000000     _ZTV14IPAddrRewriter    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95655 +0x00000000     _ZNK8FromHost10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95656 +0x00000000     _ZTV10ARPQuerier        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95657 +0x00000000     _ZTV8RTCycles   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95658 +0x00000000     _ZN6Router18set_econfigurationEiRK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95659 +0x00000000     _ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95660 +0x00000000     _ZN6VectorIjE4at_uEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95661 +0x00000000     _ZNK14SetUDPChecksum10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95662 +0x00000000     _ZN15CheckICMPHeaderD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95663 +0x00000000     _ZN20HashMap_ArenaFactory14get_arena_funcEj     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95664 +0x00000000     _ZTV11TCPRewriter       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95665 +0x00000000     _ZN12SetTimestampD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95666 +0x00000000     _ZN12SetTimestampD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95667 +0x00000000     _ZN12SetTimestampD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95668 +0x00000000     _ZN12SetTimestampC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95669 +0x00000000     _ZN12SetTimestampC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95670 +0x00000000     _ZN18IPAddrPairRewriter9run_timerEP5Timer       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95671 +0x00000000     _ZN10BpfyFilterC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95672 +0x00000000     _ZNK10UDPIPEncap20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95673 +0x00000000     _ZN6ToHostD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95674 +0x00000000     _ZN6VectorIjE4veltEPji  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95675 +0x00000000     _ZN11TCPRewriterC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95676 +0x00000000     _ZN11TCPRewriterC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95677 +0x00000000     _ZN4Task7cleanupEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95678 +0x00000000     _ZNK11EnsureEther10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95679 +0x00000000     _ZN4Idle4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95680 +0x00000000     _ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95681 +0x00000000     _ZN6VectorIPvE7reserveEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95682 +0x00000000     _ZNK8IPMirror10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95683 +0x00000000     _ZN15UnstripIPHeader13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95684 +0x00000000     _ZN18KernelErrorHandler8log_lineEPKcS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95685 +0x00000000     _ZNK7IPEncap10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95686 +0x00000000     _ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95687 +0x00000000     _ZN10HashSwitchD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95688 +0x00000000     _ZN13FastUDPSource12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95689 +0x00000000     _ZN5Align8smactionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95690 +0x00000000     _ZN15RecycledSkbPool7recycleEP7sk_buff  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95691 +0x00000000     _ZNK7RIPSend10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95692 +0x00000000     _ZN14ActiveNotifierD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95693 +0x00000000     _ZN7GapRate8set_rateEjP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95694 +0x00000000     _ZTV12SpinlockInfo      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95695 +0x00000000     _ZN18IPAddrPairRewriter4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95696 +0x00000000     _ZN5TimerC2EP7Element   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95697 +0x00000000     _ZNK7HashMapI6StringiE9find_pairERKS0_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95698 +0x00000000     _ZTV8SetCRC32   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95699 +0x00000000     _ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95700 +0x00000000     _ZNK7IPPrint10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95701 +0x00000000     _ZN5Timer8set_hookEP4Task       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95702 +0x00000000     _ZN11PaintSwitchD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95703 +0x00000000     _ZN11PaintSwitchD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95704 +0x00000000     _ZN11PaintSwitchD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95705 +0x00000000     _ZN14ActiveNotifierC1EN8Notifier8SearchOpE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95706 +0x00000000     _ZN10EtherEncap4pullEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95707 +0x00000000     _ZN13CheckIPHeader12reason_textsE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95708 +0x00000000     _ZTV21BandwidthRatedUnqueue     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95709 +0x00000000     _ZNK12ErrorElement10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95710 +0x00000000     _ZNK6VectorI6StringE5beginEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95711 +0x00000000     _ZN20StripToNetworkHeader13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95712 +0x00000000     _ZN14LinearIPLookupD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95713 +0x00000000     _ZN14LinearIPLookupC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95714 +0x00000000     _ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95715 +0x00000000     _ZN12IPRouteTable13table_handlerEP7ElementPv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95716 +0x00000000     _ZN8FromHost10new_deviceEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95717 +0x00000000     _ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95718 +0x00000000     _ZN13FastUDPSource10incr_portsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95719 +0x00000000     _ZNK11TimedSource10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95720 +0x00000000     _ZN11TimedSource10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95721 +0x00000000     _ZN6Master14prepare_routerEP6Router     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95722 +0x00000000     _ZNK14NotifierSignal6activeEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95723 +0x00000000     _ZN13RatedSplitterD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95724 +0x00000000     _ZN13RatedSplitterD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95725 +0x00000000     _ZN13RatedSplitterD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95726 +0x00000000     _ZN13RatedSplitterC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95727 +0x00000000     _ZN13RatedSplitterC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95728 +0x00000000     _ZN12PokeHandlers12PAUSE_MARKERE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95729 +0x00000000     _ZN11StringAccum11append_fillEii        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95730 +0x00000000     _ZN9StoreDataD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95731 +0x00000000     _ZN9StoreDataD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95732 +0x00000000     _ZN9StoreDataD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95733 +0x00000000     _ZN9StoreDataC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95734 +0x00000000     _ZN9StoreDataC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95735 +0x00000000     _ZNK9SetIPDSCP20can_live_reconfigureEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95736 +0x00000000     _ZTV12StaticSwitch      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95737 +0x00000000     _ZN10PullSwitch4pullEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95738 +0x00000000     _ZNK12SetIPAddress10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95739 +0x00000000     _ZNK13IPReassembler10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95740 +0x00000000     _ZN8ARPPrint13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95741 +0x00000000     _ZN11SimpleQueue4yankIN33_GLOBAL__N__ZN13QueueYankTestC2Ev3FooEEEiT_R6VectorIP6PacketE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95742 +0x00000000     _ZN8NameInfo5queryEjPK7ElementRK6StringPvi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95743 +0x00000000     _ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95744 +0x00000000     _ZTV13DriverManager     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95745 +0x00000000     _ZN7Burster10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95746 +0x00000000     _ZN10ARPQuerier14send_query_forE9IPAddress      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95747 +0x00000000     _ZN12StaticSwitchD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95748 +0x00000000     _ZN12StaticSwitchD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95749 +0x00000000     _ZN12StaticSwitchD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95750 +0x00000000     _ZN12StaticSwitchC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95751 +0x00000000     _ZN12StaticSwitchC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95752 +0x00000000     _ZN6VectorI7IPRouteEaSERKS1_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95753 +0x00000000     _ZNK6Shaper13configurationER6VectorI6StringE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95754 +0x00000000     _ZN5Lexer6lerrorEPKcz   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95755 +0x00000000     _ZNK7IPEncap20can_live_reconfigureEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95756 +0x00000000     _ZNK9IPAddress12unparse_maskEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95757 +0x00000000     _ZTV11AddressInfo       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95758 +0x00000000     _ZN7HashMapI6StringiE11findp_forceERKS0_RKi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95759 +0x00000000     _ZTV9StoreData  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95760 +0x00000000     _ZN8RFC2507dD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95761 +0x00000000     _ZN8RFC2507dD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95762 +0x00000000     _ZN8RFC2507dD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95763 +0x00000000     _ZN8RFC2507dC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95764 +0x00000000     _ZN8RFC2507dC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95765 +0x00000000     _ZN16UpstreamNotifierC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95766 +0x00000000     _ZN16UpstreamNotifierC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95767 +0x00000000     _ZN14SchedOrderTestD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95768 +0x00000000     _ZN14SchedOrderTestC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95769 +0x9ed782d6     proclikefs_unregister_filesystem        /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
95770 +0x00000000     _ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95771 +0x00000000     _ZTV8DRRSched   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95772 +0x00000000     _ZN8Truncate13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95773 +0x00000000     _ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95774 +0x00000000     _ZNK16ICMPPingRewriter7Mapping1sEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95775 +0x00000000     _ZNK11NullElement10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95776 +0x00000000     _ZTV18IPRewriterPatterns        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95777 +0x00000000     _ZN21LinuxModuleLexerExtraD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95778 +0x00000000     _ZN21LinuxModuleLexerExtraD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95779 +0x00000000     _ZN6VectorIN6Router6HookupEE9push_backERKS1_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95780 +0x00000000     _ZN10SuppressorD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95781 +0x00000000     _ZTV13DiscardNoFree     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95782 +0x00000000     _ZN14CheckTCPHeaderD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95783 +0x00000000     _ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95784 +0x00000000     _ZN16StaticPullSwitch4pullEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95785 +0x00000000     _ZTV12GetIPAddress      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95786 +0x00000000     _ZN11EnsureEtherC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95787 +0x00000000     _ZN11EnsureEtherC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95788 +0x00000000     _ZNK8ARPFaker10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95789 +0x00000000     _ZNK20StripToNetworkHeader10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95790 +0x00000000     _ZN3Tee4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95791 +0x00000000     _ZTV14SortedIPLookup    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95792 +0x00000000     _ZNK13PerfCountInfo15configure_phaseEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95793 +0x00000000     _ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95794 +0x00000000     _ZTV13AlignmentInfo     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95795 +0x00000000     _ZN12RandomSwitch4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95796 +0x00000000     _ZN19ContextErrorHandlerD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95797 +0x00000000     _ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95798 +0x00000000     _ZN7Element8run_taskEP4Task     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95799 +0x00000000     _ZN7Element12PULL_TO_PUSHE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95800 +0x00000000     _ZN6Router18check_hookup_rangeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95801 +0x00000000     _ZNK10IPRewriter10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95802 +0x00000000     _ZNK10UDPIPEncap10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95803 +0x00000000     _ZNK13RadixIPLookup10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95804 +0x00000000     _ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95805 +0x00000000     _ZTV10Classifier        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95806 +0x00000000     _ZTV9AnyDevice  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95807 +0x00000000     _ZN12PokeHandlersD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95808 +0x00000000     _ZN12PokeHandlersD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95809 +0x00000000     _ZN12PokeHandlersD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95810 +0x00000000     _ZN12PokeHandlersC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95811 +0x00000000     _ZN12PokeHandlersC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95812 +0x00000000     _ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95813 +0x00000000     _ZN6Router7handlerEPKS_i        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95814 +0x00000000     _ZTV8IPMapper   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95815 +0x00000000     _ZN8FromHost10initializeEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95816 +0x00000000     _ZN7Element10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95817 +0x00000000     _Z13cp_seconds_asRK6StringiPj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95818 +0x00000000     _ZN14BandwidthMeter4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95819 +0x00000000     _ZNK11PaintSwitch10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95820 +0x00000000     _ZN10FromDevice4castEPKc        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95821 +0x00000000     _ZN10EtherEncap8smactionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95822 +0x00000000     _Z9cp_real10RK6StringiiPjS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95823 +0x00000000     _ZNK3RED20can_live_reconfigureEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95824 +0x00000000     _ZN6ToHost10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95825 +0x00000000     _ZN25VerboseFilterErrorHandlerD1Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95826 +0x00000000     _ZN25VerboseFilterErrorHandlerD0Ev      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95827 +0x00000000     _ZN14ToHostSniffersD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95828 +0x00000000     _ZN14ToHostSniffersC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95829 +0x00000000     _ZN15PushNullElement4pushEiP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95830 +0x00000000     _ZN18IPRewriterPatternsD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95831 +0x00000000     _ZN18IPRewriterPatternsC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95832 +0x00000000     _ZN12IPClassifierD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95833 +0x00000000     _ZN12IPClassifierD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95834 +0x00000000     _ZN12IPClassifierD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95835 +0x00000000     _ZN12IPClassifierC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95836 +0x00000000     _ZN12IPClassifierC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95837 +0x00000000     _ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95838 +0x00000000     _ZTV8RFC2507d   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95839 +0x00000000     _ZTV8RFC2507c   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95840 +0x00000000     _ZN5PrintD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95841 +0x00000000     _ZN10ClassifierD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95842 +0x00000000     _ZN8ToDeviceD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95843 +0x00000000     _ZN8ToDeviceD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95844 +0x00000000     _ZN8ToDeviceD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95845 +0x00000000     _ZN8ToDeviceC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95846 +0x00000000     _ZN8ToDeviceC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95847 +0x00000000     _ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95848 +0x00000000     _ZNK14ICMPPingSource10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95849 +0x00000000     _ZN7Discard12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95850 +0x00000000     _ZN10PacketTestD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95851 +0x00000000     _ZN12SpinlockInfoD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95852 +0x00000000     _ZN12SpinlockInfoD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95853 +0x00000000     _ZN12SpinlockInfoD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95854 +0x00000000     _ZN12SpinlockInfoC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95855 +0x00000000     _ZN12SpinlockInfoC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95856 +0x00000000     _ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95857 +0x00000000     _ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95858 +0x00000000     _Z7cp_timeRK6StringP9Timestamp  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95859 +0x00000000     _ZN15CheckICMPHeader12read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95860 +0x00000000     _ZNK11CheckPacket10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95861 +0x00000000     _ZN11TimedSource12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95862 +0x00000000     _ZN14NotifierSignal17static_initializeEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95863 +0x00000000     _ZNK11SimpleQueue20can_live_reconfigureEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95864 +0x00000000     _ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95865 +0x00000000     _ZN16RoundRobinSwitch4pushEiP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95866 +0x00000000     _ZN11IPGWOptionsD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95867 +0x00000000     _ZN11IPGWOptionsD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95868 +0x00000000     _ZN11IPGWOptionsD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95869 +0x00000000     _ZN16BaseErrorHandler12reset_countsEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95870 +0x00000000     _Z10cp_elementRK6StringP7ElementP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95871 +0x00000000     _ZN6VectorIiE2atEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95872 +0x00000000     _ZNK11DelayShaper10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95873 +0x00000000     _ZNK8CPUQueue10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95874 +0x00000000     _Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95875 +0x00000000     _ZN11DelayShaper9run_timerEP5Timer      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95876 +0x00000000     cpUnsignedReal2 /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95877 +0x00000000     _ZN14SchedOrderTest9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95878 +0x00000000     _ZN11QuitWatcherD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95879 +0x00000000     _ZN11QuitWatcherD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95880 +0x00000000     _ZN11QuitWatcherD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95881 +0x00000000     _ZNK10CrapFilter10port_countEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95882 +0x00000000     _ZN7MSQueue4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95883 +0x00000000     _ZN8FromHost8run_taskEP4Task    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95884 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95885 +0x00000000     _ZTV14CheckUDPHeader    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95886 +0x00000000     _ZNK8ARPPrint10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95887 +0x00000000     _ZN6String13mutable_c_strEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95888 +0x00000000     _ZNK14SortedIPLookup5checkEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95889 +0x00000000     _ZN14CheckARPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95890 +0x00000000     _ZN14CheckARPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95891 +0x00000000     _ZTV12SetPerfCount      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95892 +0x00000000     _ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95893 +0x00000000     _Z11cp_spacevecRK6StringR6VectorIS_E    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95894 +0x00000000     _ZN5LexerD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95895 +0x00000000     _ZN5LexerC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95896 +0x00000000     _ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95897 +0x00000000     _ZN11DelayShaper10read_paramEP7ElementPv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95898 +0x00000000     _ZN7IPPrint13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95899 +0x00000000     _ZN7Element4castEPKc    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95900 +0x00000000     _ZNK11AdaptiveRED10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95901 +0x00000000     _ZN13IPReassembler10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95902 +0x00000000     _ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95903 +0x00000000     _ZN18RoundRobinIPMapperD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95904 +0x00000000     _ZN18RoundRobinIPMapperC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95905 +0x00000000     _ZNK8ClickIno11name_searchERK6Stringiii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95906 +0x00000000     _ZN14InfiniteSource12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95907 +0x00000000     _ZN8FixIPSrcD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95908 +0x00000000     _ZN8FixIPSrcD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95909 +0x00000000     _ZN8FixIPSrcD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95910 +0x00000000     _ZN8FixIPSrcC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95911 +0x00000000     _ZN8FixIPSrcC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95912 +0x00000000     _ZNK20StripToNetworkHeader10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95913 +0x00000000     _Z16click_init_schedP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95914 +0x00000000     _ZTV11LinkUnqueue       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95915 +0x00000000     _ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95916 +0x00000000     _ZNK15CycleCountAccum10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95917 +0x00000000     _ZN10CheckPaint4pullEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95918 +0x00000000     _ZN15BandwidthShaperC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95919 +0x00000000     _ZN12RandomSample12read_handlerEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95920 +0x00000000     _ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95921 +0x00000000     _ZN8RFC2507c9make_fullEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95922 +0x00000000     _ZN13FastUDPSourceD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95923 +0x00000000     _ZN13FastUDPSourceD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95924 +0x00000000     _ZN13FastUDPSourceD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95925 +0x00000000     _ZN13FastUDPSourceC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95926 +0x00000000     _ZN13FastUDPSourceC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95927 +0x00000000     _ZN12ErrorHandler5errorEPKcz    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95928 +0x00000000     _Z9cp_stringRK6StringPS_S2_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95929 +0x00000000     _ZN8ToDevice14static_cleanupEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95930 +0x00000000     _ZN5Lexer13yelementclassEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95931 +0x00000000     _ZN10LexerExtraD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95932 +0x00000000     _ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95933 +0x00000000     _ZN13ConfParseTestD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95934 +0x00000000     _ZN13ConfParseTestD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95935 +0x00000000     _ZN13ConfParseTestD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95936 +0x00000000     _ZN13ConfParseTestC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95937 +0x00000000     _ZN13ConfParseTestC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95938 +0x00000000     _ZN6Packet5cloneEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95939 +0x00000000     _Z12cp_eat_spaceR6String        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95940 +0x00000000     _ZTV8Truncate   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95941 +0x00000000     _ZN5StripD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95942 +0x00000000     _ZN5StripC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95943 +0x00000000     _ZN12RouterThread6driverEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95944 +0x00000000     _ZN6NameDB7revfindEPKvi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95945 +0x00000000     _ZN6VectorIN6Router6HookupEEaSERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95946 +0x00000000     _ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95947 +0x00000000     _ZN14ICMPPingSource12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95948 +0x00000000     _ZN6VectorIPvEC2ERKS1_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95949 +0x00000000     _ZN18SourceIPHashMapperD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95950 +0x00000000     _ZN18SourceIPHashMapperC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95951 +0x00000000     _ZTV18RoundRobinIPMapper        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95952 +0x00000000     _ZN12RandomSource4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95953 +0x00000000     _ZN11NullElementD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95954 +0x00000000     _ZN11NullElementD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95955 +0x00000000     _ZN11NullElementD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95956 +0x00000000     _ZN8DRRSchedD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95957 +0x00000000     _ZN8DRRSchedD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95958 +0x00000000     _ZN8DRRSchedD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95959 +0x00000000     _ZN8DRRSchedC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95960 +0x00000000     _ZN8DRRSchedC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95961 +0x00000000     _ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95962 +0x00000000     _ZNK12StrideSwitch10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95963 +0x00000000     _ZN11SimpleQueue4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95964 +0x00000000     _ZN6String14garbage_stringEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95965 +0x00000000     _ZN8Notifier12add_listenerEP4Task       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95966 +0x00000000     _ZNK7IPEncap10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95967 +0x00000000     _ZN9ICMPError13simple_actionEP6Packet   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95968 +0x00000000     _ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95969 +0x00000000     _ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95970 +0x00000000     _ZN14DropBroadcastsD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95971 +0x00000000     _ZN14DropBroadcastsC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95972 +0x00000000     _ZNK6VectorI9IPAddressE3endEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95973 +0x00000000     _ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95974 +0x00000000     _ZN12ARPResponder13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95975 +0x00000000     _ZN14SortedIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95976 +0x00000000     _ZNK7RIPSend10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95977 +0x00000000     _ZN10CheckCRC32C2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95978 +0x00000000     _ZN15SpinlockReleaseD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95979 +0x00000000     _ZN11SimpleQueue10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95980 +0x00000000     _ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95981 +0x00000000     _ZN12IPRouteTable11dump_routesEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95982 +0x00000000     _ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95983 +0x00000000     _ZN13CheckIPHeader12add_handlersEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95984 +0x00000000     _ZN14AverageCounter12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95985 +0x00000000     _Z12cp_ip_prefixRK6StringPhS2_bP7Element        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95986 +0x00000000     _ZN10ARPQuerier12add_handlersEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95987 +0x00000000     _ZNK6VectorIN6Router6HookupEE5emptyEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95988 +0x00000000     _ZN7HashMapI6StringiE7resize0Ej /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95989 +0x00000000     _ZN6VectorIN6Router6HookupEE4swapERS2_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95990 +0x00000000     _ZN6String11append_fillEii      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95991 +0x00000000     _ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95992 +0x00000000     _ZN10MixedQueueC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95993 +0x00000000     _ZN10EtherEncapC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95994 +0x00000000     _ZN10ARPQuerierD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95995 +0x00000000     _ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95996 +0x00000000     _ZTV5Print      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95997 +0x00000000     _ZN19VariableEnvironment9parent_ofEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95998 +0x00000000     _ZNK7MSQueue10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
95999 +0x00000000     _ZNK5Lexer18lexical_scoping_inEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96000 +0x00000000     _ZTV5Strip      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96001 +0x00000000     _ZN6String4MemoC2Eii    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96002 +0x00000000     _ZNK11IPGWOptions10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96003 +0x00000000     _ZNK11EtherMirror10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96004 +0x00000000     _ZNK15UnstripIPHeader10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96005 +0x00000000     _ZNK6VectorI6StringE3endEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96006 +0x00000000     _ZN6VectorI6StringEC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96007 +0x00000000     _ZNK14ActiveNotifier9listenersER6VectorIP4TaskE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96008 +0x00000000     _ZNK12ICMPRewriter10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96009 +0x00000000     _ZTV19ContextErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96010 +0x00000000     _ZN6VectorI6StringED1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96011 +0x00000000     _ZN6VectorI9IPAddressE8pop_backEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96012 +0x00000000     _ZN15CycleCountAccumD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96013 +0x00000000     _ZN5Paint18color_read_handlerEP7ElementPv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96014 +0x00000000     _ZN10BpfyFilterD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96015 +0x00000000     _ZN11TimedSourceC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96016 +0x00000000     _ZN11TimedSourceC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96017 +0x00000000     _ZTV10FromDevice        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96018 +0x00000000     _ZNK11CheckLength10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96019 +0x00000000     _ZNK14StoreIPAddress10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96020 +0x00000000     _ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96021 +0x00000000     _ZN6VectorI6StringEaSERKS1_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96022 +0x00000000     _ZN6Router20store_global_handlerERK7Handler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96023 +0x00000000     _ZN13PerfCountUserD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96024 +0x00000000     _ZN13PerfCountUserD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96025 +0x00000000     _ZN13PerfCountUserD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96026 +0x00000000     _ZN13PerfCountUserC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96027 +0x00000000     _ZN13PerfCountUserC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96028 +0x00000000     _ZNK14LinearIPLookup10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96029 +0x00000000     _ZNK8IPFilter10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96030 +0x00000000     _ZN6VectorI7IPRouteE6resizeEiRKS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96031 +0x00000000     _ZN11RatedSource4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96032 +0x00000000     _ZN10PullSwitchC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96033 +0x00000000     _ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96034 +0x00000000     _ZN12FastUDPFlows5resetEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96035 +0x00000000     _ZlsR11StringAccum9IPAddress    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96036 +0x00000000     _ZN6VectorI6StringE9pop_frontEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96037 +0x00000000     _ZN8FromHost5fl_txEP7sk_buffP10net_device       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96038 +0x00000000     _ZTV8SortTest   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96039 +0x00000000     _ZNK14SetTCPChecksum10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96040 +0x00000000     _ZN9SetIPDSCPD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96041 +0x00000000     _ZN9SetIPDSCPD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96042 +0x00000000     _ZN9SetIPDSCPD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96043 +0x00000000     _ZN9SetIPDSCPC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96044 +0x00000000     _ZN9SetIPDSCPC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96045 +0x00000000     _ZNK10PullSwitch10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96046 +0x00000000     _ZN11RatedSource10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96047 +0x00000000     _ZTV10LexerExtra        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96048 +0x00000000     _ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96049 +0x00000000     _ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96050 +0x00000000     _ZN13ScheduleLinux10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96051 +0x00000000     _ZN14StaticIPLookupD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96052 +0x00000000     _ZN7DiscardC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96053 +0x00000000     _ZN7DiscardC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96054 +0x00000000     _ZNK6VectorI6StringE5frontEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96055 +0x00000000     _ZTV12ARPResponder      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96056 +0x00000000     _ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96057 +0x00000000     _ZNK14InfiniteSource10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96058 +0x00000000     _ZN15BandwidthShaper4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96059 +0x00000000     _ZTV18SourceIPHashMapper        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96060 +0x00000000     _ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96061 +0x00000000     _ZNK11TCPRewriter10TCPMapping1sEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96062 +0x00000000     _ZNK6VectorIN6Router6HookupEE4sizeEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96063 +0x00000000     _ZN10IPRewriterC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96064 +0x00000000     _ZNK15RandomBitErrors20can_live_reconfigureEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96065 +0x00000000     _ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96066 +0x00000000     _ZNK14DropBroadcasts10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96067 +0x00000000     _ZNK14ToHostSniffers10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96068 +0x00000000     _ZN6VectorIjEixEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96069 +0x00000000     _ZN14SetUDPChecksum13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96070 +0x00000000     _ZN14SetTCPChecksum13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96071 +0x00000000     _ZN6VectorIN7IPTable5EntryEE3endEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96072 +0x00000000     _ZN12FastTCPFlows4pullEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96073 +0x00000000     _ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96074 +0x00000000     _ZNK12IPFragmenter10processingEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96075 +0x00000000     _ZNK9ICMPError10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96076 +0x00000000     cpDesCblock     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96077 +0x00000000     _ZN6VectorI9IPAddressE10push_frontERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96078 +0x00000000     _ZTV12IPClassifier      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96079 +0x00000000     _ZTV12DelayUnqueue      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96080 +0x00000000     _ZN14CheckUDPHeader12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96081 +0x00000000     _ZNK22BandwidthRatedSplitter10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96082 +0x00000000     _ZN10Suppressor4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96083 +0x00000000     _ZThn60_N18RoundRobinIPMapperD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96084 +0x00000000     _ZN8MarkIPCE12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96085 +0x00000000     _ZN10FromDevice14static_cleanupEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96086 +0x00000000     _ZN5Lexer19remove_element_typeEiPi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96087 +0x00000000     _ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96088 +0x00000000     _ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96089 +0x00000000     _ZN19VariableEnvironment6expandERK6StringiiR11StringAccum       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96090 +0x00000000     _ZN6VectorIjE9push_backERKj     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96091 +0x00000000     _ZN3RED9configureER6VectorI6StringEP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96092 +0x00000000     _ZN15RandomBitErrorsD2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96093 +0x00000000     _ZN15RandomBitErrorsD0Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96094 +0x00000000     _ZNK6VectorIN7IPTable5EntryEE4veltEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96095 +0x00000000     _ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96096 +0x00000000     _ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96097 +0x00000000     _ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96098 +0x00000000     _ZN11SimpleQueue12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96099 +0x00000000     _ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96100 +0x00000000     _ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96101 +0x00000000     _Z20cp_process_backslashPKcS0_R11StringAccum    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96102 +0x00000000     _ZNK14BandwidthMeter10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96103 +0x00000000     _ZTV11SimpleQueue       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96104 +0x00000000     cpKeyword       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96105 +0x00000000     _ZNK6Switch20can_live_reconfigureEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96106 +0x00000000     _ZNK6String8hashcodeEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96107 +0x00000000     _ZN8RFC2507c15make_compressedEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96108 +0x00000000     _ZN13DynamicNameDB5queryERK6StringPvi   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96109 +0x00000000     _ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96110 +0x00000000     _ZN14ICMPPingSource10initializeEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96111 +0x00000000     _ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96112 +0x00000000     _ZN6VectorIjE4backEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96113 +0x00000000     _ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96114 +0x00000000     _ZN6Master17unregister_routerEP6Router  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96115 +0x00000000     _ZN5Timer8set_hookEPFvPS_PvES1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96116 +0x00000000     _ZTV10Suppressor        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96117 +0x00000000     _ZN13SetCycleCount4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96118 +0x00000000     _ZNK11SetAnnoByte10port_countEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96119 +0x00000000     _ZN6Router5unuseEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96120 +0x00000000     _ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96121 +0x00000000     cpEtherAddress  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96122 +0x00000000     _Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96123 +0x00000000     _ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96124 +0x00000000     _ZN17StaticThreadSched22initial_home_thread_idEP4Taskb  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96125 +0x00000000     _ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96126 +0x00000000     _ZN8MarkIPCE4pullEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96127 +0x00000000     _ZNK16SetRandIPAddress10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96128 +0x00000000     _ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96129 +0x00000000     _ZTV12CompareBlock      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96130 +0x00000000     _ZN11QuitWatcher9run_timerEP5Timer      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96131 +0x00000000     _ZN15RandomBitErrors12add_handlersEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96132 +0x00000000     _ZNK14SchedOrderTest10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96133 +0x00000000     _ZTV13PerfCountInfo     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96134 +0x00000000     _ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96135 +0x00000000     _ZNK14IPAddrRewriter10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96136 +0x00000000     _ZN14InfiniteSourceD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96137 +0x00000000     _ZN14InfiniteSourceC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96138 +0x00000000     _ZN14AverageCounter5resetEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96139 +0x00000000     _ZNK3RED10queue_sizeEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96140 +0x00000000     _ZTV12PokeHandlers      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96141 +0x00000000     _ZTV12FastTCPFlows      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96142 +0x00000000     _ZNK12SetTimestamp10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96143 +0x00000000     _ZN10FromDeviceD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96144 +0x00000000     _ZNK8Unqueue210class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96145 +0x00000000     _ZN12StaticSwitch4pushEiP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96146 +0x00000000     _ZN15HostEtherFilterC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96147 +0x00000000     _ZN11AdaptiveRED4castEPKc       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96148 +0x00000000     _ZN7HashMapI9IPAddressjEC2ERKS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96149 +0x00000000     _ZN6StringC1Ey  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96150 +0x00000000     _ZN6StringC1Ex  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96151 +0x00000000     _ZN6StringC1Em  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96152 +0x00000000     _ZN6StringC1El  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96153 +0x00000000     _ZN6StringC1Ej  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96154 +0x00000000     _ZN6StringC1Ei  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96155 +0x00000000     _ZN13FTPPortMapper13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96156 +0x00000000     _ZN10Classifier18DominatorOptimizer13calculate_domEi    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96157 +0x00000000     _ZN6VectorIjE5clearEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96158 +0x00000000     _ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96159 +0x00000000     _ZN12ErrorHandler6ldebugERK6StringPKcz  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96160 +0x00000000     click_public_packages   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96161 +0x00000000     _ZN11RatedSource12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96162 +0x00000000     _ZN11IPGWOptions13simple_actionEP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96163 +0x00000000     _ZN12FastUDPFlowsD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96164 +0x00000000     _ZN12FastUDPFlowsD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96165 +0x00000000     _ZN12FastUDPFlowsD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96166 +0x00000000     _ZN12FastUDPFlowsC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96167 +0x00000000     _ZN12FastUDPFlowsC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96168 +0x00000000     _Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96169 +0xb2f734c6     proclikefs_read_super   /d/click/click-1.6.0-27/linuxmodule/proclikefs  EXPORT_SYMBOL
96170 +0x00000000     _ZN5TimerC2EPFvPS_PvES1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96171 +0x00000000     _ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96172 +0x00000000     _ZN6VectorI6StringEC1EiRKS0_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96173 +0x00000000     _ZN6String4MemoD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96174 +0x00000000     _ZNK14StaticIPLookup10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96175 +0x00000000     _ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96176 +0x00000000     _ZN15CycleCountAccum12read_handlerEP7ElementPv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96177 +0x00000000     _ZN14CheckTCPHeader12read_handlerEP7ElementPv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96178 +0x00000000     _ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96179 +0x00000000     _ZN7Unqueue12add_handlersEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96180 +0x00000000     _ZN10PollDevice14static_cleanupEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96181 +0x00000000     _ZN10FromDevice7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96182 +0x00000000     _ZN6VectorIN6Router6HookupEEixEi        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96183 +0x00000000     _ZNK6Script10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96184 +0x00000000     _ZN10CheckPaintC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96185 +0x00000000     _ZN15UnstripIPHeaderD1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96186 +0x00000000     _ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96187 +0x00000000     _ZNK7MSQueue10port_countEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96188 +0x00000000     _ZNK13FTPPortMapper10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96189 +0x00000000     _ZN6NameDBD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96190 +0x00000000     _ZN13CheckIPHeaderD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96191 +0x00000000     _ZN13CheckIPHeaderD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96192 +0x00000000     _ZN13CheckIPHeaderD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96193 +0x00000000     _ZN13CheckIPHeaderC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96194 +0x00000000     _ZN13CheckIPHeaderC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96195 +0x00000000     _ZN7Unqueue10read_paramEP7ElementPv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96196 +0x00000000     _ZNK5Paint20can_live_reconfigureEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96197 +0x00000000     _ZN5Paint12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96198 +0x00000000     _ZN5Lexer12ydeclarationERK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96199 +0x00000000     _ZNK8IPFlowID7unparseEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96200 +0x00000000     _ZN14AverageCounterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96201 +0x00000000     _ZN14AverageCounterC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96202 +0x00000000     _ZN7Counter13simple_actionEP6Packet     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96203 +0x00000000     _ZN13FastUDPSource8NO_LIMITE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96204 +0x00000000     _ZNK4IPRw7Mapping7unparseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96205 +0x00000000     _ZN7BursterD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96206 +0x00000000     _ZN7BursterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96207 +0x00000000     _ZN7BursterD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96208 +0x00000000     _ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96209 +0x00000000     _ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96210 +0x00000000     _ZNK6VectorIN6Router6HookupEE2atEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96211 +0x00000000     _ZN13IPReassembler7cleanupEN7Element12CleanupStageE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96212 +0x00000000     _ZNK10BpfyFilter10processingEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96213 +0x00000000     _ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96214 +0x00000000     _ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96215 +0x00000000     _ZN5Lexer15skip_slash_starEPKc  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96216 +0x00000000     _ZNK10Classifier4Expr7impliesERKS0_     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96217 +0x00000000     _ZNK3RED10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96218 +0x00000000     _ZN7IPTable3delE9IPAddressS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96219 +0x00000000     _ZNK14IPAddrRewriter13IPAddrMapping7reverseEv   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96220 +0x00000000     _Z15cp_pop_spacevecR6String     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96221 +0x00000000     _ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96222 +0x00000000     _ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96223 +0x00000000     _ZNK8IPFilter9Primitive12unparse_typeEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96224 +0x00000000     cpElement       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96225 +0x00000000     _ZN6Packet19expensive_uniqueifyEiib     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96226 +0x00000000     _ZNK15LookupIPRouteMP10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96227 +0x00000000     _ZNK13DiscardNoFree10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96228 +0x00000000     cpKeywords      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96229 +0x00000000     _ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96230 +0x00000000     _ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96231 +0x00000000     _ZN6VectorIPvE4swapERS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96232 +0x00000000     _ZN11SimpleQueueC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96233 +0x00000000     _ZN11SimpleQueueC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96234 +0x00000000     _Z23cp_unparse_millisecondsj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96235 +0x00000000     _Z23cp_unparse_microsecondsj    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96236 +0x00000000     _ZN14ComparePackets4pullEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96237 +0x00000000     _ZNK6Router5enameEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96238 +0x00000000     _ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96239 +0x00000000     _ZN10PollDeviceD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96240 +0x00000000     _ZN11NullElement13simple_actionEP6Packet        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96241 +0x00000000     _ZTV15CheckICMPHeader   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96242 +0x00000000     _ZNK15PushNullElement10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96243 +0x00000000     _ZNK15PullNullElement10port_countEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96244 +0x00000000     cpReal10        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96245 +0x00000000     _ZN19VariableEnvironmentC1EPS_  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96246 +0x00000000     _ZTV13ElementFilter     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96247 +0x00000000     _ZN6Router14add_module_refEP6module     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96248 +0x00000000     _ZN7UnstripC2Ej /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96249 +0x00000000     _ZN7UnstripC1Ej /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96250 +0x00000000     _ZNK6Switch13configurationER6VectorI6StringE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96251 +0x00000000     _ZN11DelayShaper4pullEi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96252 +0x00000000     _Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96253 +0x00000000     _ZN6String12oom_string_pE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96254 +0x00000000     _ZN6VectorIN5Lexer11ElementTypeEE7reserveEi     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96255 +0x00000000     _ZTV13NotifierQueue     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96256 +0x00000000     cpConfirmKeywords       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96257 +0x00000000     _ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96258 +0x00000000     _ZN12PokeHandlers11LOOP_MARKERE /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96259 +0x00000000     _ZTV15HostEtherFilter   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96260 +0x00000000     _ZN7ElementD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96261 +0x00000000     _ZN7ElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96262 +0x00000000     _ZN7ElementD0Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96263 +0x00000000     _ZThn60_N18SourceIPHashMapperD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96264 +0x00000000     _ZN10PollDevice7cleanupEN7Element12CleanupStageE        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96265 +0x00000000     _ZNK11HandlerCall7unparseEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96266 +0x00000000     _ZN11DelayShaper10initializeEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96267 +0x00000000     _ZN13DynamicNameDB7revfindEPKvi /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96268 +0x00000000     _ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96269 +0x00000000     _ZN10CheckCRC32D1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96270 +0x00000000     _ZN11SetAnnoByteD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96271 +0x00000000     _ZN11SetAnnoByteD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96272 +0x00000000     _ZN11SetAnnoByteD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96273 +0x00000000     _ZN10BpfyFilter4pushEiP6Packet  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96274 +0x00000000     _ZN10RandomSeedD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96275 +0x00000000     _ZN7HashMapI9IPAddressjE9copy_fromERKS1_        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96276 +0x00000000     cpTimeval       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96277 +0x00000000     _ZNK9Timestamp7unparseEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96278 +0x00000000     _ZN7HashMapI8IPFlowIDbE4swapERS1_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96279 +0x00000000     _ZN7HashMapI8IPFlowIDiED1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96280 +0x00000000     _ZN7HashMapI8IPFlowIDiEC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96281 +0x00000000     _ZN13RadixIPLookup5Radix10make_radixEii /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96282 +0x00000000     _ZN13NotifierQueue4pullEi       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96283 +0x00000000     _ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96284 +0x00000000     _ZNK15RandomBitErrors10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96285 +0x00000000     _ZN10MixedQueueD0Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96286 +0x00000000     _ZN15HostEtherFilter13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96287 +0x00000000     _ZN10EtherEncapD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96288 +0x00000000     _ZN12ErrorHandler9OK_RESULTE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96289 +0x00000000     _ZN14CheckUDPHeaderD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96290 +0x00000000     _ZN14CheckUDPHeaderC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96291 +0x00000000     _ZN6Router18set_hotswap_routerEPS_      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96292 +0x00000000     _ZN11RatedSourceC2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96293 +0x00000000     _ZN11RatedSourceC1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96294 +0x00000000     _ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96295 +0x00000000     _ZN9Bitvector13resize_to_maxEib /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96296 +0x00000000     _ZNK14NotifierSignal7unparseEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96297 +0x00000000     _ZN14IPAddrRewriter4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96298 +0x00000000     _ZN7Element4PUSHE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96299 +0x00000000     _Z13cp_ip_addressRK6StringPhP7Element   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96300 +0x00000000     _ZN12StaticNameDB7revfindEPKvi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96301 +0x00000000     _ZN12IPInputCombo12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96302 +0x00000000     _ZNK6ToHost10processingEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96303 +0x00000000     _ZNK7HashMapI9IPAddressjE4sizeEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96304 +0x00000000     _ZN6VectorIN6Router6HookupEEC2ERKS2_    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96305 +0x00000000     _ZN6Router8activateEbP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96306 +0x00000000     _ZNK12ICMPRewriter10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96307 +0x00000000     _ZTV13ICMPPingEncap     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96308 +0x00000000     _ZN21BandwidthRatedUnqueueD2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96309 +0x00000000     _ZN21BandwidthRatedUnqueueD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96310 +0x00000000     _ZN21BandwidthRatedUnqueueD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96311 +0x00000000     _ZN21BandwidthRatedUnqueueC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96312 +0x00000000     _ZN21BandwidthRatedUnqueueC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96313 +0x00000000     _ZN8NameInfo8removedbEP6NameDB  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96314 +0x00000000     _ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96315 +0x00000000     _ZN10PullSwitchD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96316 +0x00000000     _ZN14PerfCountAccum4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96317 +0x00000000     _ZN13DiscardNoFree10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96318 +0x00000000     _ZN14BandwidthMeterD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96319 +0x00000000     _ZN14BandwidthMeterC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96320 +0x00000000     _ZN13StripIPHeader13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96321 +0x00000000     _ZNK9ICMPError10port_countEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96322 +0x00000000     _ZN6VectorI6StringE5frontEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96323 +0x00000000     _ZN6Script8ExpanderD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96324 +0x00000000     _ZN3RED10take_stateEP7ElementP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96325 +0x00000000     _ZN7Element9PORTS_1_1E  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96326 +0x00000000     _ZN7Element9PORTS_0_1E  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96327 +0x00000000     cpIgnoreRest    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96328 +0x00000000     _ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96329 +0x00000000     _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96330 +0x00000000     _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96331 +0x00000000     _ZN7MSQueue4pushEiP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96332 +0x00000000     _ZN16DevirtualizeInfoD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96333 +0x00000000     _ZN16DevirtualizeInfoD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96334 +0x00000000     _ZN16DevirtualizeInfoD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96335 +0x00000000     _ZNK14AverageCounter10class_nameEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96336 +0x00000000     _ZNK6String10find_rightEci      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96337 +0x00000000     _ZNK15RandomBitErrors10class_nameEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96338 +0x00000000     _ZTV13IPOutputCombo     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96339 +0x00000000     _ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96340 +0x00000000     _ZNK14CheckUDPHeader10processingEv      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96341 +0x00000000     _ZN21BandwidthRatedUnqueue8run_taskEP4Task      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96342 +0x00000000     _ZN7HashMapI8IPFlowIDiE6resizeEj        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96343 +0x00000000     _ZN7UnqueueC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96344 +0x00000000     _ZN7UnqueueC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96345 +0x00000000     _ZN6ToHost4pushEiP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96346 +0x00000000     _ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96347 +0x00000000     _ZNK18IPRewriterPatterns10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96348 +0x00000000     _ZN18IPAddrPairRewriterD2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96349 +0x00000000     _ZN18IPAddrPairRewriterC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96350 +0x00000000     cpBandwidth     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96351 +0x00000000     _ZN6VectorIjE5eraseEPjS1_       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96352 +0x00000000     _ZNK5Print10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96353 +0x00000000     _ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96354 +0x00000000     _ZN6VectorIN7IPTable5EntryEED2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96355 +0x00000000     _ZN6VectorIN7IPTable5EntryEEC2Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96356 +0x00000000     _ZN10IPRewriterD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96357 +0x00000000     _ZN7IPPrint7cleanupEN7Element12CleanupStageE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96358 +0x00000000     _ZN8DecIPTTL13simple_actionEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96359 +0x00000000     _ZN9CPUSwitchD2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96360 +0x00000000     _ZN9CPUSwitchD1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96361 +0x00000000     _ZN9CPUSwitchD0Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96362 +0x00000000     _ZN9CPUSwitchC2Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96363 +0x00000000     _ZN9CPUSwitchC1Ev       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96364 +0x00000000     _ZN8ToDevice12reset_countsEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96365 +0x00000000     _ZNK5Strip10class_nameEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96366 +0x00000000     _ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96367 +0x00000000     _Z12cp_uncommentRK6String       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96368 +0x00000000     _ZN12CompareBlock12add_handlersEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96369 +0x00000000     _ZNK13RadixIPLookup10port_countEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96370 +0x00000000     _ZN8IPFilter9Primitive20unparse_transp_protoEi  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96371 +0x00000000     _ZTV8CPUQueue   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96372 +0x00000000     _ZNK11QuitWatcher10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96373 +0x00000000     _ZN5Lexer13create_routerEP6Master       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96374 +0x00000000     _ZN13ICMPPingEncap13simple_actionEP6Packet      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96375 +0x00000000     _ZN12AnyDeviceMap6removeEP9AnyDeviceb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96376 +0x00000000     _ZNK13SetPacketType10class_nameEv       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96377 +0x00000000     _ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96378 +0x00000000     _ZN6String15oom_string_dataE    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96379 +0x00000000     _ZTV8ARPPrint   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96380 +0x00000000     _ZNK11TCPRewriter10processingEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96381 +0x00000000     _ZNK5Print10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96382 +0x00000000     _ZN18SilentErrorHandlerD1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96383 +0x00000000     _ZN10SuppressorC1Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96384 +0x00000000     _ZN11StringAccum18make_out_of_memoryEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96385 +0x00000000     _ZNK15SpinlockRelease10processingEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96386 +0x00000000     _ZNK5Lexer12element_nameEi      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96387 +0x00000000     _ZNK12IPFragmenter10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96388 +0x00000000     _ZN14CheckARPHeader4dropENS_6ReasonEP6Packet    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96389 +0x00000000     _ZN6VectorIN6Router6HookupEE5eraseEPS1_ /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96390 +0x00000000     _ZNK5Strip10port_countEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96391 +0x00000000     _ZNK6Script13find_variableERK6String    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96392 +0x00000000     _ZN11RatedSource8NO_LIMITE      /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96393 +0x00000000     _ZN7Element17add_task_handlersEP4TaskRK6String  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96394 +0x00000000     _ZNK9TimedSink10class_nameEv    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96395 +0x00000000     _ZN11LinkUnqueue8run_taskEP4Task        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96396 +0x00000000     _ZN12RandomSource11make_packetEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96397 +0x00000000     _ZN15LookupIPRouteMPC1Ev        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96398 +0x00000000     _ZN11DelayShaper12add_handlersEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96399 +0x00000000     _ZN7HashMapI6StringiE3endEv     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96400 +0x00000000     _ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96401 +0x00000000     _Z16cp_unparse_real2ji  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96402 +0x00000000     _ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96403 +0x00000000     _ZNK11PaintSwitch10class_nameEv /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96404 +0x00000000     _ZNK10MixedQueue10class_nameEv  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96405 +0x00000000     _ZN11LinkUnqueueD2Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96406 +0x00000000     _ZN11LinkUnqueueD1Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96407 +0x00000000     _ZN11LinkUnqueueD0Ev    /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96408 +0x00000000     _ZN13QueueYankTest10initializeEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96409 +0x00000000     _ZN6Router18make_hookup_gportsEv        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96410 +0x00000000     _ZN14MessageElementD1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96411 +0x00000000     _ZN14MessageElementC1Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96412 +0x00000000     _ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96413 +0x00000000     _Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96414 +0x00000000     _ZN11CheckLength4pushEiP6Packet /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96415 +0x00000000     _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96416 +0x00000000     _ZN5Print13simple_actionEP6Packet       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96417 +0x00000000     _Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element        /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96418 +0x00000000     _Z8cp_quoteRK6Stringb   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96419 +0x00000000     _ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96420 +0x00000000     _ZN13AnyTaskDeviceD1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96421 +0x00000000     _ZN13AnyTaskDeviceD0Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96422 +0x00000000     _ZN13AnyTaskDeviceC2Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96423 +0x00000000     _ZN13AnyTaskDeviceC1Ev  /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96424 +0x00000000     _ZN7HashMapI9IPAddressjE6resizeEj       /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96425 +0x00000000     _ZN7HashMapI9IPAddressjE6removeERKS0_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96426 +0x00000000     _ZN6String11InitializerC2Ev     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96427 +0x00000000     _ZN14StoreIPAddressD2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96428 +0x00000000     _ZN14StoreIPAddressC2Ev /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96429 +0x00000000     _ZN12RandomSampleD2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96430 +0x00000000     _ZN12RandomSampleD1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96431 +0x00000000     _ZN12RandomSampleD0Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96432 +0x00000000     _ZN12RandomSampleC2Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96433 +0x00000000     _ZN12RandomSampleC1Ev   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96434 +0x00000000     _ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler     /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96435 +0x00000000     _ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_   /d/click/click-1.6.0-27/linuxmodule/click       EXPORT_SYMBOL
96436 diff -Nurb click-1.6.0/linuxmodule/errlog click-1.6.0-27/linuxmodule/errlog
96437 --- click-1.6.0/linuxmodule/errlog      1969-12-31 19:00:00.000000000 -0500
96438 +++ click-1.6.0-27/linuxmodule/errlog   2009-01-19 16:02:34.000000000 -0500
96439 @@ -0,0 +1,160 @@
96440 +In file included from /d/kernels/linux-2.6.27.10-click/include/linux/module.h:21,
96441 +                 from /d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:7,
96442 +                 from /d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:26,
96443 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/glue.hh:26,
96444 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:5,
96445 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/string.hh:8,
96446 +                 from /d/click/click-1.6.0/linuxmodule/../lib/string.cc:21:
96447 +/d/kernels/linux-2.6.27.10-click/include/asm/module.h:70:2: error: #error unknown processor family
96448 +In file included from /d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:25,
96449 +                 from /d/kernels/linux-2.6.27.10-click/include/linux/hrtimer.h:19,
96450 +                 from /d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:30,
96451 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/glue.hh:26,
96452 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:5,
96453 +                 from /d/click/click-1.6.0/linuxmodule/../include/click/string.hh:8,
96454 +                 from /d/click/click-1.6.0/linuxmodule/../lib/string.cc:21:
96455 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:39:3: error: #error Invalid value of HZ.
96456 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96457 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96458 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96459 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96460 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96461 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96462 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96463 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96464 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96465 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96466 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96467 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96468 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96469 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96470 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96471 +/d/kernels/linux-2.6.27.10-click/include/linux/jiffies.h:247:31: error: division by zero in #if
96472 +/d/kernels/linux-2.6.27.10-click/include/linux/types.h:33: error: expected initializer before 'bool'
96473 +/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
96474 +/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
96475 +/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
96476 +/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h: In function 'void set_bit(unsigned int, volatile long unsigned int*)':
96477 +/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h:60: error: pointer of type 'void *' used in arithmetic
96478 +/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h: In function 'void clear_bit(int, volatile long unsigned int*)':
96479 +/d/kernels/linux-2.6.27.10-click/include/asm/bitops.h:97: error: pointer of type 'void *' used in arithmetic
96480 +/d/kernels/linux-2.6.27.10-click/include/linux/ratelimit.h: In function 'int ratelimit()':
96481 +/d/kernels/linux-2.6.27.10-click/include/linux/ratelimit.h:23: error: 'CONFIG_HZ' was not declared in this scope
96482 +/d/kernels/linux-2.6.27.10-click/include/linux/kernel.h: At global scope:
96483 +/d/kernels/linux-2.6.27.10-click/include/linux/kernel.h:216: error: expected unqualified-id before string constant
96484 +/d/kernels/linux-2.6.27.10-click/include/asm/page.h: In function 'pte_t native_make_pte(pteval_t)':
96485 +/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected primary-expression before ')' token
96486 +/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected ';' before '{' token
96487 +/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected primary-expression before '.' token
96488 +/d/kernels/linux-2.6.27.10-click/include/asm/page.h:141: error: expected `;' before '}' token
96489 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: At global scope:
96490 +/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
96491 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:112: error: requested alignment is not a constant
96492 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: In function 'void load_cr3(pgd_t*)':
96493 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:184: error: 'CONFIG_PAGE_OFFSETUL' was not declared in this scope
96494 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: At global scope:
96495 +/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
96496 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:233: error: requested alignment is not a constant
96497 +/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
96498 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:270: error: requested alignment is not a constant
96499 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h: In function 'void wbinvd_halt()':
96500 +/d/kernels/linux-2.6.27.10-click/include/asm/processor.h:751: error: 'halt' was not declared in this scope
96501 +/d/kernels/linux-2.6.27.10-click/include/asm/thread_info.h: In function 'thread_info* current_thread_info()':
96502 +/d/kernels/linux-2.6.27.10-click/include/asm/thread_info.h:206: error: invalid conversion from 'void*' to 'thread_info*'
96503 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h: In function 'void list_del(list_head*)':
96504 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h:106: error: invalid conversion from 'void*' to 'list_head*'
96505 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h:107: error: invalid conversion from 'void*' to 'list_head*'
96506 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h: In function 'void hlist_del(hlist_node*)':
96507 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h:579: error: invalid conversion from 'void*' to 'hlist_node*'
96508 +/d/kernels/linux-2.6.27.10-click/include/linux/list.h:580: error: invalid conversion from 'void*' to 'hlist_node**'
96509 +/d/kernels/linux-2.6.27.10-click/include/linux/wait.h: In function 'int wait_on_bit(void*, int, int (*)(void*), unsigned int)':
96510 +/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: invalid conversion from 'void*' to 'const volatile long unsigned int*'
96511 +/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*)'
96512 +/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:488: error: invalid conversion from 'void*' to 'const volatile long unsigned int*'
96513 +/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*)'
96514 +/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)':
96515 +/d/kernels/linux-2.6.27.10-click/include/linux/wait.h:512: error: invalid conversion from 'void*' to 'volatile long unsigned int*'
96516 +/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*)'
96517 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __first_node(const nodemask_t*)':
96518 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:233: error: 'find_first_bit' was not declared in this scope
96519 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __next_node(int, const nodemask_t*)':
96520 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:239: error: 'find_next_bit' was not declared in this scope
96521 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h: In function 'int __first_unset_node(const nodemask_t*)':
96522 +/d/kernels/linux-2.6.27.10-click/include/linux/nodemask.h:257: error: 'find_first_zero_bit' was not declared in this scope
96523 +/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h: At global scope:
96524 +/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h:36: error: variable or field '__kernel_sigreturn' declared void
96525 +/d/kernels/linux-2.6.27.10-click/include/asm/vdso.h:37: error: variable or field '__kernel_rt_sigreturn' declared void
96526 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h: In function 'void start_ia32_thread(pt_regs*, u32, u32)':
96527 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:153: error: 'load_gs_index' was not declared in this scope
96528 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h: In function 'void elf_common_init(thread_struct*, pt_regs*, u16)':
96529 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r8'
96530 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r9'
96531 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r10'
96532 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:166: error: 'struct pt_regs' has no member named 'r11'
96533 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r12'
96534 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r13'
96535 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r14'
96536 +/d/kernels/linux-2.6.27.10-click/include/asm/elf.h:167: error: 'struct pt_regs' has no member named 'r15'
96537 +/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h: In function 'ts_config* alloc_ts_config(size_t, gfp_t)':
96538 +/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:165: error: invalid conversion from 'void*' to 'ts_config*'
96539 +/d/kernels/linux-2.6.27.10-click/include/linux/textsearch.h:167: error: invalid conversion from 'void*' to 'ts_config*'
96540 +/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h: In function 'void sema_init(semaphore*, int)':
96541 +/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h:35: error: expected primary-expression before 'struct'
96542 +/d/kernels/linux-2.6.27.10-click/include/linux/semaphore.h:35: error: expected `)' before 'struct'
96543 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'void async_tx_ack(dma_async_tx_descriptor*)':
96544 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:380: error: invalid conversion from 'int' to 'dma_ctrl_flags'
96545 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'int __first_dma_cap(const dma_cap_mask_t*)':
96546 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:391: error: 'find_first_bit' was not declared in this scope
96547 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h: In function 'int __next_dma_cap(int, const dma_cap_mask_t*)':
96548 +/d/kernels/linux-2.6.27.10-click/include/linux/dmaengine.h:398: error: 'find_next_bit' was not declared in this scope
96549 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_set(long int, long unsigned int)':
96550 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected primary-expression before ')' token
96551 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected ';' before '{' token
96552 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected primary-expression before '.' token
96553 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:85: error: expected `;' before '}' token
96554 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected primary-expression before ')' token
96555 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected ';' before '{' token
96556 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected primary-expression before '.' token
96557 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:87: error: expected `;' before '}' token
96558 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 's64 ktime_us_delta(ktime_t, ktime_t)':
96559 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: expected primary-expression before ')' token
96560 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: expected `;' before '{' token
96561 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:300: error: invalid use of void expression
96562 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_add_us(ktime_t, u64)':
96563 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: expected primary-expression before ')' token
96564 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: expected `;' before '{' token
96565 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:305: error: conversion from 'void' to non-scalar type 'ktime_t' requested
96566 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ktime_sub_us(ktime_t, u64)':
96567 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: expected primary-expression before ')' token
96568 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: expected `;' before '{' token
96569 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:310: error: conversion from 'void' to non-scalar type 'ktime_t' requested
96570 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h: In function 'ktime_t ns_to_ktime(u64)':
96571 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:332: error: expected primary-expression before '.' token
96572 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: expected primary-expression before ')' token
96573 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: expected `;' before '{' token
96574 +/d/kernels/linux-2.6.27.10-click/include/linux/ktime.h:333: error: conversion from 'void' to non-scalar type 'ktime_t' requested
96575 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h: In function 'void skb_queue_head_init(sk_buff_head*)':
96576 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:659: error: expected primary-expression before ')' token
96577 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:659: error: expected `;' before '{' token
96578 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h: In function 'ktime_t net_timedelta(ktime_t)':
96579 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: expected primary-expression before ')' token
96580 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: expected `;' before '{' token
96581 +/d/kernels/linux-2.6.27.10-click/include/linux/skbuff.h:1548: error: conversion from 'void' to non-scalar type 'ktime_t' requested
96582 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h: At global scope:
96583 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:87: error: expected unqualified-id before string constant
96584 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:88: error: expected unqualified-id before string constant
96585 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:89: error: expected unqualified-id before string constant
96586 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:90: error: expected unqualified-id before string constant
96587 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:91: error: expected unqualified-id before string constant
96588 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:92: error: expected unqualified-id before string constant
96589 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:93: error: expected unqualified-id before string constant
96590 +/d/kernels/linux-2.6.27.10-click/include/asm/hw_irq.h:94: error: expected unqualified-id before string constant
96591 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh: In member function 'atomic_uint32_t& atomic_uint32_t::operator|=(uint32_t)':
96592 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:159: error: 'local_irq_save' was not declared in this scope
96593 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:161: error: 'local_irq_restore' was not declared in this scope
96594 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh: In member function 'atomic_uint32_t& atomic_uint32_t::operator&=(uint32_t)':
96595 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:181: error: 'local_irq_save' was not declared in this scope
96596 +/d/click/click-1.6.0/linuxmodule/../include/click/atomic.hh:183: error: 'local_irq_restore' was not declared in this scope
96597 +make[2]: *** [/d/click/click-1.6.0/linuxmodule/string.o] Error 1
96598 +make[1]: *** [_module_/d/click/click-1.6.0/linuxmodule] Error 2
96599 +make: *** [all] Error 2
96600 diff -Nurb click-1.6.0/linuxmodule/kernelversion.c click-1.6.0-27/linuxmodule/kernelversion.c
96601 --- click-1.6.0/linuxmodule/kernelversion.c     2007-07-16 19:47:50.000000000 -0400
96602 +++ click-1.6.0-27/linuxmodule/kernelversion.c  2009-02-11 16:49:08.000000000 -0500
96603 @@ -26,6 +26,7 @@
96604  #include <click/config.h>
96605  #include <linux/version.h>
96606  #include <linux/module.h>
96607 +
96608  #include "moduleparm.h"
96609  
96610  #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 52)
96611 diff -Nurb click-1.6.0/linuxmodule/kernelversion.c.orig click-1.6.0-27/linuxmodule/kernelversion.c.orig
96612 --- click-1.6.0/linuxmodule/kernelversion.c.orig        1969-12-31 19:00:00.000000000 -0500
96613 +++ click-1.6.0-27/linuxmodule/kernelversion.c.orig     2007-07-16 19:47:50.000000000 -0400
96614 @@ -0,0 +1,91 @@
96615 +/*
96616 + * kernelversion.c -- make sure we get a Linux module kernel version variable
96617 + * Robert Morris, Eddie Kohler
96618 + *
96619 + * Copyright (c) 1999 Massachusetts Institute of Technology
96620 + * Copyright (c) 2005 Regents of the University of California
96621 + *
96622 + * Permission is hereby granted, free of charge, to any person obtaining a
96623 + * copy of this software and associated documentation files (the "Software"),
96624 + * to deal in the Software without restriction, subject to the conditions
96625 + * listed in the Click LICENSE file. These conditions include: you must
96626 + * preserve this copyright notice, and you cannot mention the copyright
96627 + * holders in advertising related to the Software without their permission.
96628 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
96629 + * notice is a summary of the Click LICENSE file; the license in that file is
96630 + * legally binding.
96631 + */
96632 +
96633 +/*
96634 + * Use C, because g++ seems to ignore the version declaration, which
96635 + * ends up looking like
96636 + *  const char __module_kernel_version[] __attribute__((section(".modinfo"))) =
96637 + *  "kernel_version=" "2.2.6" ;
96638 + */
96639 +
96640 +#include <click/config.h>
96641 +#include <linux/version.h>
96642 +#include <linux/module.h>
96643 +#include "moduleparm.h"
96644 +
96645 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 5, 52)
96646 +# define CLICK_INT_MODULE_PARAM(param) MODULE_PARM(param, "i")
96647 +#else
96648 +# define CLICK_INT_MODULE_PARAM(param) module_param(param, int, 0)
96649 +#endif
96650 +
96651 +static int accessible = 1;
96652 +CLICK_INT_MODULE_PARAM(accessible);
96653 +MODULE_PARM_DESC(accessible, "make /click world-readable [1]");
96654 +
96655 +static int uid = 0;
96656 +static int gid = 0;
96657 +CLICK_INT_MODULE_PARAM(uid);
96658 +CLICK_INT_MODULE_PARAM(gid);
96659 +MODULE_PARM_DESC(uid, "UID owning /click [0]");
96660 +MODULE_PARM_DESC(gid, "GID owning /click [0]");
96661 +
96662 +#if __MTCLICK__
96663 +static int threads = 1;
96664 +CLICK_INT_MODULE_PARAM(threads);
96665 +MODULE_PARM_DESC(threads, "number of Click threads per router [1]");
96666 +#endif
96667 +
96668 +#ifdef MODULE_LICENSE
96669 +MODULE_LICENSE("Dual BSD/GPL");
96670 +#endif
96671 +
96672 +static int greedy = 0;
96673 +CLICK_INT_MODULE_PARAM(greedy);
96674 +MODULE_PARM_DESC(greedy, "Click takes a whole CPU [0]");
96675 +
96676 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21)
96677 +static int cpu = -1;
96678 +CLICK_INT_MODULE_PARAM(cpu);
96679 +MODULE_PARM_DESC(cpu, "Click thread preferred CPU [-1=any]");
96680 +#endif
96681 +
96682 +int
96683 +click_parm(int which)
96684 +{
96685 +    switch (which) {
96686 +    case CLICKPARM_ACCESSIBLE:
96687 +       return accessible;
96688 +    case CLICKPARM_UID:
96689 +       return uid;
96690 +    case CLICKPARM_GID:
96691 +       return gid;
96692 +    case CLICKPARM_GREEDY:
96693 +       return greedy;
96694 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21)
96695 +    case CLICKPARM_CPU:
96696 +       return cpu;
96697 +#endif
96698 +#if __MTCLICK__
96699 +    case CLICKPARM_THREADS:
96700 +       return threads;
96701 +#endif
96702 +    default:
96703 +       return 0;
96704 +    }
96705 +}
96706 diff -Nurb click-1.6.0/linuxmodule/ksyms.c.orig click-1.6.0-27/linuxmodule/ksyms.c.orig
96707 --- click-1.6.0/linuxmodule/ksyms.c.orig        1969-12-31 19:00:00.000000000 -0500
96708 +++ click-1.6.0-27/linuxmodule/ksyms.c.orig     2009-02-11 16:43:28.000000000 -0500
96709 @@ -0,0 +1,7403 @@
96710 +// Created by 'click-buildtool ksyms' on Wed Feb 11 16:43:28 EST 2009
96711 +#include <click/config.h>
96712 +#include <linux/version.h>
96713 +#include <linux/module.h>
96714 +extern char _ZN11AdaptiveRED10initializeEP12ErrorHandler[];
96715 +EXPORT_SYMBOL(_ZN11AdaptiveRED10initializeEP12ErrorHandler);
96716 +extern char _ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
96717 +EXPORT_SYMBOL(_ZN11AdaptiveRED16live_reconfigureER6VectorI6StringEP12ErrorHandler);
96718 +extern char _ZN11AdaptiveRED4castEPKc[];
96719 +EXPORT_SYMBOL(_ZN11AdaptiveRED4castEPKc);
96720 +extern char _ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler[];
96721 +EXPORT_SYMBOL(_ZN11AdaptiveRED9configureER6VectorI6StringEP12ErrorHandler);
96722 +extern char _ZN11AdaptiveRED9run_timerEP5Timer[];
96723 +EXPORT_SYMBOL(_ZN11AdaptiveRED9run_timerEP5Timer);
96724 +extern char _ZN11AdaptiveREDC1Ev[];
96725 +EXPORT_SYMBOL(_ZN11AdaptiveREDC1Ev);
96726 +extern char _ZN11AdaptiveREDC2Ev[];
96727 +EXPORT_SYMBOL(_ZN11AdaptiveREDC2Ev);
96728 +extern char _ZN11AdaptiveREDD0Ev[];
96729 +EXPORT_SYMBOL(_ZN11AdaptiveREDD0Ev);
96730 +extern char _ZN11AdaptiveREDD1Ev[];
96731 +EXPORT_SYMBOL(_ZN11AdaptiveREDD1Ev);
96732 +extern char _ZN11AdaptiveREDD2Ev[];
96733 +EXPORT_SYMBOL(_ZN11AdaptiveREDD2Ev);
96734 +extern char _ZNK11AdaptiveRED10class_nameEv[];
96735 +EXPORT_SYMBOL(_ZNK11AdaptiveRED10class_nameEv);
96736 +extern char _ZNK3RED10port_countEv[];
96737 +EXPORT_SYMBOL(_ZNK3RED10port_countEv);
96738 +extern char _ZNK3RED10processingEv[];
96739 +EXPORT_SYMBOL(_ZNK3RED10processingEv);
96740 +extern char _ZNK3RED20can_live_reconfigureEv[];
96741 +EXPORT_SYMBOL(_ZNK3RED20can_live_reconfigureEv);
96742 +extern char _ZNK6String6lengthEv[];
96743 +EXPORT_SYMBOL(_ZNK6String6lengthEv);
96744 +extern char _ZTV11AdaptiveRED[];
96745 +EXPORT_SYMBOL(_ZTV11AdaptiveRED);
96746 +extern char _ZN11AddressInfo14query_ethernetE6StringPhP7Element[];
96747 +EXPORT_SYMBOL(_ZN11AddressInfo14query_ethernetE6StringPhP7Element);
96748 +extern char _ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element[];
96749 +EXPORT_SYMBOL(_ZN11AddressInfo15query_ip_prefixE6StringPhS1_P7Element);
96750 +extern char _ZN11AddressInfo8query_ipE6StringPhP7Element[];
96751 +EXPORT_SYMBOL(_ZN11AddressInfo8query_ipE6StringPhP7Element);
96752 +extern char _ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler[];
96753 +EXPORT_SYMBOL(_ZN11AddressInfo9configureER6VectorI6StringEP12ErrorHandler);
96754 +extern char _ZN11AddressInfoC1Ev[];
96755 +EXPORT_SYMBOL(_ZN11AddressInfoC1Ev);
96756 +extern char _ZN11AddressInfoC2Ev[];
96757 +EXPORT_SYMBOL(_ZN11AddressInfoC2Ev);
96758 +extern char _ZN11AddressInfoD0Ev[];
96759 +EXPORT_SYMBOL(_ZN11AddressInfoD0Ev);
96760 +extern char _ZN11AddressInfoD1Ev[];
96761 +EXPORT_SYMBOL(_ZN11AddressInfoD1Ev);
96762 +extern char _ZN11AddressInfoD2Ev[];
96763 +EXPORT_SYMBOL(_ZN11AddressInfoD2Ev);
96764 +extern char _ZN6VectorI6StringED1Ev[];
96765 +EXPORT_SYMBOL(_ZN6VectorI6StringED1Ev);
96766 +extern char _ZNK11AddressInfo10class_nameEv[];
96767 +EXPORT_SYMBOL(_ZNK11AddressInfo10class_nameEv);
96768 +extern char _ZNK11AddressInfo15configure_phaseEv[];
96769 +EXPORT_SYMBOL(_ZNK11AddressInfo15configure_phaseEv);
96770 +extern char _ZTV11AddressInfo[];
96771 +EXPORT_SYMBOL(_ZTV11AddressInfo);
96772 +extern char _ZN5Align4pullEi[];
96773 +EXPORT_SYMBOL(_ZN5Align4pullEi);
96774 +extern char _ZN5Align4pushEiP6Packet[];
96775 +EXPORT_SYMBOL(_ZN5Align4pushEiP6Packet);
96776 +extern char _ZN5Align8smactionEP6Packet[];
96777 +EXPORT_SYMBOL(_ZN5Align8smactionEP6Packet);
96778 +extern char _ZN5Align9configureER6VectorI6StringEP12ErrorHandler[];
96779 +EXPORT_SYMBOL(_ZN5Align9configureER6VectorI6StringEP12ErrorHandler);
96780 +extern char _ZN5AlignC1Ev[];
96781 +EXPORT_SYMBOL(_ZN5AlignC1Ev);
96782 +extern char _ZN5AlignC2Ev[];
96783 +EXPORT_SYMBOL(_ZN5AlignC2Ev);
96784 +extern char _ZN5AlignD0Ev[];
96785 +EXPORT_SYMBOL(_ZN5AlignD0Ev);
96786 +extern char _ZN5AlignD1Ev[];
96787 +EXPORT_SYMBOL(_ZN5AlignD1Ev);
96788 +extern char _ZN5AlignD2Ev[];
96789 +EXPORT_SYMBOL(_ZN5AlignD2Ev);
96790 +extern char _ZNK5Align10class_nameEv[];
96791 +EXPORT_SYMBOL(_ZNK5Align10class_nameEv);
96792 +extern char _ZNK5Align10port_countEv[];
96793 +EXPORT_SYMBOL(_ZNK5Align10port_countEv);
96794 +extern char _ZNK5Align10processingEv[];
96795 +EXPORT_SYMBOL(_ZNK5Align10processingEv);
96796 +extern char _ZTV5Align[];
96797 +EXPORT_SYMBOL(_ZTV5Align);
96798 +extern char _ZN13AlignmentInfo5queryEP7ElementiRiS2_[];
96799 +EXPORT_SYMBOL(_ZN13AlignmentInfo5queryEP7ElementiRiS2_);
96800 +extern char _ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler[];
96801 +EXPORT_SYMBOL(_ZN13AlignmentInfo9configureER6VectorI6StringEP12ErrorHandler);
96802 +extern char _ZN13AlignmentInfoC1Ev[];
96803 +EXPORT_SYMBOL(_ZN13AlignmentInfoC1Ev);
96804 +extern char _ZN13AlignmentInfoC2Ev[];
96805 +EXPORT_SYMBOL(_ZN13AlignmentInfoC2Ev);
96806 +extern char _ZN13AlignmentInfoD0Ev[];
96807 +EXPORT_SYMBOL(_ZN13AlignmentInfoD0Ev);
96808 +extern char _ZN13AlignmentInfoD1Ev[];
96809 +EXPORT_SYMBOL(_ZN13AlignmentInfoD1Ev);
96810 +extern char _ZN13AlignmentInfoD2Ev[];
96811 +EXPORT_SYMBOL(_ZN13AlignmentInfoD2Ev);
96812 +extern char _ZNK13AlignmentInfo10class_nameEv[];
96813 +EXPORT_SYMBOL(_ZNK13AlignmentInfo10class_nameEv);
96814 +extern char _ZNK13AlignmentInfo15configure_phaseEv[];
96815 +EXPORT_SYMBOL(_ZNK13AlignmentInfo15configure_phaseEv);
96816 +extern char _ZNK13AlignmentInfo6query1EP7ElementiRiS2_[];
96817 +EXPORT_SYMBOL(_ZNK13AlignmentInfo6query1EP7ElementiRiS2_);
96818 +extern char _ZTV13AlignmentInfo[];
96819 +EXPORT_SYMBOL(_ZTV13AlignmentInfo);
96820 +extern char _Z24dev_get_by_ether_addressRK6StringP7Element[];
96821 +EXPORT_SYMBOL(_Z24dev_get_by_ether_addressRK6StringP7Element);
96822 +extern char _ZN12AnyDeviceMap10initializeEv[];
96823 +EXPORT_SYMBOL(_ZN12AnyDeviceMap10initializeEv);
96824 +extern char _ZN12AnyDeviceMap6insertEP9AnyDeviceb[];
96825 +EXPORT_SYMBOL(_ZN12AnyDeviceMap6insertEP9AnyDeviceb);
96826 +extern char _ZN12AnyDeviceMap6removeEP9AnyDeviceb[];
96827 +EXPORT_SYMBOL(_ZN12AnyDeviceMap6removeEP9AnyDeviceb);
96828 +extern char _ZN13AnyTaskDeviceC1Ev[];
96829 +EXPORT_SYMBOL(_ZN13AnyTaskDeviceC1Ev);
96830 +extern char _ZN13AnyTaskDeviceC2Ev[];
96831 +EXPORT_SYMBOL(_ZN13AnyTaskDeviceC2Ev);
96832 +extern char _ZN13AnyTaskDeviceD0Ev[];
96833 +EXPORT_SYMBOL(_ZN13AnyTaskDeviceD0Ev);
96834 +extern char _ZN13AnyTaskDeviceD1Ev[];
96835 +EXPORT_SYMBOL(_ZN13AnyTaskDeviceD1Ev);
96836 +extern char _ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb[];
96837 +EXPORT_SYMBOL(_ZN9AnyDevice10set_deviceEP10net_deviceP12AnyDeviceMapb);
96838 +extern char _ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler[];
96839 +EXPORT_SYMBOL(_ZN9AnyDevice11find_deviceEP12AnyDeviceMapP12ErrorHandler);
96840 +extern char _ZN9AnyDevice12clear_deviceEP12AnyDeviceMap[];
96841 +EXPORT_SYMBOL(_ZN9AnyDevice12clear_deviceEP12AnyDeviceMap);
96842 +extern char _ZN9AnyDeviceC1Ev[];
96843 +EXPORT_SYMBOL(_ZN9AnyDeviceC1Ev);
96844 +extern char _ZN9AnyDeviceC2Ev[];
96845 +EXPORT_SYMBOL(_ZN9AnyDeviceC2Ev);
96846 +extern char _ZN9AnyDeviceD0Ev[];
96847 +EXPORT_SYMBOL(_ZN9AnyDeviceD0Ev);
96848 +extern char _ZN9AnyDeviceD1Ev[];
96849 +EXPORT_SYMBOL(_ZN9AnyDeviceD1Ev);
96850 +extern char _ZN9AnyDeviceD2Ev[];
96851 +EXPORT_SYMBOL(_ZN9AnyDeviceD2Ev);
96852 +extern char _ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE[];
96853 +EXPORT_SYMBOL(_ZNK12AnyDeviceMap10lookup_allEP10net_devicebR6VectorIP9AnyDeviceE);
96854 +extern char _ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice[];
96855 +EXPORT_SYMBOL(_ZNK12AnyDeviceMap14lookup_unknownEP10net_deviceP9AnyDevice);
96856 +extern char _ZTV13AnyTaskDevice[];
96857 +EXPORT_SYMBOL(_ZTV13AnyTaskDevice);
96858 +extern char _ZTV9AnyDevice[];
96859 +EXPORT_SYMBOL(_ZTV9AnyDevice);
96860 +extern char _ZN8ARPFaker10initializeEP12ErrorHandler[];
96861 +EXPORT_SYMBOL(_ZN8ARPFaker10initializeEP12ErrorHandler);
96862 +extern char _ZN8ARPFaker13make_responseEPhS0_S0_S0_[];
96863 +EXPORT_SYMBOL(_ZN8ARPFaker13make_responseEPhS0_S0_S0_);
96864 +extern char _ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler[];
96865 +EXPORT_SYMBOL(_ZN8ARPFaker9configureER6VectorI6StringEP12ErrorHandler);
96866 +extern char _ZN8ARPFaker9run_timerEP5Timer[];
96867 +EXPORT_SYMBOL(_ZN8ARPFaker9run_timerEP5Timer);
96868 +extern char _ZN8ARPFakerC1Ev[];
96869 +EXPORT_SYMBOL(_ZN8ARPFakerC1Ev);
96870 +extern char _ZN8ARPFakerC2Ev[];
96871 +EXPORT_SYMBOL(_ZN8ARPFakerC2Ev);
96872 +extern char _ZN8ARPFakerD0Ev[];
96873 +EXPORT_SYMBOL(_ZN8ARPFakerD0Ev);
96874 +extern char _ZN8ARPFakerD1Ev[];
96875 +EXPORT_SYMBOL(_ZN8ARPFakerD1Ev);
96876 +extern char _ZN8ARPFakerD2Ev[];
96877 +EXPORT_SYMBOL(_ZN8ARPFakerD2Ev);
96878 +extern char _ZNK8ARPFaker10class_nameEv[];
96879 +EXPORT_SYMBOL(_ZNK8ARPFaker10class_nameEv);
96880 +extern char _ZNK8ARPFaker10port_countEv[];
96881 +EXPORT_SYMBOL(_ZNK8ARPFaker10port_countEv);
96882 +extern char _ZNK8ARPFaker10processingEv[];
96883 +EXPORT_SYMBOL(_ZNK8ARPFaker10processingEv);
96884 +extern char _ZTV8ARPFaker[];
96885 +EXPORT_SYMBOL(_ZTV8ARPFaker);
96886 +extern char _ZN11StringAccumC1Ev[];
96887 +EXPORT_SYMBOL(_ZN11StringAccumC1Ev);
96888 +extern char _ZN11StringAccumD1Ev[];
96889 +EXPORT_SYMBOL(_ZN11StringAccumD1Ev);
96890 +extern char _ZN12EtherAddressC1EPKh[];
96891 +EXPORT_SYMBOL(_ZN12EtherAddressC1EPKh);
96892 +extern char _ZN8ARPPrint10initializeEP12ErrorHandler[];
96893 +EXPORT_SYMBOL(_ZN8ARPPrint10initializeEP12ErrorHandler);
96894 +extern char _ZN8ARPPrint13simple_actionEP6Packet[];
96895 +EXPORT_SYMBOL(_ZN8ARPPrint13simple_actionEP6Packet);
96896 +extern char _ZN8ARPPrint7cleanupEN7Element12CleanupStageE[];
96897 +EXPORT_SYMBOL(_ZN8ARPPrint7cleanupEN7Element12CleanupStageE);
96898 +extern char _ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler[];
96899 +EXPORT_SYMBOL(_ZN8ARPPrint9configureER6VectorI6StringEP12ErrorHandler);
96900 +extern char _ZN8ARPPrintC1Ev[];
96901 +EXPORT_SYMBOL(_ZN8ARPPrintC1Ev);
96902 +extern char _ZN8ARPPrintC2Ev[];
96903 +EXPORT_SYMBOL(_ZN8ARPPrintC2Ev);
96904 +extern char _ZN8ARPPrintD0Ev[];
96905 +EXPORT_SYMBOL(_ZN8ARPPrintD0Ev);
96906 +extern char _ZN8ARPPrintD1Ev[];
96907 +EXPORT_SYMBOL(_ZN8ARPPrintD1Ev);
96908 +extern char _ZN8ARPPrintD2Ev[];
96909 +EXPORT_SYMBOL(_ZN8ARPPrintD2Ev);
96910 +extern char _ZNK8ARPPrint10class_nameEv[];
96911 +EXPORT_SYMBOL(_ZNK8ARPPrint10class_nameEv);
96912 +extern char _ZNK8ARPPrint10port_countEv[];
96913 +EXPORT_SYMBOL(_ZNK8ARPPrint10port_countEv);
96914 +extern char _ZNK8ARPPrint10processingEv[];
96915 +EXPORT_SYMBOL(_ZNK8ARPPrint10processingEv);
96916 +extern char _ZTV8ARPPrint[];
96917 +EXPORT_SYMBOL(_ZTV8ARPPrint);
96918 +extern char _ZN10ARPQuerier10initializeEP12ErrorHandler[];
96919 +EXPORT_SYMBOL(_ZN10ARPQuerier10initializeEP12ErrorHandler);
96920 +extern char _ZN10ARPQuerier10read_statsEP7ElementPv[];
96921 +EXPORT_SYMBOL(_ZN10ARPQuerier10read_statsEP7ElementPv);
96922 +extern char _ZN10ARPQuerier10read_tableEP7ElementPv[];
96923 +EXPORT_SYMBOL(_ZN10ARPQuerier10read_tableEP7ElementPv);
96924 +extern char _ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler[];
96925 +EXPORT_SYMBOL(_ZN10ARPQuerier10take_stateEP7ElementP12ErrorHandler);
96926 +extern char _ZN10ARPQuerier11expire_hookEP5TimerPv[];
96927 +EXPORT_SYMBOL(_ZN10ARPQuerier11expire_hookEP5TimerPv);
96928 +extern char _ZN10ARPQuerier12add_handlersEv[];
96929 +EXPORT_SYMBOL(_ZN10ARPQuerier12add_handlersEv);
96930 +extern char _ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
96931 +EXPORT_SYMBOL(_ZN10ARPQuerier13write_handlerERK6StringP7ElementPvP12ErrorHandler);
96932 +extern char _ZN10ARPQuerier14send_query_forE9IPAddress[];
96933 +EXPORT_SYMBOL(_ZN10ARPQuerier14send_query_forE9IPAddress);
96934 +extern char _ZN10ARPQuerier15handle_responseEP6Packet[];
96935 +EXPORT_SYMBOL(_ZN10ARPQuerier15handle_responseEP6Packet);
96936 +extern char _ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
96937 +EXPORT_SYMBOL(_ZN10ARPQuerier16live_reconfigureER6VectorI6StringEP12ErrorHandler);
96938 +extern char _ZN10ARPQuerier4pushEiP6Packet[];
96939 +EXPORT_SYMBOL(_ZN10ARPQuerier4pushEiP6Packet);
96940 +extern char _ZN10ARPQuerier7cleanupEN7Element12CleanupStageE[];
96941 +EXPORT_SYMBOL(_ZN10ARPQuerier7cleanupEN7Element12CleanupStageE);
96942 +extern char _ZN10ARPQuerier9clear_mapEv[];
96943 +EXPORT_SYMBOL(_ZN10ARPQuerier9clear_mapEv);
96944 +extern char _ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler[];
96945 +EXPORT_SYMBOL(_ZN10ARPQuerier9configureER6VectorI6StringEP12ErrorHandler);
96946 +extern char _ZN10ARPQuerier9handle_ipEP6Packet[];
96947 +EXPORT_SYMBOL(_ZN10ARPQuerier9handle_ipEP6Packet);
96948 +extern char _ZN10ARPQuerierC1Ev[];
96949 +EXPORT_SYMBOL(_ZN10ARPQuerierC1Ev);
96950 +extern char _ZN10ARPQuerierC2Ev[];
96951 +EXPORT_SYMBOL(_ZN10ARPQuerierC2Ev);
96952 +extern char _ZN10ARPQuerierD0Ev[];
96953 +EXPORT_SYMBOL(_ZN10ARPQuerierD0Ev);
96954 +extern char _ZN10ARPQuerierD1Ev[];
96955 +EXPORT_SYMBOL(_ZN10ARPQuerierD1Ev);
96956 +extern char _ZN10ARPQuerierD2Ev[];
96957 +EXPORT_SYMBOL(_ZN10ARPQuerierD2Ev);
96958 +extern char _ZNK10ARPQuerier10class_nameEv[];
96959 +EXPORT_SYMBOL(_ZNK10ARPQuerier10class_nameEv);
96960 +extern char _ZNK10ARPQuerier10port_countEv[];
96961 +EXPORT_SYMBOL(_ZNK10ARPQuerier10port_countEv);
96962 +extern char _ZNK10ARPQuerier10processingEv[];
96963 +EXPORT_SYMBOL(_ZNK10ARPQuerier10processingEv);
96964 +extern char _ZNK10ARPQuerier20can_live_reconfigureEv[];
96965 +EXPORT_SYMBOL(_ZNK10ARPQuerier20can_live_reconfigureEv);
96966 +extern char _ZNK10ARPQuerier9flow_codeEv[];
96967 +EXPORT_SYMBOL(_ZNK10ARPQuerier9flow_codeEv);
96968 +extern char _ZTV10ARPQuerier[];
96969 +EXPORT_SYMBOL(_ZTV10ARPQuerier);
96970 +extern char _ZN12ARPResponder12add_handlersEv[];
96971 +EXPORT_SYMBOL(_ZN12ARPResponder12add_handlersEv);
96972 +extern char _ZN12ARPResponder12read_handlerEP7ElementPv[];
96973 +EXPORT_SYMBOL(_ZN12ARPResponder12read_handlerEP7ElementPv);
96974 +extern char _ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet[];
96975 +EXPORT_SYMBOL(_ZN12ARPResponder13make_responseEPhS0_S0_S0_P6Packet);
96976 +extern char _ZN12ARPResponder13simple_actionEP6Packet[];
96977 +EXPORT_SYMBOL(_ZN12ARPResponder13simple_actionEP6Packet);
96978 +extern char _ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
96979 +EXPORT_SYMBOL(_ZN12ARPResponder16live_reconfigureER6VectorI6StringEP12ErrorHandler);
96980 +extern char _ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress[];
96981 +EXPORT_SYMBOL(_ZN12ARPResponder7add_mapE9IPAddressS0_12EtherAddress);
96982 +extern char _ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler[];
96983 +EXPORT_SYMBOL(_ZN12ARPResponder9configureER6VectorI6StringEP12ErrorHandler);
96984 +extern char _ZN12ARPResponderC1Ev[];
96985 +EXPORT_SYMBOL(_ZN12ARPResponderC1Ev);
96986 +extern char _ZN12ARPResponderC2Ev[];
96987 +EXPORT_SYMBOL(_ZN12ARPResponderC2Ev);
96988 +extern char _ZN12ARPResponderD0Ev[];
96989 +EXPORT_SYMBOL(_ZN12ARPResponderD0Ev);
96990 +extern char _ZN12ARPResponderD1Ev[];
96991 +EXPORT_SYMBOL(_ZN12ARPResponderD1Ev);
96992 +extern char _ZN12ARPResponderD2Ev[];
96993 +EXPORT_SYMBOL(_ZN12ARPResponderD2Ev);
96994 +extern char _ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_[];
96995 +EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEE5eraseEPS1_S3_);
96996 +extern char _ZN6VectorIN12ARPResponder5EntryEE7reserveEi[];
96997 +EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEE7reserveEi);
96998 +extern char _ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_[];
96999 +EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEEC1ERKS2_);
97000 +extern char _ZN6VectorIN12ARPResponder5EntryEED1Ev[];
97001 +EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEED1Ev);
97002 +extern char _ZN6VectorIN12ARPResponder5EntryEEaSERKS2_[];
97003 +EXPORT_SYMBOL(_ZN6VectorIN12ARPResponder5EntryEEaSERKS2_);
97004 +extern char _ZNK12ARPResponder10class_nameEv[];
97005 +EXPORT_SYMBOL(_ZNK12ARPResponder10class_nameEv);
97006 +extern char _ZNK12ARPResponder10port_countEv[];
97007 +EXPORT_SYMBOL(_ZNK12ARPResponder10port_countEv);
97008 +extern char _ZNK12ARPResponder10processingEv[];
97009 +EXPORT_SYMBOL(_ZNK12ARPResponder10processingEv);
97010 +extern char _ZNK12ARPResponder20can_live_reconfigureEv[];
97011 +EXPORT_SYMBOL(_ZNK12ARPResponder20can_live_reconfigureEv);
97012 +extern char _ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress[];
97013 +EXPORT_SYMBOL(_ZNK12ARPResponder6lookupE9IPAddressR12EtherAddress);
97014 +extern char _ZTV12ARPResponder[];
97015 +EXPORT_SYMBOL(_ZTV12ARPResponder);
97016 +extern char _ZN14AverageCounter10initializeEP12ErrorHandler[];
97017 +EXPORT_SYMBOL(_ZN14AverageCounter10initializeEP12ErrorHandler);
97018 +extern char _ZN14AverageCounter12add_handlersEv[];
97019 +EXPORT_SYMBOL(_ZN14AverageCounter12add_handlersEv);
97020 +extern char _ZN14AverageCounter13simple_actionEP6Packet[];
97021 +EXPORT_SYMBOL(_ZN14AverageCounter13simple_actionEP6Packet);
97022 +extern char _ZN14AverageCounter5resetEv[];
97023 +EXPORT_SYMBOL(_ZN14AverageCounter5resetEv);
97024 +extern char _ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler[];
97025 +EXPORT_SYMBOL(_ZN14AverageCounter9configureER6VectorI6StringEP12ErrorHandler);
97026 +extern char _ZN14AverageCounterC1Ev[];
97027 +EXPORT_SYMBOL(_ZN14AverageCounterC1Ev);
97028 +extern char _ZN14AverageCounterC2Ev[];
97029 +EXPORT_SYMBOL(_ZN14AverageCounterC2Ev);
97030 +extern char _ZN14AverageCounterD0Ev[];
97031 +EXPORT_SYMBOL(_ZN14AverageCounterD0Ev);
97032 +extern char _ZN14AverageCounterD1Ev[];
97033 +EXPORT_SYMBOL(_ZN14AverageCounterD1Ev);
97034 +extern char _ZN14AverageCounterD2Ev[];
97035 +EXPORT_SYMBOL(_ZN14AverageCounterD2Ev);
97036 +extern char _ZNK14AverageCounter10class_nameEv[];
97037 +EXPORT_SYMBOL(_ZNK14AverageCounter10class_nameEv);
97038 +extern char _ZNK14AverageCounter10port_countEv[];
97039 +EXPORT_SYMBOL(_ZNK14AverageCounter10port_countEv);
97040 +extern char _ZNK14AverageCounter10processingEv[];
97041 +EXPORT_SYMBOL(_ZNK14AverageCounter10processingEv);
97042 +extern char _ZTV14AverageCounter[];
97043 +EXPORT_SYMBOL(_ZTV14AverageCounter);
97044 +extern char _ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj[];
97045 +EXPORT_SYMBOL(_ZN11DirectEWMAXI19RateEWMAXParametersILj4ELj10EjiEE8update_nEjj);
97046 +extern char _ZN14BandwidthMeter10initializeEP12ErrorHandler[];
97047 +EXPORT_SYMBOL(_ZN14BandwidthMeter10initializeEP12ErrorHandler);
97048 +extern char _ZN14BandwidthMeter12add_handlersEv[];
97049 +EXPORT_SYMBOL(_ZN14BandwidthMeter12add_handlersEv);
97050 +extern char _ZN14BandwidthMeter17read_rate_handlerEP7ElementPv[];
97051 +EXPORT_SYMBOL(_ZN14BandwidthMeter17read_rate_handlerEP7ElementPv);
97052 +extern char _ZN14BandwidthMeter19meters_read_handlerEP7ElementPv[];
97053 +EXPORT_SYMBOL(_ZN14BandwidthMeter19meters_read_handlerEP7ElementPv);
97054 +extern char _ZN14BandwidthMeter4pushEiP6Packet[];
97055 +EXPORT_SYMBOL(_ZN14BandwidthMeter4pushEiP6Packet);
97056 +extern char _ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler[];
97057 +EXPORT_SYMBOL(_ZN14BandwidthMeter9configureER6VectorI6StringEP12ErrorHandler);
97058 +extern char _ZN14BandwidthMeterC1Ev[];
97059 +EXPORT_SYMBOL(_ZN14BandwidthMeterC1Ev);
97060 +extern char _ZN14BandwidthMeterC2Ev[];
97061 +EXPORT_SYMBOL(_ZN14BandwidthMeterC2Ev);
97062 +extern char _ZN14BandwidthMeterD0Ev[];
97063 +EXPORT_SYMBOL(_ZN14BandwidthMeterD0Ev);
97064 +extern char _ZN14BandwidthMeterD1Ev[];
97065 +EXPORT_SYMBOL(_ZN14BandwidthMeterD1Ev);
97066 +extern char _ZN14BandwidthMeterD2Ev[];
97067 +EXPORT_SYMBOL(_ZN14BandwidthMeterD2Ev);
97068 +extern char _ZNK14BandwidthMeter10class_nameEv[];
97069 +EXPORT_SYMBOL(_ZNK14BandwidthMeter10class_nameEv);
97070 +extern char _ZNK14BandwidthMeter10port_countEv[];
97071 +EXPORT_SYMBOL(_ZNK14BandwidthMeter10port_countEv);
97072 +extern char _ZNK14BandwidthMeter10processingEv[];
97073 +EXPORT_SYMBOL(_ZNK14BandwidthMeter10processingEv);
97074 +extern char _ZTV14BandwidthMeter[];
97075 +EXPORT_SYMBOL(_ZTV14BandwidthMeter);
97076 +extern char _ZN15BandwidthShaper4pullEi[];
97077 +EXPORT_SYMBOL(_ZN15BandwidthShaper4pullEi);
97078 +extern char _ZN15BandwidthShaperC1Ev[];
97079 +EXPORT_SYMBOL(_ZN15BandwidthShaperC1Ev);
97080 +extern char _ZN15BandwidthShaperC2Ev[];
97081 +EXPORT_SYMBOL(_ZN15BandwidthShaperC2Ev);
97082 +extern char _ZN15BandwidthShaperD0Ev[];
97083 +EXPORT_SYMBOL(_ZN15BandwidthShaperD0Ev);
97084 +extern char _ZN15BandwidthShaperD1Ev[];
97085 +EXPORT_SYMBOL(_ZN15BandwidthShaperD1Ev);
97086 +extern char _ZN15BandwidthShaperD2Ev[];
97087 +EXPORT_SYMBOL(_ZN15BandwidthShaperD2Ev);
97088 +extern char _ZNK15BandwidthShaper10class_nameEv[];
97089 +EXPORT_SYMBOL(_ZNK15BandwidthShaper10class_nameEv);
97090 +extern char _ZNK6Shaper10port_countEv[];
97091 +EXPORT_SYMBOL(_ZNK6Shaper10port_countEv);
97092 +extern char _ZNK6Shaper10processingEv[];
97093 +EXPORT_SYMBOL(_ZNK6Shaper10processingEv);
97094 +extern char _ZNK6Shaper20can_live_reconfigureEv[];
97095 +EXPORT_SYMBOL(_ZNK6Shaper20can_live_reconfigureEv);
97096 +extern char _ZTV15BandwidthShaper[];
97097 +EXPORT_SYMBOL(_ZTV15BandwidthShaper);
97098 +extern char _ZN13HashMap_Arena10hard_allocEv[];
97099 +EXPORT_SYMBOL(_ZN13HashMap_Arena10hard_allocEv);
97100 +extern char _ZN13HashMap_ArenaC1Ej[];
97101 +EXPORT_SYMBOL(_ZN13HashMap_ArenaC1Ej);
97102 +extern char _ZN13HashMap_ArenaC2Ej[];
97103 +EXPORT_SYMBOL(_ZN13HashMap_ArenaC2Ej);
97104 +extern char _ZN13HashMap_ArenaD1Ev[];
97105 +EXPORT_SYMBOL(_ZN13HashMap_ArenaD1Ev);
97106 +extern char _ZN13HashMap_ArenaD2Ev[];
97107 +EXPORT_SYMBOL(_ZN13HashMap_ArenaD2Ev);
97108 +extern char _ZN20HashMap_ArenaFactory11the_factoryE[];
97109 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory11the_factoryE);
97110 +extern char _ZN20HashMap_ArenaFactory14get_arena_funcEj[];
97111 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory14get_arena_funcEj);
97112 +extern char _ZN20HashMap_ArenaFactory14static_cleanupEv[];
97113 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory14static_cleanupEv);
97114 +extern char _ZN20HashMap_ArenaFactory17static_initializeEv[];
97115 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory17static_initializeEv);
97116 +extern char _ZN20HashMap_ArenaFactory9get_arenaEjPS_[];
97117 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactory9get_arenaEjPS_);
97118 +extern char _ZN20HashMap_ArenaFactoryC1Ev[];
97119 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryC1Ev);
97120 +extern char _ZN20HashMap_ArenaFactoryC2Ev[];
97121 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryC2Ev);
97122 +extern char _ZN20HashMap_ArenaFactoryD0Ev[];
97123 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD0Ev);
97124 +extern char _ZN20HashMap_ArenaFactoryD1Ev[];
97125 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD1Ev);
97126 +extern char _ZN20HashMap_ArenaFactoryD2Ev[];
97127 +EXPORT_SYMBOL(_ZN20HashMap_ArenaFactoryD2Ev);
97128 +extern char _ZTV20HashMap_ArenaFactory[];
97129 +EXPORT_SYMBOL(_ZTV20HashMap_ArenaFactory);
97130 +extern char _ZN9Bitvector10clear_lastEv[];
97131 +EXPORT_SYMBOL(_ZN9Bitvector10clear_lastEv);
97132 +extern char _ZN9Bitvector13resize_to_maxEib[];
97133 +EXPORT_SYMBOL(_ZN9Bitvector13resize_to_maxEib);
97134 +extern char _ZN9Bitvector18or_with_differenceERKS_RS_[];
97135 +EXPORT_SYMBOL(_ZN9Bitvector18or_with_differenceERKS_RS_);
97136 +extern char _ZN9Bitvector23finish_copy_constructorERKS_[];
97137 +EXPORT_SYMBOL(_ZN9Bitvector23finish_copy_constructorERKS_);
97138 +extern char _ZN9Bitvector5clearEv[];
97139 +EXPORT_SYMBOL(_ZN9Bitvector5clearEv);
97140 +extern char _ZN9Bitvector5or_atERKS_i[];
97141 +EXPORT_SYMBOL(_ZN9Bitvector5or_atERKS_i);
97142 +extern char _ZN9Bitvector6assignEib[];
97143 +EXPORT_SYMBOL(_ZN9Bitvector6assignEib);
97144 +extern char _ZN9Bitvector6negateEv[];
97145 +EXPORT_SYMBOL(_ZN9Bitvector6negateEv);
97146 +extern char _ZN9BitvectoraNERKS_[];
97147 +EXPORT_SYMBOL(_ZN9BitvectoraNERKS_);
97148 +extern char _ZN9BitvectoraSERKS_[];
97149 +EXPORT_SYMBOL(_ZN9BitvectoraSERKS_);
97150 +extern char _ZN9BitvectoreOERKS_[];
97151 +EXPORT_SYMBOL(_ZN9BitvectoreOERKS_);
97152 +extern char _ZN9BitvectoroRERKS_[];
97153 +EXPORT_SYMBOL(_ZN9BitvectoroRERKS_);
97154 +extern char _ZNK9Bitvector20nonzero_intersectionERKS_[];
97155 +EXPORT_SYMBOL(_ZNK9Bitvector20nonzero_intersectionERKS_);
97156 +extern char _ZNK9Bitvector4zeroEv[];
97157 +EXPORT_SYMBOL(_ZNK9Bitvector4zeroEv);
97158 +extern char _ZN7Burster10initializeEP12ErrorHandler[];
97159 +EXPORT_SYMBOL(_ZN7Burster10initializeEP12ErrorHandler);
97160 +extern char _ZN7Burster9configureER6VectorI6StringEP12ErrorHandler[];
97161 +EXPORT_SYMBOL(_ZN7Burster9configureER6VectorI6StringEP12ErrorHandler);
97162 +extern char _ZN7Burster9run_timerEP5Timer[];
97163 +EXPORT_SYMBOL(_ZN7Burster9run_timerEP5Timer);
97164 +extern char _ZN7BursterC1Ev[];
97165 +EXPORT_SYMBOL(_ZN7BursterC1Ev);
97166 +extern char _ZN7BursterC2Ev[];
97167 +EXPORT_SYMBOL(_ZN7BursterC2Ev);
97168 +extern char _ZN7BursterD0Ev[];
97169 +EXPORT_SYMBOL(_ZN7BursterD0Ev);
97170 +extern char _ZN7BursterD1Ev[];
97171 +EXPORT_SYMBOL(_ZN7BursterD1Ev);
97172 +extern char _ZN7BursterD2Ev[];
97173 +EXPORT_SYMBOL(_ZN7BursterD2Ev);
97174 +extern char _ZNK7Burster10class_nameEv[];
97175 +EXPORT_SYMBOL(_ZNK7Burster10class_nameEv);
97176 +extern char _ZNK7Burster10port_countEv[];
97177 +EXPORT_SYMBOL(_ZNK7Burster10port_countEv);
97178 +extern char _ZNK7Burster10processingEv[];
97179 +EXPORT_SYMBOL(_ZNK7Burster10processingEv);
97180 +extern char _ZTV7Burster[];
97181 +EXPORT_SYMBOL(_ZTV7Burster);
97182 +extern char _ZN22BandwidthRatedSplitter4pushEiP6Packet[];
97183 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitter4pushEiP6Packet);
97184 +extern char _ZN22BandwidthRatedSplitterC1Ev[];
97185 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterC1Ev);
97186 +extern char _ZN22BandwidthRatedSplitterC2Ev[];
97187 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterC2Ev);
97188 +extern char _ZN22BandwidthRatedSplitterD0Ev[];
97189 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD0Ev);
97190 +extern char _ZN22BandwidthRatedSplitterD1Ev[];
97191 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD1Ev);
97192 +extern char _ZN22BandwidthRatedSplitterD2Ev[];
97193 +EXPORT_SYMBOL(_ZN22BandwidthRatedSplitterD2Ev);
97194 +extern char _ZNK13RatedSplitter10port_countEv[];
97195 +EXPORT_SYMBOL(_ZNK13RatedSplitter10port_countEv);
97196 +extern char _ZNK13RatedSplitter10processingEv[];
97197 +EXPORT_SYMBOL(_ZNK13RatedSplitter10processingEv);
97198 +extern char _ZNK13RatedSplitter20can_live_reconfigureEv[];
97199 +EXPORT_SYMBOL(_ZNK13RatedSplitter20can_live_reconfigureEv);
97200 +extern char _ZNK22BandwidthRatedSplitter10class_nameEv[];
97201 +EXPORT_SYMBOL(_ZNK22BandwidthRatedSplitter10class_nameEv);
97202 +extern char _ZTV22BandwidthRatedSplitter[];
97203 +EXPORT_SYMBOL(_ZTV22BandwidthRatedSplitter);
97204 +extern char _ZN21BandwidthRatedUnqueue8run_taskEP4Task[];
97205 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueue8run_taskEP4Task);
97206 +extern char _ZN21BandwidthRatedUnqueueC1Ev[];
97207 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueC1Ev);
97208 +extern char _ZN21BandwidthRatedUnqueueC2Ev[];
97209 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueC2Ev);
97210 +extern char _ZN21BandwidthRatedUnqueueD0Ev[];
97211 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD0Ev);
97212 +extern char _ZN21BandwidthRatedUnqueueD1Ev[];
97213 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD1Ev);
97214 +extern char _ZN21BandwidthRatedUnqueueD2Ev[];
97215 +EXPORT_SYMBOL(_ZN21BandwidthRatedUnqueueD2Ev);
97216 +extern char _ZNK12RatedUnqueue10port_countEv[];
97217 +EXPORT_SYMBOL(_ZNK12RatedUnqueue10port_countEv);
97218 +extern char _ZNK12RatedUnqueue10processingEv[];
97219 +EXPORT_SYMBOL(_ZNK12RatedUnqueue10processingEv);
97220 +extern char _ZNK12RatedUnqueue20can_live_reconfigureEv[];
97221 +EXPORT_SYMBOL(_ZNK12RatedUnqueue20can_live_reconfigureEv);
97222 +extern char _ZNK14NotifierSignal6activeEv[];
97223 +EXPORT_SYMBOL(_ZNK14NotifierSignal6activeEv);
97224 +extern char _ZNK21BandwidthRatedUnqueue10class_nameEv[];
97225 +EXPORT_SYMBOL(_ZNK21BandwidthRatedUnqueue10class_nameEv);
97226 +extern char _ZTV21BandwidthRatedUnqueue[];
97227 +EXPORT_SYMBOL(_ZTV21BandwidthRatedUnqueue);
97228 +extern char _ZN14CheckARPHeader12add_handlersEv[];
97229 +EXPORT_SYMBOL(_ZN14CheckARPHeader12add_handlersEv);
97230 +extern char _ZN14CheckARPHeader12read_handlerEP7ElementPv[];
97231 +EXPORT_SYMBOL(_ZN14CheckARPHeader12read_handlerEP7ElementPv);
97232 +extern char _ZN14CheckARPHeader12reason_textsE[];
97233 +EXPORT_SYMBOL(_ZN14CheckARPHeader12reason_textsE);
97234 +extern char _ZN14CheckARPHeader13simple_actionEP6Packet[];
97235 +EXPORT_SYMBOL(_ZN14CheckARPHeader13simple_actionEP6Packet);
97236 +extern char _ZN14CheckARPHeader4dropENS_6ReasonEP6Packet[];
97237 +EXPORT_SYMBOL(_ZN14CheckARPHeader4dropENS_6ReasonEP6Packet);
97238 +extern char _ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler[];
97239 +EXPORT_SYMBOL(_ZN14CheckARPHeader9configureER6VectorI6StringEP12ErrorHandler);
97240 +extern char _ZN14CheckARPHeaderC1Ev[];
97241 +EXPORT_SYMBOL(_ZN14CheckARPHeaderC1Ev);
97242 +extern char _ZN14CheckARPHeaderC2Ev[];
97243 +EXPORT_SYMBOL(_ZN14CheckARPHeaderC2Ev);
97244 +extern char _ZN14CheckARPHeaderD0Ev[];
97245 +EXPORT_SYMBOL(_ZN14CheckARPHeaderD0Ev);
97246 +extern char _ZN14CheckARPHeaderD1Ev[];
97247 +EXPORT_SYMBOL(_ZN14CheckARPHeaderD1Ev);
97248 +extern char _ZN14CheckARPHeaderD2Ev[];
97249 +EXPORT_SYMBOL(_ZN14CheckARPHeaderD2Ev);
97250 +extern char _ZNK14CheckARPHeader10class_nameEv[];
97251 +EXPORT_SYMBOL(_ZNK14CheckARPHeader10class_nameEv);
97252 +extern char _ZNK14CheckARPHeader10port_countEv[];
97253 +EXPORT_SYMBOL(_ZNK14CheckARPHeader10port_countEv);
97254 +extern char _ZNK14CheckARPHeader10processingEv[];
97255 +EXPORT_SYMBOL(_ZNK14CheckARPHeader10processingEv);
97256 +extern char _ZTV14CheckARPHeader[];
97257 +EXPORT_SYMBOL(_ZTV14CheckARPHeader);
97258 +extern char _ZN10CheckCRC3213simple_actionEP6Packet[];
97259 +EXPORT_SYMBOL(_ZN10CheckCRC3213simple_actionEP6Packet);
97260 +extern char _ZN10CheckCRC32C1Ev[];
97261 +EXPORT_SYMBOL(_ZN10CheckCRC32C1Ev);
97262 +extern char _ZN10CheckCRC32C2Ev[];
97263 +EXPORT_SYMBOL(_ZN10CheckCRC32C2Ev);
97264 +extern char _ZN10CheckCRC32D0Ev[];
97265 +EXPORT_SYMBOL(_ZN10CheckCRC32D0Ev);
97266 +extern char _ZN10CheckCRC32D1Ev[];
97267 +EXPORT_SYMBOL(_ZN10CheckCRC32D1Ev);
97268 +extern char _ZN10CheckCRC32D2Ev[];
97269 +EXPORT_SYMBOL(_ZN10CheckCRC32D2Ev);
97270 +extern char _ZNK10CheckCRC3210class_nameEv[];
97271 +EXPORT_SYMBOL(_ZNK10CheckCRC3210class_nameEv);
97272 +extern char _ZNK10CheckCRC3210port_countEv[];
97273 +EXPORT_SYMBOL(_ZNK10CheckCRC3210port_countEv);
97274 +extern char _ZNK10CheckCRC3210processingEv[];
97275 +EXPORT_SYMBOL(_ZNK10CheckCRC3210processingEv);
97276 +extern char _ZTV10CheckCRC32[];
97277 +EXPORT_SYMBOL(_ZTV10CheckCRC32);
97278 +extern char _ZN15CheckICMPHeader12add_handlersEv[];
97279 +EXPORT_SYMBOL(_ZN15CheckICMPHeader12add_handlersEv);
97280 +extern char _ZN15CheckICMPHeader12read_handlerEP7ElementPv[];
97281 +EXPORT_SYMBOL(_ZN15CheckICMPHeader12read_handlerEP7ElementPv);
97282 +extern char _ZN15CheckICMPHeader12reason_textsE[];
97283 +EXPORT_SYMBOL(_ZN15CheckICMPHeader12reason_textsE);
97284 +extern char _ZN15CheckICMPHeader13simple_actionEP6Packet[];
97285 +EXPORT_SYMBOL(_ZN15CheckICMPHeader13simple_actionEP6Packet);
97286 +extern char _ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet[];
97287 +EXPORT_SYMBOL(_ZN15CheckICMPHeader4dropENS_6ReasonEP6Packet);
97288 +extern char _ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler[];
97289 +EXPORT_SYMBOL(_ZN15CheckICMPHeader9configureER6VectorI6StringEP12ErrorHandler);
97290 +extern char _ZN15CheckICMPHeaderC1Ev[];
97291 +EXPORT_SYMBOL(_ZN15CheckICMPHeaderC1Ev);
97292 +extern char _ZN15CheckICMPHeaderC2Ev[];
97293 +EXPORT_SYMBOL(_ZN15CheckICMPHeaderC2Ev);
97294 +extern char _ZN15CheckICMPHeaderD0Ev[];
97295 +EXPORT_SYMBOL(_ZN15CheckICMPHeaderD0Ev);
97296 +extern char _ZN15CheckICMPHeaderD1Ev[];
97297 +EXPORT_SYMBOL(_ZN15CheckICMPHeaderD1Ev);
97298 +extern char _ZN15CheckICMPHeaderD2Ev[];
97299 +EXPORT_SYMBOL(_ZN15CheckICMPHeaderD2Ev);
97300 +extern char _ZNK15CheckICMPHeader10class_nameEv[];
97301 +EXPORT_SYMBOL(_ZNK15CheckICMPHeader10class_nameEv);
97302 +extern char _ZNK15CheckICMPHeader10port_countEv[];
97303 +EXPORT_SYMBOL(_ZNK15CheckICMPHeader10port_countEv);
97304 +extern char _ZNK15CheckICMPHeader10processingEv[];
97305 +EXPORT_SYMBOL(_ZNK15CheckICMPHeader10processingEv);
97306 +extern char _ZTV15CheckICMPHeader[];
97307 +EXPORT_SYMBOL(_ZTV15CheckICMPHeader);
97308 +extern char _ZN13CheckIPHeader12add_handlersEv[];
97309 +EXPORT_SYMBOL(_ZN13CheckIPHeader12add_handlersEv);
97310 +extern char _ZN13CheckIPHeader12read_handlerEP7ElementPv[];
97311 +EXPORT_SYMBOL(_ZN13CheckIPHeader12read_handlerEP7ElementPv);
97312 +extern char _ZN13CheckIPHeader12reason_textsE[];
97313 +EXPORT_SYMBOL(_ZN13CheckIPHeader12reason_textsE);
97314 +extern char _ZN13CheckIPHeader13simple_actionEP6Packet[];
97315 +EXPORT_SYMBOL(_ZN13CheckIPHeader13simple_actionEP6Packet);
97316 +extern char _ZN13CheckIPHeader14static_cleanupEv[];
97317 +EXPORT_SYMBOL(_ZN13CheckIPHeader14static_cleanupEv);
97318 +extern char _ZN13CheckIPHeader17static_initializeEv[];
97319 +EXPORT_SYMBOL(_ZN13CheckIPHeader17static_initializeEv);
97320 +extern char _ZN13CheckIPHeader4dropENS_6ReasonEP6Packet[];
97321 +EXPORT_SYMBOL(_ZN13CheckIPHeader4dropENS_6ReasonEP6Packet);
97322 +extern char _ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler[];
97323 +EXPORT_SYMBOL(_ZN13CheckIPHeader9configureER6VectorI6StringEP12ErrorHandler);
97324 +extern char _ZN13CheckIPHeaderC1Ev[];
97325 +EXPORT_SYMBOL(_ZN13CheckIPHeaderC1Ev);
97326 +extern char _ZN13CheckIPHeaderC2Ev[];
97327 +EXPORT_SYMBOL(_ZN13CheckIPHeaderC2Ev);
97328 +extern char _ZN13CheckIPHeaderD0Ev[];
97329 +EXPORT_SYMBOL(_ZN13CheckIPHeaderD0Ev);
97330 +extern char _ZN13CheckIPHeaderD1Ev[];
97331 +EXPORT_SYMBOL(_ZN13CheckIPHeaderD1Ev);
97332 +extern char _ZN13CheckIPHeaderD2Ev[];
97333 +EXPORT_SYMBOL(_ZN13CheckIPHeaderD2Ev);
97334 +extern char _ZNK13CheckIPHeader10class_nameEv[];
97335 +EXPORT_SYMBOL(_ZNK13CheckIPHeader10class_nameEv);
97336 +extern char _ZNK13CheckIPHeader10port_countEv[];
97337 +EXPORT_SYMBOL(_ZNK13CheckIPHeader10port_countEv);
97338 +extern char _ZNK13CheckIPHeader10processingEv[];
97339 +EXPORT_SYMBOL(_ZNK13CheckIPHeader10processingEv);
97340 +extern char _ZNK13CheckIPHeader5flagsEv[];
97341 +EXPORT_SYMBOL(_ZNK13CheckIPHeader5flagsEv);
97342 +extern char _ZTV13CheckIPHeader[];
97343 +EXPORT_SYMBOL(_ZTV13CheckIPHeader);
97344 +extern char _ZN14CheckIPHeader2C1Ev[];
97345 +EXPORT_SYMBOL(_ZN14CheckIPHeader2C1Ev);
97346 +extern char _ZN14CheckIPHeader2C2Ev[];
97347 +EXPORT_SYMBOL(_ZN14CheckIPHeader2C2Ev);
97348 +extern char _ZN14CheckIPHeader2D0Ev[];
97349 +EXPORT_SYMBOL(_ZN14CheckIPHeader2D0Ev);
97350 +extern char _ZN14CheckIPHeader2D1Ev[];
97351 +EXPORT_SYMBOL(_ZN14CheckIPHeader2D1Ev);
97352 +extern char _ZN14CheckIPHeader2D2Ev[];
97353 +EXPORT_SYMBOL(_ZN14CheckIPHeader2D2Ev);
97354 +extern char _ZNK14CheckIPHeader210class_nameEv[];
97355 +EXPORT_SYMBOL(_ZNK14CheckIPHeader210class_nameEv);
97356 +extern char _ZTV14CheckIPHeader2[];
97357 +EXPORT_SYMBOL(_ZTV14CheckIPHeader2);
97358 +extern char _ZN11CheckLength4pullEi[];
97359 +EXPORT_SYMBOL(_ZN11CheckLength4pullEi);
97360 +extern char _ZN11CheckLength4pushEiP6Packet[];
97361 +EXPORT_SYMBOL(_ZN11CheckLength4pushEiP6Packet);
97362 +extern char _ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler[];
97363 +EXPORT_SYMBOL(_ZN11CheckLength9configureER6VectorI6StringEP12ErrorHandler);
97364 +extern char _ZN11CheckLengthC1Ev[];
97365 +EXPORT_SYMBOL(_ZN11CheckLengthC1Ev);
97366 +extern char _ZN11CheckLengthC2Ev[];
97367 +EXPORT_SYMBOL(_ZN11CheckLengthC2Ev);
97368 +extern char _ZN11CheckLengthD0Ev[];
97369 +EXPORT_SYMBOL(_ZN11CheckLengthD0Ev);
97370 +extern char _ZN11CheckLengthD1Ev[];
97371 +EXPORT_SYMBOL(_ZN11CheckLengthD1Ev);
97372 +extern char _ZN11CheckLengthD2Ev[];
97373 +EXPORT_SYMBOL(_ZN11CheckLengthD2Ev);
97374 +extern char _ZNK11CheckLength10class_nameEv[];
97375 +EXPORT_SYMBOL(_ZNK11CheckLength10class_nameEv);
97376 +extern char _ZNK11CheckLength10port_countEv[];
97377 +EXPORT_SYMBOL(_ZNK11CheckLength10port_countEv);
97378 +extern char _ZNK11CheckLength10processingEv[];
97379 +EXPORT_SYMBOL(_ZNK11CheckLength10processingEv);
97380 +extern char _ZTV11CheckLength[];
97381 +EXPORT_SYMBOL(_ZTV11CheckLength);
97382 +extern char _ZN10CheckPaint4pullEi[];
97383 +EXPORT_SYMBOL(_ZN10CheckPaint4pullEi);
97384 +extern char _ZN10CheckPaint4pushEiP6Packet[];
97385 +EXPORT_SYMBOL(_ZN10CheckPaint4pushEiP6Packet);
97386 +extern char _ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler[];
97387 +EXPORT_SYMBOL(_ZN10CheckPaint9configureER6VectorI6StringEP12ErrorHandler);
97388 +extern char _ZN10CheckPaintC1Ev[];
97389 +EXPORT_SYMBOL(_ZN10CheckPaintC1Ev);
97390 +extern char _ZN10CheckPaintC2Ev[];
97391 +EXPORT_SYMBOL(_ZN10CheckPaintC2Ev);
97392 +extern char _ZN10CheckPaintD0Ev[];
97393 +EXPORT_SYMBOL(_ZN10CheckPaintD0Ev);
97394 +extern char _ZN10CheckPaintD1Ev[];
97395 +EXPORT_SYMBOL(_ZN10CheckPaintD1Ev);
97396 +extern char _ZN10CheckPaintD2Ev[];
97397 +EXPORT_SYMBOL(_ZN10CheckPaintD2Ev);
97398 +extern char _ZNK10CheckPaint10class_nameEv[];
97399 +EXPORT_SYMBOL(_ZNK10CheckPaint10class_nameEv);
97400 +extern char _ZNK10CheckPaint10port_countEv[];
97401 +EXPORT_SYMBOL(_ZNK10CheckPaint10port_countEv);
97402 +extern char _ZNK10CheckPaint10processingEv[];
97403 +EXPORT_SYMBOL(_ZNK10CheckPaint10processingEv);
97404 +extern char _ZTV10CheckPaint[];
97405 +EXPORT_SYMBOL(_ZTV10CheckPaint);
97406 +extern char _ZN14CheckTCPHeader12add_handlersEv[];
97407 +EXPORT_SYMBOL(_ZN14CheckTCPHeader12add_handlersEv);
97408 +extern char _ZN14CheckTCPHeader12read_handlerEP7ElementPv[];
97409 +EXPORT_SYMBOL(_ZN14CheckTCPHeader12read_handlerEP7ElementPv);
97410 +extern char _ZN14CheckTCPHeader12reason_textsE[];
97411 +EXPORT_SYMBOL(_ZN14CheckTCPHeader12reason_textsE);
97412 +extern char _ZN14CheckTCPHeader13simple_actionEP6Packet[];
97413 +EXPORT_SYMBOL(_ZN14CheckTCPHeader13simple_actionEP6Packet);
97414 +extern char _ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet[];
97415 +EXPORT_SYMBOL(_ZN14CheckTCPHeader4dropENS_6ReasonEP6Packet);
97416 +extern char _ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler[];
97417 +EXPORT_SYMBOL(_ZN14CheckTCPHeader9configureER6VectorI6StringEP12ErrorHandler);
97418 +extern char _ZN14CheckTCPHeaderC1Ev[];
97419 +EXPORT_SYMBOL(_ZN14CheckTCPHeaderC1Ev);
97420 +extern char _ZN14CheckTCPHeaderC2Ev[];
97421 +EXPORT_SYMBOL(_ZN14CheckTCPHeaderC2Ev);
97422 +extern char _ZN14CheckTCPHeaderD0Ev[];
97423 +EXPORT_SYMBOL(_ZN14CheckTCPHeaderD0Ev);
97424 +extern char _ZN14CheckTCPHeaderD1Ev[];
97425 +EXPORT_SYMBOL(_ZN14CheckTCPHeaderD1Ev);
97426 +extern char _ZN14CheckTCPHeaderD2Ev[];
97427 +EXPORT_SYMBOL(_ZN14CheckTCPHeaderD2Ev);
97428 +extern char _ZNK14CheckTCPHeader10class_nameEv[];
97429 +EXPORT_SYMBOL(_ZNK14CheckTCPHeader10class_nameEv);
97430 +extern char _ZNK14CheckTCPHeader10port_countEv[];
97431 +EXPORT_SYMBOL(_ZNK14CheckTCPHeader10port_countEv);
97432 +extern char _ZNK14CheckTCPHeader10processingEv[];
97433 +EXPORT_SYMBOL(_ZNK14CheckTCPHeader10processingEv);
97434 +extern char _ZTV14CheckTCPHeader[];
97435 +EXPORT_SYMBOL(_ZTV14CheckTCPHeader);
97436 +extern char _ZN14CheckUDPHeader12add_handlersEv[];
97437 +EXPORT_SYMBOL(_ZN14CheckUDPHeader12add_handlersEv);
97438 +extern char _ZN14CheckUDPHeader12read_handlerEP7ElementPv[];
97439 +EXPORT_SYMBOL(_ZN14CheckUDPHeader12read_handlerEP7ElementPv);
97440 +extern char _ZN14CheckUDPHeader12reason_textsE[];
97441 +EXPORT_SYMBOL(_ZN14CheckUDPHeader12reason_textsE);
97442 +extern char _ZN14CheckUDPHeader13simple_actionEP6Packet[];
97443 +EXPORT_SYMBOL(_ZN14CheckUDPHeader13simple_actionEP6Packet);
97444 +extern char _ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet[];
97445 +EXPORT_SYMBOL(_ZN14CheckUDPHeader4dropENS_6ReasonEP6Packet);
97446 +extern char _ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler[];
97447 +EXPORT_SYMBOL(_ZN14CheckUDPHeader9configureER6VectorI6StringEP12ErrorHandler);
97448 +extern char _ZN14CheckUDPHeaderC1Ev[];
97449 +EXPORT_SYMBOL(_ZN14CheckUDPHeaderC1Ev);
97450 +extern char _ZN14CheckUDPHeaderC2Ev[];
97451 +EXPORT_SYMBOL(_ZN14CheckUDPHeaderC2Ev);
97452 +extern char _ZN14CheckUDPHeaderD0Ev[];
97453 +EXPORT_SYMBOL(_ZN14CheckUDPHeaderD0Ev);
97454 +extern char _ZN14CheckUDPHeaderD1Ev[];
97455 +EXPORT_SYMBOL(_ZN14CheckUDPHeaderD1Ev);
97456 +extern char _ZN14CheckUDPHeaderD2Ev[];
97457 +EXPORT_SYMBOL(_ZN14CheckUDPHeaderD2Ev);
97458 +extern char _ZNK14CheckUDPHeader10class_nameEv[];
97459 +EXPORT_SYMBOL(_ZNK14CheckUDPHeader10class_nameEv);
97460 +extern char _ZNK14CheckUDPHeader10port_countEv[];
97461 +EXPORT_SYMBOL(_ZNK14CheckUDPHeader10port_countEv);
97462 +extern char _ZNK14CheckUDPHeader10processingEv[];
97463 +EXPORT_SYMBOL(_ZNK14CheckUDPHeader10processingEv);
97464 +extern char _ZTV14CheckUDPHeader[];
97465 +EXPORT_SYMBOL(_ZTV14CheckUDPHeader);
97466 +extern char _ZN10Classifier12add_handlersEv[];
97467 +EXPORT_SYMBOL(_ZN10Classifier12add_handlersEv);
97468 +extern char _ZN10Classifier14optimize_exprsEP12ErrorHandleri[];
97469 +EXPORT_SYMBOL(_ZN10Classifier14optimize_exprsEP12ErrorHandleri);
97470 +extern char _ZN10Classifier14program_stringEP7ElementPv[];
97471 +EXPORT_SYMBOL(_ZN10Classifier14program_stringEP7ElementPv);
97472 +extern char _ZN10Classifier17init_expr_subtreeER6VectorIiE[];
97473 +EXPORT_SYMBOL(_ZN10Classifier17init_expr_subtreeER6VectorIiE);
97474 +extern char _ZN10Classifier18DominatorOptimizer12shift_branchEi[];
97475 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer12shift_branchEi);
97476 +extern char _ZN10Classifier18DominatorOptimizer13calculate_domEi[];
97477 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer13calculate_domEi);
97478 +extern char _ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_[];
97479 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer15intersect_listsERK6VectorIiES4_S4_iiRS2_);
97480 +extern char _ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE[];
97481 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer16dom_shift_branchEiiiiP6VectorIiE);
97482 +extern char _ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_[];
97483 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer26last_common_state_in_listsERK6VectorIiES4_S4_);
97484 +extern char _ZN10Classifier18DominatorOptimizer3runEi[];
97485 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizer3runEi);
97486 +extern char _ZN10Classifier18DominatorOptimizerC1EPS_[];
97487 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizerC1EPS_);
97488 +extern char _ZN10Classifier18DominatorOptimizerC2EPS_[];
97489 +EXPORT_SYMBOL(_ZN10Classifier18DominatorOptimizerC2EPS_);
97490 +extern char _ZN10Classifier18start_expr_subtreeER6VectorIiE[];
97491 +EXPORT_SYMBOL(_ZN10Classifier18start_expr_subtreeER6VectorIiE);
97492 +extern char _ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii[];
97493 +EXPORT_SYMBOL(_ZN10Classifier19finish_expr_subtreeER6VectorIiENS_8CombinerEii);
97494 +extern char _ZN10Classifier19length_checked_pushEP6Packet[];
97495 +EXPORT_SYMBOL(_ZN10Classifier19length_checked_pushEP6Packet);
97496 +extern char _ZN10Classifier19negate_expr_subtreeER6VectorIiE[];
97497 +EXPORT_SYMBOL(_ZN10Classifier19negate_expr_subtreeER6VectorIiE);
97498 +extern char _ZN10Classifier20remove_unused_statesEv[];
97499 +EXPORT_SYMBOL(_ZN10Classifier20remove_unused_statesEv);
97500 +extern char _ZN10Classifier21bubble_sort_and_exprsEi[];
97501 +EXPORT_SYMBOL(_ZN10Classifier21bubble_sort_and_exprsEi);
97502 +extern char _ZN10Classifier21redirect_expr_subtreeEiiii[];
97503 +EXPORT_SYMBOL(_ZN10Classifier21redirect_expr_subtreeEiiii);
97504 +extern char _ZN10Classifier25combine_compatible_statesEv[];
97505 +EXPORT_SYMBOL(_ZN10Classifier25combine_compatible_statesEv);
97506 +extern char _ZN10Classifier4Expr4flipEv[];
97507 +EXPORT_SYMBOL(_ZN10Classifier4Expr4flipEv);
97508 +extern char _ZN10Classifier4pushEiP6Packet[];
97509 +EXPORT_SYMBOL(_ZN10Classifier4pushEiP6Packet);
97510 +extern char _ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE[];
97511 +EXPORT_SYMBOL(_ZN10Classifier8add_exprER6VectorIiERKNS_4ExprE);
97512 +extern char _ZN10Classifier8add_exprER6VectorIiEijj[];
97513 +EXPORT_SYMBOL(_ZN10Classifier8add_exprER6VectorIiEijj);
97514 +extern char _ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler[];
97515 +EXPORT_SYMBOL(_ZN10Classifier9configureER6VectorI6StringEP12ErrorHandler);
97516 +extern char _ZN10ClassifierC1Ev[];
97517 +EXPORT_SYMBOL(_ZN10ClassifierC1Ev);
97518 +extern char _ZN10ClassifierC2Ev[];
97519 +EXPORT_SYMBOL(_ZN10ClassifierC2Ev);
97520 +extern char _ZN10ClassifierD0Ev[];
97521 +EXPORT_SYMBOL(_ZN10ClassifierD0Ev);
97522 +extern char _ZN10ClassifierD1Ev[];
97523 +EXPORT_SYMBOL(_ZN10ClassifierD1Ev);
97524 +extern char _ZN10ClassifierD2Ev[];
97525 +EXPORT_SYMBOL(_ZN10ClassifierD2Ev);
97526 +extern char _ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_[];
97527 +EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEE5eraseEPS1_S3_);
97528 +extern char _ZN6VectorIN10Classifier4ExprEE7reserveEi[];
97529 +EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEE7reserveEi);
97530 +extern char _ZN6VectorIN10Classifier4ExprEED1Ev[];
97531 +EXPORT_SYMBOL(_ZN6VectorIN10Classifier4ExprEED1Ev);
97532 +extern char _ZN6VectorIiE6assignEiRKi[];
97533 +EXPORT_SYMBOL(_ZN6VectorIiE6assignEiRKi);
97534 +extern char _ZN6VectorIiE6resizeEiRKi[];
97535 +EXPORT_SYMBOL(_ZN6VectorIiE6resizeEiRKi);
97536 +extern char _ZN6VectorIiE7reserveEi[];
97537 +EXPORT_SYMBOL(_ZN6VectorIiE7reserveEi);
97538 +extern char _ZN6VectorIiEC1ERKS0_[];
97539 +EXPORT_SYMBOL(_ZN6VectorIiEC1ERKS0_);
97540 +extern char _ZN6VectorIiED1Ev[];
97541 +EXPORT_SYMBOL(_ZN6VectorIiED1Ev);
97542 +extern char _ZN6VectorIiEaSERKS0_[];
97543 +EXPORT_SYMBOL(_ZN6VectorIiEaSERKS0_);
97544 +extern char _ZNK10Classifier10class_nameEv[];
97545 +EXPORT_SYMBOL(_ZNK10Classifier10class_nameEv);
97546 +extern char _ZNK10Classifier10port_countEv[];
97547 +EXPORT_SYMBOL(_ZNK10Classifier10port_countEv);
97548 +extern char _ZNK10Classifier10processingEv[];
97549 +EXPORT_SYMBOL(_ZNK10Classifier10processingEv);
97550 +extern char _ZNK10Classifier16count_inbranchesER6VectorIiE[];
97551 +EXPORT_SYMBOL(_ZNK10Classifier16count_inbranchesER6VectorIiE);
97552 +extern char _ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE[];
97553 +EXPORT_SYMBOL(_ZNK10Classifier18DominatorOptimizer17find_predecessorsEiR6VectorIiE);
97554 +extern char _ZNK10Classifier4Expr10compatibleERKS0_[];
97555 +EXPORT_SYMBOL(_ZNK10Classifier4Expr10compatibleERKS0_);
97556 +extern char _ZNK10Classifier4Expr11implies_notERKS0_[];
97557 +EXPORT_SYMBOL(_ZNK10Classifier4Expr11implies_notERKS0_);
97558 +extern char _ZNK10Classifier4Expr11not_impliesERKS0_[];
97559 +EXPORT_SYMBOL(_ZNK10Classifier4Expr11not_impliesERKS0_);
97560 +extern char _ZNK10Classifier4Expr15not_implies_notERKS0_[];
97561 +EXPORT_SYMBOL(_ZNK10Classifier4Expr15not_implies_notERKS0_);
97562 +extern char _ZNK10Classifier4Expr1sEv[];
97563 +EXPORT_SYMBOL(_ZNK10Classifier4Expr1sEv);
97564 +extern char _ZNK10Classifier4Expr7impliesERKS0_[];
97565 +EXPORT_SYMBOL(_ZNK10Classifier4Expr7impliesERKS0_);
97566 +extern char _ZNK10Classifier4Expr9flippableEv[];
97567 +EXPORT_SYMBOL(_ZNK10Classifier4Expr9flippableEv);
97568 +extern char _ZNK10Classifier5flagsEv[];
97569 +EXPORT_SYMBOL(_ZNK10Classifier5flagsEv);
97570 +extern char _ZTV10Classifier[];
97571 +EXPORT_SYMBOL(_ZTV10Classifier);
97572 +extern char _ZlsR11StringAccumRKN10Classifier4ExprE[];
97573 +EXPORT_SYMBOL(_ZlsR11StringAccumRKN10Classifier4ExprE);
97574 +extern char _Z12init_clickfsv[];
97575 +EXPORT_SYMBOL(_Z12init_clickfsv);
97576 +extern char _Z15cleanup_clickfsv[];
97577 +EXPORT_SYMBOL(_Z15cleanup_clickfsv);
97578 +extern char _Z25click_new_file_operationsv[];
97579 +EXPORT_SYMBOL(_Z25click_new_file_operationsv);
97580 +extern char _ZN12CompareBlock12add_handlersEv[];
97581 +EXPORT_SYMBOL(_ZN12CompareBlock12add_handlersEv);
97582 +extern char _ZN12CompareBlock19thresh_read_handlerEP7ElementPv[];
97583 +EXPORT_SYMBOL(_ZN12CompareBlock19thresh_read_handlerEP7ElementPv);
97584 +extern char _ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler[];
97585 +EXPORT_SYMBOL(_ZN12CompareBlock20thresh_write_handlerERK6StringP7ElementPvP12ErrorHandler);
97586 +extern char _ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv[];
97587 +EXPORT_SYMBOL(_ZN12CompareBlock23fwd_weight_read_handlerEP7ElementPv);
97588 +extern char _ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv[];
97589 +EXPORT_SYMBOL(_ZN12CompareBlock23rev_weight_read_handlerEP7ElementPv);
97590 +extern char _ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler[];
97591 +EXPORT_SYMBOL(_ZN12CompareBlock24fwd_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler);
97592 +extern char _ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler[];
97593 +EXPORT_SYMBOL(_ZN12CompareBlock24rev_weight_write_handlerERK6StringP7ElementPvP12ErrorHandler);
97594 +extern char _ZN12CompareBlock4pushEiP6Packet[];
97595 +EXPORT_SYMBOL(_ZN12CompareBlock4pushEiP6Packet);
97596 +extern char _ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler[];
97597 +EXPORT_SYMBOL(_ZN12CompareBlock9configureER6VectorI6StringEP12ErrorHandler);
97598 +extern char _ZN12CompareBlockC1Ev[];
97599 +EXPORT_SYMBOL(_ZN12CompareBlockC1Ev);
97600 +extern char _ZN12CompareBlockC2Ev[];
97601 +EXPORT_SYMBOL(_ZN12CompareBlockC2Ev);
97602 +extern char _ZN12CompareBlockD0Ev[];
97603 +EXPORT_SYMBOL(_ZN12CompareBlockD0Ev);
97604 +extern char _ZN12CompareBlockD1Ev[];
97605 +EXPORT_SYMBOL(_ZN12CompareBlockD1Ev);
97606 +extern char _ZN12CompareBlockD2Ev[];
97607 +EXPORT_SYMBOL(_ZN12CompareBlockD2Ev);
97608 +extern char _ZNK12CompareBlock10class_nameEv[];
97609 +EXPORT_SYMBOL(_ZNK12CompareBlock10class_nameEv);
97610 +extern char _ZNK12CompareBlock10port_countEv[];
97611 +EXPORT_SYMBOL(_ZNK12CompareBlock10port_countEv);
97612 +extern char _ZNK12CompareBlock10processingEv[];
97613 +EXPORT_SYMBOL(_ZNK12CompareBlock10processingEv);
97614 +extern char _ZTV12CompareBlock[];
97615 +EXPORT_SYMBOL(_ZTV12CompareBlock);
97616 +extern char _Z17click_init_configv[];
97617 +EXPORT_SYMBOL(_Z17click_init_configv);
97618 +extern char _Z20click_cleanup_configv[];
97619 +EXPORT_SYMBOL(_Z20click_cleanup_configv);
97620 +extern char _ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler[];
97621 +EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtra7requireE6StringP12ErrorHandler);
97622 +extern char _ZN21LinuxModuleLexerExtraD0Ev[];
97623 +EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtraD0Ev);
97624 +extern char _ZN21LinuxModuleLexerExtraD1Ev[];
97625 +EXPORT_SYMBOL(_ZN21LinuxModuleLexerExtraD1Ev);
97626 +extern char _ZTV21LinuxModuleLexerExtra[];
97627 +EXPORT_SYMBOL(_ZTV21LinuxModuleLexerExtra);
97628 +extern char click_add_element_type[];
97629 +EXPORT_SYMBOL(click_add_element_type);
97630 +extern char click_config_generation[];
97631 +EXPORT_SYMBOL(click_config_generation);
97632 +extern char click_remove_element_type[];
97633 +EXPORT_SYMBOL(click_remove_element_type);
97634 +extern char _Z10cp_elementRK6StringP6RouterP12ErrorHandler[];
97635 +EXPORT_SYMBOL(_Z10cp_elementRK6StringP6RouterP12ErrorHandler);
97636 +extern char _Z10cp_elementRK6StringP7ElementP12ErrorHandler[];
97637 +EXPORT_SYMBOL(_Z10cp_elementRK6StringP7ElementP12ErrorHandler);
97638 +extern char _Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler[];
97639 +EXPORT_SYMBOL(_Z10cp_handlerRK6StringiPP7ElementPPK7HandlerS3_P12ErrorHandler);
97640 +extern char _Z10cp_integerPKcS0_iPi[];
97641 +EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPi);
97642 +extern char _Z10cp_integerPKcS0_iPj[];
97643 +EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPj);
97644 +extern char _Z10cp_integerPKcS0_iPx[];
97645 +EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPx);
97646 +extern char _Z10cp_integerPKcS0_iPy[];
97647 +EXPORT_SYMBOL(_Z10cp_integerPKcS0_iPy);
97648 +extern char _Z10cp_integerRK6StringiPi[];
97649 +EXPORT_SYMBOL(_Z10cp_integerRK6StringiPi);
97650 +extern char _Z10cp_integerRK6StringiPj[];
97651 +EXPORT_SYMBOL(_Z10cp_integerRK6StringiPj);
97652 +extern char _Z10cp_integerRK6StringiPx[];
97653 +EXPORT_SYMBOL(_Z10cp_integerRK6StringiPx);
97654 +extern char _Z10cp_integerRK6StringiPy[];
97655 +EXPORT_SYMBOL(_Z10cp_integerRK6StringiPy);
97656 +extern char _Z10cp_is_wordRK6String[];
97657 +EXPORT_SYMBOL(_Z10cp_is_wordRK6String);
97658 +extern char _Z10cp_keywordRK6StringPS_S2_[];
97659 +EXPORT_SYMBOL(_Z10cp_keywordRK6StringPS_S2_);
97660 +extern char _Z10cp_unquoteRK6String[];
97661 +EXPORT_SYMBOL(_Z10cp_unquoteRK6String);
97662 +extern char _Z11cp_spacevecRK6StringR6VectorIS_E[];
97663 +EXPORT_SYMBOL(_Z11cp_spacevecRK6StringR6VectorIS_E);
97664 +extern char _Z11cp_unargvecRK6VectorI6StringE[];
97665 +EXPORT_SYMBOL(_Z11cp_unargvecRK6VectorI6StringE);
97666 +extern char _Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz[];
97667 +EXPORT_SYMBOL(_Z11cp_va_parseRK6StringP7ElementP12ErrorHandlerz);
97668 +extern char _Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz[];
97669 +EXPORT_SYMBOL(_Z11cp_va_parseRK6VectorI6StringEP7ElementP12ErrorHandlerz);
97670 +extern char _Z12cp_bandwidthRK6StringPj[];
97671 +EXPORT_SYMBOL(_Z12cp_bandwidthRK6StringPj);
97672 +extern char _Z12cp_eat_spaceR6String[];
97673 +EXPORT_SYMBOL(_Z12cp_eat_spaceR6String);
97674 +extern char _Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element[];
97675 +EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringP9IPAddressS3_P7Element);
97676 +extern char _Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element[];
97677 +EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringP9IPAddressS3_bP7Element);
97678 +extern char _Z12cp_ip_prefixRK6StringPhS2_P7Element[];
97679 +EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringPhS2_P7Element);
97680 +extern char _Z12cp_ip_prefixRK6StringPhS2_bP7Element[];
97681 +EXPORT_SYMBOL(_Z12cp_ip_prefixRK6StringPhS2_bP7Element);
97682 +extern char _Z12cp_uncommentRK6String[];
97683 +EXPORT_SYMBOL(_Z12cp_uncommentRK6String);
97684 +extern char _Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz[];
97685 +EXPORT_SYMBOL(_Z12cp_va_kparseRK6StringP7ElementP12ErrorHandlerz);
97686 +extern char _Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz[];
97687 +EXPORT_SYMBOL(_Z12cp_va_kparseRK6VectorI6StringEP7ElementP12ErrorHandlerz);
97688 +extern char _Z13cp_ip_addressRK6StringP9IPAddressP7Element[];
97689 +EXPORT_SYMBOL(_Z13cp_ip_addressRK6StringP9IPAddressP7Element);
97690 +extern char _Z13cp_ip_addressRK6StringPhP7Element[];
97691 +EXPORT_SYMBOL(_Z13cp_ip_addressRK6StringPhP7Element);
97692 +extern char _Z13cp_seconds_asRK6StringiPj[];
97693 +EXPORT_SYMBOL(_Z13cp_seconds_asRK6StringiPj);
97694 +extern char _Z13cp_skip_spacePKcS0_[];
97695 +EXPORT_SYMBOL(_Z13cp_skip_spacePKcS0_);
97696 +extern char _Z13cp_unspacevecPK6StringS1_[];
97697 +EXPORT_SYMBOL(_Z13cp_unspacevecPK6StringS1_);
97698 +extern char _Z14cp_is_click_idRK6String[];
97699 +EXPORT_SYMBOL(_Z14cp_is_click_idRK6String);
97700 +extern char _Z14cp_tcpudp_portRK6StringiPtP7Element[];
97701 +EXPORT_SYMBOL(_Z14cp_tcpudp_portRK6StringiPtP7Element);
97702 +extern char _Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler[];
97703 +EXPORT_SYMBOL(_Z15cp_handler_nameRK6StringPP7ElementPS_S3_P12ErrorHandler);
97704 +extern char _Z15cp_pop_spacevecR6String[];
97705 +EXPORT_SYMBOL(_Z15cp_pop_spacevecR6String);
97706 +extern char _Z15cp_unparse_boolb[];
97707 +EXPORT_SYMBOL(_Z15cp_unparse_boolb);
97708 +extern char _Z16cp_unparse_real2ii[];
97709 +EXPORT_SYMBOL(_Z16cp_unparse_real2ii);
97710 +extern char _Z16cp_unparse_real2ji[];
97711 +EXPORT_SYMBOL(_Z16cp_unparse_real2ji);
97712 +extern char _Z16cp_unparse_real2xi[];
97713 +EXPORT_SYMBOL(_Z16cp_unparse_real2xi);
97714 +extern char _Z16cp_unparse_real2yi[];
97715 +EXPORT_SYMBOL(_Z16cp_unparse_real2yi);
97716 +extern char _Z17cp_unparse_real10ii[];
97717 +EXPORT_SYMBOL(_Z17cp_unparse_real10ii);
97718 +extern char _Z17cp_unparse_real10ji[];
97719 +EXPORT_SYMBOL(_Z17cp_unparse_real10ji);
97720 +extern char _Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz[];
97721 +EXPORT_SYMBOL(_Z17cp_va_space_parseRK6StringP7ElementP12ErrorHandlerz);
97722 +extern char _Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element[];
97723 +EXPORT_SYMBOL(_Z18cp_ip_address_listRK6StringP6VectorI9IPAddressEP7Element);
97724 +extern char _Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz[];
97725 +EXPORT_SYMBOL(_Z18cp_va_space_kparseRK6StringP7ElementP12ErrorHandlerz);
97726 +extern char _Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_[];
97727 +EXPORT_SYMBOL(_Z19cp_assign_argumentsRK6VectorI6StringEPKS0_S5_PS1_);
97728 +extern char _Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element[];
97729 +EXPORT_SYMBOL(_Z19cp_ethernet_addressRK6StringP12EtherAddressP7Element);
97730 +extern char _Z19cp_ethernet_addressRK6StringPhP7Element[];
97731 +EXPORT_SYMBOL(_Z19cp_ethernet_addressRK6StringPhP7Element);
97732 +extern char _Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv[];
97733 +EXPORT_SYMBOL(_Z19cp_register_argtypePKcS0_iPFvP8cp_valueRK6StringP12ErrorHandlerS0_P7ElementEPFvS2_S9_EPv);
97734 +extern char _Z19cp_seconds_as_microRK6StringPj[];
97735 +EXPORT_SYMBOL(_Z19cp_seconds_as_microRK6StringPj);
97736 +extern char _Z19cp_seconds_as_milliRK6StringPj[];
97737 +EXPORT_SYMBOL(_Z19cp_seconds_as_milliRK6StringPj);
97738 +extern char _Z19cp_unparse_intervalRK7timeval[];
97739 +EXPORT_SYMBOL(_Z19cp_unparse_intervalRK7timeval);
97740 +extern char _Z19cp_unparse_intervalRK9Timestamp[];
97741 +EXPORT_SYMBOL(_Z19cp_unparse_intervalRK9Timestamp);
97742 +extern char _Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz[];
97743 +EXPORT_SYMBOL(_Z19cp_va_parse_keywordRK6StringP7ElementP12ErrorHandlerz);
97744 +extern char _Z20cp_process_backslashPKcS0_R11StringAccum[];
97745 +EXPORT_SYMBOL(_Z20cp_process_backslashPKcS0_R11StringAccum);
97746 +extern char _Z20cp_unparse_bandwidthj[];
97747 +EXPORT_SYMBOL(_Z20cp_unparse_bandwidthj);
97748 +extern char _Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz[];
97749 +EXPORT_SYMBOL(_Z20cp_va_kparse_keywordRK6StringP7ElementP12ErrorHandlerz);
97750 +extern char _Z20cp_va_static_cleanupv[];
97751 +EXPORT_SYMBOL(_Z20cp_va_static_cleanupv);
97752 +extern char _Z21cp_skip_comment_spacePKcS0_[];
97753 +EXPORT_SYMBOL(_Z21cp_skip_comment_spacePKcS0_);
97754 +extern char _Z21cp_unregister_argtypePKc[];
97755 +EXPORT_SYMBOL(_Z21cp_unregister_argtypePKc);
97756 +extern char _Z23cp_unparse_microsecondsj[];
97757 +EXPORT_SYMBOL(_Z23cp_unparse_microsecondsj);
97758 +extern char _Z23cp_unparse_millisecondsj[];
97759 +EXPORT_SYMBOL(_Z23cp_unparse_millisecondsj);
97760 +extern char _Z23cp_va_static_initializev[];
97761 +EXPORT_SYMBOL(_Z23cp_va_static_initializev);
97762 +extern char _Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz[];
97763 +EXPORT_SYMBOL(_Z27cp_va_parse_remove_keywordsR6VectorI6StringEiP7ElementP12ErrorHandlerz);
97764 +extern char _Z28cp_extend_stringlist_argtypePKcz[];
97765 +EXPORT_SYMBOL(_Z28cp_extend_stringlist_argtypePKcz);
97766 +extern char _Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz[];
97767 +EXPORT_SYMBOL(_Z28cp_va_kparse_remove_keywordsR6VectorI6StringEP7ElementP12ErrorHandlerz);
97768 +extern char _Z30cp_register_stringlist_argtypePKcS0_i[];
97769 +EXPORT_SYMBOL(_Z30cp_register_stringlist_argtypePKcS0_i);
97770 +extern char _Z7cp_boolRK6StringPb[];
97771 +EXPORT_SYMBOL(_Z7cp_boolRK6StringPb);
97772 +extern char _Z7cp_timeRK6StringP7timeval[];
97773 +EXPORT_SYMBOL(_Z7cp_timeRK6StringP7timeval);
97774 +extern char _Z7cp_timeRK6StringP9Timestamp[];
97775 +EXPORT_SYMBOL(_Z7cp_timeRK6StringP9Timestamp);
97776 +extern char _Z7cp_wordRK6StringPS_S2_[];
97777 +EXPORT_SYMBOL(_Z7cp_wordRK6StringPS_S2_);
97778 +extern char _Z8cp_quoteRK6Stringb[];
97779 +EXPORT_SYMBOL(_Z8cp_quoteRK6Stringb);
97780 +extern char _Z8cp_real2RK6StringiPi[];
97781 +EXPORT_SYMBOL(_Z8cp_real2RK6StringiPi);
97782 +extern char _Z8cp_real2RK6StringiPj[];
97783 +EXPORT_SYMBOL(_Z8cp_real2RK6StringiPj);
97784 +extern char _Z9cp_argvecRK6StringR6VectorIS_E[];
97785 +EXPORT_SYMBOL(_Z9cp_argvecRK6StringR6VectorIS_E);
97786 +extern char _Z9cp_real10RK6StringiPi[];
97787 +EXPORT_SYMBOL(_Z9cp_real10RK6StringiPi);
97788 +extern char _Z9cp_real10RK6StringiPj[];
97789 +EXPORT_SYMBOL(_Z9cp_real10RK6StringiPj);
97790 +extern char _Z9cp_real10RK6StringiPjS2_[];
97791 +EXPORT_SYMBOL(_Z9cp_real10RK6StringiPjS2_);
97792 +extern char _Z9cp_real10RK6StringiiPj[];
97793 +EXPORT_SYMBOL(_Z9cp_real10RK6StringiiPj);
97794 +extern char _Z9cp_real10RK6StringiiPjS2_[];
97795 +EXPORT_SYMBOL(_Z9cp_real10RK6StringiiPjS2_);
97796 +extern char _Z9cp_stringRK6StringPS_S2_[];
97797 +EXPORT_SYMBOL(_Z9cp_stringRK6StringPS_S2_);
97798 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler[];
97799 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper14develop_valuesEPcP12ErrorHandler);
97800 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler[];
97801 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper15develop_kvaluesEPcP12ErrorHandler);
97802 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler[];
97803 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper15parse_argumentsEPKcP7ElementP12ErrorHandler);
97804 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler[];
97805 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper16assign_argumentsERK6VectorI6StringEPKcP12ErrorHandler);
97806 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci[];
97807 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper17add_keyword_errorER11StringAccumiRK6StringPKci);
97808 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler[];
97809 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper20finish_keyword_errorEPKcS2_P12ErrorHandler);
97810 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String[];
97811 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelper23assign_keyword_argumentERK6String);
97812 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib[];
97813 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelperC1EP8cp_valueib);
97814 +extern char _ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib[];
97815 +EXPORT_SYMBOL(_ZN19_GLOBAL__N_cp_errno10CpVaHelperC2EP8cp_valueib);
97816 +extern char cpArgument[];
97817 +EXPORT_SYMBOL(cpArgument);
97818 +extern char cpArguments[];
97819 +EXPORT_SYMBOL(cpArguments);
97820 +extern char cpBandwidth[];
97821 +EXPORT_SYMBOL(cpBandwidth);
97822 +extern char cpBool[];
97823 +EXPORT_SYMBOL(cpBool);
97824 +extern char cpByte[];
97825 +EXPORT_SYMBOL(cpByte);
97826 +extern char cpConfirmKeywords[];
97827 +EXPORT_SYMBOL(cpConfirmKeywords);
97828 +extern char cpDesCblock[];
97829 +EXPORT_SYMBOL(cpDesCblock);
97830 +extern char cpElement[];
97831 +EXPORT_SYMBOL(cpElement);
97832 +extern char cpEnd[];
97833 +EXPORT_SYMBOL(cpEnd);
97834 +extern char cpEtherAddress[];
97835 +EXPORT_SYMBOL(cpEtherAddress);
97836 +extern char cpEthernetAddress[];
97837 +EXPORT_SYMBOL(cpEthernetAddress);
97838 +extern char cpFilename[];
97839 +EXPORT_SYMBOL(cpFilename);
97840 +extern char cpHandlerCallPtrRead[];
97841 +EXPORT_SYMBOL(cpHandlerCallPtrRead);
97842 +extern char cpHandlerCallPtrWrite[];
97843 +EXPORT_SYMBOL(cpHandlerCallPtrWrite);
97844 +extern char cpHandlerCallRead[];
97845 +EXPORT_SYMBOL(cpHandlerCallRead);
97846 +extern char cpHandlerCallWrite[];
97847 +EXPORT_SYMBOL(cpHandlerCallWrite);
97848 +extern char cpHandlerName[];
97849 +EXPORT_SYMBOL(cpHandlerName);
97850 +extern char cpIP6Address[];
97851 +EXPORT_SYMBOL(cpIP6Address);
97852 +extern char cpIP6AddressOrPrefix[];
97853 +EXPORT_SYMBOL(cpIP6AddressOrPrefix);
97854 +extern char cpIP6Prefix[];
97855 +EXPORT_SYMBOL(cpIP6Prefix);
97856 +extern char cpIPAddress[];
97857 +EXPORT_SYMBOL(cpIPAddress);
97858 +extern char cpIPAddressList[];
97859 +EXPORT_SYMBOL(cpIPAddressList);
97860 +extern char cpIPAddressOrPrefix[];
97861 +EXPORT_SYMBOL(cpIPAddressOrPrefix);
97862 +extern char cpIPPrefix[];
97863 +EXPORT_SYMBOL(cpIPPrefix);
97864 +extern char cpIgnore[];
97865 +EXPORT_SYMBOL(cpIgnore);
97866 +extern char cpIgnoreRest[];
97867 +EXPORT_SYMBOL(cpIgnoreRest);
97868 +extern char cpInteger[];
97869 +EXPORT_SYMBOL(cpInteger);
97870 +extern char cpInteger64[];
97871 +EXPORT_SYMBOL(cpInteger64);
97872 +extern char cpInterval[];
97873 +EXPORT_SYMBOL(cpInterval);
97874 +extern char cpKeyword[];
97875 +EXPORT_SYMBOL(cpKeyword);
97876 +extern char cpKeywords[];
97877 +EXPORT_SYMBOL(cpKeywords);
97878 +extern char cpMandatoryKeywords[];
97879 +EXPORT_SYMBOL(cpMandatoryKeywords);
97880 +extern char cpNamedInteger[];
97881 +EXPORT_SYMBOL(cpNamedInteger);
97882 +extern char cpOptional[];
97883 +EXPORT_SYMBOL(cpOptional);
97884 +extern char cpReadHandlerCall[];
97885 +EXPORT_SYMBOL(cpReadHandlerCall);
97886 +extern char cpReal10[];
97887 +EXPORT_SYMBOL(cpReal10);
97888 +extern char cpSeconds[];
97889 +EXPORT_SYMBOL(cpSeconds);
97890 +extern char cpSecondsAsMicro[];
97891 +EXPORT_SYMBOL(cpSecondsAsMicro);
97892 +extern char cpSecondsAsMilli[];
97893 +EXPORT_SYMBOL(cpSecondsAsMilli);
97894 +extern char cpShort[];
97895 +EXPORT_SYMBOL(cpShort);
97896 +extern char cpString[];
97897 +EXPORT_SYMBOL(cpString);
97898 +extern char cpTCPPort[];
97899 +EXPORT_SYMBOL(cpTCPPort);
97900 +extern char cpTimestamp[];
97901 +EXPORT_SYMBOL(cpTimestamp);
97902 +extern char cpTimeval[];
97903 +EXPORT_SYMBOL(cpTimeval);
97904 +extern char cpUDPPort[];
97905 +EXPORT_SYMBOL(cpUDPPort);
97906 +extern char cpUnsigned[];
97907 +EXPORT_SYMBOL(cpUnsigned);
97908 +extern char cpUnsigned64[];
97909 +EXPORT_SYMBOL(cpUnsigned64);
97910 +extern char cpUnsignedReal10[];
97911 +EXPORT_SYMBOL(cpUnsignedReal10);
97912 +extern char cpUnsignedReal2[];
97913 +EXPORT_SYMBOL(cpUnsignedReal2);
97914 +extern char cpUnsignedShort[];
97915 +EXPORT_SYMBOL(cpUnsignedShort);
97916 +extern char cpWord[];
97917 +EXPORT_SYMBOL(cpWord);
97918 +extern char cpWriteHandlerCall[];
97919 +EXPORT_SYMBOL(cpWriteHandlerCall);
97920 +extern char cp_errno[];
97921 +EXPORT_SYMBOL(cp_errno);
97922 +extern char _ZN7Counter10initializeEP12ErrorHandler[];
97923 +EXPORT_SYMBOL(_ZN7Counter10initializeEP12ErrorHandler);
97924 +extern char _ZN7Counter12add_handlersEv[];
97925 +EXPORT_SYMBOL(_ZN7Counter12add_handlersEv);
97926 +extern char _ZN7Counter12read_handlerEP7ElementPv[];
97927 +EXPORT_SYMBOL(_ZN7Counter12read_handlerEP7ElementPv);
97928 +extern char _ZN7Counter13simple_actionEP6Packet[];
97929 +EXPORT_SYMBOL(_ZN7Counter13simple_actionEP6Packet);
97930 +extern char _ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
97931 +EXPORT_SYMBOL(_ZN7Counter13write_handlerERK6StringP7ElementPvP12ErrorHandler);
97932 +extern char _ZN7Counter5llrpcEjPv[];
97933 +EXPORT_SYMBOL(_ZN7Counter5llrpcEjPv);
97934 +extern char _ZN7Counter5resetEv[];
97935 +EXPORT_SYMBOL(_ZN7Counter5resetEv);
97936 +extern char _ZN7Counter9configureER6VectorI6StringEP12ErrorHandler[];
97937 +EXPORT_SYMBOL(_ZN7Counter9configureER6VectorI6StringEP12ErrorHandler);
97938 +extern char _ZN7CounterC1Ev[];
97939 +EXPORT_SYMBOL(_ZN7CounterC1Ev);
97940 +extern char _ZN7CounterC2Ev[];
97941 +EXPORT_SYMBOL(_ZN7CounterC2Ev);
97942 +extern char _ZN7CounterD0Ev[];
97943 +EXPORT_SYMBOL(_ZN7CounterD0Ev);
97944 +extern char _ZN7CounterD1Ev[];
97945 +EXPORT_SYMBOL(_ZN7CounterD1Ev);
97946 +extern char _ZN7CounterD2Ev[];
97947 +EXPORT_SYMBOL(_ZN7CounterD2Ev);
97948 +extern char _ZNK7Counter10class_nameEv[];
97949 +EXPORT_SYMBOL(_ZNK7Counter10class_nameEv);
97950 +extern char _ZNK7Counter10port_countEv[];
97951 +EXPORT_SYMBOL(_ZNK7Counter10port_countEv);
97952 +extern char _ZNK7Counter10processingEv[];
97953 +EXPORT_SYMBOL(_ZNK7Counter10processingEv);
97954 +extern char _ZTV7Counter[];
97955 +EXPORT_SYMBOL(_ZTV7Counter);
97956 +extern char _ZN8CPUQueue10initializeEP12ErrorHandler[];
97957 +EXPORT_SYMBOL(_ZN8CPUQueue10initializeEP12ErrorHandler);
97958 +extern char _ZN8CPUQueue12add_handlersEv[];
97959 +EXPORT_SYMBOL(_ZN8CPUQueue12add_handlersEv);
97960 +extern char _ZN8CPUQueue12read_handlerEP7ElementPv[];
97961 +EXPORT_SYMBOL(_ZN8CPUQueue12read_handlerEP7ElementPv);
97962 +extern char _ZN8CPUQueue4pullEi[];
97963 +EXPORT_SYMBOL(_ZN8CPUQueue4pullEi);
97964 +extern char _ZN8CPUQueue4pushEiP6Packet[];
97965 +EXPORT_SYMBOL(_ZN8CPUQueue4pushEiP6Packet);
97966 +extern char _ZN8CPUQueue7cleanupEN7Element12CleanupStageE[];
97967 +EXPORT_SYMBOL(_ZN8CPUQueue7cleanupEN7Element12CleanupStageE);
97968 +extern char _ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler[];
97969 +EXPORT_SYMBOL(_ZN8CPUQueue9configureER6VectorI6StringEP12ErrorHandler);
97970 +extern char _ZN8CPUQueueC1Ev[];
97971 +EXPORT_SYMBOL(_ZN8CPUQueueC1Ev);
97972 +extern char _ZN8CPUQueueC2Ev[];
97973 +EXPORT_SYMBOL(_ZN8CPUQueueC2Ev);
97974 +extern char _ZN8CPUQueueD0Ev[];
97975 +EXPORT_SYMBOL(_ZN8CPUQueueD0Ev);
97976 +extern char _ZN8CPUQueueD1Ev[];
97977 +EXPORT_SYMBOL(_ZN8CPUQueueD1Ev);
97978 +extern char _ZN8CPUQueueD2Ev[];
97979 +EXPORT_SYMBOL(_ZN8CPUQueueD2Ev);
97980 +extern char _ZNK8CPUQueue10class_nameEv[];
97981 +EXPORT_SYMBOL(_ZNK8CPUQueue10class_nameEv);
97982 +extern char _ZNK8CPUQueue10port_countEv[];
97983 +EXPORT_SYMBOL(_ZNK8CPUQueue10port_countEv);
97984 +extern char _ZNK8CPUQueue10processingEv[];
97985 +EXPORT_SYMBOL(_ZNK8CPUQueue10processingEv);
97986 +extern char _ZTV8CPUQueue[];
97987 +EXPORT_SYMBOL(_ZTV8CPUQueue);
97988 +extern char _ZN9CPUSwitch4pushEiP6Packet[];
97989 +EXPORT_SYMBOL(_ZN9CPUSwitch4pushEiP6Packet);
97990 +extern char _ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler[];
97991 +EXPORT_SYMBOL(_ZN9CPUSwitch9configureER6VectorI6StringEP12ErrorHandler);
97992 +extern char _ZN9CPUSwitchC1Ev[];
97993 +EXPORT_SYMBOL(_ZN9CPUSwitchC1Ev);
97994 +extern char _ZN9CPUSwitchC2Ev[];
97995 +EXPORT_SYMBOL(_ZN9CPUSwitchC2Ev);
97996 +extern char _ZN9CPUSwitchD0Ev[];
97997 +EXPORT_SYMBOL(_ZN9CPUSwitchD0Ev);
97998 +extern char _ZN9CPUSwitchD1Ev[];
97999 +EXPORT_SYMBOL(_ZN9CPUSwitchD1Ev);
98000 +extern char _ZN9CPUSwitchD2Ev[];
98001 +EXPORT_SYMBOL(_ZN9CPUSwitchD2Ev);
98002 +extern char _ZNK9CPUSwitch10class_nameEv[];
98003 +EXPORT_SYMBOL(_ZNK9CPUSwitch10class_nameEv);
98004 +extern char _ZNK9CPUSwitch10port_countEv[];
98005 +EXPORT_SYMBOL(_ZNK9CPUSwitch10port_countEv);
98006 +extern char _ZNK9CPUSwitch10processingEv[];
98007 +EXPORT_SYMBOL(_ZNK9CPUSwitch10processingEv);
98008 +extern char _ZTV9CPUSwitch[];
98009 +EXPORT_SYMBOL(_ZTV9CPUSwitch);
98010 +extern char _ZN10CrapFilter4pushEiP6Packet[];
98011 +EXPORT_SYMBOL(_ZN10CrapFilter4pushEiP6Packet);
98012 +extern char _ZN10CrapFilterC1Ev[];
98013 +EXPORT_SYMBOL(_ZN10CrapFilterC1Ev);
98014 +extern char _ZN10CrapFilterC2Ev[];
98015 +EXPORT_SYMBOL(_ZN10CrapFilterC2Ev);
98016 +extern char _ZN10CrapFilterD0Ev[];
98017 +EXPORT_SYMBOL(_ZN10CrapFilterD0Ev);
98018 +extern char _ZN10CrapFilterD1Ev[];
98019 +EXPORT_SYMBOL(_ZN10CrapFilterD1Ev);
98020 +extern char _ZN10CrapFilterD2Ev[];
98021 +EXPORT_SYMBOL(_ZN10CrapFilterD2Ev);
98022 +extern char _ZNK10CrapFilter10class_nameEv[];
98023 +EXPORT_SYMBOL(_ZNK10CrapFilter10class_nameEv);
98024 +extern char _ZNK10CrapFilter10port_countEv[];
98025 +EXPORT_SYMBOL(_ZNK10CrapFilter10port_countEv);
98026 +extern char _ZNK10CrapFilter10processingEv[];
98027 +EXPORT_SYMBOL(_ZNK10CrapFilter10processingEv);
98028 +extern char _ZTV10CrapFilter[];
98029 +EXPORT_SYMBOL(_ZTV10CrapFilter);
98030 +extern char _ZN11CiscyFilter10initializeEP12ErrorHandler[];
98031 +EXPORT_SYMBOL(_ZN11CiscyFilter10initializeEP12ErrorHandler);
98032 +extern char _ZN11CiscyFilter4pushEiP6Packet[];
98033 +EXPORT_SYMBOL(_ZN11CiscyFilter4pushEiP6Packet);
98034 +extern char _ZN11CiscyFilterC1Ev[];
98035 +EXPORT_SYMBOL(_ZN11CiscyFilterC1Ev);
98036 +extern char _ZN11CiscyFilterC2Ev[];
98037 +EXPORT_SYMBOL(_ZN11CiscyFilterC2Ev);
98038 +extern char _ZN11CiscyFilterD0Ev[];
98039 +EXPORT_SYMBOL(_ZN11CiscyFilterD0Ev);
98040 +extern char _ZN11CiscyFilterD1Ev[];
98041 +EXPORT_SYMBOL(_ZN11CiscyFilterD1Ev);
98042 +extern char _ZN11CiscyFilterD2Ev[];
98043 +EXPORT_SYMBOL(_ZN11CiscyFilterD2Ev);
98044 +extern char _ZN6VectorIN11CiscyFilter4InsnEE7reserveEi[];
98045 +EXPORT_SYMBOL(_ZN6VectorIN11CiscyFilter4InsnEE7reserveEi);
98046 +extern char _ZN6VectorIN11CiscyFilter4InsnEED1Ev[];
98047 +EXPORT_SYMBOL(_ZN6VectorIN11CiscyFilter4InsnEED1Ev);
98048 +extern char _ZNK11CiscyFilter10class_nameEv[];
98049 +EXPORT_SYMBOL(_ZNK11CiscyFilter10class_nameEv);
98050 +extern char _ZNK11CiscyFilter10port_countEv[];
98051 +EXPORT_SYMBOL(_ZNK11CiscyFilter10port_countEv);
98052 +extern char _ZNK11CiscyFilter10processingEv[];
98053 +EXPORT_SYMBOL(_ZNK11CiscyFilter10processingEv);
98054 +extern char _ZTV11CiscyFilter[];
98055 +EXPORT_SYMBOL(_ZTV11CiscyFilter);
98056 +extern char _ZN10BpfyFilter10initializeEP12ErrorHandler[];
98057 +EXPORT_SYMBOL(_ZN10BpfyFilter10initializeEP12ErrorHandler);
98058 +extern char _ZN10BpfyFilter4pushEiP6Packet[];
98059 +EXPORT_SYMBOL(_ZN10BpfyFilter4pushEiP6Packet);
98060 +extern char _ZN10BpfyFilterC1Ev[];
98061 +EXPORT_SYMBOL(_ZN10BpfyFilterC1Ev);
98062 +extern char _ZN10BpfyFilterC2Ev[];
98063 +EXPORT_SYMBOL(_ZN10BpfyFilterC2Ev);
98064 +extern char _ZN10BpfyFilterD0Ev[];
98065 +EXPORT_SYMBOL(_ZN10BpfyFilterD0Ev);
98066 +extern char _ZN10BpfyFilterD1Ev[];
98067 +EXPORT_SYMBOL(_ZN10BpfyFilterD1Ev);
98068 +extern char _ZN10BpfyFilterD2Ev[];
98069 +EXPORT_SYMBOL(_ZN10BpfyFilterD2Ev);
98070 +extern char _ZN6VectorIN10BpfyFilter4InsnEE7reserveEi[];
98071 +EXPORT_SYMBOL(_ZN6VectorIN10BpfyFilter4InsnEE7reserveEi);
98072 +extern char _ZN6VectorIN10BpfyFilter4InsnEED1Ev[];
98073 +EXPORT_SYMBOL(_ZN6VectorIN10BpfyFilter4InsnEED1Ev);
98074 +extern char _ZNK10BpfyFilter10class_nameEv[];
98075 +EXPORT_SYMBOL(_ZNK10BpfyFilter10class_nameEv);
98076 +extern char _ZNK10BpfyFilter10port_countEv[];
98077 +EXPORT_SYMBOL(_ZNK10BpfyFilter10port_countEv);
98078 +extern char _ZNK10BpfyFilter10processingEv[];
98079 +EXPORT_SYMBOL(_ZNK10BpfyFilter10processingEv);
98080 +extern char _ZTV10BpfyFilter[];
98081 +EXPORT_SYMBOL(_ZTV10BpfyFilter);
98082 +extern char update_crc[];
98083 +EXPORT_SYMBOL(update_crc);
98084 +extern char _ZN15CycleCountAccum12add_handlersEv[];
98085 +EXPORT_SYMBOL(_ZN15CycleCountAccum12add_handlersEv);
98086 +extern char _ZN15CycleCountAccum12read_handlerEP7ElementPv[];
98087 +EXPORT_SYMBOL(_ZN15CycleCountAccum12read_handlerEP7ElementPv);
98088 +extern char _ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler[];
98089 +EXPORT_SYMBOL(_ZN15CycleCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler);
98090 +extern char _ZN15CycleCountAccum4pullEi[];
98091 +EXPORT_SYMBOL(_ZN15CycleCountAccum4pullEi);
98092 +extern char _ZN15CycleCountAccum4pushEiP6Packet[];
98093 +EXPORT_SYMBOL(_ZN15CycleCountAccum4pushEiP6Packet);
98094 +extern char _ZN15CycleCountAccumC1Ev[];
98095 +EXPORT_SYMBOL(_ZN15CycleCountAccumC1Ev);
98096 +extern char _ZN15CycleCountAccumC2Ev[];
98097 +EXPORT_SYMBOL(_ZN15CycleCountAccumC2Ev);
98098 +extern char _ZN15CycleCountAccumD0Ev[];
98099 +EXPORT_SYMBOL(_ZN15CycleCountAccumD0Ev);
98100 +extern char _ZN15CycleCountAccumD1Ev[];
98101 +EXPORT_SYMBOL(_ZN15CycleCountAccumD1Ev);
98102 +extern char _ZN15CycleCountAccumD2Ev[];
98103 +EXPORT_SYMBOL(_ZN15CycleCountAccumD2Ev);
98104 +extern char _ZNK15CycleCountAccum10class_nameEv[];
98105 +EXPORT_SYMBOL(_ZNK15CycleCountAccum10class_nameEv);
98106 +extern char _ZNK15CycleCountAccum10port_countEv[];
98107 +EXPORT_SYMBOL(_ZNK15CycleCountAccum10port_countEv);
98108 +extern char _ZNK15CycleCountAccum10processingEv[];
98109 +EXPORT_SYMBOL(_ZNK15CycleCountAccum10processingEv);
98110 +extern char _ZTV15CycleCountAccum[];
98111 +EXPORT_SYMBOL(_ZTV15CycleCountAccum);
98112 +extern char _ZN8DecIPTTL12add_handlersEv[];
98113 +EXPORT_SYMBOL(_ZN8DecIPTTL12add_handlersEv);
98114 +extern char _ZN8DecIPTTL13simple_actionEP6Packet[];
98115 +EXPORT_SYMBOL(_ZN8DecIPTTL13simple_actionEP6Packet);
98116 +extern char _ZN8DecIPTTL7drop_itEP6Packet[];
98117 +EXPORT_SYMBOL(_ZN8DecIPTTL7drop_itEP6Packet);
98118 +extern char _ZN8DecIPTTLC1Ev[];
98119 +EXPORT_SYMBOL(_ZN8DecIPTTLC1Ev);
98120 +extern char _ZN8DecIPTTLC2Ev[];
98121 +EXPORT_SYMBOL(_ZN8DecIPTTLC2Ev);
98122 +extern char _ZN8DecIPTTLD0Ev[];
98123 +EXPORT_SYMBOL(_ZN8DecIPTTLD0Ev);
98124 +extern char _ZN8DecIPTTLD1Ev[];
98125 +EXPORT_SYMBOL(_ZN8DecIPTTLD1Ev);
98126 +extern char _ZN8DecIPTTLD2Ev[];
98127 +EXPORT_SYMBOL(_ZN8DecIPTTLD2Ev);
98128 +extern char _ZNK8DecIPTTL10class_nameEv[];
98129 +EXPORT_SYMBOL(_ZNK8DecIPTTL10class_nameEv);
98130 +extern char _ZNK8DecIPTTL10port_countEv[];
98131 +EXPORT_SYMBOL(_ZNK8DecIPTTL10port_countEv);
98132 +extern char _ZNK8DecIPTTL10processingEv[];
98133 +EXPORT_SYMBOL(_ZNK8DecIPTTL10processingEv);
98134 +extern char _ZTV8DecIPTTL[];
98135 +EXPORT_SYMBOL(_ZTV8DecIPTTL);
98136 +extern char _ZN11DelayShaper10initializeEP12ErrorHandler[];
98137 +EXPORT_SYMBOL(_ZN11DelayShaper10initializeEP12ErrorHandler);
98138 +extern char _ZN11DelayShaper10read_paramEP7ElementPv[];
98139 +EXPORT_SYMBOL(_ZN11DelayShaper10read_paramEP7ElementPv);
98140 +extern char _ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler[];
98141 +EXPORT_SYMBOL(_ZN11DelayShaper11write_paramERK6StringP7ElementPvP12ErrorHandler);
98142 +extern char _ZN11DelayShaper12add_handlersEv[];
98143 +EXPORT_SYMBOL(_ZN11DelayShaper12add_handlersEv);
98144 +extern char _ZN11DelayShaper4castEPKc[];
98145 +EXPORT_SYMBOL(_ZN11DelayShaper4castEPKc);
98146 +extern char _ZN11DelayShaper4pullEi[];
98147 +EXPORT_SYMBOL(_ZN11DelayShaper4pullEi);
98148 +extern char _ZN11DelayShaper7cleanupEN7Element12CleanupStageE[];
98149 +EXPORT_SYMBOL(_ZN11DelayShaper7cleanupEN7Element12CleanupStageE);
98150 +extern char _ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler[];
98151 +EXPORT_SYMBOL(_ZN11DelayShaper9configureER6VectorI6StringEP12ErrorHandler);
98152 +extern char _ZN11DelayShaper9run_timerEP5Timer[];
98153 +EXPORT_SYMBOL(_ZN11DelayShaper9run_timerEP5Timer);
98154 +extern char _ZN11DelayShaperC1Ev[];
98155 +EXPORT_SYMBOL(_ZN11DelayShaperC1Ev);
98156 +extern char _ZN11DelayShaperC2Ev[];
98157 +EXPORT_SYMBOL(_ZN11DelayShaperC2Ev);
98158 +extern char _ZN11DelayShaperD0Ev[];
98159 +EXPORT_SYMBOL(_ZN11DelayShaperD0Ev);
98160 +extern char _ZN11DelayShaperD1Ev[];
98161 +EXPORT_SYMBOL(_ZN11DelayShaperD1Ev);
98162 +extern char _ZN11DelayShaperD2Ev[];
98163 +EXPORT_SYMBOL(_ZN11DelayShaperD2Ev);
98164 +extern char _ZNK11DelayShaper10class_nameEv[];
98165 +EXPORT_SYMBOL(_ZNK11DelayShaper10class_nameEv);
98166 +extern char _ZNK11DelayShaper10port_countEv[];
98167 +EXPORT_SYMBOL(_ZNK11DelayShaper10port_countEv);
98168 +extern char _ZNK11DelayShaper10processingEv[];
98169 +EXPORT_SYMBOL(_ZNK11DelayShaper10processingEv);
98170 +extern char _ZNK9Timestamp3secEv[];
98171 +EXPORT_SYMBOL(_ZNK9Timestamp3secEv);
98172 +extern char _ZTV11DelayShaper[];
98173 +EXPORT_SYMBOL(_ZTV11DelayShaper);
98174 +extern char _ZThn60_N11DelayShaperD0Ev[];
98175 +EXPORT_SYMBOL(_ZThn60_N11DelayShaperD0Ev);
98176 +extern char _ZThn60_N11DelayShaperD1Ev[];
98177 +EXPORT_SYMBOL(_ZThn60_N11DelayShaperD1Ev);
98178 +extern char _ZN12DelayUnqueue10initializeEP12ErrorHandler[];
98179 +EXPORT_SYMBOL(_ZN12DelayUnqueue10initializeEP12ErrorHandler);
98180 +extern char _ZN12DelayUnqueue10read_paramEP7ElementPv[];
98181 +EXPORT_SYMBOL(_ZN12DelayUnqueue10read_paramEP7ElementPv);
98182 +extern char _ZN12DelayUnqueue12add_handlersEv[];
98183 +EXPORT_SYMBOL(_ZN12DelayUnqueue12add_handlersEv);
98184 +extern char _ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE[];
98185 +EXPORT_SYMBOL(_ZN12DelayUnqueue7cleanupEN7Element12CleanupStageE);
98186 +extern char _ZN12DelayUnqueue8run_taskEP4Task[];
98187 +EXPORT_SYMBOL(_ZN12DelayUnqueue8run_taskEP4Task);
98188 +extern char _ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler[];
98189 +EXPORT_SYMBOL(_ZN12DelayUnqueue9configureER6VectorI6StringEP12ErrorHandler);
98190 +extern char _ZN12DelayUnqueueC1Ev[];
98191 +EXPORT_SYMBOL(_ZN12DelayUnqueueC1Ev);
98192 +extern char _ZN12DelayUnqueueC2Ev[];
98193 +EXPORT_SYMBOL(_ZN12DelayUnqueueC2Ev);
98194 +extern char _ZN12DelayUnqueueD0Ev[];
98195 +EXPORT_SYMBOL(_ZN12DelayUnqueueD0Ev);
98196 +extern char _ZN12DelayUnqueueD1Ev[];
98197 +EXPORT_SYMBOL(_ZN12DelayUnqueueD1Ev);
98198 +extern char _ZN12DelayUnqueueD2Ev[];
98199 +EXPORT_SYMBOL(_ZN12DelayUnqueueD2Ev);
98200 +extern char _ZNK12DelayUnqueue10class_nameEv[];
98201 +EXPORT_SYMBOL(_ZNK12DelayUnqueue10class_nameEv);
98202 +extern char _ZNK12DelayUnqueue10port_countEv[];
98203 +EXPORT_SYMBOL(_ZNK12DelayUnqueue10port_countEv);
98204 +extern char _ZNK12DelayUnqueue10processingEv[];
98205 +EXPORT_SYMBOL(_ZNK12DelayUnqueue10processingEv);
98206 +extern char _ZTV12DelayUnqueue[];
98207 +EXPORT_SYMBOL(_ZTV12DelayUnqueue);
98208 +extern char _ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler[];
98209 +EXPORT_SYMBOL(_ZN16DevirtualizeInfo9configureER6VectorI6StringEP12ErrorHandler);
98210 +extern char _ZN16DevirtualizeInfoC1Ev[];
98211 +EXPORT_SYMBOL(_ZN16DevirtualizeInfoC1Ev);
98212 +extern char _ZN16DevirtualizeInfoC2Ev[];
98213 +EXPORT_SYMBOL(_ZN16DevirtualizeInfoC2Ev);
98214 +extern char _ZN16DevirtualizeInfoD0Ev[];
98215 +EXPORT_SYMBOL(_ZN16DevirtualizeInfoD0Ev);
98216 +extern char _ZN16DevirtualizeInfoD1Ev[];
98217 +EXPORT_SYMBOL(_ZN16DevirtualizeInfoD1Ev);
98218 +extern char _ZN16DevirtualizeInfoD2Ev[];
98219 +EXPORT_SYMBOL(_ZN16DevirtualizeInfoD2Ev);
98220 +extern char _ZNK16DevirtualizeInfo10class_nameEv[];
98221 +EXPORT_SYMBOL(_ZNK16DevirtualizeInfo10class_nameEv);
98222 +extern char _ZTV16DevirtualizeInfo[];
98223 +EXPORT_SYMBOL(_ZTV16DevirtualizeInfo);
98224 +extern char _ZN7Discard10initializeEP12ErrorHandler[];
98225 +EXPORT_SYMBOL(_ZN7Discard10initializeEP12ErrorHandler);
98226 +extern char _ZN7Discard12add_handlersEv[];
98227 +EXPORT_SYMBOL(_ZN7Discard12add_handlersEv);
98228 +extern char _ZN7Discard12read_handlerEP7ElementPv[];
98229 +EXPORT_SYMBOL(_ZN7Discard12read_handlerEP7ElementPv);
98230 +extern char _ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
98231 +EXPORT_SYMBOL(_ZN7Discard13write_handlerERK6StringP7ElementPvP12ErrorHandler);
98232 +extern char _ZN7Discard4pushEiP6Packet[];
98233 +EXPORT_SYMBOL(_ZN7Discard4pushEiP6Packet);
98234 +extern char _ZN7Discard8run_taskEP4Task[];
98235 +EXPORT_SYMBOL(_ZN7Discard8run_taskEP4Task);
98236 +extern char _ZN7DiscardC1Ev[];
98237 +EXPORT_SYMBOL(_ZN7DiscardC1Ev);
98238 +extern char _ZN7DiscardC2Ev[];
98239 +EXPORT_SYMBOL(_ZN7DiscardC2Ev);
98240 +extern char _ZN7DiscardD0Ev[];
98241 +EXPORT_SYMBOL(_ZN7DiscardD0Ev);
98242 +extern char _ZN7DiscardD1Ev[];
98243 +EXPORT_SYMBOL(_ZN7DiscardD1Ev);
98244 +extern char _ZN7DiscardD2Ev[];
98245 +EXPORT_SYMBOL(_ZN7DiscardD2Ev);
98246 +extern char _ZNK7Discard10class_nameEv[];
98247 +EXPORT_SYMBOL(_ZNK7Discard10class_nameEv);
98248 +extern char _ZNK7Discard10port_countEv[];
98249 +EXPORT_SYMBOL(_ZNK7Discard10port_countEv);
98250 +extern char _ZNK7Discard10processingEv[];
98251 +EXPORT_SYMBOL(_ZNK7Discard10processingEv);
98252 +extern char _ZTV7Discard[];
98253 +EXPORT_SYMBOL(_ZTV7Discard);
98254 +extern char _ZN13DiscardNoFree10initializeEP12ErrorHandler[];
98255 +EXPORT_SYMBOL(_ZN13DiscardNoFree10initializeEP12ErrorHandler);
98256 +extern char _ZN13DiscardNoFree12add_handlersEv[];
98257 +EXPORT_SYMBOL(_ZN13DiscardNoFree12add_handlersEv);
98258 +extern char _ZN13DiscardNoFree4pushEiP6Packet[];
98259 +EXPORT_SYMBOL(_ZN13DiscardNoFree4pushEiP6Packet);
98260 +extern char _ZN13DiscardNoFree8run_taskEP4Task[];
98261 +EXPORT_SYMBOL(_ZN13DiscardNoFree8run_taskEP4Task);
98262 +extern char _ZN13DiscardNoFreeC1Ev[];
98263 +EXPORT_SYMBOL(_ZN13DiscardNoFreeC1Ev);
98264 +extern char _ZN13DiscardNoFreeC2Ev[];
98265 +EXPORT_SYMBOL(_ZN13DiscardNoFreeC2Ev);
98266 +extern char _ZN13DiscardNoFreeD0Ev[];
98267 +EXPORT_SYMBOL(_ZN13DiscardNoFreeD0Ev);
98268 +extern char _ZN13DiscardNoFreeD1Ev[];
98269 +EXPORT_SYMBOL(_ZN13DiscardNoFreeD1Ev);
98270 +extern char _ZN13DiscardNoFreeD2Ev[];
98271 +EXPORT_SYMBOL(_ZN13DiscardNoFreeD2Ev);
98272 +extern char _ZNK13DiscardNoFree10class_nameEv[];
98273 +EXPORT_SYMBOL(_ZNK13DiscardNoFree10class_nameEv);
98274 +extern char _ZNK13DiscardNoFree10port_countEv[];
98275 +EXPORT_SYMBOL(_ZNK13DiscardNoFree10port_countEv);
98276 +extern char _ZNK13DiscardNoFree10processingEv[];
98277 +EXPORT_SYMBOL(_ZNK13DiscardNoFree10processingEv);
98278 +extern char _ZTV13DiscardNoFree[];
98279 +EXPORT_SYMBOL(_ZTV13DiscardNoFree);
98280 +extern char click_cleanup_packages[];
98281 +EXPORT_SYMBOL(click_cleanup_packages);
98282 +extern char click_has_provision[];
98283 +EXPORT_SYMBOL(click_has_provision);
98284 +extern char click_provide[];
98285 +EXPORT_SYMBOL(click_provide);
98286 +extern char click_public_packages[];
98287 +EXPORT_SYMBOL(click_public_packages);
98288 +extern char click_unprovide[];
98289 +EXPORT_SYMBOL(click_unprovide);
98290 +extern char _ZN13DriverManagerC1Ev[];
98291 +EXPORT_SYMBOL(_ZN13DriverManagerC1Ev);
98292 +extern char _ZN13DriverManagerC2Ev[];
98293 +EXPORT_SYMBOL(_ZN13DriverManagerC2Ev);
98294 +extern char _ZN13DriverManagerD0Ev[];
98295 +EXPORT_SYMBOL(_ZN13DriverManagerD0Ev);
98296 +extern char _ZN13DriverManagerD1Ev[];
98297 +EXPORT_SYMBOL(_ZN13DriverManagerD1Ev);
98298 +extern char _ZNK13DriverManager10class_nameEv[];
98299 +EXPORT_SYMBOL(_ZNK13DriverManager10class_nameEv);
98300 +extern char _ZTV13DriverManager[];
98301 +EXPORT_SYMBOL(_ZTV13DriverManager);
98302 +extern char _ZN14DropBroadcasts12add_handlersEv[];
98303 +EXPORT_SYMBOL(_ZN14DropBroadcasts12add_handlersEv);
98304 +extern char _ZN14DropBroadcasts13simple_actionEP6Packet[];
98305 +EXPORT_SYMBOL(_ZN14DropBroadcasts13simple_actionEP6Packet);
98306 +extern char _ZN14DropBroadcasts7drop_itEP6Packet[];
98307 +EXPORT_SYMBOL(_ZN14DropBroadcasts7drop_itEP6Packet);
98308 +extern char _ZN14DropBroadcastsC1Ev[];
98309 +EXPORT_SYMBOL(_ZN14DropBroadcastsC1Ev);
98310 +extern char _ZN14DropBroadcastsC2Ev[];
98311 +EXPORT_SYMBOL(_ZN14DropBroadcastsC2Ev);
98312 +extern char _ZN14DropBroadcastsD0Ev[];
98313 +EXPORT_SYMBOL(_ZN14DropBroadcastsD0Ev);
98314 +extern char _ZN14DropBroadcastsD1Ev[];
98315 +EXPORT_SYMBOL(_ZN14DropBroadcastsD1Ev);
98316 +extern char _ZN14DropBroadcastsD2Ev[];
98317 +EXPORT_SYMBOL(_ZN14DropBroadcastsD2Ev);
98318 +extern char _ZNK14DropBroadcasts10class_nameEv[];
98319 +EXPORT_SYMBOL(_ZNK14DropBroadcasts10class_nameEv);
98320 +extern char _ZNK14DropBroadcasts10port_countEv[];
98321 +EXPORT_SYMBOL(_ZNK14DropBroadcasts10port_countEv);
98322 +extern char _ZNK14DropBroadcasts10processingEv[];
98323 +EXPORT_SYMBOL(_ZNK14DropBroadcasts10processingEv);
98324 +extern char _ZTV14DropBroadcasts[];
98325 +EXPORT_SYMBOL(_ZTV14DropBroadcasts);
98326 +extern char _ZN8DRRSched10initializeEP12ErrorHandler[];
98327 +EXPORT_SYMBOL(_ZN8DRRSched10initializeEP12ErrorHandler);
98328 +extern char _ZN8DRRSched4castEPKc[];
98329 +EXPORT_SYMBOL(_ZN8DRRSched4castEPKc);
98330 +extern char _ZN8DRRSched4pullEi[];
98331 +EXPORT_SYMBOL(_ZN8DRRSched4pullEi);
98332 +extern char _ZN8DRRSched7cleanupEN7Element12CleanupStageE[];
98333 +EXPORT_SYMBOL(_ZN8DRRSched7cleanupEN7Element12CleanupStageE);
98334 +extern char _ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler[];
98335 +EXPORT_SYMBOL(_ZN8DRRSched9configureER6VectorI6StringEP12ErrorHandler);
98336 +extern char _ZN8DRRSchedC1Ev[];
98337 +EXPORT_SYMBOL(_ZN8DRRSchedC1Ev);
98338 +extern char _ZN8DRRSchedC2Ev[];
98339 +EXPORT_SYMBOL(_ZN8DRRSchedC2Ev);
98340 +extern char _ZN8DRRSchedD0Ev[];
98341 +EXPORT_SYMBOL(_ZN8DRRSchedD0Ev);
98342 +extern char _ZN8DRRSchedD1Ev[];
98343 +EXPORT_SYMBOL(_ZN8DRRSchedD1Ev);
98344 +extern char _ZN8DRRSchedD2Ev[];
98345 +EXPORT_SYMBOL(_ZN8DRRSchedD2Ev);
98346 +extern char _ZNK8DRRSched10class_nameEv[];
98347 +EXPORT_SYMBOL(_ZNK8DRRSched10class_nameEv);
98348 +extern char _ZNK8DRRSched10port_countEv[];
98349 +EXPORT_SYMBOL(_ZNK8DRRSched10port_countEv);
98350 +extern char _ZNK8DRRSched10processingEv[];
98351 +EXPORT_SYMBOL(_ZNK8DRRSched10processingEv);
98352 +extern char _ZTV8DRRSched[];
98353 +EXPORT_SYMBOL(_ZTV8DRRSched);
98354 +extern char _ZN17DynamicUDPIPEncap13simple_actionEP6Packet[];
98355 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncap13simple_actionEP6Packet);
98356 +extern char _ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler[];
98357 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncap9configureER6VectorI6StringEP12ErrorHandler);
98358 +extern char _ZN17DynamicUDPIPEncapC1Ev[];
98359 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapC1Ev);
98360 +extern char _ZN17DynamicUDPIPEncapC2Ev[];
98361 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapC2Ev);
98362 +extern char _ZN17DynamicUDPIPEncapD0Ev[];
98363 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD0Ev);
98364 +extern char _ZN17DynamicUDPIPEncapD1Ev[];
98365 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD1Ev);
98366 +extern char _ZN17DynamicUDPIPEncapD2Ev[];
98367 +EXPORT_SYMBOL(_ZN17DynamicUDPIPEncapD2Ev);
98368 +extern char _ZNK17DynamicUDPIPEncap10class_nameEv[];
98369 +EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10class_nameEv);
98370 +extern char _ZNK17DynamicUDPIPEncap10port_countEv[];
98371 +EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10port_countEv);
98372 +extern char _ZNK17DynamicUDPIPEncap10processingEv[];
98373 +EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap10processingEv);
98374 +extern char _ZNK17DynamicUDPIPEncap5flagsEv[];
98375 +EXPORT_SYMBOL(_ZNK17DynamicUDPIPEncap5flagsEv);
98376 +extern char _ZTV17DynamicUDPIPEncap[];
98377 +EXPORT_SYMBOL(_ZTV17DynamicUDPIPEncap);
98378 +extern char _ZN7Element10initializeEP12ErrorHandler[];
98379 +EXPORT_SYMBOL(_ZN7Element10initializeEP12ErrorHandler);
98380 +extern char _ZN7Element10set_nportsEii[];
98381 +EXPORT_SYMBOL(_ZN7Element10set_nportsEii);
98382 +extern char _ZN7Element10take_stateEPS_P12ErrorHandler[];
98383 +EXPORT_SYMBOL(_ZN7Element10take_stateEPS_P12ErrorHandler);
98384 +extern char _ZN7Element11local_llrpcEjPv[];
98385 +EXPORT_SYMBOL(_ZN7Element11local_llrpcEjPv);
98386 +extern char _ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_[];
98387 +EXPORT_SYMBOL(_ZN7Element11set_handlerERK6StringiPFiiRS0_PS_PK7HandlerP12ErrorHandlerEPvSC_);
98388 +extern char _ZN7Element12PULL_TO_PUSHE[];
98389 +EXPORT_SYMBOL(_ZN7Element12PULL_TO_PUSHE);
98390 +extern char _ZN7Element12PUSH_TO_PULLE[];
98391 +EXPORT_SYMBOL(_ZN7Element12PUSH_TO_PULLE);
98392 +extern char _ZN7Element12add_handlersEv[];
98393 +EXPORT_SYMBOL(_ZN7Element12add_handlersEv);
98394 +extern char _ZN7Element12connect_portEbiPS_i[];
98395 +EXPORT_SYMBOL(_ZN7Element12connect_portEbiPS_i);
98396 +extern char _ZN7Element13COMPLETE_FLOWE[];
98397 +EXPORT_SYMBOL(_ZN7Element13COMPLETE_FLOWE);
98398 +extern char _ZN7Element13notify_nportsEiiP12ErrorHandler[];
98399 +EXPORT_SYMBOL(_ZN7Element13notify_nportsEiiP12ErrorHandler);
98400 +extern char _ZN7Element13simple_actionEP6Packet[];
98401 +EXPORT_SYMBOL(_ZN7Element13simple_actionEP6Packet);
98402 +extern char _ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_[];
98403 +EXPORT_SYMBOL(_ZN7Element16add_read_handlerERK6StringPFS0_PS_PvES4_);
98404 +extern char _ZN7Element16initialize_portsEPKiS1_[];
98405 +EXPORT_SYMBOL(_ZN7Element16initialize_portsEPKiS1_);
98406 +extern char _ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
98407 +EXPORT_SYMBOL(_ZN7Element16live_reconfigureER6VectorI6StringEP12ErrorHandler);
98408 +extern char _ZN7Element17add_task_handlersEP4TaskRK6String[];
98409 +EXPORT_SYMBOL(_ZN7Element17add_task_handlersEP4TaskRK6String);
98410 +extern char _ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_[];
98411 +EXPORT_SYMBOL(_ZN7Element17add_write_handlerERK6StringPFiS2_PS_PvP12ErrorHandlerES4_);
98412 +extern char _ZN7Element17set_handler_flagsERK6Stringi[];
98413 +EXPORT_SYMBOL(_ZN7Element17set_handler_flagsERK6Stringi);
98414 +extern char _ZN7Element19nelements_allocatedE[];
98415 +EXPORT_SYMBOL(_ZN7Element19nelements_allocatedE);
98416 +extern char _ZN7Element20add_default_handlersEb[];
98417 +EXPORT_SYMBOL(_ZN7Element20add_default_handlersEb);
98418 +extern char _ZN7Element20next_processing_codeERPKcP12ErrorHandler[];
98419 +EXPORT_SYMBOL(_ZN7Element20next_processing_codeERPKcP12ErrorHandler);
98420 +extern char _ZN7Element20read_keyword_handlerEPS_Pv[];
98421 +EXPORT_SYMBOL(_ZN7Element20read_keyword_handlerEPS_Pv);
98422 +extern char _ZN7Element23read_positional_handlerEPS_Pv[];
98423 +EXPORT_SYMBOL(_ZN7Element23read_positional_handlerEPS_Pv);
98424 +extern char _ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler[];
98425 +EXPORT_SYMBOL(_ZN7Element27reconfigure_keyword_handlerERK6StringPS_PvP12ErrorHandler);
98426 +extern char _ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler[];
98427 +EXPORT_SYMBOL(_ZN7Element30reconfigure_positional_handlerERK6StringPS_PvP12ErrorHandler);
98428 +extern char _ZN7Element4PULLE[];
98429 +EXPORT_SYMBOL(_ZN7Element4PULLE);
98430 +extern char _ZN7Element4PUSHE[];
98431 +EXPORT_SYMBOL(_ZN7Element4PUSHE);
98432 +extern char _ZN7Element4castEPKc[];
98433 +EXPORT_SYMBOL(_ZN7Element4castEPKc);
98434 +extern char _ZN7Element4pullEi[];
98435 +EXPORT_SYMBOL(_ZN7Element4pullEi);
98436 +extern char _ZN7Element4pushEiP6Packet[];
98437 +EXPORT_SYMBOL(_ZN7Element4pushEiP6Packet);
98438 +extern char _ZN7Element5llrpcEjPv[];
98439 +EXPORT_SYMBOL(_ZN7Element5llrpcEjPv);
98440 +extern char _ZN7Element7cleanupENS_12CleanupStageE[];
98441 +EXPORT_SYMBOL(_ZN7Element7cleanupENS_12CleanupStageE);
98442 +extern char _ZN7Element8AGNOSTICE[];
98443 +EXPORT_SYMBOL(_ZN7Element8AGNOSTICE);
98444 +extern char _ZN7Element8run_taskEP4Task[];
98445 +EXPORT_SYMBOL(_ZN7Element8run_taskEP4Task);
98446 +extern char _ZN7Element8run_taskEv[];
98447 +EXPORT_SYMBOL(_ZN7Element8run_taskEv);
98448 +extern char _ZN7Element9PORTS_0_0E[];
98449 +EXPORT_SYMBOL(_ZN7Element9PORTS_0_0E);
98450 +extern char _ZN7Element9PORTS_0_1E[];
98451 +EXPORT_SYMBOL(_ZN7Element9PORTS_0_1E);
98452 +extern char _ZN7Element9PORTS_1_0E[];
98453 +EXPORT_SYMBOL(_ZN7Element9PORTS_1_0E);
98454 +extern char _ZN7Element9PORTS_1_1E[];
98455 +EXPORT_SYMBOL(_ZN7Element9PORTS_1_1E);
98456 +extern char _ZN7Element9configureER6VectorI6StringEP12ErrorHandler[];
98457 +EXPORT_SYMBOL(_ZN7Element9configureER6VectorI6StringEP12ErrorHandler);
98458 +extern char _ZN7Element9run_timerEP5Timer[];
98459 +EXPORT_SYMBOL(_ZN7Element9run_timerEP5Timer);
98460 +extern char _ZN7Element9run_timerEv[];
98461 +EXPORT_SYMBOL(_ZN7Element9run_timerEv);
98462 +extern char _ZN7ElementC1Ev[];
98463 +EXPORT_SYMBOL(_ZN7ElementC1Ev);
98464 +extern char _ZN7ElementC2Ev[];
98465 +EXPORT_SYMBOL(_ZN7ElementC2Ev);
98466 +extern char _ZN7ElementD0Ev[];
98467 +EXPORT_SYMBOL(_ZN7ElementD0Ev);
98468 +extern char _ZN7ElementD1Ev[];
98469 +EXPORT_SYMBOL(_ZN7ElementD1Ev);
98470 +extern char _ZN7ElementD2Ev[];
98471 +EXPORT_SYMBOL(_ZN7ElementD2Ev);
98472 +extern char _ZNK7Element10port_countEv[];
98473 +EXPORT_SYMBOL(_ZNK7Element10port_countEv);
98474 +extern char _ZNK7Element10processingEv[];
98475 +EXPORT_SYMBOL(_ZNK7Element10processingEv);
98476 +extern char _ZNK7Element11declarationEv[];
98477 +EXPORT_SYMBOL(_ZNK7Element11declarationEv);
98478 +extern char _ZNK7Element13configurationER6VectorI6StringE[];
98479 +EXPORT_SYMBOL(_ZNK7Element13configurationER6VectorI6StringE);
98480 +extern char _ZNK7Element13configurationEv[];
98481 +EXPORT_SYMBOL(_ZNK7Element13configurationEv);
98482 +extern char _ZNK7Element15configure_phaseEv[];
98483 +EXPORT_SYMBOL(_ZNK7Element15configure_phaseEv);
98484 +extern char _ZNK7Element15hotswap_elementEv[];
98485 +EXPORT_SYMBOL(_ZNK7Element15hotswap_elementEv);
98486 +extern char _ZNK7Element17processing_vectorEPiS0_P12ErrorHandler[];
98487 +EXPORT_SYMBOL(_ZNK7Element17processing_vectorEPiS0_P12ErrorHandler);
98488 +extern char _ZNK7Element20can_live_reconfigureEv[];
98489 +EXPORT_SYMBOL(_ZNK7Element20can_live_reconfigureEv);
98490 +extern char _ZNK7Element2idEv[];
98491 +EXPORT_SYMBOL(_ZNK7Element2idEv);
98492 +extern char _ZNK7Element4nameEv[];
98493 +EXPORT_SYMBOL(_ZNK7Element4nameEv);
98494 +extern char _ZNK7Element5flagsEv[];
98495 +EXPORT_SYMBOL(_ZNK7Element5flagsEv);
98496 +extern char _ZNK7Element6masterEv[];
98497 +EXPORT_SYMBOL(_ZNK7Element6masterEv);
98498 +extern char _ZNK7Element8landmarkEv[];
98499 +EXPORT_SYMBOL(_ZNK7Element8landmarkEv);
98500 +extern char _ZNK7Element9flow_codeEv[];
98501 +EXPORT_SYMBOL(_ZNK7Element9flow_codeEv);
98502 +extern char _ZNK7Element9port_flowEbiP9Bitvector[];
98503 +EXPORT_SYMBOL(_ZNK7Element9port_flowEbiP9Bitvector);
98504 +extern char _ZTV7Element[];
98505 +EXPORT_SYMBOL(_ZTV7Element);
98506 +extern char _ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE[];
98507 +EXPORT_SYMBOL(_ZN13ElementFilter11check_matchEP7ElementiNS_8PortTypeE);
98508 +extern char _ZN13ElementFilter6filterER6VectorIP7ElementE[];
98509 +EXPORT_SYMBOL(_ZN13ElementFilter6filterER6VectorIP7ElementE);
98510 +extern char _ZN13ElementFilterD0Ev[];
98511 +EXPORT_SYMBOL(_ZN13ElementFilterD0Ev);
98512 +extern char _ZN13ElementFilterD1Ev[];
98513 +EXPORT_SYMBOL(_ZN13ElementFilterD1Ev);
98514 +extern char _ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE[];
98515 +EXPORT_SYMBOL(_ZN17CastElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE);
98516 +extern char _ZN17CastElementFilterC1ERK6String[];
98517 +EXPORT_SYMBOL(_ZN17CastElementFilterC1ERK6String);
98518 +extern char _ZN17CastElementFilterC2ERK6String[];
98519 +EXPORT_SYMBOL(_ZN17CastElementFilterC2ERK6String);
98520 +extern char _ZN17CastElementFilterD0Ev[];
98521 +EXPORT_SYMBOL(_ZN17CastElementFilterD0Ev);
98522 +extern char _ZN17CastElementFilterD1Ev[];
98523 +EXPORT_SYMBOL(_ZN17CastElementFilterD1Ev);
98524 +extern char _ZTV13ElementFilter[];
98525 +EXPORT_SYMBOL(_ZTV13ElementFilter);
98526 +extern char _ZTV17CastElementFilter[];
98527 +EXPORT_SYMBOL(_ZTV17CastElementFilter);
98528 +extern char _ZN11EnsureEther4pullEi[];
98529 +EXPORT_SYMBOL(_ZN11EnsureEther4pullEi);
98530 +extern char _ZN11EnsureEther4pushEiP6Packet[];
98531 +EXPORT_SYMBOL(_ZN11EnsureEther4pushEiP6Packet);
98532 +extern char _ZN11EnsureEther8smactionEP6Packet[];
98533 +EXPORT_SYMBOL(_ZN11EnsureEther8smactionEP6Packet);
98534 +extern char _ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler[];
98535 +EXPORT_SYMBOL(_ZN11EnsureEther9configureER6VectorI6StringEP12ErrorHandler);
98536 +extern char _ZN11EnsureEtherC1Ev[];
98537 +EXPORT_SYMBOL(_ZN11EnsureEtherC1Ev);
98538 +extern char _ZN11EnsureEtherC2Ev[];
98539 +EXPORT_SYMBOL(_ZN11EnsureEtherC2Ev);
98540 +extern char _ZN11EnsureEtherD0Ev[];
98541 +EXPORT_SYMBOL(_ZN11EnsureEtherD0Ev);
98542 +extern char _ZN11EnsureEtherD1Ev[];
98543 +EXPORT_SYMBOL(_ZN11EnsureEtherD1Ev);
98544 +extern char _ZN11EnsureEtherD2Ev[];
98545 +EXPORT_SYMBOL(_ZN11EnsureEtherD2Ev);
98546 +extern char _ZNK11EnsureEther10class_nameEv[];
98547 +EXPORT_SYMBOL(_ZNK11EnsureEther10class_nameEv);
98548 +extern char _ZNK11EnsureEther10port_countEv[];
98549 +EXPORT_SYMBOL(_ZNK11EnsureEther10port_countEv);
98550 +extern char _ZNK11EnsureEther10processingEv[];
98551 +EXPORT_SYMBOL(_ZNK11EnsureEther10processingEv);
98552 +extern char _ZTV11EnsureEther[];
98553 +EXPORT_SYMBOL(_ZTV11EnsureEther);
98554 +extern char _ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String[];
98555 +EXPORT_SYMBOL(_ZN11ErrorVeneer11count_errorEN12ErrorHandler11SeriousnessERK6String);
98556 +extern char _ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String[];
98557 +EXPORT_SYMBOL(_ZN11ErrorVeneer11handle_textEN12ErrorHandler11SeriousnessERK6String);
98558 +extern char _ZN11ErrorVeneer12reset_countsEv[];
98559 +EXPORT_SYMBOL(_ZN11ErrorVeneer12reset_countsEv);
98560 +extern char _ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[];
98561 +EXPORT_SYMBOL(_ZN11ErrorVeneer13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_);
98562 +extern char _ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc[];
98563 +EXPORT_SYMBOL(_ZN11ErrorVeneer9make_textEN12ErrorHandler11SeriousnessEPKcPc);
98564 +extern char _ZN11ErrorVeneerD0Ev[];
98565 +EXPORT_SYMBOL(_ZN11ErrorVeneerD0Ev);
98566 +extern char _ZN11ErrorVeneerD1Ev[];
98567 +EXPORT_SYMBOL(_ZN11ErrorVeneerD1Ev);
98568 +extern char _ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_[];
98569 +EXPORT_SYMBOL(_ZN12ErrorHandler11verror_textENS_11SeriousnessERK6StringS3_);
98570 +extern char _ZN12ErrorHandler12ERROR_RESULTE[];
98571 +EXPORT_SYMBOL(_ZN12ErrorHandler12ERROR_RESULTE);
98572 +extern char _ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_[];
98573 +EXPORT_SYMBOL(_ZN12ErrorHandler13decorate_textENS_11SeriousnessERK6StringS3_);
98574 +extern char _ZN12ErrorHandler13prepend_linesERK6StringS2_[];
98575 +EXPORT_SYMBOL(_ZN12ErrorHandler13prepend_linesERK6StringS2_);
98576 +extern char _ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE[];
98577 +EXPORT_SYMBOL(_ZN12ErrorHandler14add_conversionERK6StringPFS0_iPPcE);
98578 +extern char _ZN12ErrorHandler14set_error_codeEi[];
98579 +EXPORT_SYMBOL(_ZN12ErrorHandler14set_error_codeEi);
98580 +extern char _ZN12ErrorHandler14silent_handlerEv[];
98581 +EXPORT_SYMBOL(_ZN12ErrorHandler14silent_handlerEv);
98582 +extern char _ZN12ErrorHandler14static_cleanupEv[];
98583 +EXPORT_SYMBOL(_ZN12ErrorHandler14static_cleanupEv);
98584 +extern char _ZN12ErrorHandler15default_handlerEv[];
98585 +EXPORT_SYMBOL(_ZN12ErrorHandler15default_handlerEv);
98586 +extern char _ZN12ErrorHandler17remove_conversionEPNS_10ConversionE[];
98587 +EXPORT_SYMBOL(_ZN12ErrorHandler17remove_conversionEPNS_10ConversionE);
98588 +extern char _ZN12ErrorHandler17static_initializeEPS_[];
98589 +EXPORT_SYMBOL(_ZN12ErrorHandler17static_initializeEPS_);
98590 +extern char _ZN12ErrorHandler19has_default_handlerEv[];
98591 +EXPORT_SYMBOL(_ZN12ErrorHandler19has_default_handlerEv);
98592 +extern char _ZN12ErrorHandler19set_default_handlerEPS_[];
98593 +EXPORT_SYMBOL(_ZN12ErrorHandler19set_default_handlerEPS_);
98594 +extern char _ZN12ErrorHandler5debugEPKcz[];
98595 +EXPORT_SYMBOL(_ZN12ErrorHandler5debugEPKcz);
98596 +extern char _ZN12ErrorHandler5errorEPKcz[];
98597 +EXPORT_SYMBOL(_ZN12ErrorHandler5errorEPKcz);
98598 +extern char _ZN12ErrorHandler5fatalEPKcz[];
98599 +EXPORT_SYMBOL(_ZN12ErrorHandler5fatalEPKcz);
98600 +extern char _ZN12ErrorHandler6ldebugERK6StringPKcz[];
98601 +EXPORT_SYMBOL(_ZN12ErrorHandler6ldebugERK6StringPKcz);
98602 +extern char _ZN12ErrorHandler6lerrorERK6StringPKcz[];
98603 +EXPORT_SYMBOL(_ZN12ErrorHandler6lerrorERK6StringPKcz);
98604 +extern char _ZN12ErrorHandler6lfatalERK6StringPKcz[];
98605 +EXPORT_SYMBOL(_ZN12ErrorHandler6lfatalERK6StringPKcz);
98606 +extern char _ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc[];
98607 +EXPORT_SYMBOL(_ZN12ErrorHandler6verrorENS_11SeriousnessERK6StringPKcPc);
98608 +extern char _ZN12ErrorHandler7messageEPKcz[];
98609 +EXPORT_SYMBOL(_ZN12ErrorHandler7messageEPKcz);
98610 +extern char _ZN12ErrorHandler7warningEPKcz[];
98611 +EXPORT_SYMBOL(_ZN12ErrorHandler7warningEPKcz);
98612 +extern char _ZN12ErrorHandler8lmessageERK6StringPKcz[];
98613 +EXPORT_SYMBOL(_ZN12ErrorHandler8lmessageERK6StringPKcz);
98614 +extern char _ZN12ErrorHandler8lwarningERK6StringPKcz[];
98615 +EXPORT_SYMBOL(_ZN12ErrorHandler8lwarningERK6StringPKcz);
98616 +extern char _ZN12ErrorHandler9OK_RESULTE[];
98617 +EXPORT_SYMBOL(_ZN12ErrorHandler9OK_RESULTE);
98618 +extern char _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc[];
98619 +EXPORT_SYMBOL(_ZN12ErrorHandler9make_textENS_11SeriousnessEPKcPc);
98620 +extern char _ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz[];
98621 +EXPORT_SYMBOL(_ZN12ErrorHandler9make_textENS_11SeriousnessEPKcz);
98622 +extern char _ZN12ErrorHandlerD0Ev[];
98623 +EXPORT_SYMBOL(_ZN12ErrorHandlerD0Ev);
98624 +extern char _ZN12ErrorHandlerD1Ev[];
98625 +EXPORT_SYMBOL(_ZN12ErrorHandlerD1Ev);
98626 +extern char _ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String[];
98627 +EXPORT_SYMBOL(_ZN16BaseErrorHandler11count_errorEN12ErrorHandler11SeriousnessERK6String);
98628 +extern char _ZN16BaseErrorHandler12reset_countsEv[];
98629 +EXPORT_SYMBOL(_ZN16BaseErrorHandler12reset_countsEv);
98630 +extern char _ZN16BaseErrorHandlerD0Ev[];
98631 +EXPORT_SYMBOL(_ZN16BaseErrorHandlerD0Ev);
98632 +extern char _ZN16BaseErrorHandlerD1Ev[];
98633 +EXPORT_SYMBOL(_ZN16BaseErrorHandlerD1Ev);
98634 +extern char _ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[];
98635 +EXPORT_SYMBOL(_ZN18PrefixErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_);
98636 +extern char _ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String[];
98637 +EXPORT_SYMBOL(_ZN18PrefixErrorHandlerC1EP12ErrorHandlerRK6String);
98638 +extern char _ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String[];
98639 +EXPORT_SYMBOL(_ZN18PrefixErrorHandlerC2EP12ErrorHandlerRK6String);
98640 +extern char _ZN18PrefixErrorHandlerD0Ev[];
98641 +EXPORT_SYMBOL(_ZN18PrefixErrorHandlerD0Ev);
98642 +extern char _ZN18PrefixErrorHandlerD1Ev[];
98643 +EXPORT_SYMBOL(_ZN18PrefixErrorHandlerD1Ev);
98644 +extern char _ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[];
98645 +EXPORT_SYMBOL(_ZN18SilentErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String);
98646 +extern char _ZN18SilentErrorHandlerD0Ev[];
98647 +EXPORT_SYMBOL(_ZN18SilentErrorHandlerD0Ev);
98648 +extern char _ZN18SilentErrorHandlerD1Ev[];
98649 +EXPORT_SYMBOL(_ZN18SilentErrorHandlerD1Ev);
98650 +extern char _ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[];
98651 +EXPORT_SYMBOL(_ZN19ContextErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_);
98652 +extern char _ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_[];
98653 +EXPORT_SYMBOL(_ZN19ContextErrorHandlerC1EP12ErrorHandlerRK6StringS4_S4_);
98654 +extern char _ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_[];
98655 +EXPORT_SYMBOL(_ZN19ContextErrorHandlerC2EP12ErrorHandlerRK6StringS4_S4_);
98656 +extern char _ZN19ContextErrorHandlerD0Ev[];
98657 +EXPORT_SYMBOL(_ZN19ContextErrorHandlerD0Ev);
98658 +extern char _ZN19ContextErrorHandlerD1Ev[];
98659 +EXPORT_SYMBOL(_ZN19ContextErrorHandlerD1Ev);
98660 +extern char _ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_[];
98661 +EXPORT_SYMBOL(_ZN20LandmarkErrorHandler13decorate_textEN12ErrorHandler11SeriousnessERK6StringS4_);
98662 +extern char _ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String[];
98663 +EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerC1EP12ErrorHandlerRK6String);
98664 +extern char _ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String[];
98665 +EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerC2EP12ErrorHandlerRK6String);
98666 +extern char _ZN20LandmarkErrorHandlerD0Ev[];
98667 +EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerD0Ev);
98668 +extern char _ZN20LandmarkErrorHandlerD1Ev[];
98669 +EXPORT_SYMBOL(_ZN20LandmarkErrorHandlerD1Ev);
98670 +extern char _ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[];
98671 +EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String);
98672 +extern char _ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri[];
98673 +EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerC1EP12ErrorHandleri);
98674 +extern char _ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri[];
98675 +EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerC2EP12ErrorHandleri);
98676 +extern char _ZN25VerboseFilterErrorHandlerD0Ev[];
98677 +EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerD0Ev);
98678 +extern char _ZN25VerboseFilterErrorHandlerD1Ev[];
98679 +EXPORT_SYMBOL(_ZN25VerboseFilterErrorHandlerD1Ev);
98680 +extern char _ZNK11ErrorVeneer7nerrorsEv[];
98681 +EXPORT_SYMBOL(_ZNK11ErrorVeneer7nerrorsEv);
98682 +extern char _ZNK11ErrorVeneer9nwarningsEv[];
98683 +EXPORT_SYMBOL(_ZNK11ErrorVeneer9nwarningsEv);
98684 +extern char _ZNK12ErrorHandler13min_verbosityEv[];
98685 +EXPORT_SYMBOL(_ZNK12ErrorHandler13min_verbosityEv);
98686 +extern char _ZNK16BaseErrorHandler7nerrorsEv[];
98687 +EXPORT_SYMBOL(_ZNK16BaseErrorHandler7nerrorsEv);
98688 +extern char _ZNK16BaseErrorHandler9nwarningsEv[];
98689 +EXPORT_SYMBOL(_ZNK16BaseErrorHandler9nwarningsEv);
98690 +extern char _ZNK25VerboseFilterErrorHandler13min_verbosityEv[];
98691 +EXPORT_SYMBOL(_ZNK25VerboseFilterErrorHandler13min_verbosityEv);
98692 +extern char _ZTV11ErrorVeneer[];
98693 +EXPORT_SYMBOL(_ZTV11ErrorVeneer);
98694 +extern char _ZTV12ErrorHandler[];
98695 +EXPORT_SYMBOL(_ZTV12ErrorHandler);
98696 +extern char _ZTV16BaseErrorHandler[];
98697 +EXPORT_SYMBOL(_ZTV16BaseErrorHandler);
98698 +extern char _ZTV18PrefixErrorHandler[];
98699 +EXPORT_SYMBOL(_ZTV18PrefixErrorHandler);
98700 +extern char _ZTV18SilentErrorHandler[];
98701 +EXPORT_SYMBOL(_ZTV18SilentErrorHandler);
98702 +extern char _ZTV19ContextErrorHandler[];
98703 +EXPORT_SYMBOL(_ZTV19ContextErrorHandler);
98704 +extern char _ZTV20LandmarkErrorHandler[];
98705 +EXPORT_SYMBOL(_ZTV20LandmarkErrorHandler);
98706 +extern char _ZTV25VerboseFilterErrorHandler[];
98707 +EXPORT_SYMBOL(_ZTV25VerboseFilterErrorHandler);
98708 +extern char _ZN12ErrorElement10initializeEP12ErrorHandler[];
98709 +EXPORT_SYMBOL(_ZN12ErrorElement10initializeEP12ErrorHandler);
98710 +extern char _ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler[];
98711 +EXPORT_SYMBOL(_ZN12ErrorElement9configureER6VectorI6StringEP12ErrorHandler);
98712 +extern char _ZN12ErrorElementC1Ev[];
98713 +EXPORT_SYMBOL(_ZN12ErrorElementC1Ev);
98714 +extern char _ZN12ErrorElementC2Ev[];
98715 +EXPORT_SYMBOL(_ZN12ErrorElementC2Ev);
98716 +extern char _ZN12ErrorElementD0Ev[];
98717 +EXPORT_SYMBOL(_ZN12ErrorElementD0Ev);
98718 +extern char _ZN12ErrorElementD1Ev[];
98719 +EXPORT_SYMBOL(_ZN12ErrorElementD1Ev);
98720 +extern char _ZN12ErrorElementD2Ev[];
98721 +EXPORT_SYMBOL(_ZN12ErrorElementD2Ev);
98722 +extern char _ZNK12ErrorElement10class_nameEv[];
98723 +EXPORT_SYMBOL(_ZNK12ErrorElement10class_nameEv);
98724 +extern char _ZNK12ErrorElement10port_countEv[];
98725 +EXPORT_SYMBOL(_ZNK12ErrorElement10port_countEv);
98726 +extern char _ZNK12ErrorElement10processingEv[];
98727 +EXPORT_SYMBOL(_ZNK12ErrorElement10processingEv);
98728 +extern char _ZNK12ErrorElement9flow_codeEv[];
98729 +EXPORT_SYMBOL(_ZNK12ErrorElement9flow_codeEv);
98730 +extern char _ZTV12ErrorElement[];
98731 +EXPORT_SYMBOL(_ZTV12ErrorElement);
98732 +extern char _ZNK12EtherAddress7unparseEv[];
98733 +EXPORT_SYMBOL(_ZNK12EtherAddress7unparseEv);
98734 +extern char _ZlsR11StringAccumRK12EtherAddress[];
98735 +EXPORT_SYMBOL(_ZlsR11StringAccumRK12EtherAddress);
98736 +extern char _ZN10EtherEncap12add_handlersEv[];
98737 +EXPORT_SYMBOL(_ZN10EtherEncap12add_handlersEv);
98738 +extern char _ZN10EtherEncap12read_handlerEP7ElementPv[];
98739 +EXPORT_SYMBOL(_ZN10EtherEncap12read_handlerEP7ElementPv);
98740 +extern char _ZN10EtherEncap4pullEi[];
98741 +EXPORT_SYMBOL(_ZN10EtherEncap4pullEi);
98742 +extern char _ZN10EtherEncap4pushEiP6Packet[];
98743 +EXPORT_SYMBOL(_ZN10EtherEncap4pushEiP6Packet);
98744 +extern char _ZN10EtherEncap8smactionEP6Packet[];
98745 +EXPORT_SYMBOL(_ZN10EtherEncap8smactionEP6Packet);
98746 +extern char _ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler[];
98747 +EXPORT_SYMBOL(_ZN10EtherEncap9configureER6VectorI6StringEP12ErrorHandler);
98748 +extern char _ZN10EtherEncapC1Ev[];
98749 +EXPORT_SYMBOL(_ZN10EtherEncapC1Ev);
98750 +extern char _ZN10EtherEncapC2Ev[];
98751 +EXPORT_SYMBOL(_ZN10EtherEncapC2Ev);
98752 +extern char _ZN10EtherEncapD0Ev[];
98753 +EXPORT_SYMBOL(_ZN10EtherEncapD0Ev);
98754 +extern char _ZN10EtherEncapD1Ev[];
98755 +EXPORT_SYMBOL(_ZN10EtherEncapD1Ev);
98756 +extern char _ZN10EtherEncapD2Ev[];
98757 +EXPORT_SYMBOL(_ZN10EtherEncapD2Ev);
98758 +extern char _ZNK10EtherEncap10class_nameEv[];
98759 +EXPORT_SYMBOL(_ZNK10EtherEncap10class_nameEv);
98760 +extern char _ZNK10EtherEncap10port_countEv[];
98761 +EXPORT_SYMBOL(_ZNK10EtherEncap10port_countEv);
98762 +extern char _ZNK10EtherEncap10processingEv[];
98763 +EXPORT_SYMBOL(_ZNK10EtherEncap10processingEv);
98764 +extern char _ZNK10EtherEncap20can_live_reconfigureEv[];
98765 +EXPORT_SYMBOL(_ZNK10EtherEncap20can_live_reconfigureEv);
98766 +extern char _ZTV10EtherEncap[];
98767 +EXPORT_SYMBOL(_ZTV10EtherEncap);
98768 +extern char _ZN11EtherMirror13simple_actionEP6Packet[];
98769 +EXPORT_SYMBOL(_ZN11EtherMirror13simple_actionEP6Packet);
98770 +extern char _ZN11EtherMirrorC1Ev[];
98771 +EXPORT_SYMBOL(_ZN11EtherMirrorC1Ev);
98772 +extern char _ZN11EtherMirrorC2Ev[];
98773 +EXPORT_SYMBOL(_ZN11EtherMirrorC2Ev);
98774 +extern char _ZN11EtherMirrorD0Ev[];
98775 +EXPORT_SYMBOL(_ZN11EtherMirrorD0Ev);
98776 +extern char _ZN11EtherMirrorD1Ev[];
98777 +EXPORT_SYMBOL(_ZN11EtherMirrorD1Ev);
98778 +extern char _ZN11EtherMirrorD2Ev[];
98779 +EXPORT_SYMBOL(_ZN11EtherMirrorD2Ev);
98780 +extern char _ZNK11EtherMirror10class_nameEv[];
98781 +EXPORT_SYMBOL(_ZNK11EtherMirror10class_nameEv);
98782 +extern char _ZNK11EtherMirror10port_countEv[];
98783 +EXPORT_SYMBOL(_ZNK11EtherMirror10port_countEv);
98784 +extern char _ZTV11EtherMirror[];
98785 +EXPORT_SYMBOL(_ZTV11EtherMirror);
98786 +extern char _ZN12FastTCPFlows10get_packetEv[];
98787 +EXPORT_SYMBOL(_ZN12FastTCPFlows10get_packetEv);
98788 +extern char _ZN12FastTCPFlows10initializeEP12ErrorHandler[];
98789 +EXPORT_SYMBOL(_ZN12FastTCPFlows10initializeEP12ErrorHandler);
98790 +extern char _ZN12FastTCPFlows12add_handlersEv[];
98791 +EXPORT_SYMBOL(_ZN12FastTCPFlows12add_handlersEv);
98792 +extern char _ZN12FastTCPFlows12change_portsEi[];
98793 +EXPORT_SYMBOL(_ZN12FastTCPFlows12change_portsEi);
98794 +extern char _ZN12FastTCPFlows4pullEi[];
98795 +EXPORT_SYMBOL(_ZN12FastTCPFlows4pullEi);
98796 +extern char _ZN12FastTCPFlows5resetEv[];
98797 +EXPORT_SYMBOL(_ZN12FastTCPFlows5resetEv);
98798 +extern char _ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE[];
98799 +EXPORT_SYMBOL(_ZN12FastTCPFlows7cleanupEN7Element12CleanupStageE);
98800 +extern char _ZN12FastTCPFlows8NO_LIMITE[];
98801 +EXPORT_SYMBOL(_ZN12FastTCPFlows8NO_LIMITE);
98802 +extern char _ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler[];
98803 +EXPORT_SYMBOL(_ZN12FastTCPFlows9configureER6VectorI6StringEP12ErrorHandler);
98804 +extern char _ZN12FastTCPFlowsC1Ev[];
98805 +EXPORT_SYMBOL(_ZN12FastTCPFlowsC1Ev);
98806 +extern char _ZN12FastTCPFlowsC2Ev[];
98807 +EXPORT_SYMBOL(_ZN12FastTCPFlowsC2Ev);
98808 +extern char _ZN12FastTCPFlowsD0Ev[];
98809 +EXPORT_SYMBOL(_ZN12FastTCPFlowsD0Ev);
98810 +extern char _ZN12FastTCPFlowsD1Ev[];
98811 +EXPORT_SYMBOL(_ZN12FastTCPFlowsD1Ev);
98812 +extern char _ZN12FastTCPFlowsD2Ev[];
98813 +EXPORT_SYMBOL(_ZN12FastTCPFlowsD2Ev);
98814 +extern char _ZNK12FastTCPFlows10class_nameEv[];
98815 +EXPORT_SYMBOL(_ZNK12FastTCPFlows10class_nameEv);
98816 +extern char _ZNK12FastTCPFlows10port_countEv[];
98817 +EXPORT_SYMBOL(_ZNK12FastTCPFlows10port_countEv);
98818 +extern char _ZNK12FastTCPFlows10processingEv[];
98819 +EXPORT_SYMBOL(_ZNK12FastTCPFlows10processingEv);
98820 +extern char _ZTV12FastTCPFlows[];
98821 +EXPORT_SYMBOL(_ZTV12FastTCPFlows);
98822 +extern char _ZN12FastUDPFlows10get_packetEv[];
98823 +EXPORT_SYMBOL(_ZN12FastUDPFlows10get_packetEv);
98824 +extern char _ZN12FastUDPFlows10initializeEP12ErrorHandler[];
98825 +EXPORT_SYMBOL(_ZN12FastUDPFlows10initializeEP12ErrorHandler);
98826 +extern char _ZN12FastUDPFlows12add_handlersEv[];
98827 +EXPORT_SYMBOL(_ZN12FastUDPFlows12add_handlersEv);
98828 +extern char _ZN12FastUDPFlows12change_portsEi[];
98829 +EXPORT_SYMBOL(_ZN12FastUDPFlows12change_portsEi);
98830 +extern char _ZN12FastUDPFlows4pullEi[];
98831 +EXPORT_SYMBOL(_ZN12FastUDPFlows4pullEi);
98832 +extern char _ZN12FastUDPFlows5resetEv[];
98833 +EXPORT_SYMBOL(_ZN12FastUDPFlows5resetEv);
98834 +extern char _ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE[];
98835 +EXPORT_SYMBOL(_ZN12FastUDPFlows7cleanupEN7Element12CleanupStageE);
98836 +extern char _ZN12FastUDPFlows8NO_LIMITE[];
98837 +EXPORT_SYMBOL(_ZN12FastUDPFlows8NO_LIMITE);
98838 +extern char _ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler[];
98839 +EXPORT_SYMBOL(_ZN12FastUDPFlows9configureER6VectorI6StringEP12ErrorHandler);
98840 +extern char _ZN12FastUDPFlowsC1Ev[];
98841 +EXPORT_SYMBOL(_ZN12FastUDPFlowsC1Ev);
98842 +extern char _ZN12FastUDPFlowsC2Ev[];
98843 +EXPORT_SYMBOL(_ZN12FastUDPFlowsC2Ev);
98844 +extern char _ZN12FastUDPFlowsD0Ev[];
98845 +EXPORT_SYMBOL(_ZN12FastUDPFlowsD0Ev);
98846 +extern char _ZN12FastUDPFlowsD1Ev[];
98847 +EXPORT_SYMBOL(_ZN12FastUDPFlowsD1Ev);
98848 +extern char _ZN12FastUDPFlowsD2Ev[];
98849 +EXPORT_SYMBOL(_ZN12FastUDPFlowsD2Ev);
98850 +extern char _ZNK12FastUDPFlows10class_nameEv[];
98851 +EXPORT_SYMBOL(_ZNK12FastUDPFlows10class_nameEv);
98852 +extern char _ZNK12FastUDPFlows10port_countEv[];
98853 +EXPORT_SYMBOL(_ZNK12FastUDPFlows10port_countEv);
98854 +extern char _ZNK12FastUDPFlows10processingEv[];
98855 +EXPORT_SYMBOL(_ZNK12FastUDPFlows10processingEv);
98856 +extern char _ZTV12FastUDPFlows[];
98857 +EXPORT_SYMBOL(_ZTV12FastUDPFlows);
98858 +extern char _ZN13FastUDPSource10incr_portsEv[];
98859 +EXPORT_SYMBOL(_ZN13FastUDPSource10incr_portsEv);
98860 +extern char _ZN13FastUDPSource10initializeEP12ErrorHandler[];
98861 +EXPORT_SYMBOL(_ZN13FastUDPSource10initializeEP12ErrorHandler);
98862 +extern char _ZN13FastUDPSource12add_handlersEv[];
98863 +EXPORT_SYMBOL(_ZN13FastUDPSource12add_handlersEv);
98864 +extern char _ZN13FastUDPSource4pullEi[];
98865 +EXPORT_SYMBOL(_ZN13FastUDPSource4pullEi);
98866 +extern char _ZN13FastUDPSource5resetEv[];
98867 +EXPORT_SYMBOL(_ZN13FastUDPSource5resetEv);
98868 +extern char _ZN13FastUDPSource7cleanupEN7Element12CleanupStageE[];
98869 +EXPORT_SYMBOL(_ZN13FastUDPSource7cleanupEN7Element12CleanupStageE);
98870 +extern char _ZN13FastUDPSource8NO_LIMITE[];
98871 +EXPORT_SYMBOL(_ZN13FastUDPSource8NO_LIMITE);
98872 +extern char _ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler[];
98873 +EXPORT_SYMBOL(_ZN13FastUDPSource9configureER6VectorI6StringEP12ErrorHandler);
98874 +extern char _ZN13FastUDPSourceC1Ev[];
98875 +EXPORT_SYMBOL(_ZN13FastUDPSourceC1Ev);
98876 +extern char _ZN13FastUDPSourceC2Ev[];
98877 +EXPORT_SYMBOL(_ZN13FastUDPSourceC2Ev);
98878 +extern char _ZN13FastUDPSourceD0Ev[];
98879 +EXPORT_SYMBOL(_ZN13FastUDPSourceD0Ev);
98880 +extern char _ZN13FastUDPSourceD1Ev[];
98881 +EXPORT_SYMBOL(_ZN13FastUDPSourceD1Ev);
98882 +extern char _ZN13FastUDPSourceD2Ev[];
98883 +EXPORT_SYMBOL(_ZN13FastUDPSourceD2Ev);
98884 +extern char _ZNK13FastUDPSource10class_nameEv[];
98885 +EXPORT_SYMBOL(_ZNK13FastUDPSource10class_nameEv);
98886 +extern char _ZNK13FastUDPSource10port_countEv[];
98887 +EXPORT_SYMBOL(_ZNK13FastUDPSource10port_countEv);
98888 +extern char _ZNK13FastUDPSource10processingEv[];
98889 +EXPORT_SYMBOL(_ZNK13FastUDPSource10processingEv);
98890 +extern char _ZTV13FastUDPSource[];
98891 +EXPORT_SYMBOL(_ZTV13FastUDPSource);
98892 +extern char _ZN8FixIPSrc13simple_actionEP6Packet[];
98893 +EXPORT_SYMBOL(_ZN8FixIPSrc13simple_actionEP6Packet);
98894 +extern char _ZN8FixIPSrc6fix_itEP6Packet[];
98895 +EXPORT_SYMBOL(_ZN8FixIPSrc6fix_itEP6Packet);
98896 +extern char _ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler[];
98897 +EXPORT_SYMBOL(_ZN8FixIPSrc9configureER6VectorI6StringEP12ErrorHandler);
98898 +extern char _ZN8FixIPSrcC1Ev[];
98899 +EXPORT_SYMBOL(_ZN8FixIPSrcC1Ev);
98900 +extern char _ZN8FixIPSrcC2Ev[];
98901 +EXPORT_SYMBOL(_ZN8FixIPSrcC2Ev);
98902 +extern char _ZN8FixIPSrcD0Ev[];
98903 +EXPORT_SYMBOL(_ZN8FixIPSrcD0Ev);
98904 +extern char _ZN8FixIPSrcD1Ev[];
98905 +EXPORT_SYMBOL(_ZN8FixIPSrcD1Ev);
98906 +extern char _ZN8FixIPSrcD2Ev[];
98907 +EXPORT_SYMBOL(_ZN8FixIPSrcD2Ev);
98908 +extern char _ZNK8FixIPSrc10class_nameEv[];
98909 +EXPORT_SYMBOL(_ZNK8FixIPSrc10class_nameEv);
98910 +extern char _ZNK8FixIPSrc10port_countEv[];
98911 +EXPORT_SYMBOL(_ZNK8FixIPSrc10port_countEv);
98912 +extern char _ZNK8FixIPSrc10processingEv[];
98913 +EXPORT_SYMBOL(_ZNK8FixIPSrc10processingEv);
98914 +extern char _ZTV8FixIPSrc[];
98915 +EXPORT_SYMBOL(_ZTV8FixIPSrc);
98916 +extern char _ZN10FromDevice10initializeEP12ErrorHandler[];
98917 +EXPORT_SYMBOL(_ZN10FromDevice10initializeEP12ErrorHandler);
98918 +extern char _ZN10FromDevice10take_stateEP7ElementP12ErrorHandler[];
98919 +EXPORT_SYMBOL(_ZN10FromDevice10take_stateEP7ElementP12ErrorHandler);
98920 +extern char _ZN10FromDevice12add_handlersEv[];
98921 +EXPORT_SYMBOL(_ZN10FromDevice12add_handlersEv);
98922 +extern char _ZN10FromDevice12reset_countsEv[];
98923 +EXPORT_SYMBOL(_ZN10FromDevice12reset_countsEv);
98924 +extern char _ZN10FromDevice14static_cleanupEv[];
98925 +EXPORT_SYMBOL(_ZN10FromDevice14static_cleanupEv);
98926 +extern char _ZN10FromDevice17static_initializeEv[];
98927 +EXPORT_SYMBOL(_ZN10FromDevice17static_initializeEv);
98928 +extern char _ZN10FromDevice4castEPKc[];
98929 +EXPORT_SYMBOL(_ZN10FromDevice4castEPKc);
98930 +extern char _ZN10FromDevice7cleanupEN7Element12CleanupStageE[];
98931 +EXPORT_SYMBOL(_ZN10FromDevice7cleanupEN7Element12CleanupStageE);
98932 +extern char _ZN10FromDevice7got_skbEP7sk_buff[];
98933 +EXPORT_SYMBOL(_ZN10FromDevice7got_skbEP7sk_buff);
98934 +extern char _ZN10FromDevice8run_taskEP4Task[];
98935 +EXPORT_SYMBOL(_ZN10FromDevice8run_taskEP4Task);
98936 +extern char _ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler[];
98937 +EXPORT_SYMBOL(_ZN10FromDevice9configureER6VectorI6StringEP12ErrorHandler);
98938 +extern char _ZN10FromDeviceC1Ev[];
98939 +EXPORT_SYMBOL(_ZN10FromDeviceC1Ev);
98940 +extern char _ZN10FromDeviceC2Ev[];
98941 +EXPORT_SYMBOL(_ZN10FromDeviceC2Ev);
98942 +extern char _ZN10FromDeviceD0Ev[];
98943 +EXPORT_SYMBOL(_ZN10FromDeviceD0Ev);
98944 +extern char _ZN10FromDeviceD1Ev[];
98945 +EXPORT_SYMBOL(_ZN10FromDeviceD1Ev);
98946 +extern char _ZN10FromDeviceD2Ev[];
98947 +EXPORT_SYMBOL(_ZN10FromDeviceD2Ev);
98948 +extern char _ZNK10FromDevice10class_nameEv[];
98949 +EXPORT_SYMBOL(_ZNK10FromDevice10class_nameEv);
98950 +extern char _ZNK10FromDevice10port_countEv[];
98951 +EXPORT_SYMBOL(_ZNK10FromDevice10port_countEv);
98952 +extern char _ZNK10FromDevice10processingEv[];
98953 +EXPORT_SYMBOL(_ZNK10FromDevice10processingEv);
98954 +extern char _ZTV10FromDevice[];
98955 +EXPORT_SYMBOL(_ZTV10FromDevice);
98956 +extern char _ZN8FromHost10initializeEP12ErrorHandler[];
98957 +EXPORT_SYMBOL(_ZN8FromHost10initializeEP12ErrorHandler);
98958 +extern char _ZN8FromHost10new_deviceEPKc[];
98959 +EXPORT_SYMBOL(_ZN8FromHost10new_deviceEPKc);
98960 +extern char _ZN8FromHost17static_initializeEv[];
98961 +EXPORT_SYMBOL(_ZN8FromHost17static_initializeEv);
98962 +extern char _ZN8FromHost20set_device_addressesEP12ErrorHandler[];
98963 +EXPORT_SYMBOL(_ZN8FromHost20set_device_addressesEP12ErrorHandler);
98964 +extern char _ZN8FromHost5fl_txEP7sk_buffP10net_device[];
98965 +EXPORT_SYMBOL(_ZN8FromHost5fl_txEP7sk_buffP10net_device);
98966 +extern char _ZN8FromHost7cleanupEN7Element12CleanupStageE[];
98967 +EXPORT_SYMBOL(_ZN8FromHost7cleanupEN7Element12CleanupStageE);
98968 +extern char _ZN8FromHost8run_taskEP4Task[];
98969 +EXPORT_SYMBOL(_ZN8FromHost8run_taskEP4Task);
98970 +extern char _ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler[];
98971 +EXPORT_SYMBOL(_ZN8FromHost9configureER6VectorI6StringEP12ErrorHandler);
98972 +extern char _ZN8FromHostC1Ev[];
98973 +EXPORT_SYMBOL(_ZN8FromHostC1Ev);
98974 +extern char _ZN8FromHostC2Ev[];
98975 +EXPORT_SYMBOL(_ZN8FromHostC2Ev);
98976 +extern char _ZN8FromHostD0Ev[];
98977 +EXPORT_SYMBOL(_ZN8FromHostD0Ev);
98978 +extern char _ZN8FromHostD1Ev[];
98979 +EXPORT_SYMBOL(_ZN8FromHostD1Ev);
98980 +extern char _ZN8FromHostD2Ev[];
98981 +EXPORT_SYMBOL(_ZN8FromHostD2Ev);
98982 +extern char _ZNK8FromHost10class_nameEv[];
98983 +EXPORT_SYMBOL(_ZNK8FromHost10class_nameEv);
98984 +extern char _ZNK8FromHost10port_countEv[];
98985 +EXPORT_SYMBOL(_ZNK8FromHost10port_countEv);
98986 +extern char _ZNK8FromHost10processingEv[];
98987 +EXPORT_SYMBOL(_ZNK8FromHost10processingEv);
98988 +extern char _ZNK8FromHost15configure_phaseEv[];
98989 +EXPORT_SYMBOL(_ZNK8FromHost15configure_phaseEv);
98990 +extern char _ZTV8FromHost[];
98991 +EXPORT_SYMBOL(_ZTV8FromHost);
98992 +extern char _ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler[];
98993 +EXPORT_SYMBOL(_ZN14FrontDropQueue10take_stateEP7ElementP12ErrorHandler);
98994 +extern char _ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
98995 +EXPORT_SYMBOL(_ZN14FrontDropQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler);
98996 +extern char _ZN14FrontDropQueue4castEPKc[];
98997 +EXPORT_SYMBOL(_ZN14FrontDropQueue4castEPKc);
98998 +extern char _ZN14FrontDropQueue4pushEiP6Packet[];
98999 +EXPORT_SYMBOL(_ZN14FrontDropQueue4pushEiP6Packet);
99000 +extern char _ZN14FrontDropQueueC1Ev[];
99001 +EXPORT_SYMBOL(_ZN14FrontDropQueueC1Ev);
99002 +extern char _ZN14FrontDropQueueC2Ev[];
99003 +EXPORT_SYMBOL(_ZN14FrontDropQueueC2Ev);
99004 +extern char _ZN14FrontDropQueueD0Ev[];
99005 +EXPORT_SYMBOL(_ZN14FrontDropQueueD0Ev);
99006 +extern char _ZN14FrontDropQueueD1Ev[];
99007 +EXPORT_SYMBOL(_ZN14FrontDropQueueD1Ev);
99008 +extern char _ZN14FrontDropQueueD2Ev[];
99009 +EXPORT_SYMBOL(_ZN14FrontDropQueueD2Ev);
99010 +extern char _ZNK11SimpleQueue10port_countEv[];
99011 +EXPORT_SYMBOL(_ZNK11SimpleQueue10port_countEv);
99012 +extern char _ZNK11SimpleQueue10processingEv[];
99013 +EXPORT_SYMBOL(_ZNK11SimpleQueue10processingEv);
99014 +extern char _ZNK11SimpleQueue20can_live_reconfigureEv[];
99015 +EXPORT_SYMBOL(_ZNK11SimpleQueue20can_live_reconfigureEv);
99016 +extern char _ZNK14FrontDropQueue10class_nameEv[];
99017 +EXPORT_SYMBOL(_ZNK14FrontDropQueue10class_nameEv);
99018 +extern char _ZTV14FrontDropQueue[];
99019 +EXPORT_SYMBOL(_ZTV14FrontDropQueue);
99020 +extern char _ZN13FTPPortMapper10initializeEP12ErrorHandler[];
99021 +EXPORT_SYMBOL(_ZN13FTPPortMapper10initializeEP12ErrorHandler);
99022 +extern char _ZN13FTPPortMapper13simple_actionEP6Packet[];
99023 +EXPORT_SYMBOL(_ZN13FTPPortMapper13simple_actionEP6Packet);
99024 +extern char _ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE[];
99025 +EXPORT_SYMBOL(_ZN13FTPPortMapper7cleanupEN7Element12CleanupStageE);
99026 +extern char _ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler[];
99027 +EXPORT_SYMBOL(_ZN13FTPPortMapper9configureER6VectorI6StringEP12ErrorHandler);
99028 +extern char _ZN13FTPPortMapperC1Ev[];
99029 +EXPORT_SYMBOL(_ZN13FTPPortMapperC1Ev);
99030 +extern char _ZN13FTPPortMapperC2Ev[];
99031 +EXPORT_SYMBOL(_ZN13FTPPortMapperC2Ev);
99032 +extern char _ZN13FTPPortMapperD0Ev[];
99033 +EXPORT_SYMBOL(_ZN13FTPPortMapperD0Ev);
99034 +extern char _ZN13FTPPortMapperD1Ev[];
99035 +EXPORT_SYMBOL(_ZN13FTPPortMapperD1Ev);
99036 +extern char _ZN13FTPPortMapperD2Ev[];
99037 +EXPORT_SYMBOL(_ZN13FTPPortMapperD2Ev);
99038 +extern char _ZNK13FTPPortMapper10class_nameEv[];
99039 +EXPORT_SYMBOL(_ZNK13FTPPortMapper10class_nameEv);
99040 +extern char _ZNK13FTPPortMapper10port_countEv[];
99041 +EXPORT_SYMBOL(_ZNK13FTPPortMapper10port_countEv);
99042 +extern char _ZTV13FTPPortMapper[];
99043 +EXPORT_SYMBOL(_ZTV13FTPPortMapper);
99044 +extern char _ZN13FullNoteQueue4castEPKc[];
99045 +EXPORT_SYMBOL(_ZN13FullNoteQueue4castEPKc);
99046 +extern char _ZN13FullNoteQueue4pullEi[];
99047 +EXPORT_SYMBOL(_ZN13FullNoteQueue4pullEi);
99048 +extern char _ZN13FullNoteQueue4pushEiP6Packet[];
99049 +EXPORT_SYMBOL(_ZN13FullNoteQueue4pushEiP6Packet);
99050 +extern char _ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler[];
99051 +EXPORT_SYMBOL(_ZN13FullNoteQueue9configureER6VectorI6StringEP12ErrorHandler);
99052 +extern char _ZN13FullNoteQueueC1Ev[];
99053 +EXPORT_SYMBOL(_ZN13FullNoteQueueC1Ev);
99054 +extern char _ZN13FullNoteQueueC2Ev[];
99055 +EXPORT_SYMBOL(_ZN13FullNoteQueueC2Ev);
99056 +extern char _ZN13FullNoteQueueD0Ev[];
99057 +EXPORT_SYMBOL(_ZN13FullNoteQueueD0Ev);
99058 +extern char _ZN13FullNoteQueueD1Ev[];
99059 +EXPORT_SYMBOL(_ZN13FullNoteQueueD1Ev);
99060 +extern char _ZN13FullNoteQueueD2Ev[];
99061 +EXPORT_SYMBOL(_ZN13FullNoteQueueD2Ev);
99062 +extern char _ZNK13FullNoteQueue10class_nameEv[];
99063 +EXPORT_SYMBOL(_ZNK13FullNoteQueue10class_nameEv);
99064 +extern char _ZTV13FullNoteQueue[];
99065 +EXPORT_SYMBOL(_ZTV13FullNoteQueue);
99066 +extern char _ZN7GapRate8set_rateEjP12ErrorHandler[];
99067 +EXPORT_SYMBOL(_ZN7GapRate8set_rateEjP12ErrorHandler);
99068 +extern char _ZN12GetIPAddress13simple_actionEP6Packet[];
99069 +EXPORT_SYMBOL(_ZN12GetIPAddress13simple_actionEP6Packet);
99070 +extern char _ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler[];
99071 +EXPORT_SYMBOL(_ZN12GetIPAddress9configureER6VectorI6StringEP12ErrorHandler);
99072 +extern char _ZN12GetIPAddressC1Ev[];
99073 +EXPORT_SYMBOL(_ZN12GetIPAddressC1Ev);
99074 +extern char _ZN12GetIPAddressC2Ev[];
99075 +EXPORT_SYMBOL(_ZN12GetIPAddressC2Ev);
99076 +extern char _ZN12GetIPAddressD0Ev[];
99077 +EXPORT_SYMBOL(_ZN12GetIPAddressD0Ev);
99078 +extern char _ZN12GetIPAddressD1Ev[];
99079 +EXPORT_SYMBOL(_ZN12GetIPAddressD1Ev);
99080 +extern char _ZN12GetIPAddressD2Ev[];
99081 +EXPORT_SYMBOL(_ZN12GetIPAddressD2Ev);
99082 +extern char _ZNK12GetIPAddress10class_nameEv[];
99083 +EXPORT_SYMBOL(_ZNK12GetIPAddress10class_nameEv);
99084 +extern char _ZNK12GetIPAddress10port_countEv[];
99085 +EXPORT_SYMBOL(_ZNK12GetIPAddress10port_countEv);
99086 +extern char _ZNK12GetIPAddress10processingEv[];
99087 +EXPORT_SYMBOL(_ZNK12GetIPAddress10processingEv);
99088 +extern char _ZTV12GetIPAddress[];
99089 +EXPORT_SYMBOL(_ZTV12GetIPAddress);
99090 +extern char _Z11click_qsortPvjjPFiPKvS1_E[];
99091 +EXPORT_SYMBOL(_Z11click_qsortPvjjPFiPKvS1_E);
99092 +extern char _Z11click_qsortPvjjPFiPKvS1_S_ES_[];
99093 +EXPORT_SYMBOL(_Z11click_qsortPvjjPFiPKvS1_S_ES_);
99094 +extern char _Z20click_random_srandomv[];
99095 +EXPORT_SYMBOL(_Z20click_random_srandomv);
99096 +extern char _Z21click_dmalloc_cleanupv[];
99097 +EXPORT_SYMBOL(_Z21click_dmalloc_cleanupv);
99098 +extern char _Z24click_check_header_sizesv[];
99099 +EXPORT_SYMBOL(_Z24click_check_header_sizesv);
99100 +extern char _ZdaPv[];
99101 +EXPORT_SYMBOL(_ZdaPv);
99102 +extern char _ZdlPv[];
99103 +EXPORT_SYMBOL(_ZdlPv);
99104 +extern char _Znaj[];
99105 +EXPORT_SYMBOL(_Znaj);
99106 +extern char _Znwj[];
99107 +EXPORT_SYMBOL(_Znwj);
99108 +extern char __assert_fail[];
99109 +EXPORT_SYMBOL(__assert_fail);
99110 +extern char __cxa_pure_virtual[];
99111 +EXPORT_SYMBOL(__cxa_pure_virtual);
99112 +extern char __rtti_si[];
99113 +EXPORT_SYMBOL(__rtti_si);
99114 +extern char __rtti_user[];
99115 +EXPORT_SYMBOL(__rtti_user);
99116 +extern char click_chatter[];
99117 +EXPORT_SYMBOL(click_chatter);
99118 +extern char click_dmalloc_curnew[];
99119 +EXPORT_SYMBOL(click_dmalloc_curnew);
99120 +extern char click_dmalloc_totalnew[];
99121 +EXPORT_SYMBOL(click_dmalloc_totalnew);
99122 +extern char click_dmalloc_where[];
99123 +EXPORT_SYMBOL(click_dmalloc_where);
99124 +extern char click_lalloc[];
99125 +EXPORT_SYMBOL(click_lalloc);
99126 +extern char click_lfree[];
99127 +EXPORT_SYMBOL(click_lfree);
99128 +extern char click_random_seed[];
99129 +EXPORT_SYMBOL(click_random_seed);
99130 +extern char srandom[];
99131 +EXPORT_SYMBOL(srandom);
99132 +extern char strtol[];
99133 +EXPORT_SYMBOL(strtol);
99134 +extern char _ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler[];
99135 +EXPORT_SYMBOL(_ZN11HandlerCall10call_writeEP7ElementRK6StringS4_P12ErrorHandler);
99136 +extern char _ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler[];
99137 +EXPORT_SYMBOL(_ZN11HandlerCall10call_writeERK6StringP7ElementP12ErrorHandler);
99138 +extern char _ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler[];
99139 +EXPORT_SYMBOL(_ZN11HandlerCall10call_writeERK6StringS2_P7ElementP12ErrorHandler);
99140 +extern char _ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler[];
99141 +EXPORT_SYMBOL(_ZN11HandlerCall10initializeEiP7ElementP12ErrorHandler);
99142 +extern char _ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler[];
99143 +EXPORT_SYMBOL(_ZN11HandlerCall5resetERPS_P7ElementRK6StringS6_iP12ErrorHandler);
99144 +extern char _ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler[];
99145 +EXPORT_SYMBOL(_ZN11HandlerCall5resetERPS_RK6StringiP7ElementP12ErrorHandler);
99146 +extern char _ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler[];
99147 +EXPORT_SYMBOL(_ZN11HandlerCall6assignEP7ElementRK6StringS4_iP12ErrorHandler);
99148 +extern char _ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler[];
99149 +EXPORT_SYMBOL(_ZN11HandlerCall9call_readEP7ElementRK6StringP12ErrorHandler);
99150 +extern char _ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler[];
99151 +EXPORT_SYMBOL(_ZN11HandlerCall9call_readERK6StringP7ElementP12ErrorHandler);
99152 +extern char _ZNK11HandlerCall7unparseEv[];
99153 +EXPORT_SYMBOL(_ZNK11HandlerCall7unparseEv);
99154 +extern char _ZN10HashSwitch4pushEiP6Packet[];
99155 +EXPORT_SYMBOL(_ZN10HashSwitch4pushEiP6Packet);
99156 +extern char _ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler[];
99157 +EXPORT_SYMBOL(_ZN10HashSwitch9configureER6VectorI6StringEP12ErrorHandler);
99158 +extern char _ZN10HashSwitchC1Ev[];
99159 +EXPORT_SYMBOL(_ZN10HashSwitchC1Ev);
99160 +extern char _ZN10HashSwitchC2Ev[];
99161 +EXPORT_SYMBOL(_ZN10HashSwitchC2Ev);
99162 +extern char _ZN10HashSwitchD0Ev[];
99163 +EXPORT_SYMBOL(_ZN10HashSwitchD0Ev);
99164 +extern char _ZN10HashSwitchD1Ev[];
99165 +EXPORT_SYMBOL(_ZN10HashSwitchD1Ev);
99166 +extern char _ZN10HashSwitchD2Ev[];
99167 +EXPORT_SYMBOL(_ZN10HashSwitchD2Ev);
99168 +extern char _ZNK10HashSwitch10class_nameEv[];
99169 +EXPORT_SYMBOL(_ZNK10HashSwitch10class_nameEv);
99170 +extern char _ZNK10HashSwitch10port_countEv[];
99171 +EXPORT_SYMBOL(_ZNK10HashSwitch10port_countEv);
99172 +extern char _ZNK10HashSwitch10processingEv[];
99173 +EXPORT_SYMBOL(_ZNK10HashSwitch10processingEv);
99174 +extern char _ZTV10HashSwitch[];
99175 +EXPORT_SYMBOL(_ZTV10HashSwitch);
99176 +extern char _ZN15HostEtherFilter13simple_actionEP6Packet[];
99177 +EXPORT_SYMBOL(_ZN15HostEtherFilter13simple_actionEP6Packet);
99178 +extern char _ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler[];
99179 +EXPORT_SYMBOL(_ZN15HostEtherFilter9configureER6VectorI6StringEP12ErrorHandler);
99180 +extern char _ZN15HostEtherFilterC1Ev[];
99181 +EXPORT_SYMBOL(_ZN15HostEtherFilterC1Ev);
99182 +extern char _ZN15HostEtherFilterC2Ev[];
99183 +EXPORT_SYMBOL(_ZN15HostEtherFilterC2Ev);
99184 +extern char _ZN15HostEtherFilterD0Ev[];
99185 +EXPORT_SYMBOL(_ZN15HostEtherFilterD0Ev);
99186 +extern char _ZN15HostEtherFilterD1Ev[];
99187 +EXPORT_SYMBOL(_ZN15HostEtherFilterD1Ev);
99188 +extern char _ZN15HostEtherFilterD2Ev[];
99189 +EXPORT_SYMBOL(_ZN15HostEtherFilterD2Ev);
99190 +extern char _ZNK15HostEtherFilter10class_nameEv[];
99191 +EXPORT_SYMBOL(_ZNK15HostEtherFilter10class_nameEv);
99192 +extern char _ZNK15HostEtherFilter10port_countEv[];
99193 +EXPORT_SYMBOL(_ZNK15HostEtherFilter10port_countEv);
99194 +extern char _ZNK15HostEtherFilter10processingEv[];
99195 +EXPORT_SYMBOL(_ZNK15HostEtherFilter10processingEv);
99196 +extern char _ZTV15HostEtherFilter[];
99197 +EXPORT_SYMBOL(_ZTV15HostEtherFilter);
99198 +extern char _ZN9ICMPError13is_error_typeEi[];
99199 +EXPORT_SYMBOL(_ZN9ICMPError13is_error_typeEi);
99200 +extern char _ZN9ICMPError13simple_actionEP6Packet[];
99201 +EXPORT_SYMBOL(_ZN9ICMPError13simple_actionEP6Packet);
99202 +extern char _ZN9ICMPError18valid_source_routeEPK8click_ip[];
99203 +EXPORT_SYMBOL(_ZN9ICMPError18valid_source_routeEPK8click_ip);
99204 +extern char _ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler[];
99205 +EXPORT_SYMBOL(_ZN9ICMPError9configureER6VectorI6StringEP12ErrorHandler);
99206 +extern char _ZN9ICMPErrorC1Ev[];
99207 +EXPORT_SYMBOL(_ZN9ICMPErrorC1Ev);
99208 +extern char _ZN9ICMPErrorC2Ev[];
99209 +EXPORT_SYMBOL(_ZN9ICMPErrorC2Ev);
99210 +extern char _ZN9ICMPErrorD0Ev[];
99211 +EXPORT_SYMBOL(_ZN9ICMPErrorD0Ev);
99212 +extern char _ZN9ICMPErrorD1Ev[];
99213 +EXPORT_SYMBOL(_ZN9ICMPErrorD1Ev);
99214 +extern char _ZN9ICMPErrorD2Ev[];
99215 +EXPORT_SYMBOL(_ZN9ICMPErrorD2Ev);
99216 +extern char _ZNK9ICMPError10class_nameEv[];
99217 +EXPORT_SYMBOL(_ZNK9ICMPError10class_nameEv);
99218 +extern char _ZNK9ICMPError10port_countEv[];
99219 +EXPORT_SYMBOL(_ZNK9ICMPError10port_countEv);
99220 +extern char _ZNK9ICMPError10processingEv[];
99221 +EXPORT_SYMBOL(_ZNK9ICMPError10processingEv);
99222 +extern char _ZNK9ICMPError12valid_sourceE7in_addr[];
99223 +EXPORT_SYMBOL(_ZNK9ICMPError12valid_sourceE7in_addr);
99224 +extern char _ZNK9ICMPError7unicastE7in_addr[];
99225 +EXPORT_SYMBOL(_ZNK9ICMPError7unicastE7in_addr);
99226 +extern char _ZTV9ICMPError[];
99227 +EXPORT_SYMBOL(_ZTV9ICMPError);
99228 +extern char _ZN13ICMPPingEncap12add_handlersEv[];
99229 +EXPORT_SYMBOL(_ZN13ICMPPingEncap12add_handlersEv);
99230 +extern char _ZN13ICMPPingEncap12read_handlerEP7ElementPv[];
99231 +EXPORT_SYMBOL(_ZN13ICMPPingEncap12read_handlerEP7ElementPv);
99232 +extern char _ZN13ICMPPingEncap13simple_actionEP6Packet[];
99233 +EXPORT_SYMBOL(_ZN13ICMPPingEncap13simple_actionEP6Packet);
99234 +extern char _ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
99235 +EXPORT_SYMBOL(_ZN13ICMPPingEncap13write_handlerERK6StringP7ElementPvP12ErrorHandler);
99236 +extern char _ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler[];
99237 +EXPORT_SYMBOL(_ZN13ICMPPingEncap9configureER6VectorI6StringEP12ErrorHandler);
99238 +extern char _ZN13ICMPPingEncapC1Ev[];
99239 +EXPORT_SYMBOL(_ZN13ICMPPingEncapC1Ev);
99240 +extern char _ZN13ICMPPingEncapC2Ev[];
99241 +EXPORT_SYMBOL(_ZN13ICMPPingEncapC2Ev);
99242 +extern char _ZN13ICMPPingEncapD0Ev[];
99243 +EXPORT_SYMBOL(_ZN13ICMPPingEncapD0Ev);
99244 +extern char _ZN13ICMPPingEncapD1Ev[];
99245 +EXPORT_SYMBOL(_ZN13ICMPPingEncapD1Ev);
99246 +extern char _ZN13ICMPPingEncapD2Ev[];
99247 +EXPORT_SYMBOL(_ZN13ICMPPingEncapD2Ev);
99248 +extern char _ZNK13ICMPPingEncap10class_nameEv[];
99249 +EXPORT_SYMBOL(_ZNK13ICMPPingEncap10class_nameEv);
99250 +extern char _ZNK13ICMPPingEncap10port_countEv[];
99251 +EXPORT_SYMBOL(_ZNK13ICMPPingEncap10port_countEv);
99252 +extern char _ZNK13ICMPPingEncap10processingEv[];
99253 +EXPORT_SYMBOL(_ZNK13ICMPPingEncap10processingEv);
99254 +extern char _ZNK13ICMPPingEncap5flagsEv[];
99255 +EXPORT_SYMBOL(_ZNK13ICMPPingEncap5flagsEv);
99256 +extern char _ZTV13ICMPPingEncap[];
99257 +EXPORT_SYMBOL(_ZTV13ICMPPingEncap);
99258 +extern char _ZN17ICMPPingResponder13simple_actionEP6Packet[];
99259 +EXPORT_SYMBOL(_ZN17ICMPPingResponder13simple_actionEP6Packet);
99260 +extern char _ZN17ICMPPingResponderC1Ev[];
99261 +EXPORT_SYMBOL(_ZN17ICMPPingResponderC1Ev);
99262 +extern char _ZN17ICMPPingResponderC2Ev[];
99263 +EXPORT_SYMBOL(_ZN17ICMPPingResponderC2Ev);
99264 +extern char _ZN17ICMPPingResponderD0Ev[];
99265 +EXPORT_SYMBOL(_ZN17ICMPPingResponderD0Ev);
99266 +extern char _ZN17ICMPPingResponderD1Ev[];
99267 +EXPORT_SYMBOL(_ZN17ICMPPingResponderD1Ev);
99268 +extern char _ZN17ICMPPingResponderD2Ev[];
99269 +EXPORT_SYMBOL(_ZN17ICMPPingResponderD2Ev);
99270 +extern char _ZNK17ICMPPingResponder10class_nameEv[];
99271 +EXPORT_SYMBOL(_ZNK17ICMPPingResponder10class_nameEv);
99272 +extern char _ZNK17ICMPPingResponder10port_countEv[];
99273 +EXPORT_SYMBOL(_ZNK17ICMPPingResponder10port_countEv);
99274 +extern char _ZNK17ICMPPingResponder10processingEv[];
99275 +EXPORT_SYMBOL(_ZNK17ICMPPingResponder10processingEv);
99276 +extern char _ZTV17ICMPPingResponder[];
99277 +EXPORT_SYMBOL(_ZTV17ICMPPingResponder);
99278 +extern char _ZN16ICMPPingRewriter10initializeEP12ErrorHandler[];
99279 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter10initializeEP12ErrorHandler);
99280 +extern char _ZN16ICMPPingRewriter12add_handlersEv[];
99281 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter12add_handlersEv);
99282 +extern char _ZN16ICMPPingRewriter13apply_patternERK8IPFlowID[];
99283 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter13apply_patternERK8IPFlowID);
99284 +extern char _ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv[];
99285 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter21dump_mappings_handlerEP7ElementPv);
99286 +extern char _ZN16ICMPPingRewriter4pushEiP6Packet[];
99287 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter4pushEiP6Packet);
99288 +extern char _ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_[];
99289 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping10initializeERK8IPFlowIDS3_bPS0_);
99290 +extern char _ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket[];
99291 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping5applyEP14WritablePacket);
99292 +extern char _ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_[];
99293 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7Mapping9make_pairERK8IPFlowIDS3_PS0_S4_);
99294 +extern char _ZN16ICMPPingRewriter7MappingC1Eb[];
99295 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7MappingC1Eb);
99296 +extern char _ZN16ICMPPingRewriter7MappingC2Eb[];
99297 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7MappingC2Eb);
99298 +extern char _ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE[];
99299 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter7cleanupEN7Element12CleanupStageE);
99300 +extern char _ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler[];
99301 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter9configureER6VectorI6StringEP12ErrorHandler);
99302 +extern char _ZN16ICMPPingRewriter9run_timerEP5Timer[];
99303 +EXPORT_SYMBOL(_ZN16ICMPPingRewriter9run_timerEP5Timer);
99304 +extern char _ZN16ICMPPingRewriterC1Ev[];
99305 +EXPORT_SYMBOL(_ZN16ICMPPingRewriterC1Ev);
99306 +extern char _ZN16ICMPPingRewriterC2Ev[];
99307 +EXPORT_SYMBOL(_ZN16ICMPPingRewriterC2Ev);
99308 +extern char _ZN16ICMPPingRewriterD0Ev[];
99309 +EXPORT_SYMBOL(_ZN16ICMPPingRewriterD0Ev);
99310 +extern char _ZN16ICMPPingRewriterD1Ev[];
99311 +EXPORT_SYMBOL(_ZN16ICMPPingRewriterD1Ev);
99312 +extern char _ZN16ICMPPingRewriterD2Ev[];
99313 +EXPORT_SYMBOL(_ZN16ICMPPingRewriterD2Ev);
99314 +extern char _ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb[];
99315 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDPvEC1EPK7HashMapIS0_S1_Eb);
99316 +extern char _ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi[];
99317 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDPvEppEi);
99318 +extern char _ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj[];
99319 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE10initializeEP20HashMap_ArenaFactoryj);
99320 +extern char _ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb[];
99321 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE20set_dynamic_resizingEb);
99322 +extern char _ZN7HashMapI8IPFlowIDPvE5clearEv[];
99323 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE5clearEv);
99324 +extern char _ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_[];
99325 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6insertERKS0_S1_);
99326 +extern char _ZN7HashMapI8IPFlowIDPvE6removeERKS0_[];
99327 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6removeERKS0_);
99328 +extern char _ZN7HashMapI8IPFlowIDPvE6resizeEj[];
99329 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE6resizeEj);
99330 +extern char _ZN7HashMapI8IPFlowIDPvE7resize0Ej[];
99331 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE7resize0Ej);
99332 +extern char _ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory[];
99333 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE9set_arenaEP20HashMap_ArenaFactory);
99334 +extern char _ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory[];
99335 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvEC2ES1_P20HashMap_ArenaFactory);
99336 +extern char _ZN7HashMapI8IPFlowIDPvED2Ev[];
99337 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvED2Ev);
99338 +extern char _ZNK16ICMPPingRewriter10class_nameEv[];
99339 +EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10class_nameEv);
99340 +extern char _ZNK16ICMPPingRewriter10port_countEv[];
99341 +EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10port_countEv);
99342 +extern char _ZNK16ICMPPingRewriter10processingEv[];
99343 +EXPORT_SYMBOL(_ZNK16ICMPPingRewriter10processingEv);
99344 +extern char _ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID[];
99345 +EXPORT_SYMBOL(_ZNK16ICMPPingRewriter11get_mappingEbRK8IPFlowID);
99346 +extern char _ZNK16ICMPPingRewriter7Mapping1sEv[];
99347 +EXPORT_SYMBOL(_ZNK16ICMPPingRewriter7Mapping1sEv);
99348 +extern char _ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_[];
99349 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDPvE9find_pairERKS0_);
99350 +extern char _ZTV16ICMPPingRewriter[];
99351 +EXPORT_SYMBOL(_ZTV16ICMPPingRewriter);
99352 +extern char _ZN12ICMPRewriter13simple_actionEP6Packet[];
99353 +EXPORT_SYMBOL(_ZN12ICMPRewriter13simple_actionEP6Packet);
99354 +extern char _ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE[];
99355 +EXPORT_SYMBOL(_ZN12ICMPRewriter14rewrite_packetEP14WritablePacketP8click_ipP9click_udpRK8IPFlowIDPN4IPRw7MappingE);
99356 +extern char _ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE[];
99357 +EXPORT_SYMBOL(_ZN12ICMPRewriter19rewrite_ping_packetEP14WritablePacketP8click_ipP20click_icmp_sequencedRK8IPFlowIDPN16ICMPPingRewriter7MappingE);
99358 +extern char _ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler[];
99359 +EXPORT_SYMBOL(_ZN12ICMPRewriter9configureER6VectorI6StringEP12ErrorHandler);
99360 +extern char _ZN12ICMPRewriterC1Ev[];
99361 +EXPORT_SYMBOL(_ZN12ICMPRewriterC1Ev);
99362 +extern char _ZN12ICMPRewriterC2Ev[];
99363 +EXPORT_SYMBOL(_ZN12ICMPRewriterC2Ev);
99364 +extern char _ZN12ICMPRewriterD0Ev[];
99365 +EXPORT_SYMBOL(_ZN12ICMPRewriterD0Ev);
99366 +extern char _ZN12ICMPRewriterD1Ev[];
99367 +EXPORT_SYMBOL(_ZN12ICMPRewriterD1Ev);
99368 +extern char _ZN12ICMPRewriterD2Ev[];
99369 +EXPORT_SYMBOL(_ZN12ICMPRewriterD2Ev);
99370 +extern char _ZNK12ICMPRewriter10class_nameEv[];
99371 +EXPORT_SYMBOL(_ZNK12ICMPRewriter10class_nameEv);
99372 +extern char _ZNK12ICMPRewriter10port_countEv[];
99373 +EXPORT_SYMBOL(_ZNK12ICMPRewriter10port_countEv);
99374 +extern char _ZNK12ICMPRewriter10processingEv[];
99375 +EXPORT_SYMBOL(_ZNK12ICMPRewriter10processingEv);
99376 +extern char _ZTV12ICMPRewriter[];
99377 +EXPORT_SYMBOL(_ZTV12ICMPRewriter);
99378 +extern char _ZN14ICMPPingSource10initializeEP12ErrorHandler[];
99379 +EXPORT_SYMBOL(_ZN14ICMPPingSource10initializeEP12ErrorHandler);
99380 +extern char _ZN14ICMPPingSource11make_packetEv[];
99381 +EXPORT_SYMBOL(_ZN14ICMPPingSource11make_packetEv);
99382 +extern char _ZN14ICMPPingSource12add_handlersEv[];
99383 +EXPORT_SYMBOL(_ZN14ICMPPingSource12add_handlersEv);
99384 +extern char _ZN14ICMPPingSource12read_handlerEP7ElementPv[];
99385 +EXPORT_SYMBOL(_ZN14ICMPPingSource12read_handlerEP7ElementPv);
99386 +extern char _ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
99387 +EXPORT_SYMBOL(_ZN14ICMPPingSource13write_handlerERK6StringP7ElementPvP12ErrorHandler);
99388 +extern char _ZN14ICMPPingSource4pullEi[];
99389 +EXPORT_SYMBOL(_ZN14ICMPPingSource4pullEi);
99390 +extern char _ZN14ICMPPingSource4pushEiP6Packet[];
99391 +EXPORT_SYMBOL(_ZN14ICMPPingSource4pushEiP6Packet);
99392 +extern char _ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE[];
99393 +EXPORT_SYMBOL(_ZN14ICMPPingSource7cleanupEN7Element12CleanupStageE);
99394 +extern char _ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler[];
99395 +EXPORT_SYMBOL(_ZN14ICMPPingSource9configureER6VectorI6StringEP12ErrorHandler);
99396 +extern char _ZN14ICMPPingSource9run_timerEP5Timer[];
99397 +EXPORT_SYMBOL(_ZN14ICMPPingSource9run_timerEP5Timer);
99398 +extern char _ZN14ICMPPingSourceC1Ev[];
99399 +EXPORT_SYMBOL(_ZN14ICMPPingSourceC1Ev);
99400 +extern char _ZN14ICMPPingSourceC2Ev[];
99401 +EXPORT_SYMBOL(_ZN14ICMPPingSourceC2Ev);
99402 +extern char _ZN14ICMPPingSourceD0Ev[];
99403 +EXPORT_SYMBOL(_ZN14ICMPPingSourceD0Ev);
99404 +extern char _ZN14ICMPPingSourceD1Ev[];
99405 +EXPORT_SYMBOL(_ZN14ICMPPingSourceD1Ev);
99406 +extern char _ZN14ICMPPingSourceD2Ev[];
99407 +EXPORT_SYMBOL(_ZN14ICMPPingSourceD2Ev);
99408 +extern char _ZNK14ICMPPingSource10class_nameEv[];
99409 +EXPORT_SYMBOL(_ZNK14ICMPPingSource10class_nameEv);
99410 +extern char _ZNK14ICMPPingSource10port_countEv[];
99411 +EXPORT_SYMBOL(_ZNK14ICMPPingSource10port_countEv);
99412 +extern char _ZNK14ICMPPingSource10processingEv[];
99413 +EXPORT_SYMBOL(_ZNK14ICMPPingSource10processingEv);
99414 +extern char _ZTV14ICMPPingSource[];
99415 +EXPORT_SYMBOL(_ZTV14ICMPPingSource);
99416 +extern char _ZN4Idle4castEPKc[];
99417 +EXPORT_SYMBOL(_ZN4Idle4castEPKc);
99418 +extern char _ZN4Idle4pullEi[];
99419 +EXPORT_SYMBOL(_ZN4Idle4pullEi);
99420 +extern char _ZN4Idle4pushEiP6Packet[];
99421 +EXPORT_SYMBOL(_ZN4Idle4pushEiP6Packet);
99422 +extern char _ZN4IdleC1Ev[];
99423 +EXPORT_SYMBOL(_ZN4IdleC1Ev);
99424 +extern char _ZN4IdleC2Ev[];
99425 +EXPORT_SYMBOL(_ZN4IdleC2Ev);
99426 +extern char _ZN4IdleD0Ev[];
99427 +EXPORT_SYMBOL(_ZN4IdleD0Ev);
99428 +extern char _ZN4IdleD1Ev[];
99429 +EXPORT_SYMBOL(_ZN4IdleD1Ev);
99430 +extern char _ZN4IdleD2Ev[];
99431 +EXPORT_SYMBOL(_ZN4IdleD2Ev);
99432 +extern char _ZNK4Idle10class_nameEv[];
99433 +EXPORT_SYMBOL(_ZNK4Idle10class_nameEv);
99434 +extern char _ZNK4Idle10port_countEv[];
99435 +EXPORT_SYMBOL(_ZNK4Idle10port_countEv);
99436 +extern char _ZNK4Idle10processingEv[];
99437 +EXPORT_SYMBOL(_ZNK4Idle10processingEv);
99438 +extern char _ZNK4Idle5flagsEv[];
99439 +EXPORT_SYMBOL(_ZNK4Idle5flagsEv);
99440 +extern char _ZNK4Idle9flow_codeEv[];
99441 +EXPORT_SYMBOL(_ZNK4Idle9flow_codeEv);
99442 +extern char _ZTV4Idle[];
99443 +EXPORT_SYMBOL(_ZTV4Idle);
99444 +extern char click_in_cksum_pseudohdr_hard[];
99445 +EXPORT_SYMBOL(click_in_cksum_pseudohdr_hard);
99446 +extern char _ZN14InfiniteSource10initializeEP12ErrorHandler[];
99447 +EXPORT_SYMBOL(_ZN14InfiniteSource10initializeEP12ErrorHandler);
99448 +extern char _ZN14InfiniteSource10read_paramEP7ElementPv[];
99449 +EXPORT_SYMBOL(_ZN14InfiniteSource10read_paramEP7ElementPv);
99450 +extern char _ZN14InfiniteSource12add_handlersEv[];
99451 +EXPORT_SYMBOL(_ZN14InfiniteSource12add_handlersEv);
99452 +extern char _ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler[];
99453 +EXPORT_SYMBOL(_ZN14InfiniteSource12change_paramERK6StringP7ElementPvP12ErrorHandler);
99454 +extern char _ZN14InfiniteSource12setup_packetEv[];
99455 +EXPORT_SYMBOL(_ZN14InfiniteSource12setup_packetEv);
99456 +extern char _ZN14InfiniteSource4castEPKc[];
99457 +EXPORT_SYMBOL(_ZN14InfiniteSource4castEPKc);
99458 +extern char _ZN14InfiniteSource4pullEi[];
99459 +EXPORT_SYMBOL(_ZN14InfiniteSource4pullEi);
99460 +extern char _ZN14InfiniteSource7cleanupEN7Element12CleanupStageE[];
99461 +EXPORT_SYMBOL(_ZN14InfiniteSource7cleanupEN7Element12CleanupStageE);
99462 +extern char _ZN14InfiniteSource8run_taskEP4Task[];
99463 +EXPORT_SYMBOL(_ZN14InfiniteSource8run_taskEP4Task);
99464 +extern char _ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler[];
99465 +EXPORT_SYMBOL(_ZN14InfiniteSource9configureER6VectorI6StringEP12ErrorHandler);
99466 +extern char _ZN14InfiniteSourceC1Ev[];
99467 +EXPORT_SYMBOL(_ZN14InfiniteSourceC1Ev);
99468 +extern char _ZN14InfiniteSourceC2Ev[];
99469 +EXPORT_SYMBOL(_ZN14InfiniteSourceC2Ev);
99470 +extern char _ZN14InfiniteSourceD0Ev[];
99471 +EXPORT_SYMBOL(_ZN14InfiniteSourceD0Ev);
99472 +extern char _ZN14InfiniteSourceD1Ev[];
99473 +EXPORT_SYMBOL(_ZN14InfiniteSourceD1Ev);
99474 +extern char _ZN14InfiniteSourceD2Ev[];
99475 +EXPORT_SYMBOL(_ZN14InfiniteSourceD2Ev);
99476 +extern char _ZNK14InfiniteSource10class_nameEv[];
99477 +EXPORT_SYMBOL(_ZNK14InfiniteSource10class_nameEv);
99478 +extern char _ZNK14InfiniteSource10port_countEv[];
99479 +EXPORT_SYMBOL(_ZNK14InfiniteSource10port_countEv);
99480 +extern char _ZNK14InfiniteSource10processingEv[];
99481 +EXPORT_SYMBOL(_ZNK14InfiniteSource10processingEv);
99482 +extern char _ZNK14InfiniteSource20can_live_reconfigureEv[];
99483 +EXPORT_SYMBOL(_ZNK14InfiniteSource20can_live_reconfigureEv);
99484 +extern char _ZNK14InfiniteSource5flagsEv[];
99485 +EXPORT_SYMBOL(_ZNK14InfiniteSource5flagsEv);
99486 +extern char _ZTV14InfiniteSource[];
99487 +EXPORT_SYMBOL(_ZTV14InfiniteSource);
99488 +extern char _ZThn60_N14InfiniteSourceD0Ev[];
99489 +EXPORT_SYMBOL(_ZThn60_N14InfiniteSourceD0Ev);
99490 +extern char _ZThn60_N14InfiniteSourceD1Ev[];
99491 +EXPORT_SYMBOL(_ZThn60_N14InfiniteSourceD1Ev);
99492 +extern char _ZN8ClickIno10initializeEv[];
99493 +EXPORT_SYMBOL(_ZN8ClickIno10initializeEv);
99494 +extern char _ZN8ClickIno12true_prepareEP6Routerj[];
99495 +EXPORT_SYMBOL(_ZN8ClickIno12true_prepareEP6Routerj);
99496 +extern char _ZN8ClickIno27calculate_handler_conflictsEi[];
99497 +EXPORT_SYMBOL(_ZN8ClickIno27calculate_handler_conflictsEi);
99498 +extern char _ZN8ClickIno4growEi[];
99499 +EXPORT_SYMBOL(_ZN8ClickIno4growEi);
99500 +extern char _ZN8ClickIno5nlinkEm[];
99501 +EXPORT_SYMBOL(_ZN8ClickIno5nlinkEm);
99502 +extern char _ZN8ClickIno6lookupEmRK6String[];
99503 +EXPORT_SYMBOL(_ZN8ClickIno6lookupEmRK6String);
99504 +extern char _ZN8ClickIno7cleanupEv[];
99505 +EXPORT_SYMBOL(_ZN8ClickIno7cleanupEv);
99506 +extern char _ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_[];
99507 +EXPORT_SYMBOL(_ZN8ClickIno7readdirEmRjPFbPKcimijPvES3_);
99508 +extern char _ZNK8ClickIno11name_searchERK6Stringiii[];
99509 +EXPORT_SYMBOL(_ZNK8ClickIno11name_searchERK6Stringiii);
99510 +extern char _Z8int_sqrtj[];
99511 +EXPORT_SYMBOL(_Z8int_sqrtj);
99512 +extern char _ZN9IPAddress11make_prefixEi[];
99513 +EXPORT_SYMBOL(_ZN9IPAddress11make_prefixEi);
99514 +extern char _ZN9IPAddressC1EPKh[];
99515 +EXPORT_SYMBOL(_ZN9IPAddressC1EPKh);
99516 +extern char _ZN9IPAddressC1ERK6String[];
99517 +EXPORT_SYMBOL(_ZN9IPAddressC1ERK6String);
99518 +extern char _ZN9IPAddressC2EPKh[];
99519 +EXPORT_SYMBOL(_ZN9IPAddressC2EPKh);
99520 +extern char _ZN9IPAddressC2ERK6String[];
99521 +EXPORT_SYMBOL(_ZN9IPAddressC2ERK6String);
99522 +extern char _ZNK9IPAddress12unparse_maskEv[];
99523 +EXPORT_SYMBOL(_ZNK9IPAddress12unparse_maskEv);
99524 +extern char _ZNK9IPAddress17unparse_with_maskES_[];
99525 +EXPORT_SYMBOL(_ZNK9IPAddress17unparse_with_maskES_);
99526 +extern char _ZNK9IPAddress18mask_to_prefix_lenEv[];
99527 +EXPORT_SYMBOL(_ZNK9IPAddress18mask_to_prefix_lenEv);
99528 +extern char _ZNK9IPAddress7unparseEv[];
99529 +EXPORT_SYMBOL(_ZNK9IPAddress7unparseEv);
99530 +extern char _ZlsR11StringAccum9IPAddress[];
99531 +EXPORT_SYMBOL(_ZlsR11StringAccum9IPAddress);
99532 +extern char _ZN18IPAddrPairRewriter10initializeEP12ErrorHandler[];
99533 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter10initializeEP12ErrorHandler);
99534 +extern char _ZN18IPAddrPairRewriter12add_handlersEv[];
99535 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter12add_handlersEv);
99536 +extern char _ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[];
99537 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii);
99538 +extern char _ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[];
99539 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler);
99540 +extern char _ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket[];
99541 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter17IPAddrPairMapping5applyEP14WritablePacket);
99542 +extern char _ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv[];
99543 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter21dump_mappings_handlerEP7ElementPv);
99544 +extern char _ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv[];
99545 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter21dump_patterns_handlerEP7ElementPv);
99546 +extern char _ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv[];
99547 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter22dump_nmappings_handlerEP7ElementPv);
99548 +extern char _ZN18IPAddrPairRewriter4castEPKc[];
99549 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter4castEPKc);
99550 +extern char _ZN18IPAddrPairRewriter4pushEiP6Packet[];
99551 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter4pushEiP6Packet);
99552 +extern char _ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE[];
99553 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter7cleanupEN7Element12CleanupStageE);
99554 +extern char _ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler[];
99555 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter9configureER6VectorI6StringEP12ErrorHandler);
99556 +extern char _ZN18IPAddrPairRewriter9run_timerEP5Timer[];
99557 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriter9run_timerEP5Timer);
99558 +extern char _ZN18IPAddrPairRewriterC1Ev[];
99559 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriterC1Ev);
99560 +extern char _ZN18IPAddrPairRewriterC2Ev[];
99561 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriterC2Ev);
99562 +extern char _ZN18IPAddrPairRewriterD0Ev[];
99563 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD0Ev);
99564 +extern char _ZN18IPAddrPairRewriterD1Ev[];
99565 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD1Ev);
99566 +extern char _ZN18IPAddrPairRewriterD2Ev[];
99567 +EXPORT_SYMBOL(_ZN18IPAddrPairRewriterD2Ev);
99568 +extern char _ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_[];
99569 +EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEE5eraseEPS1_S3_);
99570 +extern char _ZN6VectorIN4IPRw9InputSpecEE7reserveEi[];
99571 +EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEE7reserveEi);
99572 +extern char _ZN6VectorIN4IPRw9InputSpecEED1Ev[];
99573 +EXPORT_SYMBOL(_ZN6VectorIN4IPRw9InputSpecEED1Ev);
99574 +extern char _ZNK18IPAddrPairRewriter10class_nameEv[];
99575 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10class_nameEv);
99576 +extern char _ZNK18IPAddrPairRewriter10port_countEv[];
99577 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10port_countEv);
99578 +extern char _ZNK18IPAddrPairRewriter10processingEv[];
99579 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter10processingEv);
99580 +extern char _ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID[];
99581 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter11get_mappingEiRK8IPFlowID);
99582 +extern char _ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv[];
99583 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter17IPAddrPairMapping7reverseEv);
99584 +extern char _ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv[];
99585 +EXPORT_SYMBOL(_ZNK18IPAddrPairRewriter17IPAddrPairMapping7unparseEv);
99586 +extern char _ZNK4IPRw15configure_phaseEv[];
99587 +EXPORT_SYMBOL(_ZNK4IPRw15configure_phaseEv);
99588 +extern char _ZTV18IPAddrPairRewriter[];
99589 +EXPORT_SYMBOL(_ZTV18IPAddrPairRewriter);
99590 +extern char _ZN14IPAddrRewriter10initializeEP12ErrorHandler[];
99591 +EXPORT_SYMBOL(_ZN14IPAddrRewriter10initializeEP12ErrorHandler);
99592 +extern char _ZN14IPAddrRewriter12add_handlersEv[];
99593 +EXPORT_SYMBOL(_ZN14IPAddrRewriter12add_handlersEv);
99594 +extern char _ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket[];
99595 +EXPORT_SYMBOL(_ZN14IPAddrRewriter13IPAddrMapping5applyEP14WritablePacket);
99596 +extern char _ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[];
99597 +EXPORT_SYMBOL(_ZN14IPAddrRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii);
99598 +extern char _ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[];
99599 +EXPORT_SYMBOL(_ZN14IPAddrRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler);
99600 +extern char _ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv[];
99601 +EXPORT_SYMBOL(_ZN14IPAddrRewriter21dump_mappings_handlerEP7ElementPv);
99602 +extern char _ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv[];
99603 +EXPORT_SYMBOL(_ZN14IPAddrRewriter21dump_patterns_handlerEP7ElementPv);
99604 +extern char _ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv[];
99605 +EXPORT_SYMBOL(_ZN14IPAddrRewriter22dump_nmappings_handlerEP7ElementPv);
99606 +extern char _ZN14IPAddrRewriter4castEPKc[];
99607 +EXPORT_SYMBOL(_ZN14IPAddrRewriter4castEPKc);
99608 +extern char _ZN14IPAddrRewriter4pushEiP6Packet[];
99609 +EXPORT_SYMBOL(_ZN14IPAddrRewriter4pushEiP6Packet);
99610 +extern char _ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE[];
99611 +EXPORT_SYMBOL(_ZN14IPAddrRewriter7cleanupEN7Element12CleanupStageE);
99612 +extern char _ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler[];
99613 +EXPORT_SYMBOL(_ZN14IPAddrRewriter9configureER6VectorI6StringEP12ErrorHandler);
99614 +extern char _ZN14IPAddrRewriter9run_timerEP5Timer[];
99615 +EXPORT_SYMBOL(_ZN14IPAddrRewriter9run_timerEP5Timer);
99616 +extern char _ZN14IPAddrRewriterC1Ev[];
99617 +EXPORT_SYMBOL(_ZN14IPAddrRewriterC1Ev);
99618 +extern char _ZN14IPAddrRewriterC2Ev[];
99619 +EXPORT_SYMBOL(_ZN14IPAddrRewriterC2Ev);
99620 +extern char _ZN14IPAddrRewriterD0Ev[];
99621 +EXPORT_SYMBOL(_ZN14IPAddrRewriterD0Ev);
99622 +extern char _ZN14IPAddrRewriterD1Ev[];
99623 +EXPORT_SYMBOL(_ZN14IPAddrRewriterD1Ev);
99624 +extern char _ZN14IPAddrRewriterD2Ev[];
99625 +EXPORT_SYMBOL(_ZN14IPAddrRewriterD2Ev);
99626 +extern char _ZNK14IPAddrRewriter10class_nameEv[];
99627 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter10class_nameEv);
99628 +extern char _ZNK14IPAddrRewriter10port_countEv[];
99629 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter10port_countEv);
99630 +extern char _ZNK14IPAddrRewriter10processingEv[];
99631 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter10processingEv);
99632 +extern char _ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID[];
99633 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter11get_mappingEiRK8IPFlowID);
99634 +extern char _ZNK14IPAddrRewriter13IPAddrMapping7reverseEv[];
99635 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter13IPAddrMapping7reverseEv);
99636 +extern char _ZNK14IPAddrRewriter13IPAddrMapping7unparseEv[];
99637 +EXPORT_SYMBOL(_ZNK14IPAddrRewriter13IPAddrMapping7unparseEv);
99638 +extern char _ZTV14IPAddrRewriter[];
99639 +EXPORT_SYMBOL(_ZTV14IPAddrRewriter);
99640 +extern char _ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler[];
99641 +EXPORT_SYMBOL(_ZN12IPClassifier9configureER6VectorI6StringEP12ErrorHandler);
99642 +extern char _ZN12IPClassifierC1Ev[];
99643 +EXPORT_SYMBOL(_ZN12IPClassifierC1Ev);
99644 +extern char _ZN12IPClassifierC2Ev[];
99645 +EXPORT_SYMBOL(_ZN12IPClassifierC2Ev);
99646 +extern char _ZN12IPClassifierD0Ev[];
99647 +EXPORT_SYMBOL(_ZN12IPClassifierD0Ev);
99648 +extern char _ZN12IPClassifierD1Ev[];
99649 +EXPORT_SYMBOL(_ZN12IPClassifierD1Ev);
99650 +extern char _ZN12IPClassifierD2Ev[];
99651 +EXPORT_SYMBOL(_ZN12IPClassifierD2Ev);
99652 +extern char _ZNK12IPClassifier10class_nameEv[];
99653 +EXPORT_SYMBOL(_ZNK12IPClassifier10class_nameEv);
99654 +extern char _ZNK12IPClassifier10processingEv[];
99655 +EXPORT_SYMBOL(_ZNK12IPClassifier10processingEv);
99656 +extern char _ZNK8IPFilter10port_countEv[];
99657 +EXPORT_SYMBOL(_ZNK8IPFilter10port_countEv);
99658 +extern char _ZNK8IPFilter5flagsEv[];
99659 +EXPORT_SYMBOL(_ZNK8IPFilter5flagsEv);
99660 +extern char _ZTV12IPClassifier[];
99661 +EXPORT_SYMBOL(_ZTV12IPClassifier);
99662 +extern char _ZN7IPEncap10initializeEP12ErrorHandler[];
99663 +EXPORT_SYMBOL(_ZN7IPEncap10initializeEP12ErrorHandler);
99664 +extern char _ZN7IPEncap12add_handlersEv[];
99665 +EXPORT_SYMBOL(_ZN7IPEncap12add_handlersEv);
99666 +extern char _ZN7IPEncap12read_handlerEP7ElementPv[];
99667 +EXPORT_SYMBOL(_ZN7IPEncap12read_handlerEP7ElementPv);
99668 +extern char _ZN7IPEncap13simple_actionEP6Packet[];
99669 +EXPORT_SYMBOL(_ZN7IPEncap13simple_actionEP6Packet);
99670 +extern char _ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler[];
99671 +EXPORT_SYMBOL(_ZN7IPEncap9configureER6VectorI6StringEP12ErrorHandler);
99672 +extern char _ZN7IPEncapC1Ev[];
99673 +EXPORT_SYMBOL(_ZN7IPEncapC1Ev);
99674 +extern char _ZN7IPEncapC2Ev[];
99675 +EXPORT_SYMBOL(_ZN7IPEncapC2Ev);
99676 +extern char _ZN7IPEncapD0Ev[];
99677 +EXPORT_SYMBOL(_ZN7IPEncapD0Ev);
99678 +extern char _ZN7IPEncapD1Ev[];
99679 +EXPORT_SYMBOL(_ZN7IPEncapD1Ev);
99680 +extern char _ZN7IPEncapD2Ev[];
99681 +EXPORT_SYMBOL(_ZN7IPEncapD2Ev);
99682 +extern char _ZNK7IPEncap10class_nameEv[];
99683 +EXPORT_SYMBOL(_ZNK7IPEncap10class_nameEv);
99684 +extern char _ZNK7IPEncap10port_countEv[];
99685 +EXPORT_SYMBOL(_ZNK7IPEncap10port_countEv);
99686 +extern char _ZNK7IPEncap10processingEv[];
99687 +EXPORT_SYMBOL(_ZNK7IPEncap10processingEv);
99688 +extern char _ZNK7IPEncap20can_live_reconfigureEv[];
99689 +EXPORT_SYMBOL(_ZNK7IPEncap20can_live_reconfigureEv);
99690 +extern char _ZTV7IPEncap[];
99691 +EXPORT_SYMBOL(_ZTV7IPEncap);
99692 +extern char _Z8cp_scanfPKcS0_S0_z[];
99693 +EXPORT_SYMBOL(_Z8cp_scanfPKcS0_S0_z);
99694 +extern char _ZN11IPFieldInfo14static_cleanupEv[];
99695 +EXPORT_SYMBOL(_ZN11IPFieldInfo14static_cleanupEv);
99696 +extern char _ZN11IPFieldInfo17static_initializeEv[];
99697 +EXPORT_SYMBOL(_ZN11IPFieldInfo17static_initializeEv);
99698 +extern char _ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element[];
99699 +EXPORT_SYMBOL(_ZN7IPField5parseEPKcS1_iPS_P12ErrorHandlerP7Element);
99700 +extern char _ZN7IPField7unparseEP7Elementb[];
99701 +EXPORT_SYMBOL(_ZN7IPField7unparseEP7Elementb);
99702 +extern char _ZN7IPFieldC1Eiii[];
99703 +EXPORT_SYMBOL(_ZN7IPFieldC1Eiii);
99704 +extern char _ZN7IPFieldC2Eiii[];
99705 +EXPORT_SYMBOL(_ZN7IPFieldC2Eiii);
99706 +extern char _ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[];
99707 +EXPORT_SYMBOL(_ZN8IPFilter10parse_exprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler);
99708 +extern char _ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[];
99709 +EXPORT_SYMBOL(_ZN8IPFilter10parse_termERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler);
99710 +extern char _ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler[];
99711 +EXPORT_SYMBOL(_ZN8IPFilter12parse_factorERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEbP12ErrorHandler);
99712 +extern char _ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler[];
99713 +EXPORT_SYMBOL(_ZN8IPFilter12parse_orexprERK6VectorI6StringEiRS0_IiERNS_9PrimitiveEP12ErrorHandler);
99714 +extern char _ZN8IPFilter14static_cleanupEv[];
99715 +EXPORT_SYMBOL(_ZN8IPFilter14static_cleanupEv);
99716 +extern char _ZN8IPFilter17static_initializeEv[];
99717 +EXPORT_SYMBOL(_ZN8IPFilter17static_initializeEv);
99718 +extern char _ZN8IPFilter19length_checked_pushEP6Packet[];
99719 +EXPORT_SYMBOL(_ZN8IPFilter19length_checked_pushEP6Packet);
99720 +extern char _ZN8IPFilter4pushEiP6Packet[];
99721 +EXPORT_SYMBOL(_ZN8IPFilter4pushEiP6Packet);
99722 +extern char _ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler[];
99723 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive10set_srcdstEiP12ErrorHandler);
99724 +extern char _ZN8IPFilter9Primitive12unparse_typeEii[];
99725 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive12unparse_typeEii);
99726 +extern char _ZN8IPFilter9Primitive13simple_negateEv[];
99727 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive13simple_negateEv);
99728 +extern char _ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler[];
99729 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive16set_transp_protoEiP12ErrorHandler);
99730 +extern char _ZN8IPFilter9Primitive20unparse_transp_protoEi[];
99731 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive20unparse_transp_protoEi);
99732 +extern char _ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler[];
99733 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive5checkERKS0_jP12ErrorHandler);
99734 +extern char _ZN8IPFilter9Primitive5clearEv[];
99735 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive5clearEv);
99736 +extern char _ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler[];
99737 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive8set_maskEjijP12ErrorHandler);
99738 +extern char _ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler[];
99739 +EXPORT_SYMBOL(_ZN8IPFilter9Primitive8set_typeEiP12ErrorHandler);
99740 +extern char _ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler[];
99741 +EXPORT_SYMBOL(_ZN8IPFilter9configureER6VectorI6StringEP12ErrorHandler);
99742 +extern char _ZN8IPFilterC1Ev[];
99743 +EXPORT_SYMBOL(_ZN8IPFilterC1Ev);
99744 +extern char _ZN8IPFilterC2Ev[];
99745 +EXPORT_SYMBOL(_ZN8IPFilterC2Ev);
99746 +extern char _ZN8IPFilterD0Ev[];
99747 +EXPORT_SYMBOL(_ZN8IPFilterD0Ev);
99748 +extern char _ZN8IPFilterD1Ev[];
99749 +EXPORT_SYMBOL(_ZN8IPFilterD1Ev);
99750 +extern char _ZN8IPFilterD2Ev[];
99751 +EXPORT_SYMBOL(_ZN8IPFilterD2Ev);
99752 +extern char _ZNK11StringAccum8capacityEv[];
99753 +EXPORT_SYMBOL(_ZNK11StringAccum8capacityEv);
99754 +extern char _ZNK8IPFilter10class_nameEv[];
99755 +EXPORT_SYMBOL(_ZNK8IPFilter10class_nameEv);
99756 +extern char _ZNK8IPFilter10processingEv[];
99757 +EXPORT_SYMBOL(_ZNK8IPFilter10processingEv);
99758 +extern char _ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler[];
99759 +EXPORT_SYMBOL(_ZNK8IPFilter6lookupE6StringiiRjP12ErrorHandler);
99760 +extern char _ZNK8IPFilter9Primitive10unparse_opEv[];
99761 +EXPORT_SYMBOL(_ZNK8IPFilter9Primitive10unparse_opEv);
99762 +extern char _ZNK8IPFilter9Primitive12unparse_typeEv[];
99763 +EXPORT_SYMBOL(_ZNK8IPFilter9Primitive12unparse_typeEv);
99764 +extern char _ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb[];
99765 +EXPORT_SYMBOL(_ZNK8IPFilter9Primitive20add_comparison_exprsEP10ClassifierR6VectorIiEiibb);
99766 +extern char _ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE[];
99767 +EXPORT_SYMBOL(_ZNK8IPFilter9Primitive9add_exprsEP10ClassifierR6VectorIiE);
99768 +extern char _ZTV8IPFilter[];
99769 +EXPORT_SYMBOL(_ZTV8IPFilter);
99770 +extern char _ZN8IPFlowIDC1EPK6Packet[];
99771 +EXPORT_SYMBOL(_ZN8IPFlowIDC1EPK6Packet);
99772 +extern char _ZN8IPFlowIDC1EPK8click_ip[];
99773 +EXPORT_SYMBOL(_ZN8IPFlowIDC1EPK8click_ip);
99774 +extern char _ZN8IPFlowIDC2EPK6Packet[];
99775 +EXPORT_SYMBOL(_ZN8IPFlowIDC2EPK6Packet);
99776 +extern char _ZN8IPFlowIDC2EPK8click_ip[];
99777 +EXPORT_SYMBOL(_ZN8IPFlowIDC2EPK8click_ip);
99778 +extern char _ZNK8IPFlowID7unparseEv[];
99779 +EXPORT_SYMBOL(_ZNK8IPFlowID7unparseEv);
99780 +extern char _ZlsR11StringAccumRK8IPFlowID[];
99781 +EXPORT_SYMBOL(_ZlsR11StringAccumRK8IPFlowID);
99782 +extern char _ZN12IPFragmenter12add_handlersEv[];
99783 +EXPORT_SYMBOL(_ZN12IPFragmenter12add_handlersEv);
99784 +extern char _ZN12IPFragmenter4pushEiP6Packet[];
99785 +EXPORT_SYMBOL(_ZN12IPFragmenter4pushEiP6Packet);
99786 +extern char _ZN12IPFragmenter7optcopyEPK8click_ipPS0_[];
99787 +EXPORT_SYMBOL(_ZN12IPFragmenter7optcopyEPK8click_ipPS0_);
99788 +extern char _ZN12IPFragmenter8fragmentEP6Packet[];
99789 +EXPORT_SYMBOL(_ZN12IPFragmenter8fragmentEP6Packet);
99790 +extern char _ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler[];
99791 +EXPORT_SYMBOL(_ZN12IPFragmenter9configureER6VectorI6StringEP12ErrorHandler);
99792 +extern char _ZN12IPFragmenterC1Ev[];
99793 +EXPORT_SYMBOL(_ZN12IPFragmenterC1Ev);
99794 +extern char _ZN12IPFragmenterC2Ev[];
99795 +EXPORT_SYMBOL(_ZN12IPFragmenterC2Ev);
99796 +extern char _ZN12IPFragmenterD0Ev[];
99797 +EXPORT_SYMBOL(_ZN12IPFragmenterD0Ev);
99798 +extern char _ZN12IPFragmenterD1Ev[];
99799 +EXPORT_SYMBOL(_ZN12IPFragmenterD1Ev);
99800 +extern char _ZN12IPFragmenterD2Ev[];
99801 +EXPORT_SYMBOL(_ZN12IPFragmenterD2Ev);
99802 +extern char _ZNK12IPFragmenter10class_nameEv[];
99803 +EXPORT_SYMBOL(_ZNK12IPFragmenter10class_nameEv);
99804 +extern char _ZNK12IPFragmenter10port_countEv[];
99805 +EXPORT_SYMBOL(_ZNK12IPFragmenter10port_countEv);
99806 +extern char _ZNK12IPFragmenter10processingEv[];
99807 +EXPORT_SYMBOL(_ZNK12IPFragmenter10processingEv);
99808 +extern char _ZTV12IPFragmenter[];
99809 +EXPORT_SYMBOL(_ZTV12IPFragmenter);
99810 +extern char _ZN11IPGWOptions12add_handlersEv[];
99811 +EXPORT_SYMBOL(_ZN11IPGWOptions12add_handlersEv);
99812 +extern char _ZN11IPGWOptions13simple_actionEP6Packet[];
99813 +EXPORT_SYMBOL(_ZN11IPGWOptions13simple_actionEP6Packet);
99814 +extern char _ZN11IPGWOptions14handle_optionsEP6Packet[];
99815 +EXPORT_SYMBOL(_ZN11IPGWOptions14handle_optionsEP6Packet);
99816 +extern char _ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler[];
99817 +EXPORT_SYMBOL(_ZN11IPGWOptions9configureER6VectorI6StringEP12ErrorHandler);
99818 +extern char _ZN11IPGWOptionsC1Ev[];
99819 +EXPORT_SYMBOL(_ZN11IPGWOptionsC1Ev);
99820 +extern char _ZN11IPGWOptionsC2Ev[];
99821 +EXPORT_SYMBOL(_ZN11IPGWOptionsC2Ev);
99822 +extern char _ZN11IPGWOptionsD0Ev[];
99823 +EXPORT_SYMBOL(_ZN11IPGWOptionsD0Ev);
99824 +extern char _ZN11IPGWOptionsD1Ev[];
99825 +EXPORT_SYMBOL(_ZN11IPGWOptionsD1Ev);
99826 +extern char _ZN11IPGWOptionsD2Ev[];
99827 +EXPORT_SYMBOL(_ZN11IPGWOptionsD2Ev);
99828 +extern char _ZNK11IPGWOptions10class_nameEv[];
99829 +EXPORT_SYMBOL(_ZNK11IPGWOptions10class_nameEv);
99830 +extern char _ZNK11IPGWOptions10port_countEv[];
99831 +EXPORT_SYMBOL(_ZNK11IPGWOptions10port_countEv);
99832 +extern char _ZNK11IPGWOptions10processingEv[];
99833 +EXPORT_SYMBOL(_ZNK11IPGWOptions10processingEv);
99834 +extern char _ZTV11IPGWOptions[];
99835 +EXPORT_SYMBOL(_ZTV11IPGWOptions);
99836 +extern char _ZN12IPInputCombo12add_handlersEv[];
99837 +EXPORT_SYMBOL(_ZN12IPInputCombo12add_handlersEv);
99838 +extern char _ZN12IPInputCombo4pullEi[];
99839 +EXPORT_SYMBOL(_ZN12IPInputCombo4pullEi);
99840 +extern char _ZN12IPInputCombo4pushEiP6Packet[];
99841 +EXPORT_SYMBOL(_ZN12IPInputCombo4pushEiP6Packet);
99842 +extern char _ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler[];
99843 +EXPORT_SYMBOL(_ZN12IPInputCombo9configureER6VectorI6StringEP12ErrorHandler);
99844 +extern char _ZN12IPInputComboC1Ev[];
99845 +EXPORT_SYMBOL(_ZN12IPInputComboC1Ev);
99846 +extern char _ZN12IPInputComboC2Ev[];
99847 +EXPORT_SYMBOL(_ZN12IPInputComboC2Ev);
99848 +extern char _ZN12IPInputComboD0Ev[];
99849 +EXPORT_SYMBOL(_ZN12IPInputComboD0Ev);
99850 +extern char _ZN12IPInputComboD1Ev[];
99851 +EXPORT_SYMBOL(_ZN12IPInputComboD1Ev);
99852 +extern char _ZN12IPInputComboD2Ev[];
99853 +EXPORT_SYMBOL(_ZN12IPInputComboD2Ev);
99854 +extern char _ZNK12IPInputCombo10class_nameEv[];
99855 +EXPORT_SYMBOL(_ZNK12IPInputCombo10class_nameEv);
99856 +extern char _ZNK12IPInputCombo10port_countEv[];
99857 +EXPORT_SYMBOL(_ZNK12IPInputCombo10port_countEv);
99858 +extern char _ZNK12IPInputCombo10processingEv[];
99859 +EXPORT_SYMBOL(_ZNK12IPInputCombo10processingEv);
99860 +extern char _ZNK12IPInputCombo5flagsEv[];
99861 +EXPORT_SYMBOL(_ZNK12IPInputCombo5flagsEv);
99862 +extern char _ZTV12IPInputCombo[];
99863 +EXPORT_SYMBOL(_ZTV12IPInputCombo);
99864 +extern char _ZN8IPMirror13simple_actionEP6Packet[];
99865 +EXPORT_SYMBOL(_ZN8IPMirror13simple_actionEP6Packet);
99866 +extern char _ZN8IPMirrorC1Ev[];
99867 +EXPORT_SYMBOL(_ZN8IPMirrorC1Ev);
99868 +extern char _ZN8IPMirrorC2Ev[];
99869 +EXPORT_SYMBOL(_ZN8IPMirrorC2Ev);
99870 +extern char _ZN8IPMirrorD0Ev[];
99871 +EXPORT_SYMBOL(_ZN8IPMirrorD0Ev);
99872 +extern char _ZN8IPMirrorD1Ev[];
99873 +EXPORT_SYMBOL(_ZN8IPMirrorD1Ev);
99874 +extern char _ZN8IPMirrorD2Ev[];
99875 +EXPORT_SYMBOL(_ZN8IPMirrorD2Ev);
99876 +extern char _ZNK8IPMirror10class_nameEv[];
99877 +EXPORT_SYMBOL(_ZNK8IPMirror10class_nameEv);
99878 +extern char _ZNK8IPMirror10port_countEv[];
99879 +EXPORT_SYMBOL(_ZNK8IPMirror10port_countEv);
99880 +extern char _ZNK8IPMirror10processingEv[];
99881 +EXPORT_SYMBOL(_ZNK8IPMirror10processingEv);
99882 +extern char _ZTV8IPMirror[];
99883 +EXPORT_SYMBOL(_ZTV8IPMirror);
99884 +extern char _ZN10IPNameInfo14static_cleanupEv[];
99885 +EXPORT_SYMBOL(_ZN10IPNameInfo14static_cleanupEv);
99886 +extern char _ZN10IPNameInfo17static_initializeEv[];
99887 +EXPORT_SYMBOL(_ZN10IPNameInfo17static_initializeEv);
99888 +extern char _ZN13IPOutputCombo4pushEiP6Packet[];
99889 +EXPORT_SYMBOL(_ZN13IPOutputCombo4pushEiP6Packet);
99890 +extern char _ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler[];
99891 +EXPORT_SYMBOL(_ZN13IPOutputCombo9configureER6VectorI6StringEP12ErrorHandler);
99892 +extern char _ZN13IPOutputComboC1Ev[];
99893 +EXPORT_SYMBOL(_ZN13IPOutputComboC1Ev);
99894 +extern char _ZN13IPOutputComboC2Ev[];
99895 +EXPORT_SYMBOL(_ZN13IPOutputComboC2Ev);
99896 +extern char _ZN13IPOutputComboD0Ev[];
99897 +EXPORT_SYMBOL(_ZN13IPOutputComboD0Ev);
99898 +extern char _ZN13IPOutputComboD1Ev[];
99899 +EXPORT_SYMBOL(_ZN13IPOutputComboD1Ev);
99900 +extern char _ZN13IPOutputComboD2Ev[];
99901 +EXPORT_SYMBOL(_ZN13IPOutputComboD2Ev);
99902 +extern char _ZNK13IPOutputCombo10class_nameEv[];
99903 +EXPORT_SYMBOL(_ZNK13IPOutputCombo10class_nameEv);
99904 +extern char _ZNK13IPOutputCombo10port_countEv[];
99905 +EXPORT_SYMBOL(_ZNK13IPOutputCombo10port_countEv);
99906 +extern char _ZNK13IPOutputCombo10processingEv[];
99907 +EXPORT_SYMBOL(_ZNK13IPOutputCombo10processingEv);
99908 +extern char _ZTV13IPOutputCombo[];
99909 +EXPORT_SYMBOL(_ZTV13IPOutputCombo);
99910 +extern char _ZN7IPPrint10initializeEP12ErrorHandler[];
99911 +EXPORT_SYMBOL(_ZN7IPPrint10initializeEP12ErrorHandler);
99912 +extern char _ZN7IPPrint13simple_actionEP6Packet[];
99913 +EXPORT_SYMBOL(_ZN7IPPrint13simple_actionEP6Packet);
99914 +extern char _ZN7IPPrint7cleanupEN7Element12CleanupStageE[];
99915 +EXPORT_SYMBOL(_ZN7IPPrint7cleanupEN7Element12CleanupStageE);
99916 +extern char _ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler[];
99917 +EXPORT_SYMBOL(_ZN7IPPrint9configureER6VectorI6StringEP12ErrorHandler);
99918 +extern char _ZN7IPPrintC1Ev[];
99919 +EXPORT_SYMBOL(_ZN7IPPrintC1Ev);
99920 +extern char _ZN7IPPrintC2Ev[];
99921 +EXPORT_SYMBOL(_ZN7IPPrintC2Ev);
99922 +extern char _ZN7IPPrintD0Ev[];
99923 +EXPORT_SYMBOL(_ZN7IPPrintD0Ev);
99924 +extern char _ZN7IPPrintD1Ev[];
99925 +EXPORT_SYMBOL(_ZN7IPPrintD1Ev);
99926 +extern char _ZN7IPPrintD2Ev[];
99927 +EXPORT_SYMBOL(_ZN7IPPrintD2Ev);
99928 +extern char _ZNK6Packet11user_anno_cEi[];
99929 +EXPORT_SYMBOL(_ZNK6Packet11user_anno_cEi);
99930 +extern char _ZNK6Packet11user_anno_uEi[];
99931 +EXPORT_SYMBOL(_ZNK6Packet11user_anno_uEi);
99932 +extern char _ZNK7IPPrint10class_nameEv[];
99933 +EXPORT_SYMBOL(_ZNK7IPPrint10class_nameEv);
99934 +extern char _ZNK7IPPrint10port_countEv[];
99935 +EXPORT_SYMBOL(_ZNK7IPPrint10port_countEv);
99936 +extern char _ZNK7IPPrint10processingEv[];
99937 +EXPORT_SYMBOL(_ZNK7IPPrint10processingEv);
99938 +extern char _ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti[];
99939 +EXPORT_SYMBOL(_ZNK7IPPrint8tcp_lineER11StringAccumPK6Packeti);
99940 +extern char _ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti[];
99941 +EXPORT_SYMBOL(_ZNK7IPPrint8udp_lineER11StringAccumPK6Packeti);
99942 +extern char _ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti[];
99943 +EXPORT_SYMBOL(_ZNK7IPPrint9icmp_lineER11StringAccumPK6Packeti);
99944 +extern char _ZTV7IPPrint[];
99945 +EXPORT_SYMBOL(_ZTV7IPPrint);
99946 +extern char _ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket[];
99947 +EXPORT_SYMBOL(_ZN13IPReassembler10find_queueEP6PacketPPP14WritablePacket);
99948 +extern char _ZN13IPReassembler10initializeEP12ErrorHandler[];
99949 +EXPORT_SYMBOL(_ZN13IPReassembler10initializeEP12ErrorHandler);
99950 +extern char _ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket[];
99951 +EXPORT_SYMBOL(_ZN13IPReassembler10make_queueEP6PacketPP14WritablePacket);
99952 +extern char _ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE[];
99953 +EXPORT_SYMBOL(_ZN13IPReassembler10next_chunkEP14WritablePacketPNS_9ChunkLinkE);
99954 +extern char _ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz[];
99955 +EXPORT_SYMBOL(_ZN13IPReassembler11check_errorEP12ErrorHandleriPK6PacketPKcz);
99956 +extern char _ZN13IPReassembler13reap_overfullEi[];
99957 +EXPORT_SYMBOL(_ZN13IPReassembler13reap_overfullEi);
99958 +extern char _ZN13IPReassembler13simple_actionEP6Packet[];
99959 +EXPORT_SYMBOL(_ZN13IPReassembler13simple_actionEP6Packet);
99960 +extern char _ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet[];
99961 +EXPORT_SYMBOL(_ZN13IPReassembler17emit_whole_packetEP14WritablePacketPS1_P6Packet);
99962 +extern char _ZN13IPReassembler4reapEi[];
99963 +EXPORT_SYMBOL(_ZN13IPReassembler4reapEi);
99964 +extern char _ZN13IPReassembler5checkEP12ErrorHandler[];
99965 +EXPORT_SYMBOL(_ZN13IPReassembler5checkEP12ErrorHandler);
99966 +extern char _ZN13IPReassembler7cleanupEN7Element12CleanupStageE[];
99967 +EXPORT_SYMBOL(_ZN13IPReassembler7cleanupEN7Element12CleanupStageE);
99968 +extern char _ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler[];
99969 +EXPORT_SYMBOL(_ZN13IPReassembler9configureER6VectorI6StringEP12ErrorHandler);
99970 +extern char _ZN13IPReassemblerC1Ev[];
99971 +EXPORT_SYMBOL(_ZN13IPReassemblerC1Ev);
99972 +extern char _ZN13IPReassemblerC2Ev[];
99973 +EXPORT_SYMBOL(_ZN13IPReassemblerC2Ev);
99974 +extern char _ZN13IPReassemblerD0Ev[];
99975 +EXPORT_SYMBOL(_ZN13IPReassemblerD0Ev);
99976 +extern char _ZN13IPReassemblerD1Ev[];
99977 +EXPORT_SYMBOL(_ZN13IPReassemblerD1Ev);
99978 +extern char _ZN13IPReassemblerD2Ev[];
99979 +EXPORT_SYMBOL(_ZN13IPReassemblerD2Ev);
99980 +extern char _ZNK13IPReassembler10class_nameEv[];
99981 +EXPORT_SYMBOL(_ZNK13IPReassembler10class_nameEv);
99982 +extern char _ZNK13IPReassembler10port_countEv[];
99983 +EXPORT_SYMBOL(_ZNK13IPReassembler10port_countEv);
99984 +extern char _ZNK13IPReassembler10processingEv[];
99985 +EXPORT_SYMBOL(_ZNK13IPReassembler10processingEv);
99986 +extern char _ZTV13IPReassembler[];
99987 +EXPORT_SYMBOL(_ZTV13IPReassembler);
99988 +extern char _ZN10IPRewriter10initializeEP12ErrorHandler[];
99989 +EXPORT_SYMBOL(_ZN10IPRewriter10initializeEP12ErrorHandler);
99990 +extern char _ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler[];
99991 +EXPORT_SYMBOL(_ZN10IPRewriter10take_stateEP7ElementP12ErrorHandler);
99992 +extern char _ZN10IPRewriter11tcp_gc_hookEP5TimerPv[];
99993 +EXPORT_SYMBOL(_ZN10IPRewriter11tcp_gc_hookEP5TimerPv);
99994 +extern char _ZN10IPRewriter11udp_gc_hookEP5TimerPv[];
99995 +EXPORT_SYMBOL(_ZN10IPRewriter11udp_gc_hookEP5TimerPv);
99996 +extern char _ZN10IPRewriter12add_handlersEv[];
99997 +EXPORT_SYMBOL(_ZN10IPRewriter12add_handlersEv);
99998 +extern char _ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[];
99999 +EXPORT_SYMBOL(_ZN10IPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii);
100000 +extern char _ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[];
100001 +EXPORT_SYMBOL(_ZN10IPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler);
100002 +extern char _ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv[];
100003 +EXPORT_SYMBOL(_ZN10IPRewriter16tcp_done_gc_hookEP5TimerPv);
100004 +extern char _ZN10IPRewriter21dump_mappings_handlerEP7ElementPv[];
100005 +EXPORT_SYMBOL(_ZN10IPRewriter21dump_mappings_handlerEP7ElementPv);
100006 +extern char _ZN10IPRewriter21dump_patterns_handlerEP7ElementPv[];
100007 +EXPORT_SYMBOL(_ZN10IPRewriter21dump_patterns_handlerEP7ElementPv);
100008 +extern char _ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv[];
100009 +EXPORT_SYMBOL(_ZN10IPRewriter22dump_nmappings_handlerEP7ElementPv);
100010 +extern char _ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv[];
100011 +EXPORT_SYMBOL(_ZN10IPRewriter30dump_tcp_done_mappings_handlerEP7ElementPv);
100012 +extern char _ZN10IPRewriter4castEPKc[];
100013 +EXPORT_SYMBOL(_ZN10IPRewriter4castEPKc);
100014 +extern char _ZN10IPRewriter4pushEiP6Packet[];
100015 +EXPORT_SYMBOL(_ZN10IPRewriter4pushEiP6Packet);
100016 +extern char _ZN10IPRewriter5llrpcEjPv[];
100017 +EXPORT_SYMBOL(_ZN10IPRewriter5llrpcEjPv);
100018 +extern char _ZN10IPRewriter7cleanupEN7Element12CleanupStageE[];
100019 +EXPORT_SYMBOL(_ZN10IPRewriter7cleanupEN7Element12CleanupStageE);
100020 +extern char _ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler[];
100021 +EXPORT_SYMBOL(_ZN10IPRewriter9configureER6VectorI6StringEP12ErrorHandler);
100022 +extern char _ZN10IPRewriterC1Ev[];
100023 +EXPORT_SYMBOL(_ZN10IPRewriterC1Ev);
100024 +extern char _ZN10IPRewriterC2Ev[];
100025 +EXPORT_SYMBOL(_ZN10IPRewriterC2Ev);
100026 +extern char _ZN10IPRewriterD0Ev[];
100027 +EXPORT_SYMBOL(_ZN10IPRewriterD0Ev);
100028 +extern char _ZN10IPRewriterD1Ev[];
100029 +EXPORT_SYMBOL(_ZN10IPRewriterD1Ev);
100030 +extern char _ZN10IPRewriterD2Ev[];
100031 +EXPORT_SYMBOL(_ZN10IPRewriterD2Ev);
100032 +extern char _ZN7HashMapI8IPFlowIDPvE4swapERS2_[];
100033 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDPvE4swapERS2_);
100034 +extern char _ZNK10IPRewriter10class_nameEv[];
100035 +EXPORT_SYMBOL(_ZNK10IPRewriter10class_nameEv);
100036 +extern char _ZNK10IPRewriter10port_countEv[];
100037 +EXPORT_SYMBOL(_ZNK10IPRewriter10port_countEv);
100038 +extern char _ZNK10IPRewriter10processingEv[];
100039 +EXPORT_SYMBOL(_ZNK10IPRewriter10processingEv);
100040 +extern char _ZNK10IPRewriter11get_mappingEiRK8IPFlowID[];
100041 +EXPORT_SYMBOL(_ZNK10IPRewriter11get_mappingEiRK8IPFlowID);
100042 +extern char _ZTV10IPRewriter[];
100043 +EXPORT_SYMBOL(_ZTV10IPRewriter);
100044 +extern char _Z11cp_ip_route6StringP7IPRoutebP7Element[];
100045 +EXPORT_SYMBOL(_Z11cp_ip_route6StringP7IPRoutebP7Element);
100046 +extern char _ZN12IPRouteTable11dump_routesEv[];
100047 +EXPORT_SYMBOL(_ZN12IPRouteTable11dump_routesEv);
100048 +extern char _ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler[];
100049 +EXPORT_SYMBOL(_ZN12IPRouteTable11run_commandEiRK6StringP6VectorI7IPRouteEP12ErrorHandler);
100050 +extern char _ZN12IPRouteTable12add_handlersEv[];
100051 +EXPORT_SYMBOL(_ZN12IPRouteTable12add_handlersEv);
100052 +extern char _ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler[];
100053 +EXPORT_SYMBOL(_ZN12IPRouteTable12ctrl_handlerERK6StringP7ElementPvP12ErrorHandler);
100054 +extern char _ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler[];
100055 +EXPORT_SYMBOL(_ZN12IPRouteTable12remove_routeERK7IPRoutePS0_P12ErrorHandler);
100056 +extern char _ZN12IPRouteTable13table_handlerEP7ElementPv[];
100057 +EXPORT_SYMBOL(_ZN12IPRouteTable13table_handlerEP7ElementPv);
100058 +extern char _ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[];
100059 +EXPORT_SYMBOL(_ZN12IPRouteTable14lookup_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler);
100060 +extern char _ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler[];
100061 +EXPORT_SYMBOL(_ZN12IPRouteTable17add_route_handlerERK6StringP7ElementPvP12ErrorHandler);
100062 +extern char _ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler[];
100063 +EXPORT_SYMBOL(_ZN12IPRouteTable20remove_route_handlerERK6StringP7ElementPvP12ErrorHandler);
100064 +extern char _ZN12IPRouteTable4castEPKc[];
100065 +EXPORT_SYMBOL(_ZN12IPRouteTable4castEPKc);
100066 +extern char _ZN12IPRouteTable4pushEiP6Packet[];
100067 +EXPORT_SYMBOL(_ZN12IPRouteTable4pushEiP6Packet);
100068 +extern char _ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler[];
100069 +EXPORT_SYMBOL(_ZN12IPRouteTable9add_routeERK7IPRoutebPS0_P12ErrorHandler);
100070 +extern char _ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler[];
100071 +EXPORT_SYMBOL(_ZN12IPRouteTable9configureER6VectorI6StringEP12ErrorHandler);
100072 +extern char _ZN12IPRouteTableD0Ev[];
100073 +EXPORT_SYMBOL(_ZN12IPRouteTableD0Ev);
100074 +extern char _ZN12IPRouteTableD1Ev[];
100075 +EXPORT_SYMBOL(_ZN12IPRouteTableD1Ev);
100076 +extern char _ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_[];
100077 +EXPORT_SYMBOL(_ZNK12IPRouteTable12lookup_routeE9IPAddressRS0_);
100078 +extern char _ZNK7IPRoute7unparseER11StringAccumb[];
100079 +EXPORT_SYMBOL(_ZNK7IPRoute7unparseER11StringAccumb);
100080 +extern char _ZNK7IPRoute7unparseEv[];
100081 +EXPORT_SYMBOL(_ZNK7IPRoute7unparseEv);
100082 +extern char _ZTV12IPRouteTable[];
100083 +EXPORT_SYMBOL(_ZTV12IPRouteTable);
100084 +extern char _ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler[];
100085 +EXPORT_SYMBOL(_ZN4IPRw14notify_patternEPNS_7PatternEP12ErrorHandler);
100086 +extern char _ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_[];
100087 +EXPORT_SYMBOL(_ZN4IPRw14take_state_mapER7HashMapI8IPFlowIDPNS_7MappingEEPS3_S6_RK6VectorIPNS_7PatternEESC_);
100088 +extern char _ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler[];
100089 +EXPORT_SYMBOL(_ZN4IPRw16parse_input_specERK6StringRNS_9InputSpecES0_P12ErrorHandler);
100090 +extern char _ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j[];
100091 +EXPORT_SYMBOL(_ZN4IPRw22clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j);
100092 +extern char _ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j[];
100093 +EXPORT_SYMBOL(_ZN4IPRw27incr_clean_map_free_trackedER7HashMapI8IPFlowIDPNS_7MappingEERS3_S6_j);
100094 +extern char _ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_[];
100095 +EXPORT_SYMBOL(_ZN4IPRw7Mapping10initializeEiRK8IPFlowIDS3_itPS0_);
100096 +extern char _ZN4IPRw7Mapping5applyEP14WritablePacket[];
100097 +EXPORT_SYMBOL(_ZN4IPRw7Mapping5applyEP14WritablePacket);
100098 +extern char _ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_[];
100099 +EXPORT_SYMBOL(_ZN4IPRw7Mapping9make_pairEiRK8IPFlowIDS3_iiPS0_S4_);
100100 +extern char _ZN4IPRw7MappingC1Eb[];
100101 +EXPORT_SYMBOL(_ZN4IPRw7MappingC1Eb);
100102 +extern char _ZN4IPRw7MappingC2Eb[];
100103 +EXPORT_SYMBOL(_ZN4IPRw7MappingC2Eb);
100104 +extern char _ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler[];
100105 +EXPORT_SYMBOL(_ZN4IPRw7Pattern10parse_naptER6VectorI6StringEPPS0_P7ElementP12ErrorHandler);
100106 +extern char _ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE[];
100107 +EXPORT_SYMBOL(_ZN4IPRw7Pattern14accept_mappingEPNS_7MappingE);
100108 +extern char _ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E[];
100109 +EXPORT_SYMBOL(_ZN4IPRw7Pattern14create_mappingEiRK8IPFlowIDiiPNS_7MappingES5_RK7HashMapIS1_S5_E);
100110 +extern char _ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler[];
100111 +EXPORT_SYMBOL(_ZN4IPRw7Pattern16parse_with_portsERK6StringPPS0_PiS6_P7ElementP12ErrorHandler);
100112 +extern char _ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler[];
100113 +EXPORT_SYMBOL(_ZN4IPRw7Pattern5parseERK6StringPPS0_P7ElementP12ErrorHandler);
100114 +extern char _ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler[];
100115 +EXPORT_SYMBOL(_ZN4IPRw7Pattern9parse_natER6VectorI6StringEPPS0_P7ElementP12ErrorHandler);
100116 +extern char _ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj[];
100117 +EXPORT_SYMBOL(_ZN4IPRw7PatternC1ERK9IPAddressiS3_ibbj);
100118 +extern char _ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj[];
100119 +EXPORT_SYMBOL(_ZN4IPRw7PatternC2ERK9IPAddressiS3_ibbj);
100120 +extern char _ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj[];
100121 +EXPORT_SYMBOL(_ZN4IPRw9clean_mapER7HashMapI8IPFlowIDPNS_7MappingEEj);
100122 +extern char _ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE[];
100123 +EXPORT_SYMBOL(_ZN4IPRw9clear_mapER7HashMapI8IPFlowIDPNS_7MappingEE);
100124 +extern char _ZN4IPRwC1Ev[];
100125 +EXPORT_SYMBOL(_ZN4IPRwC1Ev);
100126 +extern char _ZN4IPRwC2Ev[];
100127 +EXPORT_SYMBOL(_ZN4IPRwC2Ev);
100128 +extern char _ZN4IPRwD0Ev[];
100129 +EXPORT_SYMBOL(_ZN4IPRwD0Ev);
100130 +extern char _ZN4IPRwD1Ev[];
100131 +EXPORT_SYMBOL(_ZN4IPRwD1Ev);
100132 +extern char _ZN4IPRwD2Ev[];
100133 +EXPORT_SYMBOL(_ZN4IPRwD2Ev);
100134 +extern char _ZN6VectorI6StringE6resizeEiRKS0_[];
100135 +EXPORT_SYMBOL(_ZN6VectorI6StringE6resizeEiRKS0_);
100136 +extern char _ZN6VectorI6StringE7reserveEi[];
100137 +EXPORT_SYMBOL(_ZN6VectorI6StringE7reserveEi);
100138 +extern char _ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler[];
100139 +EXPORT_SYMBOL(_ZN8IPMapper15notify_rewriterEP4IPRwP12ErrorHandler);
100140 +extern char _ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[];
100141 +EXPORT_SYMBOL(_ZN8IPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet);
100142 +extern char _ZN8IPMapperD0Ev[];
100143 +EXPORT_SYMBOL(_ZN8IPMapperD0Ev);
100144 +extern char _ZN8IPMapperD1Ev[];
100145 +EXPORT_SYMBOL(_ZN8IPMapperD1Ev);
100146 +extern char _ZNK4IPRw7Mapping7unparseEv[];
100147 +EXPORT_SYMBOL(_ZNK4IPRw7Mapping7unparseEv);
100148 +extern char _ZNK4IPRw7Pattern15can_accept_fromERKS0_[];
100149 +EXPORT_SYMBOL(_ZNK4IPRw7Pattern15can_accept_fromERKS0_);
100150 +extern char _ZNK4IPRw7Pattern7unparseEv[];
100151 +EXPORT_SYMBOL(_ZNK4IPRw7Pattern7unparseEv);
100152 +extern char _ZTV4IPRw[];
100153 +EXPORT_SYMBOL(_ZTV4IPRw);
100154 +extern char _ZTV8IPMapper[];
100155 +EXPORT_SYMBOL(_ZTV8IPMapper);
100156 +extern char _ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler[];
100157 +EXPORT_SYMBOL(_ZN18IPRewriterPatterns4findEP7ElementRK6StringP12ErrorHandler);
100158 +extern char _ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE[];
100159 +EXPORT_SYMBOL(_ZN18IPRewriterPatterns7cleanupEN7Element12CleanupStageE);
100160 +extern char _ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler[];
100161 +EXPORT_SYMBOL(_ZN18IPRewriterPatterns9configureER6VectorI6StringEP12ErrorHandler);
100162 +extern char _ZN18IPRewriterPatternsC1Ev[];
100163 +EXPORT_SYMBOL(_ZN18IPRewriterPatternsC1Ev);
100164 +extern char _ZN18IPRewriterPatternsC2Ev[];
100165 +EXPORT_SYMBOL(_ZN18IPRewriterPatternsC2Ev);
100166 +extern char _ZN18IPRewriterPatternsD0Ev[];
100167 +EXPORT_SYMBOL(_ZN18IPRewriterPatternsD0Ev);
100168 +extern char _ZN18IPRewriterPatternsD1Ev[];
100169 +EXPORT_SYMBOL(_ZN18IPRewriterPatternsD1Ev);
100170 +extern char _ZN18IPRewriterPatternsD2Ev[];
100171 +EXPORT_SYMBOL(_ZN18IPRewriterPatternsD2Ev);
100172 +extern char _ZNK18IPRewriterPatterns10class_nameEv[];
100173 +EXPORT_SYMBOL(_ZNK18IPRewriterPatterns10class_nameEv);
100174 +extern char _ZNK18IPRewriterPatterns15configure_phaseEv[];
100175 +EXPORT_SYMBOL(_ZNK18IPRewriterPatterns15configure_phaseEv);
100176 +extern char _ZTV18IPRewriterPatterns[];
100177 +EXPORT_SYMBOL(_ZTV18IPRewriterPatterns);
100178 +extern char _ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_[];
100179 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE10push_frontERKS1_);
100180 +extern char _ZN6VectorIN7IPTable5EntryEE2atEi[];
100181 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE2atEi);
100182 +extern char _ZN6VectorIN7IPTable5EntryEE3endEv[];
100183 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE3endEv);
100184 +extern char _ZN6VectorIN7IPTable5EntryEE4at_uEi[];
100185 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4at_uEi);
100186 +extern char _ZN6VectorIN7IPTable5EntryEE4backEv[];
100187 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4backEv);
100188 +extern char _ZN6VectorIN7IPTable5EntryEE4swapERS2_[];
100189 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4swapERS2_);
100190 +extern char _ZN6VectorIN7IPTable5EntryEE4veltEPS1_i[];
100191 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE4veltEPS1_i);
100192 +extern char _ZN6VectorIN7IPTable5EntryEE5beginEv[];
100193 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5beginEv);
100194 +extern char _ZN6VectorIN7IPTable5EntryEE5clearEv[];
100195 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5clearEv);
100196 +extern char _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_[];
100197 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5eraseEPS1_);
100198 +extern char _ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_[];
100199 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5eraseEPS1_S3_);
100200 +extern char _ZN6VectorIN7IPTable5EntryEE5frontEv[];
100201 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE5frontEv);
100202 +extern char _ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_[];
100203 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6assignEiRKS1_);
100204 +extern char _ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_[];
100205 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6insertEPS1_RKS1_);
100206 +extern char _ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_[];
100207 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE6resizeEiRKS1_);
100208 +extern char _ZN6VectorIN7IPTable5EntryEE7reserveEi[];
100209 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE7reserveEi);
100210 +extern char _ZN6VectorIN7IPTable5EntryEE8pop_backEv[];
100211 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE8pop_backEv);
100212 +extern char _ZN6VectorIN7IPTable5EntryEE9pop_frontEv[];
100213 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE9pop_frontEv);
100214 +extern char _ZN6VectorIN7IPTable5EntryEE9push_backERKS1_[];
100215 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEE9push_backERKS1_);
100216 +extern char _ZN6VectorIN7IPTable5EntryEEC1ERKS2_[];
100217 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1ERKS2_);
100218 +extern char _ZN6VectorIN7IPTable5EntryEEC1EiRKS1_[];
100219 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1EiRKS1_);
100220 +extern char _ZN6VectorIN7IPTable5EntryEEC1Ev[];
100221 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC1Ev);
100222 +extern char _ZN6VectorIN7IPTable5EntryEEC2ERKS2_[];
100223 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2ERKS2_);
100224 +extern char _ZN6VectorIN7IPTable5EntryEEC2EiRKS1_[];
100225 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2EiRKS1_);
100226 +extern char _ZN6VectorIN7IPTable5EntryEEC2Ev[];
100227 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEC2Ev);
100228 +extern char _ZN6VectorIN7IPTable5EntryEED1Ev[];
100229 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEED1Ev);
100230 +extern char _ZN6VectorIN7IPTable5EntryEED2Ev[];
100231 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEED2Ev);
100232 +extern char _ZN6VectorIN7IPTable5EntryEEaSERKS2_[];
100233 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEaSERKS2_);
100234 +extern char _ZN6VectorIN7IPTable5EntryEEixEi[];
100235 +EXPORT_SYMBOL(_ZN6VectorIN7IPTable5EntryEEixEi);
100236 +extern char _ZN7IPTable3addE9IPAddressS0_S0_i[];
100237 +EXPORT_SYMBOL(_ZN7IPTable3addE9IPAddressS0_S0_i);
100238 +extern char _ZN7IPTable3delE9IPAddressS0_[];
100239 +EXPORT_SYMBOL(_ZN7IPTable3delE9IPAddressS0_);
100240 +extern char _ZN7IPTableC1Ev[];
100241 +EXPORT_SYMBOL(_ZN7IPTableC1Ev);
100242 +extern char _ZN7IPTableC2Ev[];
100243 +EXPORT_SYMBOL(_ZN7IPTableC2Ev);
100244 +extern char _ZN7IPTableD1Ev[];
100245 +EXPORT_SYMBOL(_ZN7IPTableD1Ev);
100246 +extern char _ZN7IPTableD2Ev[];
100247 +EXPORT_SYMBOL(_ZN7IPTableD2Ev);
100248 +extern char _ZNK6VectorIN7IPTable5EntryEE2atEi[];
100249 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE2atEi);
100250 +extern char _ZNK6VectorIN7IPTable5EntryEE3endEv[];
100251 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE3endEv);
100252 +extern char _ZNK6VectorIN7IPTable5EntryEE4at_uEi[];
100253 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4at_uEi);
100254 +extern char _ZNK6VectorIN7IPTable5EntryEE4backEv[];
100255 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4backEv);
100256 +extern char _ZNK6VectorIN7IPTable5EntryEE4sizeEv[];
100257 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4sizeEv);
100258 +extern char _ZNK6VectorIN7IPTable5EntryEE4veltEi[];
100259 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE4veltEi);
100260 +extern char _ZNK6VectorIN7IPTable5EntryEE5beginEv[];
100261 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5beginEv);
100262 +extern char _ZNK6VectorIN7IPTable5EntryEE5emptyEv[];
100263 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5emptyEv);
100264 +extern char _ZNK6VectorIN7IPTable5EntryEE5frontEv[];
100265 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE5frontEv);
100266 +extern char _ZNK6VectorIN7IPTable5EntryEE8capacityEv[];
100267 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEE8capacityEv);
100268 +extern char _ZNK6VectorIN7IPTable5EntryEEixEi[];
100269 +EXPORT_SYMBOL(_ZNK6VectorIN7IPTable5EntryEEixEi);
100270 +extern char _ZNK7IPTable6lookupE9IPAddressRS0_Ri[];
100271 +EXPORT_SYMBOL(_ZNK7IPTable6lookupE9IPAddressRS0_Ri);
100272 +extern char _ZN10LexerExtra7requireE6StringP12ErrorHandler[];
100273 +EXPORT_SYMBOL(_ZN10LexerExtra7requireE6StringP12ErrorHandler);
100274 +extern char _ZN10LexerExtraD0Ev[];
100275 +EXPORT_SYMBOL(_ZN10LexerExtraD0Ev);
100276 +extern char _ZN10LexerExtraD1Ev[];
100277 +EXPORT_SYMBOL(_ZN10LexerExtraD1Ev);
100278 +extern char _ZN16VariableExpanderD0Ev[];
100279 +EXPORT_SYMBOL(_ZN16VariableExpanderD0Ev);
100280 +extern char _ZN16VariableExpanderD1Ev[];
100281 +EXPORT_SYMBOL(_ZN16VariableExpanderD1Ev);
100282 +extern char _ZN5Lexer10add_tunnelE6StringS0_[];
100283 +EXPORT_SYMBOL(_ZN5Lexer10add_tunnelE6StringS0_);
100284 +extern char _ZN5Lexer10lex_configEv[];
100285 +EXPORT_SYMBOL(_ZN5Lexer10lex_configEv);
100286 +extern char _ZN5Lexer10skip_quoteEPKcc[];
100287 +EXPORT_SYMBOL(_ZN5Lexer10skip_quoteEPKcc);
100288 +extern char _ZN5Lexer10ystatementEb[];
100289 +EXPORT_SYMBOL(_ZN5Lexer10ystatementEb);
100290 +extern char _ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler[];
100291 +EXPORT_SYMBOL(_ZN5Lexer11begin_parseERK6StringS2_P10LexerExtraP12ErrorHandler);
100292 +extern char _ZN5Lexer11get_elementE6StringiRKS0_S2_[];
100293 +EXPORT_SYMBOL(_ZN5Lexer11get_elementE6StringiRKS0_S2_);
100294 +extern char _ZN5Lexer11next_lexemeEv[];
100295 +EXPORT_SYMBOL(_ZN5Lexer11next_lexemeEv);
100296 +extern char _ZN5Lexer11yconnectionEv[];
100297 +EXPORT_SYMBOL(_ZN5Lexer11yconnectionEv);
100298 +extern char _ZN5Lexer12ydeclarationERK6String[];
100299 +EXPORT_SYMBOL(_ZN5Lexer12ydeclarationERK6String);
100300 +extern char _ZN5Lexer13create_routerEP6Master[];
100301 +EXPORT_SYMBOL(_ZN5Lexer13create_routerEP6Master);
100302 +extern char _ZN5Lexer13lexeme_stringEi[];
100303 +EXPORT_SYMBOL(_ZN5Lexer13lexeme_stringEi);
100304 +extern char _ZN5Lexer13yelementclassEv[];
100305 +EXPORT_SYMBOL(_ZN5Lexer13yelementclassEv);
100306 +extern char _ZN5Lexer15skip_slash_starEPKc[];
100307 +EXPORT_SYMBOL(_ZN5Lexer15skip_slash_starEPKc);
100308 +extern char _ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb[];
100309 +EXPORT_SYMBOL(_ZN5Lexer16add_element_typeERK6StringPFP7ElementmEmP6moduleb);
100310 +extern char _ZN5Lexer18force_element_typeE6String[];
100311 +EXPORT_SYMBOL(_ZN5Lexer18force_element_typeE6String);
100312 +extern char _ZN5Lexer18set_remaining_textERK6String[];
100313 +EXPORT_SYMBOL(_ZN5Lexer18set_remaining_textERK6String);
100314 +extern char _ZN5Lexer19lexical_scoping_outEi[];
100315 +EXPORT_SYMBOL(_ZN5Lexer19lexical_scoping_outEi);
100316 +extern char _ZN5Lexer19remove_element_typeEiPi[];
100317 +EXPORT_SYMBOL(_ZN5Lexer19remove_element_typeEiPi);
100318 +extern char _ZN5Lexer19ycompound_argumentsEPNS_8CompoundE[];
100319 +EXPORT_SYMBOL(_ZN5Lexer19ycompound_argumentsEPNS_8CompoundE);
100320 +extern char _ZN5Lexer20skip_backslash_angleEPKc[];
100321 +EXPORT_SYMBOL(_ZN5Lexer20skip_backslash_angleEPKc);
100322 +extern char _ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router[];
100323 +EXPORT_SYMBOL(_ZN5Lexer22add_router_connectionsEiRK6VectorIiEP6Router);
100324 +extern char _ZN5Lexer22process_line_directiveEPKc[];
100325 +EXPORT_SYMBOL(_ZN5Lexer22process_line_directiveEPKc);
100326 +extern char _ZN5Lexer23expand_compound_elementEiR19VariableEnvironment[];
100327 +EXPORT_SYMBOL(_ZN5Lexer23expand_compound_elementEiR19VariableEnvironment);
100328 +extern char _ZN5Lexer24deanonymize_element_nameERK6Stringi[];
100329 +EXPORT_SYMBOL(_ZN5Lexer24deanonymize_element_nameERK6Stringi);
100330 +extern char _ZN5Lexer3lexEv[];
100331 +EXPORT_SYMBOL(_ZN5Lexer3lexEv);
100332 +extern char _ZN5Lexer4yvarEv[];
100333 +EXPORT_SYMBOL(_ZN5Lexer4yvarEv);
100334 +extern char _ZN5Lexer5unlexERK6Lexeme[];
100335 +EXPORT_SYMBOL(_ZN5Lexer5unlexERK6Lexeme);
100336 +extern char _ZN5Lexer5yportERi[];
100337 +EXPORT_SYMBOL(_ZN5Lexer5yportERi);
100338 +extern char _ZN5Lexer6expectEib[];
100339 +EXPORT_SYMBOL(_ZN5Lexer6expectEib);
100340 +extern char _ZN5Lexer6lerrorEPKcz[];
100341 +EXPORT_SYMBOL(_ZN5Lexer6lerrorEPKcz);
100342 +extern char _ZN5Lexer7connectEiiii[];
100343 +EXPORT_SYMBOL(_ZN5Lexer7connectEiiii);
100344 +extern char _ZN5Lexer7ytunnelEv[];
100345 +EXPORT_SYMBOL(_ZN5Lexer7ytunnelEv);
100346 +extern char _ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment[];
100347 +EXPORT_SYMBOL(_ZN5Lexer8Compound11expand_intoEPS_iR19VariableEnvironment);
100348 +extern char _ZN5Lexer8Compound20printable_name_c_strEv[];
100349 +EXPORT_SYMBOL(_ZN5Lexer8Compound20printable_name_c_strEv);
100350 +extern char _ZN5Lexer8Compound4castEPKc[];
100351 +EXPORT_SYMBOL(_ZN5Lexer8Compound4castEPKc);
100352 +extern char _ZN5Lexer8Compound6finishEPS_P12ErrorHandler[];
100353 +EXPORT_SYMBOL(_ZN5Lexer8Compound6finishEPS_P12ErrorHandler);
100354 +extern char _ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_[];
100355 +EXPORT_SYMBOL(_ZN5Lexer8Compound7resolveEPS_iiiR6VectorI6StringEP12ErrorHandlerRKS3_);
100356 +extern char _ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii[];
100357 +EXPORT_SYMBOL(_ZN5Lexer8Compound9signatureERK6StringPK6VectorIS1_Eiii);
100358 +extern char _ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment[];
100359 +EXPORT_SYMBOL(_ZN5Lexer8CompoundC1ERK6StringS3_P19VariableEnvironment);
100360 +extern char _ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment[];
100361 +EXPORT_SYMBOL(_ZN5Lexer8CompoundC2ERK6StringS3_P19VariableEnvironment);
100362 +extern char _ZN5Lexer8CompoundD0Ev[];
100363 +EXPORT_SYMBOL(_ZN5Lexer8CompoundD0Ev);
100364 +extern char _ZN5Lexer8CompoundD1Ev[];
100365 +EXPORT_SYMBOL(_ZN5Lexer8CompoundD1Ev);
100366 +extern char _ZN5Lexer8yelementERib[];
100367 +EXPORT_SYMBOL(_ZN5Lexer8yelementERib);
100368 +extern char _ZN5Lexer8yrequireEv[];
100369 +EXPORT_SYMBOL(_ZN5Lexer8yrequireEv);
100370 +extern char _ZN5Lexer9TunnelEnd4findERKN6Router6HookupE[];
100371 +EXPORT_SYMBOL(_ZN5Lexer9TunnelEnd4findERKN6Router6HookupE);
100372 +extern char _ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE[];
100373 +EXPORT_SYMBOL(_ZN5Lexer9TunnelEnd6expandEPKS_R6VectorIN6Router6HookupEE);
100374 +extern char _ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_[];
100375 +EXPORT_SYMBOL(_ZN5Lexer9TunnelEndC1ERKN6Router6HookupEbPS0_);
100376 +extern char _ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_[];
100377 +EXPORT_SYMBOL(_ZN5Lexer9TunnelEndC2ERKN6Router6HookupEbPS0_);
100378 +extern char _ZN5Lexer9end_parseEi[];
100379 +EXPORT_SYMBOL(_ZN5Lexer9end_parseEi);
100380 +extern char _ZN5Lexer9skip_lineEPKc[];
100381 +EXPORT_SYMBOL(_ZN5Lexer9skip_lineEPKc);
100382 +extern char _ZN5Lexer9ycompoundE6String[];
100383 +EXPORT_SYMBOL(_ZN5Lexer9ycompoundE6String);
100384 +extern char _ZN5LexerC1Ev[];
100385 +EXPORT_SYMBOL(_ZN5LexerC1Ev);
100386 +extern char _ZN5LexerC2Ev[];
100387 +EXPORT_SYMBOL(_ZN5LexerC2Ev);
100388 +extern char _ZN5LexerD0Ev[];
100389 +EXPORT_SYMBOL(_ZN5LexerD0Ev);
100390 +extern char _ZN5LexerD1Ev[];
100391 +EXPORT_SYMBOL(_ZN5LexerD1Ev);
100392 +extern char _ZN5LexerD2Ev[];
100393 +EXPORT_SYMBOL(_ZN5LexerD2Ev);
100394 +extern char _ZN6VectorI6StringE5eraseEPS0_S2_[];
100395 +EXPORT_SYMBOL(_ZN6VectorI6StringE5eraseEPS0_S2_);
100396 +extern char _ZN6VectorIN5Lexer11ElementTypeEE7reserveEi[];
100397 +EXPORT_SYMBOL(_ZN6VectorIN5Lexer11ElementTypeEE7reserveEi);
100398 +extern char _ZN6VectorIN5Lexer11ElementTypeEED1Ev[];
100399 +EXPORT_SYMBOL(_ZN6VectorIN5Lexer11ElementTypeEED1Ev);
100400 +extern char _ZN6VectorIN6Router6HookupEE7reserveEi[];
100401 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE7reserveEi);
100402 +extern char _ZN6VectorIN6Router6HookupEED1Ev[];
100403 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEED1Ev);
100404 +extern char _ZNK5Lexer12element_nameEi[];
100405 +EXPORT_SYMBOL(_ZNK5Lexer12element_nameEi);
100406 +extern char _ZNK5Lexer12element_typeERK6String[];
100407 +EXPORT_SYMBOL(_ZNK5Lexer12element_typeERK6String);
100408 +extern char _ZNK5Lexer14remaining_textEv[];
100409 +EXPORT_SYMBOL(_ZNK5Lexer14remaining_textEv);
100410 +extern char _ZNK5Lexer16element_landmarkEi[];
100411 +EXPORT_SYMBOL(_ZNK5Lexer16element_landmarkEi);
100412 +extern char _ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E[];
100413 +EXPORT_SYMBOL(_ZNK5Lexer16find_connectionsERKN6Router6HookupEbR6VectorIS1_E);
100414 +extern char _ZNK5Lexer17anon_element_nameERK6String[];
100415 +EXPORT_SYMBOL(_ZNK5Lexer17anon_element_nameERK6String);
100416 +extern char _ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E[];
100417 +EXPORT_SYMBOL(_ZNK5Lexer17expand_connectionERKN6Router6HookupEbR6VectorIS1_E);
100418 +extern char _ZNK5Lexer18element_type_namesER6VectorI6StringE[];
100419 +EXPORT_SYMBOL(_ZNK5Lexer18element_type_namesER6VectorI6StringE);
100420 +extern char _ZNK5Lexer18lexical_scoping_inEv[];
100421 +EXPORT_SYMBOL(_ZNK5Lexer18lexical_scoping_inEv);
100422 +extern char _ZNK5Lexer8Compound10class_nameEv[];
100423 +EXPORT_SYMBOL(_ZNK5Lexer8Compound10class_nameEv);
100424 +extern char _ZNK5Lexer8Compound9signatureEv[];
100425 +EXPORT_SYMBOL(_ZNK5Lexer8Compound9signatureEv);
100426 +extern char _ZNK5Lexer8landmarkEv[];
100427 +EXPORT_SYMBOL(_ZNK5Lexer8landmarkEv);
100428 +extern char _ZTV10LexerExtra[];
100429 +EXPORT_SYMBOL(_ZTV10LexerExtra);
100430 +extern char _ZTV16VariableExpander[];
100431 +EXPORT_SYMBOL(_ZTV16VariableExpander);
100432 +extern char _ZTV5Lexer[];
100433 +EXPORT_SYMBOL(_ZTV5Lexer);
100434 +extern char _ZTVN5Lexer8CompoundE[];
100435 +EXPORT_SYMBOL(_ZTVN5Lexer8CompoundE);
100436 +extern char _ZN14LinearIPLookup10initializeEP12ErrorHandler[];
100437 +EXPORT_SYMBOL(_ZN14LinearIPLookup10initializeEP12ErrorHandler);
100438 +extern char _ZN14LinearIPLookup11dump_routesEv[];
100439 +EXPORT_SYMBOL(_ZN14LinearIPLookup11dump_routesEv);
100440 +extern char _ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[];
100441 +EXPORT_SYMBOL(_ZN14LinearIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler);
100442 +extern char _ZN14LinearIPLookup4pushEiP6Packet[];
100443 +EXPORT_SYMBOL(_ZN14LinearIPLookup4pushEiP6Packet);
100444 +extern char _ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[];
100445 +EXPORT_SYMBOL(_ZN14LinearIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler);
100446 +extern char _ZN14LinearIPLookupC1Ev[];
100447 +EXPORT_SYMBOL(_ZN14LinearIPLookupC1Ev);
100448 +extern char _ZN14LinearIPLookupC2Ev[];
100449 +EXPORT_SYMBOL(_ZN14LinearIPLookupC2Ev);
100450 +extern char _ZN14LinearIPLookupD0Ev[];
100451 +EXPORT_SYMBOL(_ZN14LinearIPLookupD0Ev);
100452 +extern char _ZN14LinearIPLookupD1Ev[];
100453 +EXPORT_SYMBOL(_ZN14LinearIPLookupD1Ev);
100454 +extern char _ZN14LinearIPLookupD2Ev[];
100455 +EXPORT_SYMBOL(_ZN14LinearIPLookupD2Ev);
100456 +extern char _ZN6VectorI7IPRouteE7reserveEi[];
100457 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteE7reserveEi);
100458 +extern char _ZN6VectorI7IPRouteED1Ev[];
100459 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteED1Ev);
100460 +extern char _ZNK14LinearIPLookup10class_nameEv[];
100461 +EXPORT_SYMBOL(_ZNK14LinearIPLookup10class_nameEv);
100462 +extern char _ZNK14LinearIPLookup10port_countEv[];
100463 +EXPORT_SYMBOL(_ZNK14LinearIPLookup10port_countEv);
100464 +extern char _ZNK14LinearIPLookup10processingEv[];
100465 +EXPORT_SYMBOL(_ZNK14LinearIPLookup10processingEv);
100466 +extern char _ZNK14LinearIPLookup12lookup_entryE9IPAddress[];
100467 +EXPORT_SYMBOL(_ZNK14LinearIPLookup12lookup_entryE9IPAddress);
100468 +extern char _ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_[];
100469 +EXPORT_SYMBOL(_ZNK14LinearIPLookup12lookup_routeE9IPAddressRS0_);
100470 +extern char _ZNK14LinearIPLookup5checkEv[];
100471 +EXPORT_SYMBOL(_ZNK14LinearIPLookup5checkEv);
100472 +extern char _ZTV14LinearIPLookup[];
100473 +EXPORT_SYMBOL(_ZTV14LinearIPLookup);
100474 +extern char _ZN11LinkUnqueue10initializeEP12ErrorHandler[];
100475 +EXPORT_SYMBOL(_ZN11LinkUnqueue10initializeEP12ErrorHandler);
100476 +extern char _ZN11LinkUnqueue10read_paramEP7ElementPv[];
100477 +EXPORT_SYMBOL(_ZN11LinkUnqueue10read_paramEP7ElementPv);
100478 +extern char _ZN11LinkUnqueue12add_handlersEv[];
100479 +EXPORT_SYMBOL(_ZN11LinkUnqueue12add_handlersEv);
100480 +extern char _ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
100481 +EXPORT_SYMBOL(_ZN11LinkUnqueue13write_handlerERK6StringP7ElementPvP12ErrorHandler);
100482 +extern char _ZN11LinkUnqueue4castEPKc[];
100483 +EXPORT_SYMBOL(_ZN11LinkUnqueue4castEPKc);
100484 +extern char _ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE[];
100485 +EXPORT_SYMBOL(_ZN11LinkUnqueue7cleanupEN7Element12CleanupStageE);
100486 +extern char _ZN11LinkUnqueue8run_taskEP4Task[];
100487 +EXPORT_SYMBOL(_ZN11LinkUnqueue8run_taskEP4Task);
100488 +extern char _ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler[];
100489 +EXPORT_SYMBOL(_ZN11LinkUnqueue9configureER6VectorI6StringEP12ErrorHandler);
100490 +extern char _ZN11LinkUnqueueC1Ev[];
100491 +EXPORT_SYMBOL(_ZN11LinkUnqueueC1Ev);
100492 +extern char _ZN11LinkUnqueueC2Ev[];
100493 +EXPORT_SYMBOL(_ZN11LinkUnqueueC2Ev);
100494 +extern char _ZN11LinkUnqueueD0Ev[];
100495 +EXPORT_SYMBOL(_ZN11LinkUnqueueD0Ev);
100496 +extern char _ZN11LinkUnqueueD1Ev[];
100497 +EXPORT_SYMBOL(_ZN11LinkUnqueueD1Ev);
100498 +extern char _ZN11LinkUnqueueD2Ev[];
100499 +EXPORT_SYMBOL(_ZN11LinkUnqueueD2Ev);
100500 +extern char _ZNK11LinkUnqueue10class_nameEv[];
100501 +EXPORT_SYMBOL(_ZNK11LinkUnqueue10class_nameEv);
100502 +extern char _ZNK11LinkUnqueue10port_countEv[];
100503 +EXPORT_SYMBOL(_ZNK11LinkUnqueue10port_countEv);
100504 +extern char _ZNK11LinkUnqueue10processingEv[];
100505 +EXPORT_SYMBOL(_ZNK11LinkUnqueue10processingEv);
100506 +extern char _ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp[];
100507 +EXPORT_SYMBOL(_ZNK11LinkUnqueue18delay_by_bandwidthEP6PacketRK9Timestamp);
100508 +extern char _ZTV11LinkUnqueue[];
100509 +EXPORT_SYMBOL(_ZTV11LinkUnqueue);
100510 +extern char _ZN14StaticIPLookup12add_handlersEv[];
100511 +EXPORT_SYMBOL(_ZN14StaticIPLookup12add_handlersEv);
100512 +extern char _ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[];
100513 +EXPORT_SYMBOL(_ZN14StaticIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler);
100514 +extern char _ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[];
100515 +EXPORT_SYMBOL(_ZN14StaticIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler);
100516 +extern char _ZN14StaticIPLookupC1Ev[];
100517 +EXPORT_SYMBOL(_ZN14StaticIPLookupC1Ev);
100518 +extern char _ZN14StaticIPLookupC2Ev[];
100519 +EXPORT_SYMBOL(_ZN14StaticIPLookupC2Ev);
100520 +extern char _ZN14StaticIPLookupD0Ev[];
100521 +EXPORT_SYMBOL(_ZN14StaticIPLookupD0Ev);
100522 +extern char _ZN14StaticIPLookupD1Ev[];
100523 +EXPORT_SYMBOL(_ZN14StaticIPLookupD1Ev);
100524 +extern char _ZN14StaticIPLookupD2Ev[];
100525 +EXPORT_SYMBOL(_ZN14StaticIPLookupD2Ev);
100526 +extern char _ZNK14StaticIPLookup10class_nameEv[];
100527 +EXPORT_SYMBOL(_ZNK14StaticIPLookup10class_nameEv);
100528 +extern char _ZTV14StaticIPLookup[];
100529 +EXPORT_SYMBOL(_ZTV14StaticIPLookup);
100530 +extern char _ZN15LookupIPRouteMP10initializeEP12ErrorHandler[];
100531 +EXPORT_SYMBOL(_ZN15LookupIPRouteMP10initializeEP12ErrorHandler);
100532 +extern char _ZN15LookupIPRouteMP4pushEiP6Packet[];
100533 +EXPORT_SYMBOL(_ZN15LookupIPRouteMP4pushEiP6Packet);
100534 +extern char _ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler[];
100535 +EXPORT_SYMBOL(_ZN15LookupIPRouteMP9configureER6VectorI6StringEP12ErrorHandler);
100536 +extern char _ZN15LookupIPRouteMPC1Ev[];
100537 +EXPORT_SYMBOL(_ZN15LookupIPRouteMPC1Ev);
100538 +extern char _ZN15LookupIPRouteMPC2Ev[];
100539 +EXPORT_SYMBOL(_ZN15LookupIPRouteMPC2Ev);
100540 +extern char _ZN15LookupIPRouteMPD0Ev[];
100541 +EXPORT_SYMBOL(_ZN15LookupIPRouteMPD0Ev);
100542 +extern char _ZN15LookupIPRouteMPD1Ev[];
100543 +EXPORT_SYMBOL(_ZN15LookupIPRouteMPD1Ev);
100544 +extern char _ZN15LookupIPRouteMPD2Ev[];
100545 +EXPORT_SYMBOL(_ZN15LookupIPRouteMPD2Ev);
100546 +extern char _ZNK15LookupIPRouteMP10class_nameEv[];
100547 +EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10class_nameEv);
100548 +extern char _ZNK15LookupIPRouteMP10port_countEv[];
100549 +EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10port_countEv);
100550 +extern char _ZNK15LookupIPRouteMP10processingEv[];
100551 +EXPORT_SYMBOL(_ZNK15LookupIPRouteMP10processingEv);
100552 +extern char _ZTV15LookupIPRouteMP[];
100553 +EXPORT_SYMBOL(_ZTV15LookupIPRouteMP);
100554 +extern char _ZN8MarkIPCE10initializeEP12ErrorHandler[];
100555 +EXPORT_SYMBOL(_ZN8MarkIPCE10initializeEP12ErrorHandler);
100556 +extern char _ZN8MarkIPCE12add_handlersEv[];
100557 +EXPORT_SYMBOL(_ZN8MarkIPCE12add_handlersEv);
100558 +extern char _ZN8MarkIPCE12read_handlerEP7ElementPv[];
100559 +EXPORT_SYMBOL(_ZN8MarkIPCE12read_handlerEP7ElementPv);
100560 +extern char _ZN8MarkIPCE4pullEi[];
100561 +EXPORT_SYMBOL(_ZN8MarkIPCE4pullEi);
100562 +extern char _ZN8MarkIPCE4pushEiP6Packet[];
100563 +EXPORT_SYMBOL(_ZN8MarkIPCE4pushEiP6Packet);
100564 +extern char _ZN8MarkIPCEC1Ev[];
100565 +EXPORT_SYMBOL(_ZN8MarkIPCEC1Ev);
100566 +extern char _ZN8MarkIPCEC2Ev[];
100567 +EXPORT_SYMBOL(_ZN8MarkIPCEC2Ev);
100568 +extern char _ZN8MarkIPCED0Ev[];
100569 +EXPORT_SYMBOL(_ZN8MarkIPCED0Ev);
100570 +extern char _ZN8MarkIPCED1Ev[];
100571 +EXPORT_SYMBOL(_ZN8MarkIPCED1Ev);
100572 +extern char _ZN8MarkIPCED2Ev[];
100573 +EXPORT_SYMBOL(_ZN8MarkIPCED2Ev);
100574 +extern char _ZNK8MarkIPCE10class_nameEv[];
100575 +EXPORT_SYMBOL(_ZNK8MarkIPCE10class_nameEv);
100576 +extern char _ZNK8MarkIPCE10port_countEv[];
100577 +EXPORT_SYMBOL(_ZNK8MarkIPCE10port_countEv);
100578 +extern char _ZNK8MarkIPCE10processingEv[];
100579 +EXPORT_SYMBOL(_ZNK8MarkIPCE10processingEv);
100580 +extern char _ZTV8MarkIPCE[];
100581 +EXPORT_SYMBOL(_ZTV8MarkIPCE);
100582 +extern char _ZN12MarkIPHeader13simple_actionEP6Packet[];
100583 +EXPORT_SYMBOL(_ZN12MarkIPHeader13simple_actionEP6Packet);
100584 +extern char _ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler[];
100585 +EXPORT_SYMBOL(_ZN12MarkIPHeader9configureER6VectorI6StringEP12ErrorHandler);
100586 +extern char _ZN12MarkIPHeaderC1Ev[];
100587 +EXPORT_SYMBOL(_ZN12MarkIPHeaderC1Ev);
100588 +extern char _ZN12MarkIPHeaderC2Ev[];
100589 +EXPORT_SYMBOL(_ZN12MarkIPHeaderC2Ev);
100590 +extern char _ZN12MarkIPHeaderD0Ev[];
100591 +EXPORT_SYMBOL(_ZN12MarkIPHeaderD0Ev);
100592 +extern char _ZN12MarkIPHeaderD1Ev[];
100593 +EXPORT_SYMBOL(_ZN12MarkIPHeaderD1Ev);
100594 +extern char _ZN12MarkIPHeaderD2Ev[];
100595 +EXPORT_SYMBOL(_ZN12MarkIPHeaderD2Ev);
100596 +extern char _ZNK12MarkIPHeader10class_nameEv[];
100597 +EXPORT_SYMBOL(_ZNK12MarkIPHeader10class_nameEv);
100598 +extern char _ZNK12MarkIPHeader10port_countEv[];
100599 +EXPORT_SYMBOL(_ZNK12MarkIPHeader10port_countEv);
100600 +extern char _ZTV12MarkIPHeader[];
100601 +EXPORT_SYMBOL(_ZTV12MarkIPHeader);
100602 +extern char _ZN6Master10run_routerEP6Routerb[];
100603 +EXPORT_SYMBOL(_ZN6Master10run_routerEP6Routerb);
100604 +extern char _ZN6Master10run_timersEv[];
100605 +EXPORT_SYMBOL(_ZN6Master10run_timersEv);
100606 +extern char _ZN6Master11kill_routerEP6Router[];
100607 +EXPORT_SYMBOL(_ZN6Master11kill_routerEP6Router);
100608 +extern char _ZN6Master12check_driverEv[];
100609 +EXPORT_SYMBOL(_ZN6Master12check_driverEv);
100610 +extern char _ZN6Master14prepare_routerEP6Router[];
100611 +EXPORT_SYMBOL(_ZN6Master14prepare_routerEP6Router);
100612 +extern char _ZN6Master15process_pendingEP12RouterThread[];
100613 +EXPORT_SYMBOL(_ZN6Master15process_pendingEP12RouterThread);
100614 +extern char _ZN6Master15register_routerEP6Router[];
100615 +EXPORT_SYMBOL(_ZN6Master15register_routerEP6Router);
100616 +extern char _ZN6Master17unregister_routerEP6Router[];
100617 +EXPORT_SYMBOL(_ZN6Master17unregister_routerEP6Router);
100618 +extern char _ZN6Master20timer_reheapify_fromEiP5Timerb[];
100619 +EXPORT_SYMBOL(_ZN6Master20timer_reheapify_fromEiP5Timerb);
100620 +extern char _ZN6Master3useEv[];
100621 +EXPORT_SYMBOL(_ZN6Master3useEv);
100622 +extern char _ZN6Master5pauseEv[];
100623 +EXPORT_SYMBOL(_ZN6Master5pauseEv);
100624 +extern char _ZN6Master5unuseEv[];
100625 +EXPORT_SYMBOL(_ZN6Master5unuseEv);
100626 +extern char _ZN6MasterC1Ei[];
100627 +EXPORT_SYMBOL(_ZN6MasterC1Ei);
100628 +extern char _ZN6MasterC2Ei[];
100629 +EXPORT_SYMBOL(_ZN6MasterC2Ei);
100630 +extern char _ZN6MasterD1Ev[];
100631 +EXPORT_SYMBOL(_ZN6MasterD1Ev);
100632 +extern char _ZN6MasterD2Ev[];
100633 +EXPORT_SYMBOL(_ZN6MasterD2Ev);
100634 +extern char _ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler[];
100635 +EXPORT_SYMBOL(_ZN14MessageElement9configureER6VectorI6StringEP12ErrorHandler);
100636 +extern char _ZN14MessageElementC1Ev[];
100637 +EXPORT_SYMBOL(_ZN14MessageElementC1Ev);
100638 +extern char _ZN14MessageElementC2Ev[];
100639 +EXPORT_SYMBOL(_ZN14MessageElementC2Ev);
100640 +extern char _ZN14MessageElementD0Ev[];
100641 +EXPORT_SYMBOL(_ZN14MessageElementD0Ev);
100642 +extern char _ZN14MessageElementD1Ev[];
100643 +EXPORT_SYMBOL(_ZN14MessageElementD1Ev);
100644 +extern char _ZN14MessageElementD2Ev[];
100645 +EXPORT_SYMBOL(_ZN14MessageElementD2Ev);
100646 +extern char _ZNK14MessageElement10class_nameEv[];
100647 +EXPORT_SYMBOL(_ZNK14MessageElement10class_nameEv);
100648 +extern char _ZTV14MessageElement[];
100649 +EXPORT_SYMBOL(_ZTV14MessageElement);
100650 +extern char _ZN5Meter4pushEiP6Packet[];
100651 +EXPORT_SYMBOL(_ZN5Meter4pushEiP6Packet);
100652 +extern char _ZN5MeterC1Ev[];
100653 +EXPORT_SYMBOL(_ZN5MeterC1Ev);
100654 +extern char _ZN5MeterC2Ev[];
100655 +EXPORT_SYMBOL(_ZN5MeterC2Ev);
100656 +extern char _ZN5MeterD0Ev[];
100657 +EXPORT_SYMBOL(_ZN5MeterD0Ev);
100658 +extern char _ZN5MeterD1Ev[];
100659 +EXPORT_SYMBOL(_ZN5MeterD1Ev);
100660 +extern char _ZN5MeterD2Ev[];
100661 +EXPORT_SYMBOL(_ZN5MeterD2Ev);
100662 +extern char _ZNK5Meter10class_nameEv[];
100663 +EXPORT_SYMBOL(_ZNK5Meter10class_nameEv);
100664 +extern char _ZTV5Meter[];
100665 +EXPORT_SYMBOL(_ZTV5Meter);
100666 +extern char _ZN10MixedQueue4castEPKc[];
100667 +EXPORT_SYMBOL(_ZN10MixedQueue4castEPKc);
100668 +extern char _ZN10MixedQueue4pushEiP6Packet[];
100669 +EXPORT_SYMBOL(_ZN10MixedQueue4pushEiP6Packet);
100670 +extern char _ZN10MixedQueueC1Ev[];
100671 +EXPORT_SYMBOL(_ZN10MixedQueueC1Ev);
100672 +extern char _ZN10MixedQueueC2Ev[];
100673 +EXPORT_SYMBOL(_ZN10MixedQueueC2Ev);
100674 +extern char _ZN10MixedQueueD0Ev[];
100675 +EXPORT_SYMBOL(_ZN10MixedQueueD0Ev);
100676 +extern char _ZN10MixedQueueD1Ev[];
100677 +EXPORT_SYMBOL(_ZN10MixedQueueD1Ev);
100678 +extern char _ZN10MixedQueueD2Ev[];
100679 +EXPORT_SYMBOL(_ZN10MixedQueueD2Ev);
100680 +extern char _ZNK10MixedQueue10class_nameEv[];
100681 +EXPORT_SYMBOL(_ZNK10MixedQueue10class_nameEv);
100682 +extern char _ZNK10MixedQueue10port_countEv[];
100683 +EXPORT_SYMBOL(_ZNK10MixedQueue10port_countEv);
100684 +extern char _ZTV10MixedQueue[];
100685 +EXPORT_SYMBOL(_ZTV10MixedQueue);
100686 +extern char _Z21click_clear_error_logv[];
100687 +EXPORT_SYMBOL(_Z21click_clear_error_logv);
100688 +extern char _ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String[];
100689 +EXPORT_SYMBOL(_ZN18KernelErrorHandler11handle_textEN12ErrorHandler11SeriousnessERK6String);
100690 +extern char _ZN18KernelErrorHandler8log_lineEPKcS1_[];
100691 +EXPORT_SYMBOL(_ZN18KernelErrorHandler8log_lineEPKcS1_);
100692 +extern char _ZN18KernelErrorHandlerD0Ev[];
100693 +EXPORT_SYMBOL(_ZN18KernelErrorHandlerD0Ev);
100694 +extern char _ZN18KernelErrorHandlerD1Ev[];
100695 +EXPORT_SYMBOL(_ZN18KernelErrorHandlerD1Ev);
100696 +extern char _ZTV18KernelErrorHandler[];
100697 +EXPORT_SYMBOL(_ZTV18KernelErrorHandler);
100698 +EXPORT_SYMBOL(click_assert_failed);
100699 +extern char click_fsmode[];
100700 +EXPORT_SYMBOL(click_fsmode);
100701 +extern char click_logged_errh[];
100702 +EXPORT_SYMBOL(click_logged_errh);
100703 +extern char click_master[];
100704 +EXPORT_SYMBOL(click_master);
100705 +extern char click_router[];
100706 +EXPORT_SYMBOL(click_router);
100707 +extern char _ZN7MSQueue10initializeEP12ErrorHandler[];
100708 +EXPORT_SYMBOL(_ZN7MSQueue10initializeEP12ErrorHandler);
100709 +extern char _ZN7MSQueue12add_handlersEv[];
100710 +EXPORT_SYMBOL(_ZN7MSQueue12add_handlersEv);
100711 +extern char _ZN7MSQueue12read_handlerEP7ElementPv[];
100712 +EXPORT_SYMBOL(_ZN7MSQueue12read_handlerEP7ElementPv);
100713 +extern char _ZN7MSQueue4castEPKc[];
100714 +EXPORT_SYMBOL(_ZN7MSQueue4castEPKc);
100715 +extern char _ZN7MSQueue4pullEi[];
100716 +EXPORT_SYMBOL(_ZN7MSQueue4pullEi);
100717 +extern char _ZN7MSQueue4pushEiP6Packet[];
100718 +EXPORT_SYMBOL(_ZN7MSQueue4pushEiP6Packet);
100719 +extern char _ZN7MSQueue7cleanupEN7Element12CleanupStageE[];
100720 +EXPORT_SYMBOL(_ZN7MSQueue7cleanupEN7Element12CleanupStageE);
100721 +extern char _ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler[];
100722 +EXPORT_SYMBOL(_ZN7MSQueue9configureER6VectorI6StringEP12ErrorHandler);
100723 +extern char _ZN7MSQueueC1Ev[];
100724 +EXPORT_SYMBOL(_ZN7MSQueueC1Ev);
100725 +extern char _ZN7MSQueueC2Ev[];
100726 +EXPORT_SYMBOL(_ZN7MSQueueC2Ev);
100727 +extern char _ZN7MSQueueD0Ev[];
100728 +EXPORT_SYMBOL(_ZN7MSQueueD0Ev);
100729 +extern char _ZN7MSQueueD1Ev[];
100730 +EXPORT_SYMBOL(_ZN7MSQueueD1Ev);
100731 +extern char _ZN7MSQueueD2Ev[];
100732 +EXPORT_SYMBOL(_ZN7MSQueueD2Ev);
100733 +extern char _ZNK7MSQueue10class_nameEv[];
100734 +EXPORT_SYMBOL(_ZNK7MSQueue10class_nameEv);
100735 +extern char _ZNK7MSQueue10port_countEv[];
100736 +EXPORT_SYMBOL(_ZNK7MSQueue10port_countEv);
100737 +extern char _ZNK7MSQueue10processingEv[];
100738 +EXPORT_SYMBOL(_ZNK7MSQueue10processingEv);
100739 +extern char _ZTV7MSQueue[];
100740 +EXPORT_SYMBOL(_ZTV7MSQueue);
100741 +extern char _ZN12StaticNameDB5queryERK6StringPvi[];
100742 +EXPORT_SYMBOL(_ZN12StaticNameDB5queryERK6StringPvi);
100743 +extern char _ZN12StaticNameDB7revfindEPKvi[];
100744 +EXPORT_SYMBOL(_ZN12StaticNameDB7revfindEPKvi);
100745 +extern char _ZN12StaticNameDBD0Ev[];
100746 +EXPORT_SYMBOL(_ZN12StaticNameDBD0Ev);
100747 +extern char _ZN12StaticNameDBD1Ev[];
100748 +EXPORT_SYMBOL(_ZN12StaticNameDBD1Ev);
100749 +extern char _ZN13DynamicNameDB4findERK6Stringb[];
100750 +EXPORT_SYMBOL(_ZN13DynamicNameDB4findERK6Stringb);
100751 +extern char _ZN13DynamicNameDB4sortEv[];
100752 +EXPORT_SYMBOL(_ZN13DynamicNameDB4sortEv);
100753 +extern char _ZN13DynamicNameDB5queryERK6StringPvi[];
100754 +EXPORT_SYMBOL(_ZN13DynamicNameDB5queryERK6StringPvi);
100755 +extern char _ZN13DynamicNameDB6defineERK6StringPKvi[];
100756 +EXPORT_SYMBOL(_ZN13DynamicNameDB6defineERK6StringPKvi);
100757 +extern char _ZN13DynamicNameDB7revfindEPKvi[];
100758 +EXPORT_SYMBOL(_ZN13DynamicNameDB7revfindEPKvi);
100759 +extern char _ZN13DynamicNameDBD0Ev[];
100760 +EXPORT_SYMBOL(_ZN13DynamicNameDBD0Ev);
100761 +extern char _ZN13DynamicNameDBD1Ev[];
100762 +EXPORT_SYMBOL(_ZN13DynamicNameDBD1Ev);
100763 +extern char _ZN6NameDB6defineERK6StringPKvi[];
100764 +EXPORT_SYMBOL(_ZN6NameDB6defineERK6StringPKvi);
100765 +extern char _ZN6NameDB7revfindEPKvi[];
100766 +EXPORT_SYMBOL(_ZN6NameDB7revfindEPKvi);
100767 +extern char _ZN6NameDBD0Ev[];
100768 +EXPORT_SYMBOL(_ZN6NameDBD0Ev);
100769 +extern char _ZN6NameDBD1Ev[];
100770 +EXPORT_SYMBOL(_ZN6NameDBD1Ev);
100771 +extern char _ZN8NameInfo14static_cleanupEv[];
100772 +EXPORT_SYMBOL(_ZN8NameInfo14static_cleanupEv);
100773 +extern char _ZN8NameInfo17static_initializeEv[];
100774 +EXPORT_SYMBOL(_ZN8NameInfo17static_initializeEv);
100775 +extern char _ZN8NameInfo5getdbEjPK7Elementib[];
100776 +EXPORT_SYMBOL(_ZN8NameInfo5getdbEjPK7Elementib);
100777 +extern char _ZN8NameInfo5queryEjPK7ElementRK6StringPvi[];
100778 +EXPORT_SYMBOL(_ZN8NameInfo5queryEjPK7ElementRK6StringPvi);
100779 +extern char _ZN8NameInfo6namedbEjiRK6StringP6NameDB[];
100780 +EXPORT_SYMBOL(_ZN8NameInfo6namedbEjiRK6StringP6NameDB);
100781 +extern char _ZN8NameInfo8removedbEP6NameDB[];
100782 +EXPORT_SYMBOL(_ZN8NameInfo8removedbEP6NameDB);
100783 +extern char _ZN8NameInfo8revqueryEjPK7ElementPKvi[];
100784 +EXPORT_SYMBOL(_ZN8NameInfo8revqueryEjPK7ElementPKvi);
100785 +extern char _ZN8NameInfo9installdbEP6NameDBPK7Element[];
100786 +EXPORT_SYMBOL(_ZN8NameInfo9installdbEP6NameDBPK7Element);
100787 +extern char _ZN8NameInfo9query_intEjPK7ElementRK6StringPi[];
100788 +EXPORT_SYMBOL(_ZN8NameInfo9query_intEjPK7ElementRK6StringPi);
100789 +extern char _ZN8NameInfo9query_intEjPK7ElementRK6StringPj[];
100790 +EXPORT_SYMBOL(_ZN8NameInfo9query_intEjPK7ElementRK6StringPj);
100791 +extern char _ZN8NameInfoC1Ev[];
100792 +EXPORT_SYMBOL(_ZN8NameInfoC1Ev);
100793 +extern char _ZN8NameInfoC2Ev[];
100794 +EXPORT_SYMBOL(_ZN8NameInfoC2Ev);
100795 +extern char _ZN8NameInfoD1Ev[];
100796 +EXPORT_SYMBOL(_ZN8NameInfoD1Ev);
100797 +extern char _ZN8NameInfoD2Ev[];
100798 +EXPORT_SYMBOL(_ZN8NameInfoD2Ev);
100799 +extern char _ZTV12StaticNameDB[];
100800 +EXPORT_SYMBOL(_ZTV12StaticNameDB);
100801 +extern char _ZTV13DynamicNameDB[];
100802 +EXPORT_SYMBOL(_ZTV13DynamicNameDB);
100803 +extern char _ZTV6NameDB[];
100804 +EXPORT_SYMBOL(_ZTV6NameDB);
100805 +extern char _ZN14ActiveNotifier12add_listenerEP4Task[];
100806 +EXPORT_SYMBOL(_ZN14ActiveNotifier12add_listenerEP4Task);
100807 +extern char _ZN14ActiveNotifier15listener_changeEPvib[];
100808 +EXPORT_SYMBOL(_ZN14ActiveNotifier15listener_changeEPvib);
100809 +extern char _ZN14ActiveNotifier15remove_listenerEP4Task[];
100810 +EXPORT_SYMBOL(_ZN14ActiveNotifier15remove_listenerEP4Task);
100811 +extern char _ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal[];
100812 +EXPORT_SYMBOL(_ZN14ActiveNotifier20add_dependent_signalEP14NotifierSignal);
100813 +extern char _ZN14ActiveNotifierC1EN8Notifier8SearchOpE[];
100814 +EXPORT_SYMBOL(_ZN14ActiveNotifierC1EN8Notifier8SearchOpE);
100815 +extern char _ZN14ActiveNotifierC2EN8Notifier8SearchOpE[];
100816 +EXPORT_SYMBOL(_ZN14ActiveNotifierC2EN8Notifier8SearchOpE);
100817 +extern char _ZN14ActiveNotifierD0Ev[];
100818 +EXPORT_SYMBOL(_ZN14ActiveNotifierD0Ev);
100819 +extern char _ZN14ActiveNotifierD1Ev[];
100820 +EXPORT_SYMBOL(_ZN14ActiveNotifierD1Ev);
100821 +extern char _ZN14ActiveNotifierD2Ev[];
100822 +EXPORT_SYMBOL(_ZN14ActiveNotifierD2Ev);
100823 +extern char _ZN14NotifierSignal12static_valueE[];
100824 +EXPORT_SYMBOL(_ZN14NotifierSignal12static_valueE);
100825 +extern char _ZN14NotifierSignal17static_initializeEv[];
100826 +EXPORT_SYMBOL(_ZN14NotifierSignal17static_initializeEv);
100827 +extern char _ZN14NotifierSignalpLERKS_[];
100828 +EXPORT_SYMBOL(_ZN14NotifierSignalpLERKS_);
100829 +extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE[];
100830 +EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilter11check_matchEP7ElementiN13ElementFilter8PortTypeE);
100831 +extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc[];
100832 +EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC1EPKc);
100833 +extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc[];
100834 +EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterC2EPKc);
100835 +extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev[];
100836 +EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD0Ev);
100837 +extern char _ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev[];
100838 +EXPORT_SYMBOL(_ZN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterD1Ev);
100839 +extern char _ZN8Notifier10initializeEP6Router[];
100840 +EXPORT_SYMBOL(_ZN8Notifier10initializeEP6Router);
100841 +extern char _ZN8Notifier12add_listenerEP4Task[];
100842 +EXPORT_SYMBOL(_ZN8Notifier12add_listenerEP4Task);
100843 +extern char _ZN8Notifier13FULL_NOTIFIERE[];
100844 +EXPORT_SYMBOL(_ZN8Notifier13FULL_NOTIFIERE);
100845 +extern char _ZN8Notifier14EMPTY_NOTIFIERE[];
100846 +EXPORT_SYMBOL(_ZN8Notifier14EMPTY_NOTIFIERE);
100847 +extern char _ZN8Notifier15remove_listenerEP4Task[];
100848 +EXPORT_SYMBOL(_ZN8Notifier15remove_listenerEP4Task);
100849 +extern char _ZN8Notifier20add_dependent_signalEP14NotifierSignal[];
100850 +EXPORT_SYMBOL(_ZN8Notifier20add_dependent_signalEP14NotifierSignal);
100851 +extern char _ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_[];
100852 +EXPORT_SYMBOL(_ZN8Notifier21upstream_empty_signalEP7ElementiP4TaskPS_);
100853 +extern char _ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_[];
100854 +EXPORT_SYMBOL(_ZN8Notifier22downstream_full_signalEP7ElementiP4TaskPS_);
100855 +extern char _ZN8NotifierD0Ev[];
100856 +EXPORT_SYMBOL(_ZN8NotifierD0Ev);
100857 +extern char _ZN8NotifierD1Ev[];
100858 +EXPORT_SYMBOL(_ZN8NotifierD1Ev);
100859 +extern char _ZN8NotifierD2Ev[];
100860 +EXPORT_SYMBOL(_ZN8NotifierD2Ev);
100861 +extern char _ZNK14ActiveNotifier9listenersER6VectorIP4TaskE[];
100862 +EXPORT_SYMBOL(_ZNK14ActiveNotifier9listenersER6VectorIP4TaskE);
100863 +extern char _ZNK14NotifierSignal7unparseEv[];
100864 +EXPORT_SYMBOL(_ZNK14NotifierSignal7unparseEv);
100865 +extern char _ZTV14ActiveNotifier[];
100866 +EXPORT_SYMBOL(_ZTV14ActiveNotifier);
100867 +extern char _ZTV8Notifier[];
100868 +EXPORT_SYMBOL(_ZTV8Notifier);
100869 +extern char _ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE[];
100870 +EXPORT_SYMBOL(_ZTVN45_GLOBAL__N__ZN14NotifierSignal12static_valueE21NotifierElementFilterE);
100871 +extern char _ZN13NotifierQueue4castEPKc[];
100872 +EXPORT_SYMBOL(_ZN13NotifierQueue4castEPKc);
100873 +extern char _ZN13NotifierQueue4pullEi[];
100874 +EXPORT_SYMBOL(_ZN13NotifierQueue4pullEi);
100875 +extern char _ZN13NotifierQueue4pushEiP6Packet[];
100876 +EXPORT_SYMBOL(_ZN13NotifierQueue4pushEiP6Packet);
100877 +extern char _ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler[];
100878 +EXPORT_SYMBOL(_ZN13NotifierQueue9configureER6VectorI6StringEP12ErrorHandler);
100879 +extern char _ZN13NotifierQueueC1Ev[];
100880 +EXPORT_SYMBOL(_ZN13NotifierQueueC1Ev);
100881 +extern char _ZN13NotifierQueueC2Ev[];
100882 +EXPORT_SYMBOL(_ZN13NotifierQueueC2Ev);
100883 +extern char _ZN13NotifierQueueD0Ev[];
100884 +EXPORT_SYMBOL(_ZN13NotifierQueueD0Ev);
100885 +extern char _ZN13NotifierQueueD1Ev[];
100886 +EXPORT_SYMBOL(_ZN13NotifierQueueD1Ev);
100887 +extern char _ZN13NotifierQueueD2Ev[];
100888 +EXPORT_SYMBOL(_ZN13NotifierQueueD2Ev);
100889 +extern char _ZNK13NotifierQueue10class_nameEv[];
100890 +EXPORT_SYMBOL(_ZNK13NotifierQueue10class_nameEv);
100891 +extern char _ZTV13NotifierQueue[];
100892 +EXPORT_SYMBOL(_ZTV13NotifierQueue);
100893 +extern char _ZN11NullElement13simple_actionEP6Packet[];
100894 +EXPORT_SYMBOL(_ZN11NullElement13simple_actionEP6Packet);
100895 +extern char _ZN11NullElementC1Ev[];
100896 +EXPORT_SYMBOL(_ZN11NullElementC1Ev);
100897 +extern char _ZN11NullElementC2Ev[];
100898 +EXPORT_SYMBOL(_ZN11NullElementC2Ev);
100899 +extern char _ZN11NullElementD0Ev[];
100900 +EXPORT_SYMBOL(_ZN11NullElementD0Ev);
100901 +extern char _ZN11NullElementD1Ev[];
100902 +EXPORT_SYMBOL(_ZN11NullElementD1Ev);
100903 +extern char _ZN11NullElementD2Ev[];
100904 +EXPORT_SYMBOL(_ZN11NullElementD2Ev);
100905 +extern char _ZN15PullNullElement4pullEi[];
100906 +EXPORT_SYMBOL(_ZN15PullNullElement4pullEi);
100907 +extern char _ZN15PullNullElementC1Ev[];
100908 +EXPORT_SYMBOL(_ZN15PullNullElementC1Ev);
100909 +extern char _ZN15PullNullElementC2Ev[];
100910 +EXPORT_SYMBOL(_ZN15PullNullElementC2Ev);
100911 +extern char _ZN15PullNullElementD0Ev[];
100912 +EXPORT_SYMBOL(_ZN15PullNullElementD0Ev);
100913 +extern char _ZN15PullNullElementD1Ev[];
100914 +EXPORT_SYMBOL(_ZN15PullNullElementD1Ev);
100915 +extern char _ZN15PullNullElementD2Ev[];
100916 +EXPORT_SYMBOL(_ZN15PullNullElementD2Ev);
100917 +extern char _ZN15PushNullElement4pushEiP6Packet[];
100918 +EXPORT_SYMBOL(_ZN15PushNullElement4pushEiP6Packet);
100919 +extern char _ZN15PushNullElementC1Ev[];
100920 +EXPORT_SYMBOL(_ZN15PushNullElementC1Ev);
100921 +extern char _ZN15PushNullElementC2Ev[];
100922 +EXPORT_SYMBOL(_ZN15PushNullElementC2Ev);
100923 +extern char _ZN15PushNullElementD0Ev[];
100924 +EXPORT_SYMBOL(_ZN15PushNullElementD0Ev);
100925 +extern char _ZN15PushNullElementD1Ev[];
100926 +EXPORT_SYMBOL(_ZN15PushNullElementD1Ev);
100927 +extern char _ZN15PushNullElementD2Ev[];
100928 +EXPORT_SYMBOL(_ZN15PushNullElementD2Ev);
100929 +extern char _ZNK11NullElement10class_nameEv[];
100930 +EXPORT_SYMBOL(_ZNK11NullElement10class_nameEv);
100931 +extern char _ZNK11NullElement10port_countEv[];
100932 +EXPORT_SYMBOL(_ZNK11NullElement10port_countEv);
100933 +extern char _ZNK11NullElement10processingEv[];
100934 +EXPORT_SYMBOL(_ZNK11NullElement10processingEv);
100935 +extern char _ZNK15PullNullElement10class_nameEv[];
100936 +EXPORT_SYMBOL(_ZNK15PullNullElement10class_nameEv);
100937 +extern char _ZNK15PullNullElement10port_countEv[];
100938 +EXPORT_SYMBOL(_ZNK15PullNullElement10port_countEv);
100939 +extern char _ZNK15PullNullElement10processingEv[];
100940 +EXPORT_SYMBOL(_ZNK15PullNullElement10processingEv);
100941 +extern char _ZNK15PushNullElement10class_nameEv[];
100942 +EXPORT_SYMBOL(_ZNK15PushNullElement10class_nameEv);
100943 +extern char _ZNK15PushNullElement10port_countEv[];
100944 +EXPORT_SYMBOL(_ZNK15PushNullElement10port_countEv);
100945 +extern char _ZNK15PushNullElement10processingEv[];
100946 +EXPORT_SYMBOL(_ZNK15PushNullElement10processingEv);
100947 +extern char _ZTV11NullElement[];
100948 +EXPORT_SYMBOL(_ZTV11NullElement);
100949 +extern char _ZTV15PullNullElement[];
100950 +EXPORT_SYMBOL(_ZTV15PullNullElement);
100951 +extern char _ZTV15PushNullElement[];
100952 +EXPORT_SYMBOL(_ZTV15PushNullElement);
100953 +extern char _ZN6Packet10shift_dataEib[];
100954 +EXPORT_SYMBOL(_ZN6Packet10shift_dataEib);
100955 +extern char _ZN6Packet13expensive_putEj[];
100956 +EXPORT_SYMBOL(_ZN6Packet13expensive_putEj);
100957 +extern char _ZN6Packet14expensive_pushEj[];
100958 +EXPORT_SYMBOL(_ZN6Packet14expensive_pushEj);
100959 +extern char _ZN6Packet19expensive_uniqueifyEiib[];
100960 +EXPORT_SYMBOL(_ZN6Packet19expensive_uniqueifyEiib);
100961 +extern char _ZN6Packet4makeEjPKhjj[];
100962 +EXPORT_SYMBOL(_ZN6Packet4makeEjPKhjj);
100963 +extern char _ZN6Packet5cloneEv[];
100964 +EXPORT_SYMBOL(_ZN6Packet5cloneEv);
100965 +extern char _ZN6PacketC1Ev[];
100966 +EXPORT_SYMBOL(_ZN6PacketC1Ev);
100967 +extern char _ZN6PacketC2Ev[];
100968 +EXPORT_SYMBOL(_ZN6PacketC2Ev);
100969 +extern char _ZN6PacketD1Ev[];
100970 +EXPORT_SYMBOL(_ZN6PacketD1Ev);
100971 +extern char _ZN6PacketD2Ev[];
100972 +EXPORT_SYMBOL(_ZN6PacketD2Ev);
100973 +extern char _ZN5Paint12add_handlersEv[];
100974 +EXPORT_SYMBOL(_ZN5Paint12add_handlersEv);
100975 +extern char _ZN5Paint13simple_actionEP6Packet[];
100976 +EXPORT_SYMBOL(_ZN5Paint13simple_actionEP6Packet);
100977 +extern char _ZN5Paint18color_read_handlerEP7ElementPv[];
100978 +EXPORT_SYMBOL(_ZN5Paint18color_read_handlerEP7ElementPv);
100979 +extern char _ZN5Paint9configureER6VectorI6StringEP12ErrorHandler[];
100980 +EXPORT_SYMBOL(_ZN5Paint9configureER6VectorI6StringEP12ErrorHandler);
100981 +extern char _ZN5PaintC1Ev[];
100982 +EXPORT_SYMBOL(_ZN5PaintC1Ev);
100983 +extern char _ZN5PaintC2Ev[];
100984 +EXPORT_SYMBOL(_ZN5PaintC2Ev);
100985 +extern char _ZN5PaintD0Ev[];
100986 +EXPORT_SYMBOL(_ZN5PaintD0Ev);
100987 +extern char _ZN5PaintD1Ev[];
100988 +EXPORT_SYMBOL(_ZN5PaintD1Ev);
100989 +extern char _ZN5PaintD2Ev[];
100990 +EXPORT_SYMBOL(_ZN5PaintD2Ev);
100991 +extern char _ZNK5Paint10class_nameEv[];
100992 +EXPORT_SYMBOL(_ZNK5Paint10class_nameEv);
100993 +extern char _ZNK5Paint10port_countEv[];
100994 +EXPORT_SYMBOL(_ZNK5Paint10port_countEv);
100995 +extern char _ZNK5Paint10processingEv[];
100996 +EXPORT_SYMBOL(_ZNK5Paint10processingEv);
100997 +extern char _ZNK5Paint20can_live_reconfigureEv[];
100998 +EXPORT_SYMBOL(_ZNK5Paint20can_live_reconfigureEv);
100999 +extern char _ZTV5Paint[];
101000 +EXPORT_SYMBOL(_ZTV5Paint);
101001 +extern char _ZN11PaintSwitch4pushEiP6Packet[];
101002 +EXPORT_SYMBOL(_ZN11PaintSwitch4pushEiP6Packet);
101003 +extern char _ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler[];
101004 +EXPORT_SYMBOL(_ZN11PaintSwitch9configureER6VectorI6StringEP12ErrorHandler);
101005 +extern char _ZN11PaintSwitchC1Ev[];
101006 +EXPORT_SYMBOL(_ZN11PaintSwitchC1Ev);
101007 +extern char _ZN11PaintSwitchC2Ev[];
101008 +EXPORT_SYMBOL(_ZN11PaintSwitchC2Ev);
101009 +extern char _ZN11PaintSwitchD0Ev[];
101010 +EXPORT_SYMBOL(_ZN11PaintSwitchD0Ev);
101011 +extern char _ZN11PaintSwitchD1Ev[];
101012 +EXPORT_SYMBOL(_ZN11PaintSwitchD1Ev);
101013 +extern char _ZN11PaintSwitchD2Ev[];
101014 +EXPORT_SYMBOL(_ZN11PaintSwitchD2Ev);
101015 +extern char _ZNK11PaintSwitch10class_nameEv[];
101016 +EXPORT_SYMBOL(_ZNK11PaintSwitch10class_nameEv);
101017 +extern char _ZNK11PaintSwitch10port_countEv[];
101018 +EXPORT_SYMBOL(_ZNK11PaintSwitch10port_countEv);
101019 +extern char _ZNK11PaintSwitch10processingEv[];
101020 +EXPORT_SYMBOL(_ZNK11PaintSwitch10processingEv);
101021 +extern char _ZNK11PaintSwitch13configurationER6VectorI6StringE[];
101022 +EXPORT_SYMBOL(_ZNK11PaintSwitch13configurationER6VectorI6StringE);
101023 +extern char _ZNK11PaintSwitch20can_live_reconfigureEv[];
101024 +EXPORT_SYMBOL(_ZNK11PaintSwitch20can_live_reconfigureEv);
101025 +extern char _ZTV11PaintSwitch[];
101026 +EXPORT_SYMBOL(_ZTV11PaintSwitch);
101027 +extern char _ZN8PaintTee13simple_actionEP6Packet[];
101028 +EXPORT_SYMBOL(_ZN8PaintTee13simple_actionEP6Packet);
101029 +extern char _ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler[];
101030 +EXPORT_SYMBOL(_ZN8PaintTee9configureER6VectorI6StringEP12ErrorHandler);
101031 +extern char _ZN8PaintTeeC1Ev[];
101032 +EXPORT_SYMBOL(_ZN8PaintTeeC1Ev);
101033 +extern char _ZN8PaintTeeC2Ev[];
101034 +EXPORT_SYMBOL(_ZN8PaintTeeC2Ev);
101035 +extern char _ZN8PaintTeeD0Ev[];
101036 +EXPORT_SYMBOL(_ZN8PaintTeeD0Ev);
101037 +extern char _ZN8PaintTeeD1Ev[];
101038 +EXPORT_SYMBOL(_ZN8PaintTeeD1Ev);
101039 +extern char _ZN8PaintTeeD2Ev[];
101040 +EXPORT_SYMBOL(_ZN8PaintTeeD2Ev);
101041 +extern char _ZNK8PaintTee10class_nameEv[];
101042 +EXPORT_SYMBOL(_ZNK8PaintTee10class_nameEv);
101043 +extern char _ZNK8PaintTee10port_countEv[];
101044 +EXPORT_SYMBOL(_ZNK8PaintTee10port_countEv);
101045 +extern char _ZNK8PaintTee10processingEv[];
101046 +EXPORT_SYMBOL(_ZNK8PaintTee10processingEv);
101047 +extern char _ZTV8PaintTee[];
101048 +EXPORT_SYMBOL(_ZTV8PaintTee);
101049 +extern char _ZN14PerfCountAccum10initializeEP12ErrorHandler[];
101050 +EXPORT_SYMBOL(_ZN14PerfCountAccum10initializeEP12ErrorHandler);
101051 +extern char _ZN14PerfCountAccum12add_handlersEv[];
101052 +EXPORT_SYMBOL(_ZN14PerfCountAccum12add_handlersEv);
101053 +extern char _ZN14PerfCountAccum12read_handlerEP7ElementPv[];
101054 +EXPORT_SYMBOL(_ZN14PerfCountAccum12read_handlerEP7ElementPv);
101055 +extern char _ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler[];
101056 +EXPORT_SYMBOL(_ZN14PerfCountAccum13reset_handlerERK6StringP7ElementPvP12ErrorHandler);
101057 +extern char _ZN14PerfCountAccum4castEPKc[];
101058 +EXPORT_SYMBOL(_ZN14PerfCountAccum4castEPKc);
101059 +extern char _ZN14PerfCountAccum4pullEi[];
101060 +EXPORT_SYMBOL(_ZN14PerfCountAccum4pullEi);
101061 +extern char _ZN14PerfCountAccum4pushEiP6Packet[];
101062 +EXPORT_SYMBOL(_ZN14PerfCountAccum4pushEiP6Packet);
101063 +extern char _ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler[];
101064 +EXPORT_SYMBOL(_ZN14PerfCountAccum9configureER6VectorI6StringEP12ErrorHandler);
101065 +extern char _ZN14PerfCountAccumC1Ev[];
101066 +EXPORT_SYMBOL(_ZN14PerfCountAccumC1Ev);
101067 +extern char _ZN14PerfCountAccumC2Ev[];
101068 +EXPORT_SYMBOL(_ZN14PerfCountAccumC2Ev);
101069 +extern char _ZN14PerfCountAccumD0Ev[];
101070 +EXPORT_SYMBOL(_ZN14PerfCountAccumD0Ev);
101071 +extern char _ZN14PerfCountAccumD1Ev[];
101072 +EXPORT_SYMBOL(_ZN14PerfCountAccumD1Ev);
101073 +extern char _ZN14PerfCountAccumD2Ev[];
101074 +EXPORT_SYMBOL(_ZN14PerfCountAccumD2Ev);
101075 +extern char _ZNK14PerfCountAccum10class_nameEv[];
101076 +EXPORT_SYMBOL(_ZNK14PerfCountAccum10class_nameEv);
101077 +extern char _ZNK14PerfCountAccum10port_countEv[];
101078 +EXPORT_SYMBOL(_ZNK14PerfCountAccum10port_countEv);
101079 +extern char _ZNK14PerfCountAccum10processingEv[];
101080 +EXPORT_SYMBOL(_ZNK14PerfCountAccum10processingEv);
101081 +extern char _ZTV14PerfCountAccum[];
101082 +EXPORT_SYMBOL(_ZTV14PerfCountAccum);
101083 +extern char _ZN13PerfCountInfo4castEPKc[];
101084 +EXPORT_SYMBOL(_ZN13PerfCountInfo4castEPKc);
101085 +extern char _ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler[];
101086 +EXPORT_SYMBOL(_ZN13PerfCountInfo9configureER6VectorI6StringEP12ErrorHandler);
101087 +extern char _ZN13PerfCountInfoC1Ev[];
101088 +EXPORT_SYMBOL(_ZN13PerfCountInfoC1Ev);
101089 +extern char _ZN13PerfCountInfoC2Ev[];
101090 +EXPORT_SYMBOL(_ZN13PerfCountInfoC2Ev);
101091 +extern char _ZN13PerfCountInfoD0Ev[];
101092 +EXPORT_SYMBOL(_ZN13PerfCountInfoD0Ev);
101093 +extern char _ZN13PerfCountInfoD1Ev[];
101094 +EXPORT_SYMBOL(_ZN13PerfCountInfoD1Ev);
101095 +extern char _ZN13PerfCountInfoD2Ev[];
101096 +EXPORT_SYMBOL(_ZN13PerfCountInfoD2Ev);
101097 +extern char _ZNK13PerfCountInfo10class_nameEv[];
101098 +EXPORT_SYMBOL(_ZNK13PerfCountInfo10class_nameEv);
101099 +extern char _ZNK13PerfCountInfo15configure_phaseEv[];
101100 +EXPORT_SYMBOL(_ZNK13PerfCountInfo15configure_phaseEv);
101101 +extern char _ZTV13PerfCountInfo[];
101102 +EXPORT_SYMBOL(_ZTV13PerfCountInfo);
101103 +extern char _ZN13PerfCountUser10initializeEP12ErrorHandler[];
101104 +EXPORT_SYMBOL(_ZN13PerfCountUser10initializeEP12ErrorHandler);
101105 +extern char _ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri[];
101106 +EXPORT_SYMBOL(_ZN13PerfCountUser7prepareERK6StringP12ErrorHandleri);
101107 +extern char _ZN13PerfCountUserC1Ev[];
101108 +EXPORT_SYMBOL(_ZN13PerfCountUserC1Ev);
101109 +extern char _ZN13PerfCountUserC2Ev[];
101110 +EXPORT_SYMBOL(_ZN13PerfCountUserC2Ev);
101111 +extern char _ZN13PerfCountUserD0Ev[];
101112 +EXPORT_SYMBOL(_ZN13PerfCountUserD0Ev);
101113 +extern char _ZN13PerfCountUserD1Ev[];
101114 +EXPORT_SYMBOL(_ZN13PerfCountUserD1Ev);
101115 +extern char _ZN13PerfCountUserD2Ev[];
101116 +EXPORT_SYMBOL(_ZN13PerfCountUserD2Ev);
101117 +extern char _ZTV13PerfCountUser[];
101118 +EXPORT_SYMBOL(_ZTV13PerfCountUser);
101119 +extern char _ZN12PokeHandlers10initializeEP12ErrorHandler[];
101120 +EXPORT_SYMBOL(_ZN12PokeHandlers10initializeEP12ErrorHandler);
101121 +extern char _ZN12PokeHandlers10read_paramEP7ElementPv[];
101122 +EXPORT_SYMBOL(_ZN12PokeHandlers10read_paramEP7ElementPv);
101123 +extern char _ZN12PokeHandlers10timer_hookEP5TimerPv[];
101124 +EXPORT_SYMBOL(_ZN12PokeHandlers10timer_hookEP5TimerPv);
101125 +extern char _ZN12PokeHandlers11LOOP_MARKERE[];
101126 +EXPORT_SYMBOL(_ZN12PokeHandlers11LOOP_MARKERE);
101127 +extern char _ZN12PokeHandlers11STOP_MARKERE[];
101128 +EXPORT_SYMBOL(_ZN12PokeHandlers11STOP_MARKERE);
101129 +extern char _ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler[];
101130 +EXPORT_SYMBOL(_ZN12PokeHandlers11write_paramERK6StringP7ElementPvP12ErrorHandler);
101131 +extern char _ZN12PokeHandlers12PAUSE_MARKERE[];
101132 +EXPORT_SYMBOL(_ZN12PokeHandlers12PAUSE_MARKERE);
101133 +extern char _ZN12PokeHandlers12add_handlersEv[];
101134 +EXPORT_SYMBOL(_ZN12PokeHandlers12add_handlersEv);
101135 +extern char _ZN12PokeHandlers3addEP7ElementRK6StringS4_i[];
101136 +EXPORT_SYMBOL(_ZN12PokeHandlers3addEP7ElementRK6StringS4_i);
101137 +extern char _ZN12PokeHandlers7unpauseEv[];
101138 +EXPORT_SYMBOL(_ZN12PokeHandlers7unpauseEv);
101139 +extern char _ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler[];
101140 +EXPORT_SYMBOL(_ZN12PokeHandlers9configureER6VectorI6StringEP12ErrorHandler);
101141 +extern char _ZN12PokeHandlersC1Ev[];
101142 +EXPORT_SYMBOL(_ZN12PokeHandlersC1Ev);
101143 +extern char _ZN12PokeHandlersC2Ev[];
101144 +EXPORT_SYMBOL(_ZN12PokeHandlersC2Ev);
101145 +extern char _ZN12PokeHandlersD0Ev[];
101146 +EXPORT_SYMBOL(_ZN12PokeHandlersD0Ev);
101147 +extern char _ZN12PokeHandlersD1Ev[];
101148 +EXPORT_SYMBOL(_ZN12PokeHandlersD1Ev);
101149 +extern char _ZN12PokeHandlersD2Ev[];
101150 +EXPORT_SYMBOL(_ZN12PokeHandlersD2Ev);
101151 +extern char _ZNK12PokeHandlers10class_nameEv[];
101152 +EXPORT_SYMBOL(_ZNK12PokeHandlers10class_nameEv);
101153 +extern char _ZNK12PokeHandlers20can_live_reconfigureEv[];
101154 +EXPORT_SYMBOL(_ZNK12PokeHandlers20can_live_reconfigureEv);
101155 +extern char _ZTV12PokeHandlers[];
101156 +EXPORT_SYMBOL(_ZTV12PokeHandlers);
101157 +extern char _ZN10PollDevice10initializeEP12ErrorHandler[];
101158 +EXPORT_SYMBOL(_ZN10PollDevice10initializeEP12ErrorHandler);
101159 +extern char _ZN10PollDevice12add_handlersEv[];
101160 +EXPORT_SYMBOL(_ZN10PollDevice12add_handlersEv);
101161 +extern char _ZN10PollDevice12reset_countsEv[];
101162 +EXPORT_SYMBOL(_ZN10PollDevice12reset_countsEv);
101163 +extern char _ZN10PollDevice13change_deviceEP10net_device[];
101164 +EXPORT_SYMBOL(_ZN10PollDevice13change_deviceEP10net_device);
101165 +extern char _ZN10PollDevice14static_cleanupEv[];
101166 +EXPORT_SYMBOL(_ZN10PollDevice14static_cleanupEv);
101167 +extern char _ZN10PollDevice17static_initializeEv[];
101168 +EXPORT_SYMBOL(_ZN10PollDevice17static_initializeEv);
101169 +extern char _ZN10PollDevice7cleanupEN7Element12CleanupStageE[];
101170 +EXPORT_SYMBOL(_ZN10PollDevice7cleanupEN7Element12CleanupStageE);
101171 +extern char _ZN10PollDevice8run_taskEP4Task[];
101172 +EXPORT_SYMBOL(_ZN10PollDevice8run_taskEP4Task);
101173 +extern char _ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler[];
101174 +EXPORT_SYMBOL(_ZN10PollDevice9configureER6VectorI6StringEP12ErrorHandler);
101175 +extern char _ZN10PollDeviceC1Ev[];
101176 +EXPORT_SYMBOL(_ZN10PollDeviceC1Ev);
101177 +extern char _ZN10PollDeviceC2Ev[];
101178 +EXPORT_SYMBOL(_ZN10PollDeviceC2Ev);
101179 +extern char _ZN10PollDeviceD0Ev[];
101180 +EXPORT_SYMBOL(_ZN10PollDeviceD0Ev);
101181 +extern char _ZN10PollDeviceD1Ev[];
101182 +EXPORT_SYMBOL(_ZN10PollDeviceD1Ev);
101183 +extern char _ZN10PollDeviceD2Ev[];
101184 +EXPORT_SYMBOL(_ZN10PollDeviceD2Ev);
101185 +extern char _ZNK10PollDevice10class_nameEv[];
101186 +EXPORT_SYMBOL(_ZNK10PollDevice10class_nameEv);
101187 +extern char _ZNK10PollDevice10port_countEv[];
101188 +EXPORT_SYMBOL(_ZNK10PollDevice10port_countEv);
101189 +extern char _ZNK10PollDevice10processingEv[];
101190 +EXPORT_SYMBOL(_ZNK10PollDevice10processingEv);
101191 +extern char _ZNK10PollDevice15configure_phaseEv[];
101192 +EXPORT_SYMBOL(_ZNK10PollDevice15configure_phaseEv);
101193 +extern char _ZTV10PollDevice[];
101194 +EXPORT_SYMBOL(_ZTV10PollDevice);
101195 +extern char _ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler[];
101196 +EXPORT_SYMBOL(_ZN8PortInfo9configureER6VectorI6StringEP12ErrorHandler);
101197 +extern char _ZN8PortInfoC1Ev[];
101198 +EXPORT_SYMBOL(_ZN8PortInfoC1Ev);
101199 +extern char _ZN8PortInfoC2Ev[];
101200 +EXPORT_SYMBOL(_ZN8PortInfoC2Ev);
101201 +extern char _ZN8PortInfoD0Ev[];
101202 +EXPORT_SYMBOL(_ZN8PortInfoD0Ev);
101203 +extern char _ZN8PortInfoD1Ev[];
101204 +EXPORT_SYMBOL(_ZN8PortInfoD1Ev);
101205 +extern char _ZN8PortInfoD2Ev[];
101206 +EXPORT_SYMBOL(_ZN8PortInfoD2Ev);
101207 +extern char _ZNK8PortInfo10class_nameEv[];
101208 +EXPORT_SYMBOL(_ZNK8PortInfo10class_nameEv);
101209 +extern char _ZNK8PortInfo15configure_phaseEv[];
101210 +EXPORT_SYMBOL(_ZNK8PortInfo15configure_phaseEv);
101211 +extern char _ZTV8PortInfo[];
101212 +EXPORT_SYMBOL(_ZTV8PortInfo);
101213 +extern char _ZN5Print13simple_actionEP6Packet[];
101214 +EXPORT_SYMBOL(_ZN5Print13simple_actionEP6Packet);
101215 +extern char _ZN5Print9configureER6VectorI6StringEP12ErrorHandler[];
101216 +EXPORT_SYMBOL(_ZN5Print9configureER6VectorI6StringEP12ErrorHandler);
101217 +extern char _ZN5PrintC1Ev[];
101218 +EXPORT_SYMBOL(_ZN5PrintC1Ev);
101219 +extern char _ZN5PrintC2Ev[];
101220 +EXPORT_SYMBOL(_ZN5PrintC2Ev);
101221 +extern char _ZN5PrintD0Ev[];
101222 +EXPORT_SYMBOL(_ZN5PrintD0Ev);
101223 +extern char _ZN5PrintD1Ev[];
101224 +EXPORT_SYMBOL(_ZN5PrintD1Ev);
101225 +extern char _ZN5PrintD2Ev[];
101226 +EXPORT_SYMBOL(_ZN5PrintD2Ev);
101227 +extern char _ZNK5Print10class_nameEv[];
101228 +EXPORT_SYMBOL(_ZNK5Print10class_nameEv);
101229 +extern char _ZNK5Print10port_countEv[];
101230 +EXPORT_SYMBOL(_ZNK5Print10port_countEv);
101231 +extern char _ZNK5Print10processingEv[];
101232 +EXPORT_SYMBOL(_ZNK5Print10processingEv);
101233 +extern char _ZNK5Print20can_live_reconfigureEv[];
101234 +EXPORT_SYMBOL(_ZNK5Print20can_live_reconfigureEv);
101235 +extern char _ZTV5Print[];
101236 +EXPORT_SYMBOL(_ZTV5Print);
101237 +extern char _ZN9PrioSched10initializeEP12ErrorHandler[];
101238 +EXPORT_SYMBOL(_ZN9PrioSched10initializeEP12ErrorHandler);
101239 +extern char _ZN9PrioSched4pullEi[];
101240 +EXPORT_SYMBOL(_ZN9PrioSched4pullEi);
101241 +extern char _ZN9PrioSched7cleanupEN7Element12CleanupStageE[];
101242 +EXPORT_SYMBOL(_ZN9PrioSched7cleanupEN7Element12CleanupStageE);
101243 +extern char _ZN9PrioSchedC1Ev[];
101244 +EXPORT_SYMBOL(_ZN9PrioSchedC1Ev);
101245 +extern char _ZN9PrioSchedC2Ev[];
101246 +EXPORT_SYMBOL(_ZN9PrioSchedC2Ev);
101247 +extern char _ZN9PrioSchedD0Ev[];
101248 +EXPORT_SYMBOL(_ZN9PrioSchedD0Ev);
101249 +extern char _ZN9PrioSchedD1Ev[];
101250 +EXPORT_SYMBOL(_ZN9PrioSchedD1Ev);
101251 +extern char _ZN9PrioSchedD2Ev[];
101252 +EXPORT_SYMBOL(_ZN9PrioSchedD2Ev);
101253 +extern char _ZNK9PrioSched10class_nameEv[];
101254 +EXPORT_SYMBOL(_ZNK9PrioSched10class_nameEv);
101255 +extern char _ZNK9PrioSched10port_countEv[];
101256 +EXPORT_SYMBOL(_ZNK9PrioSched10port_countEv);
101257 +extern char _ZNK9PrioSched10processingEv[];
101258 +EXPORT_SYMBOL(_ZNK9PrioSched10processingEv);
101259 +extern char _ZTV9PrioSched[];
101260 +EXPORT_SYMBOL(_ZTV9PrioSched);
101261 +extern char _ZN10PullSwitch10read_paramEP7ElementPv[];
101262 +EXPORT_SYMBOL(_ZN10PullSwitch10read_paramEP7ElementPv);
101263 +extern char _ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler[];
101264 +EXPORT_SYMBOL(_ZN10PullSwitch11write_paramERK6StringP7ElementPvP12ErrorHandler);
101265 +extern char _ZN10PullSwitch12add_handlersEv[];
101266 +EXPORT_SYMBOL(_ZN10PullSwitch12add_handlersEv);
101267 +extern char _ZN10PullSwitch4pullEi[];
101268 +EXPORT_SYMBOL(_ZN10PullSwitch4pullEi);
101269 +extern char _ZN10PullSwitch5llrpcEjPv[];
101270 +EXPORT_SYMBOL(_ZN10PullSwitch5llrpcEjPv);
101271 +extern char _ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler[];
101272 +EXPORT_SYMBOL(_ZN10PullSwitch9configureER6VectorI6StringEP12ErrorHandler);
101273 +extern char _ZN10PullSwitchC1Ev[];
101274 +EXPORT_SYMBOL(_ZN10PullSwitchC1Ev);
101275 +extern char _ZN10PullSwitchC2Ev[];
101276 +EXPORT_SYMBOL(_ZN10PullSwitchC2Ev);
101277 +extern char _ZN10PullSwitchD0Ev[];
101278 +EXPORT_SYMBOL(_ZN10PullSwitchD0Ev);
101279 +extern char _ZN10PullSwitchD1Ev[];
101280 +EXPORT_SYMBOL(_ZN10PullSwitchD1Ev);
101281 +extern char _ZN10PullSwitchD2Ev[];
101282 +EXPORT_SYMBOL(_ZN10PullSwitchD2Ev);
101283 +extern char _ZNK10PullSwitch10class_nameEv[];
101284 +EXPORT_SYMBOL(_ZNK10PullSwitch10class_nameEv);
101285 +extern char _ZNK10PullSwitch10port_countEv[];
101286 +EXPORT_SYMBOL(_ZNK10PullSwitch10port_countEv);
101287 +extern char _ZNK10PullSwitch10processingEv[];
101288 +EXPORT_SYMBOL(_ZNK10PullSwitch10processingEv);
101289 +extern char _ZNK10PullSwitch13configurationER6VectorI6StringE[];
101290 +EXPORT_SYMBOL(_ZNK10PullSwitch13configurationER6VectorI6StringE);
101291 +extern char _ZNK10PullSwitch20can_live_reconfigureEv[];
101292 +EXPORT_SYMBOL(_ZNK10PullSwitch20can_live_reconfigureEv);
101293 +extern char _ZTV10PullSwitch[];
101294 +EXPORT_SYMBOL(_ZTV10PullSwitch);
101295 +extern char _ZN11QuitWatcher10initializeEP12ErrorHandler[];
101296 +EXPORT_SYMBOL(_ZN11QuitWatcher10initializeEP12ErrorHandler);
101297 +extern char _ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler[];
101298 +EXPORT_SYMBOL(_ZN11QuitWatcher9configureER6VectorI6StringEP12ErrorHandler);
101299 +extern char _ZN11QuitWatcher9run_timerEP5Timer[];
101300 +EXPORT_SYMBOL(_ZN11QuitWatcher9run_timerEP5Timer);
101301 +extern char _ZN11QuitWatcherC1Ev[];
101302 +EXPORT_SYMBOL(_ZN11QuitWatcherC1Ev);
101303 +extern char _ZN11QuitWatcherC2Ev[];
101304 +EXPORT_SYMBOL(_ZN11QuitWatcherC2Ev);
101305 +extern char _ZN11QuitWatcherD0Ev[];
101306 +EXPORT_SYMBOL(_ZN11QuitWatcherD0Ev);
101307 +extern char _ZN11QuitWatcherD1Ev[];
101308 +EXPORT_SYMBOL(_ZN11QuitWatcherD1Ev);
101309 +extern char _ZN11QuitWatcherD2Ev[];
101310 +EXPORT_SYMBOL(_ZN11QuitWatcherD2Ev);
101311 +extern char _ZNK11QuitWatcher10class_nameEv[];
101312 +EXPORT_SYMBOL(_ZNK11QuitWatcher10class_nameEv);
101313 +extern char _ZTV11QuitWatcher[];
101314 +EXPORT_SYMBOL(_ZTV11QuitWatcher);
101315 +extern char _ZN13RadixIPLookup11dump_routesEv[];
101316 +EXPORT_SYMBOL(_ZN13RadixIPLookup11dump_routesEv);
101317 +extern char _ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[];
101318 +EXPORT_SYMBOL(_ZN13RadixIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler);
101319 +extern char _ZN13RadixIPLookup5Radix10free_radixEPS0_[];
101320 +EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix10free_radixEPS0_);
101321 +extern char _ZN13RadixIPLookup5Radix10make_radixEii[];
101322 +EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix10make_radixEii);
101323 +extern char _ZN13RadixIPLookup5Radix6changeEjjij[];
101324 +EXPORT_SYMBOL(_ZN13RadixIPLookup5Radix6changeEjjij);
101325 +extern char _ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE[];
101326 +EXPORT_SYMBOL(_ZN13RadixIPLookup7cleanupEN7Element12CleanupStageE);
101327 +extern char _ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[];
101328 +EXPORT_SYMBOL(_ZN13RadixIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler);
101329 +extern char _ZN13RadixIPLookupC1Ev[];
101330 +EXPORT_SYMBOL(_ZN13RadixIPLookupC1Ev);
101331 +extern char _ZN13RadixIPLookupC2Ev[];
101332 +EXPORT_SYMBOL(_ZN13RadixIPLookupC2Ev);
101333 +extern char _ZN13RadixIPLookupD0Ev[];
101334 +EXPORT_SYMBOL(_ZN13RadixIPLookupD0Ev);
101335 +extern char _ZN13RadixIPLookupD1Ev[];
101336 +EXPORT_SYMBOL(_ZN13RadixIPLookupD1Ev);
101337 +extern char _ZN13RadixIPLookupD2Ev[];
101338 +EXPORT_SYMBOL(_ZN13RadixIPLookupD2Ev);
101339 +extern char _ZN6VectorI7IPRouteE5eraseEPS0_S2_[];
101340 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteE5eraseEPS0_S2_);
101341 +extern char _ZNK13RadixIPLookup10class_nameEv[];
101342 +EXPORT_SYMBOL(_ZNK13RadixIPLookup10class_nameEv);
101343 +extern char _ZNK13RadixIPLookup10port_countEv[];
101344 +EXPORT_SYMBOL(_ZNK13RadixIPLookup10port_countEv);
101345 +extern char _ZNK13RadixIPLookup10processingEv[];
101346 +EXPORT_SYMBOL(_ZNK13RadixIPLookup10processingEv);
101347 +extern char _ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_[];
101348 +EXPORT_SYMBOL(_ZNK13RadixIPLookup12lookup_routeE9IPAddressRS0_);
101349 +extern char _ZTV13RadixIPLookup[];
101350 +EXPORT_SYMBOL(_ZTV13RadixIPLookup);
101351 +extern char _ZN15RandomBitErrors12add_handlersEv[];
101352 +EXPORT_SYMBOL(_ZN15RandomBitErrors12add_handlersEv);
101353 +extern char _ZN15RandomBitErrors13set_bit_errorEj[];
101354 +EXPORT_SYMBOL(_ZN15RandomBitErrors13set_bit_errorEj);
101355 +extern char _ZN15RandomBitErrors13simple_actionEP6Packet[];
101356 +EXPORT_SYMBOL(_ZN15RandomBitErrors13simple_actionEP6Packet);
101357 +extern char _ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler[];
101358 +EXPORT_SYMBOL(_ZN15RandomBitErrors9configureER6VectorI6StringEP12ErrorHandler);
101359 +extern char _ZN15RandomBitErrorsC1Ev[];
101360 +EXPORT_SYMBOL(_ZN15RandomBitErrorsC1Ev);
101361 +extern char _ZN15RandomBitErrorsC2Ev[];
101362 +EXPORT_SYMBOL(_ZN15RandomBitErrorsC2Ev);
101363 +extern char _ZN15RandomBitErrorsD0Ev[];
101364 +EXPORT_SYMBOL(_ZN15RandomBitErrorsD0Ev);
101365 +extern char _ZN15RandomBitErrorsD1Ev[];
101366 +EXPORT_SYMBOL(_ZN15RandomBitErrorsD1Ev);
101367 +extern char _ZN15RandomBitErrorsD2Ev[];
101368 +EXPORT_SYMBOL(_ZN15RandomBitErrorsD2Ev);
101369 +extern char _ZNK15RandomBitErrors10class_nameEv[];
101370 +EXPORT_SYMBOL(_ZNK15RandomBitErrors10class_nameEv);
101371 +extern char _ZNK15RandomBitErrors10port_countEv[];
101372 +EXPORT_SYMBOL(_ZNK15RandomBitErrors10port_countEv);
101373 +extern char _ZNK15RandomBitErrors10processingEv[];
101374 +EXPORT_SYMBOL(_ZNK15RandomBitErrors10processingEv);
101375 +extern char _ZNK15RandomBitErrors20can_live_reconfigureEv[];
101376 +EXPORT_SYMBOL(_ZNK15RandomBitErrors20can_live_reconfigureEv);
101377 +extern char _ZTV15RandomBitErrors[];
101378 +EXPORT_SYMBOL(_ZTV15RandomBitErrors);
101379 +extern char _ZN12RandomSample10initializeEP12ErrorHandler[];
101380 +EXPORT_SYMBOL(_ZN12RandomSample10initializeEP12ErrorHandler);
101381 +extern char _ZN12RandomSample12add_handlersEv[];
101382 +EXPORT_SYMBOL(_ZN12RandomSample12add_handlersEv);
101383 +extern char _ZN12RandomSample12read_handlerEP7ElementPv[];
101384 +EXPORT_SYMBOL(_ZN12RandomSample12read_handlerEP7ElementPv);
101385 +extern char _ZN12RandomSample4pullEi[];
101386 +EXPORT_SYMBOL(_ZN12RandomSample4pullEi);
101387 +extern char _ZN12RandomSample4pushEiP6Packet[];
101388 +EXPORT_SYMBOL(_ZN12RandomSample4pushEiP6Packet);
101389 +extern char _ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler[];
101390 +EXPORT_SYMBOL(_ZN12RandomSample9configureER6VectorI6StringEP12ErrorHandler);
101391 +extern char _ZN12RandomSampleC1Ev[];
101392 +EXPORT_SYMBOL(_ZN12RandomSampleC1Ev);
101393 +extern char _ZN12RandomSampleC2Ev[];
101394 +EXPORT_SYMBOL(_ZN12RandomSampleC2Ev);
101395 +extern char _ZN12RandomSampleD0Ev[];
101396 +EXPORT_SYMBOL(_ZN12RandomSampleD0Ev);
101397 +extern char _ZN12RandomSampleD1Ev[];
101398 +EXPORT_SYMBOL(_ZN12RandomSampleD1Ev);
101399 +extern char _ZN12RandomSampleD2Ev[];
101400 +EXPORT_SYMBOL(_ZN12RandomSampleD2Ev);
101401 +extern char _ZNK12RandomSample10class_nameEv[];
101402 +EXPORT_SYMBOL(_ZNK12RandomSample10class_nameEv);
101403 +extern char _ZNK12RandomSample10port_countEv[];
101404 +EXPORT_SYMBOL(_ZNK12RandomSample10port_countEv);
101405 +extern char _ZNK12RandomSample10processingEv[];
101406 +EXPORT_SYMBOL(_ZNK12RandomSample10processingEv);
101407 +extern char _ZNK12RandomSample13configurationER6VectorI6StringE[];
101408 +EXPORT_SYMBOL(_ZNK12RandomSample13configurationER6VectorI6StringE);
101409 +extern char _ZNK12RandomSample20can_live_reconfigureEv[];
101410 +EXPORT_SYMBOL(_ZNK12RandomSample20can_live_reconfigureEv);
101411 +extern char _ZTV12RandomSample[];
101412 +EXPORT_SYMBOL(_ZTV12RandomSample);
101413 +extern char _ZN12RandomSource10initializeEP12ErrorHandler[];
101414 +EXPORT_SYMBOL(_ZN12RandomSource10initializeEP12ErrorHandler);
101415 +extern char _ZN12RandomSource11make_packetEv[];
101416 +EXPORT_SYMBOL(_ZN12RandomSource11make_packetEv);
101417 +extern char _ZN12RandomSource12add_handlersEv[];
101418 +EXPORT_SYMBOL(_ZN12RandomSource12add_handlersEv);
101419 +extern char _ZN12RandomSource4pullEi[];
101420 +EXPORT_SYMBOL(_ZN12RandomSource4pullEi);
101421 +extern char _ZN12RandomSource8run_taskEP4Task[];
101422 +EXPORT_SYMBOL(_ZN12RandomSource8run_taskEP4Task);
101423 +extern char _ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler[];
101424 +EXPORT_SYMBOL(_ZN12RandomSource9configureER6VectorI6StringEP12ErrorHandler);
101425 +extern char _ZN12RandomSourceC1Ev[];
101426 +EXPORT_SYMBOL(_ZN12RandomSourceC1Ev);
101427 +extern char _ZN12RandomSourceC2Ev[];
101428 +EXPORT_SYMBOL(_ZN12RandomSourceC2Ev);
101429 +extern char _ZN12RandomSourceD0Ev[];
101430 +EXPORT_SYMBOL(_ZN12RandomSourceD0Ev);
101431 +extern char _ZN12RandomSourceD1Ev[];
101432 +EXPORT_SYMBOL(_ZN12RandomSourceD1Ev);
101433 +extern char _ZN12RandomSourceD2Ev[];
101434 +EXPORT_SYMBOL(_ZN12RandomSourceD2Ev);
101435 +extern char _ZNK12RandomSource10class_nameEv[];
101436 +EXPORT_SYMBOL(_ZNK12RandomSource10class_nameEv);
101437 +extern char _ZNK12RandomSource10port_countEv[];
101438 +EXPORT_SYMBOL(_ZNK12RandomSource10port_countEv);
101439 +extern char _ZNK12RandomSource10processingEv[];
101440 +EXPORT_SYMBOL(_ZNK12RandomSource10processingEv);
101441 +extern char _ZTV12RandomSource[];
101442 +EXPORT_SYMBOL(_ZTV12RandomSource);
101443 +extern char _ZN12RandomSwitch4pushEiP6Packet[];
101444 +EXPORT_SYMBOL(_ZN12RandomSwitch4pushEiP6Packet);
101445 +extern char _ZN12RandomSwitchC1Ev[];
101446 +EXPORT_SYMBOL(_ZN12RandomSwitchC1Ev);
101447 +extern char _ZN12RandomSwitchC2Ev[];
101448 +EXPORT_SYMBOL(_ZN12RandomSwitchC2Ev);
101449 +extern char _ZN12RandomSwitchD0Ev[];
101450 +EXPORT_SYMBOL(_ZN12RandomSwitchD0Ev);
101451 +extern char _ZN12RandomSwitchD1Ev[];
101452 +EXPORT_SYMBOL(_ZN12RandomSwitchD1Ev);
101453 +extern char _ZN12RandomSwitchD2Ev[];
101454 +EXPORT_SYMBOL(_ZN12RandomSwitchD2Ev);
101455 +extern char _ZNK12RandomSwitch10class_nameEv[];
101456 +EXPORT_SYMBOL(_ZNK12RandomSwitch10class_nameEv);
101457 +extern char _ZNK12RandomSwitch10port_countEv[];
101458 +EXPORT_SYMBOL(_ZNK12RandomSwitch10port_countEv);
101459 +extern char _ZNK12RandomSwitch10processingEv[];
101460 +EXPORT_SYMBOL(_ZNK12RandomSwitch10processingEv);
101461 +extern char _ZTV12RandomSwitch[];
101462 +EXPORT_SYMBOL(_ZTV12RandomSwitch);
101463 +extern char _ZN11RatedSource10initializeEP12ErrorHandler[];
101464 +EXPORT_SYMBOL(_ZN11RatedSource10initializeEP12ErrorHandler);
101465 +extern char _ZN11RatedSource10read_paramEP7ElementPv[];
101466 +EXPORT_SYMBOL(_ZN11RatedSource10read_paramEP7ElementPv);
101467 +extern char _ZN11RatedSource12add_handlersEv[];
101468 +EXPORT_SYMBOL(_ZN11RatedSource12add_handlersEv);
101469 +extern char _ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler[];
101470 +EXPORT_SYMBOL(_ZN11RatedSource12change_paramERK6StringP7ElementPvP12ErrorHandler);
101471 +extern char _ZN11RatedSource12setup_packetEv[];
101472 +EXPORT_SYMBOL(_ZN11RatedSource12setup_packetEv);
101473 +extern char _ZN11RatedSource4pullEi[];
101474 +EXPORT_SYMBOL(_ZN11RatedSource4pullEi);
101475 +extern char _ZN11RatedSource7cleanupEN7Element12CleanupStageE[];
101476 +EXPORT_SYMBOL(_ZN11RatedSource7cleanupEN7Element12CleanupStageE);
101477 +extern char _ZN11RatedSource8NO_LIMITE[];
101478 +EXPORT_SYMBOL(_ZN11RatedSource8NO_LIMITE);
101479 +extern char _ZN11RatedSource8run_taskEP4Task[];
101480 +EXPORT_SYMBOL(_ZN11RatedSource8run_taskEP4Task);
101481 +extern char _ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler[];
101482 +EXPORT_SYMBOL(_ZN11RatedSource9configureER6VectorI6StringEP12ErrorHandler);
101483 +extern char _ZN11RatedSourceC1Ev[];
101484 +EXPORT_SYMBOL(_ZN11RatedSourceC1Ev);
101485 +extern char _ZN11RatedSourceC2Ev[];
101486 +EXPORT_SYMBOL(_ZN11RatedSourceC2Ev);
101487 +extern char _ZN11RatedSourceD0Ev[];
101488 +EXPORT_SYMBOL(_ZN11RatedSourceD0Ev);
101489 +extern char _ZN11RatedSourceD1Ev[];
101490 +EXPORT_SYMBOL(_ZN11RatedSourceD1Ev);
101491 +extern char _ZN11RatedSourceD2Ev[];
101492 +EXPORT_SYMBOL(_ZN11RatedSourceD2Ev);
101493 +extern char _ZNK11RatedSource10class_nameEv[];
101494 +EXPORT_SYMBOL(_ZNK11RatedSource10class_nameEv);
101495 +extern char _ZNK11RatedSource10port_countEv[];
101496 +EXPORT_SYMBOL(_ZNK11RatedSource10port_countEv);
101497 +extern char _ZNK11RatedSource10processingEv[];
101498 +EXPORT_SYMBOL(_ZNK11RatedSource10processingEv);
101499 +extern char _ZTV11RatedSource[];
101500 +EXPORT_SYMBOL(_ZTV11RatedSource);
101501 +extern char _ZN13RatedSplitter12add_handlersEv[];
101502 +EXPORT_SYMBOL(_ZN13RatedSplitter12add_handlersEv);
101503 +extern char _ZN13RatedSplitter4pushEiP6Packet[];
101504 +EXPORT_SYMBOL(_ZN13RatedSplitter4pushEiP6Packet);
101505 +extern char _ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler[];
101506 +EXPORT_SYMBOL(_ZN13RatedSplitter9configureER6VectorI6StringEP12ErrorHandler);
101507 +extern char _ZN13RatedSplitterC1Ev[];
101508 +EXPORT_SYMBOL(_ZN13RatedSplitterC1Ev);
101509 +extern char _ZN13RatedSplitterC2Ev[];
101510 +EXPORT_SYMBOL(_ZN13RatedSplitterC2Ev);
101511 +extern char _ZN13RatedSplitterD0Ev[];
101512 +EXPORT_SYMBOL(_ZN13RatedSplitterD0Ev);
101513 +extern char _ZN13RatedSplitterD1Ev[];
101514 +EXPORT_SYMBOL(_ZN13RatedSplitterD1Ev);
101515 +extern char _ZN13RatedSplitterD2Ev[];
101516 +EXPORT_SYMBOL(_ZN13RatedSplitterD2Ev);
101517 +extern char _ZNK13RatedSplitter10class_nameEv[];
101518 +EXPORT_SYMBOL(_ZNK13RatedSplitter10class_nameEv);
101519 +extern char _ZNK13RatedSplitter13configurationER6VectorI6StringE[];
101520 +EXPORT_SYMBOL(_ZNK13RatedSplitter13configurationER6VectorI6StringE);
101521 +extern char _ZTV13RatedSplitter[];
101522 +EXPORT_SYMBOL(_ZTV13RatedSplitter);
101523 +extern char _ZN12RatedUnqueue10initializeEP12ErrorHandler[];
101524 +EXPORT_SYMBOL(_ZN12RatedUnqueue10initializeEP12ErrorHandler);
101525 +extern char _ZN12RatedUnqueue12add_handlersEv[];
101526 +EXPORT_SYMBOL(_ZN12RatedUnqueue12add_handlersEv);
101527 +extern char _ZN12RatedUnqueue8run_taskEP4Task[];
101528 +EXPORT_SYMBOL(_ZN12RatedUnqueue8run_taskEP4Task);
101529 +extern char _ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler[];
101530 +EXPORT_SYMBOL(_ZN12RatedUnqueue9configureER6VectorI6StringEP12ErrorHandler);
101531 +extern char _ZN12RatedUnqueueC1Ev[];
101532 +EXPORT_SYMBOL(_ZN12RatedUnqueueC1Ev);
101533 +extern char _ZN12RatedUnqueueC2Ev[];
101534 +EXPORT_SYMBOL(_ZN12RatedUnqueueC2Ev);
101535 +extern char _ZN12RatedUnqueueD0Ev[];
101536 +EXPORT_SYMBOL(_ZN12RatedUnqueueD0Ev);
101537 +extern char _ZN12RatedUnqueueD1Ev[];
101538 +EXPORT_SYMBOL(_ZN12RatedUnqueueD1Ev);
101539 +extern char _ZN12RatedUnqueueD2Ev[];
101540 +EXPORT_SYMBOL(_ZN12RatedUnqueueD2Ev);
101541 +extern char _ZNK12RatedUnqueue10class_nameEv[];
101542 +EXPORT_SYMBOL(_ZNK12RatedUnqueue10class_nameEv);
101543 +extern char _ZNK12RatedUnqueue13configurationER6VectorI6StringE[];
101544 +EXPORT_SYMBOL(_ZNK12RatedUnqueue13configurationER6VectorI6StringE);
101545 +extern char _ZTV12RatedUnqueue[];
101546 +EXPORT_SYMBOL(_ZTV12RatedUnqueue);
101547 +extern char click_cycle_counter[];
101548 +EXPORT_SYMBOL(click_cycle_counter);
101549 +extern char _ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj[];
101550 +EXPORT_SYMBOL(_ZN11DirectEWMAXI24StabilityEWMAXParametersILj10EyxEE8update_nEyj);
101551 +extern char _ZN3RED10initializeEP12ErrorHandler[];
101552 +EXPORT_SYMBOL(_ZN3RED10initializeEP12ErrorHandler);
101553 +extern char _ZN3RED10read_statsEP7ElementPv[];
101554 +EXPORT_SYMBOL(_ZN3RED10read_statsEP7ElementPv);
101555 +extern char _ZN3RED10take_stateEP7ElementP12ErrorHandler[];
101556 +EXPORT_SYMBOL(_ZN3RED10take_stateEP7ElementP12ErrorHandler);
101557 +extern char _ZN3RED11read_queuesEP7ElementPv[];
101558 +EXPORT_SYMBOL(_ZN3RED11read_queuesEP7ElementPv);
101559 +extern char _ZN3RED11should_dropEv[];
101560 +EXPORT_SYMBOL(_ZN3RED11should_dropEv);
101561 +extern char _ZN3RED12add_handlersEv[];
101562 +EXPORT_SYMBOL(_ZN3RED12add_handlersEv);
101563 +extern char _ZN3RED13set_C1_and_C2Ev[];
101564 +EXPORT_SYMBOL(_ZN3RED13set_C1_and_C2Ev);
101565 +extern char _ZN3RED14read_parameterEP7ElementPv[];
101566 +EXPORT_SYMBOL(_ZN3RED14read_parameterEP7ElementPv);
101567 +extern char _ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler[];
101568 +EXPORT_SYMBOL(_ZN3RED16finish_configureEjjjjRK6StringP12ErrorHandler);
101569 +extern char _ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
101570 +EXPORT_SYMBOL(_ZN3RED16live_reconfigureER6VectorI6StringEP12ErrorHandler);
101571 +extern char _ZN3RED4pullEi[];
101572 +EXPORT_SYMBOL(_ZN3RED4pullEi);
101573 +extern char _ZN3RED4pushEiP6Packet[];
101574 +EXPORT_SYMBOL(_ZN3RED4pushEiP6Packet);
101575 +extern char _ZN3RED9configureER6VectorI6StringEP12ErrorHandler[];
101576 +EXPORT_SYMBOL(_ZN3RED9configureER6VectorI6StringEP12ErrorHandler);
101577 +extern char _ZN3REDC1Ev[];
101578 +EXPORT_SYMBOL(_ZN3REDC1Ev);
101579 +extern char _ZN3REDC2Ev[];
101580 +EXPORT_SYMBOL(_ZN3REDC2Ev);
101581 +extern char _ZN3REDD0Ev[];
101582 +EXPORT_SYMBOL(_ZN3REDD0Ev);
101583 +extern char _ZN3REDD1Ev[];
101584 +EXPORT_SYMBOL(_ZN3REDD1Ev);
101585 +extern char _ZN3REDD2Ev[];
101586 +EXPORT_SYMBOL(_ZN3REDD2Ev);
101587 +extern char _ZNK3RED10class_nameEv[];
101588 +EXPORT_SYMBOL(_ZNK3RED10class_nameEv);
101589 +extern char _ZNK3RED10queue_sizeEv[];
101590 +EXPORT_SYMBOL(_ZNK3RED10queue_sizeEv);
101591 +extern char _ZNK3RED12check_paramsEjjjjP12ErrorHandler[];
101592 +EXPORT_SYMBOL(_ZNK3RED12check_paramsEjjjjP12ErrorHandler);
101593 +extern char _ZNK3RED13configurationER6VectorI6StringE[];
101594 +EXPORT_SYMBOL(_ZNK3RED13configurationER6VectorI6StringE);
101595 +extern char _ZTV3RED[];
101596 +EXPORT_SYMBOL(_ZTV3RED);
101597 +extern char _ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj[];
101598 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE10initializeEP20HashMap_ArenaFactoryj);
101599 +extern char _ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb[];
101600 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE20set_dynamic_resizingEb);
101601 +extern char _ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi[];
101602 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE6insertERKS0_RKi);
101603 +extern char _ZN7HashMapI8IPFlowIDiE6resizeEj[];
101604 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE6resizeEj);
101605 +extern char _ZN7HashMapI8IPFlowIDiE7resize0Ej[];
101606 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE7resize0Ej);
101607 +extern char _ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory[];
101608 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiE9set_arenaEP20HashMap_ArenaFactory);
101609 +extern char _ZN7HashMapI8IPFlowIDiEC1Ev[];
101610 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiEC1Ev);
101611 +extern char _ZN7HashMapI8IPFlowIDiED1Ev[];
101612 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDiED1Ev);
101613 +extern char _ZN8RFC2507c10make_otherEP6Packet[];
101614 +EXPORT_SYMBOL(_ZN8RFC2507c10make_otherEP6Packet);
101615 +extern char _ZN8RFC2507c13simple_actionEP6Packet[];
101616 +EXPORT_SYMBOL(_ZN8RFC2507c13simple_actionEP6Packet);
101617 +extern char _ZN8RFC2507c15make_compressedEiP6Packet[];
101618 +EXPORT_SYMBOL(_ZN8RFC2507c15make_compressedEiP6Packet);
101619 +extern char _ZN8RFC2507c7encodeXEiiPcRi[];
101620 +EXPORT_SYMBOL(_ZN8RFC2507c7encodeXEiiPcRi);
101621 +extern char _ZN8RFC2507c8encode16EiiPcRi[];
101622 +EXPORT_SYMBOL(_ZN8RFC2507c8encode16EiiPcRi);
101623 +extern char _ZN8RFC2507c8encode32EiiPcRi[];
101624 +EXPORT_SYMBOL(_ZN8RFC2507c8encode32EiiPcRi);
101625 +extern char _ZN8RFC2507c8make_keyERKNS_5tcpipERS0_[];
101626 +EXPORT_SYMBOL(_ZN8RFC2507c8make_keyERKNS_5tcpipERS0_);
101627 +extern char _ZN8RFC2507c9make_fullEiP6Packet[];
101628 +EXPORT_SYMBOL(_ZN8RFC2507c9make_fullEiP6Packet);
101629 +extern char _ZN8RFC2507cC1Ev[];
101630 +EXPORT_SYMBOL(_ZN8RFC2507cC1Ev);
101631 +extern char _ZN8RFC2507cC2Ev[];
101632 +EXPORT_SYMBOL(_ZN8RFC2507cC2Ev);
101633 +extern char _ZN8RFC2507cD0Ev[];
101634 +EXPORT_SYMBOL(_ZN8RFC2507cD0Ev);
101635 +extern char _ZN8RFC2507cD1Ev[];
101636 +EXPORT_SYMBOL(_ZN8RFC2507cD1Ev);
101637 +extern char _ZN8RFC2507cD2Ev[];
101638 +EXPORT_SYMBOL(_ZN8RFC2507cD2Ev);
101639 +extern char _ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_[];
101640 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDiE9find_pairERKS0_);
101641 +extern char _ZNK8RFC2507c10class_nameEv[];
101642 +EXPORT_SYMBOL(_ZNK8RFC2507c10class_nameEv);
101643 +extern char _ZNK8RFC2507c10port_countEv[];
101644 +EXPORT_SYMBOL(_ZNK8RFC2507c10port_countEv);
101645 +extern char _ZNK8RFC2507c10processingEv[];
101646 +EXPORT_SYMBOL(_ZNK8RFC2507c10processingEv);
101647 +extern char _ZTV8RFC2507c[];
101648 +EXPORT_SYMBOL(_ZTV8RFC2507c);
101649 +extern char _ZN8RFC2507d13simple_actionEP6Packet[];
101650 +EXPORT_SYMBOL(_ZN8RFC2507d13simple_actionEP6Packet);
101651 +extern char _ZN8RFC2507d6decodeERPKhRj[];
101652 +EXPORT_SYMBOL(_ZN8RFC2507d6decodeERPKhRj);
101653 +extern char _ZN8RFC2507d6decodeERPKhRt[];
101654 +EXPORT_SYMBOL(_ZN8RFC2507d6decodeERPKhRt);
101655 +extern char _ZN8RFC2507dC1Ev[];
101656 +EXPORT_SYMBOL(_ZN8RFC2507dC1Ev);
101657 +extern char _ZN8RFC2507dC2Ev[];
101658 +EXPORT_SYMBOL(_ZN8RFC2507dC2Ev);
101659 +extern char _ZN8RFC2507dD0Ev[];
101660 +EXPORT_SYMBOL(_ZN8RFC2507dD0Ev);
101661 +extern char _ZN8RFC2507dD1Ev[];
101662 +EXPORT_SYMBOL(_ZN8RFC2507dD1Ev);
101663 +extern char _ZN8RFC2507dD2Ev[];
101664 +EXPORT_SYMBOL(_ZN8RFC2507dD2Ev);
101665 +extern char _ZNK8RFC2507d10class_nameEv[];
101666 +EXPORT_SYMBOL(_ZNK8RFC2507d10class_nameEv);
101667 +extern char _ZNK8RFC2507d10port_countEv[];
101668 +EXPORT_SYMBOL(_ZNK8RFC2507d10port_countEv);
101669 +extern char _ZNK8RFC2507d10processingEv[];
101670 +EXPORT_SYMBOL(_ZNK8RFC2507d10processingEv);
101671 +extern char _ZTV8RFC2507d[];
101672 +EXPORT_SYMBOL(_ZTV8RFC2507d);
101673 +extern char _ZN7RIPSend10initializeEP12ErrorHandler[];
101674 +EXPORT_SYMBOL(_ZN7RIPSend10initializeEP12ErrorHandler);
101675 +extern char _ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler[];
101676 +EXPORT_SYMBOL(_ZN7RIPSend9configureER6VectorI6StringEP12ErrorHandler);
101677 +extern char _ZN7RIPSend9run_timerEP5Timer[];
101678 +EXPORT_SYMBOL(_ZN7RIPSend9run_timerEP5Timer);
101679 +extern char _ZN7RIPSendC1Ev[];
101680 +EXPORT_SYMBOL(_ZN7RIPSendC1Ev);
101681 +extern char _ZN7RIPSendC2Ev[];
101682 +EXPORT_SYMBOL(_ZN7RIPSendC2Ev);
101683 +extern char _ZN7RIPSendD0Ev[];
101684 +EXPORT_SYMBOL(_ZN7RIPSendD0Ev);
101685 +extern char _ZN7RIPSendD1Ev[];
101686 +EXPORT_SYMBOL(_ZN7RIPSendD1Ev);
101687 +extern char _ZN7RIPSendD2Ev[];
101688 +EXPORT_SYMBOL(_ZN7RIPSendD2Ev);
101689 +extern char _ZNK7RIPSend10class_nameEv[];
101690 +EXPORT_SYMBOL(_ZNK7RIPSend10class_nameEv);
101691 +extern char _ZNK7RIPSend10port_countEv[];
101692 +EXPORT_SYMBOL(_ZNK7RIPSend10port_countEv);
101693 +extern char _ZNK7RIPSend10processingEv[];
101694 +EXPORT_SYMBOL(_ZNK7RIPSend10processingEv);
101695 +extern char _ZTV7RIPSend[];
101696 +EXPORT_SYMBOL(_ZTV7RIPSend);
101697 +extern char _ZN11ThreadSched22initial_home_thread_idEP4Taskb[];
101698 +EXPORT_SYMBOL(_ZN11ThreadSched22initial_home_thread_idEP4Taskb);
101699 +extern char _ZN11ThreadSchedD0Ev[];
101700 +EXPORT_SYMBOL(_ZN11ThreadSchedD0Ev);
101701 +extern char _ZN11ThreadSchedD1Ev[];
101702 +EXPORT_SYMBOL(_ZN11ThreadSchedD1Ev);
101703 +extern char _ZN6Router10initializeEP12ErrorHandler[];
101704 +EXPORT_SYMBOL(_ZN6Router10initializeEP12ErrorHandler);
101705 +extern char _ZN6Router11add_elementEP7ElementRK6StringS4_S4_[];
101706 +EXPORT_SYMBOL(_ZN6Router11add_elementEP7ElementRK6StringS4_S4_);
101707 +extern char _ZN6Router11make_gportsEv[];
101708 +EXPORT_SYMBOL(_ZN6Router11make_gportsEv);
101709 +extern char _ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_[];
101710 +EXPORT_SYMBOL(_ZN6Router11set_handlerEPK7ElementRK6StringiPFiiRS3_PS0_PK7HandlerP12ErrorHandlerEPvSF_);
101711 +extern char _ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler[];
101712 +EXPORT_SYMBOL(_ZN6Router12hookup_errorERKNS_6HookupEbPKcP12ErrorHandler);
101713 +extern char _ZN6Router12set_runcountEi[];
101714 +EXPORT_SYMBOL(_ZN6Router12set_runcountEi);
101715 +extern char _ZN6Router13remove_hookupEi[];
101716 +EXPORT_SYMBOL(_ZN6Router13remove_hookupEi);
101717 +extern char _ZN6Router14add_connectionEiiii[];
101718 +EXPORT_SYMBOL(_ZN6Router14add_connectionEiiii);
101719 +extern char _ZN6Router14add_module_refEP6module[];
101720 +EXPORT_SYMBOL(_ZN6Router14add_module_refEP6module);
101721 +extern char _ZN6Router14set_attachmentERK6StringPv[];
101722 +EXPORT_SYMBOL(_ZN6Router14set_attachmentERK6StringPv);
101723 +extern char _ZN6Router14static_cleanupEv[];
101724 +EXPORT_SYMBOL(_ZN6Router14static_cleanupEv);
101725 +extern char _ZN6Router15add_requirementERK6String[];
101726 +EXPORT_SYMBOL(_ZN6Router15add_requirementERK6String);
101727 +extern char _ZN6Router15adjust_runcountEi[];
101728 +EXPORT_SYMBOL(_ZN6Router15adjust_runcountEi);
101729 +extern char _ZN6Router15force_name_infoEv[];
101730 +EXPORT_SYMBOL(_ZN6Router15force_name_infoEv);
101731 +extern char _ZN6Router15set_connectionsEv[];
101732 +EXPORT_SYMBOL(_ZN6Router15set_connectionsEv);
101733 +extern char _ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_[];
101734 +EXPORT_SYMBOL(_ZN6Router16add_read_handlerEPK7ElementRK6StringPFS3_PS0_PvES7_);
101735 +extern char _ZN6Router16element_hindexesEPK7ElementR6VectorIiE[];
101736 +EXPORT_SYMBOL(_ZN6Router16element_hindexesEPK7ElementR6VectorIiE);
101737 +extern char _ZN6Router16force_attachmentERK6String[];
101738 +EXPORT_SYMBOL(_ZN6Router16force_attachmentERK6String);
101739 +extern char _ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector[];
101740 +EXPORT_SYMBOL(_ZN6Router16global_port_flowEbP7ElementiP13ElementFilterR9Bitvector);
101741 +extern char _ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler[];
101742 +EXPORT_SYMBOL(_ZN6Router16processing_errorERKNS_6HookupES2_biP12ErrorHandler);
101743 +extern char _ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_[];
101744 +EXPORT_SYMBOL(_ZN6Router17add_write_handlerEPK7ElementRK6StringPFiS5_PS0_PvP12ErrorHandlerES7_);
101745 +extern char _ZN6Router17static_initializeEv[];
101746 +EXPORT_SYMBOL(_ZN6Router17static_initializeEv);
101747 +extern char _ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E[];
101748 +EXPORT_SYMBOL(_ZN6Router17upstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E);
101749 +extern char _ZN6Router18check_hookup_rangeEP12ErrorHandler[];
101750 +EXPORT_SYMBOL(_ZN6Router18check_hookup_rangeEP12ErrorHandler);
101751 +extern char _ZN6Router18make_hookup_gportsEv[];
101752 +EXPORT_SYMBOL(_ZN6Router18make_hookup_gportsEv);
101753 +extern char _ZN6Router18set_econfigurationEiRK6String[];
101754 +EXPORT_SYMBOL(_ZN6Router18set_econfigurationEiRK6String);
101755 +extern char _ZN6Router18set_hotswap_routerEPS_[];
101756 +EXPORT_SYMBOL(_ZN6Router18set_hotswap_routerEPS_);
101757 +extern char _ZN6Router19check_push_and_pullEP12ErrorHandler[];
101758 +EXPORT_SYMBOL(_ZN6Router19check_push_and_pullEP12ErrorHandler);
101759 +extern char _ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E[];
101760 +EXPORT_SYMBOL(_ZN6Router19downstream_elementsEP7ElementiP13ElementFilterR6VectorIS1_E);
101761 +extern char _ZN6Router19initialize_handlersEbb[];
101762 +EXPORT_SYMBOL(_ZN6Router19initialize_handlersEbb);
101763 +extern char _ZN6Router19new_notifier_signalER14NotifierSignal[];
101764 +EXPORT_SYMBOL(_ZN6Router19new_notifier_signalER14NotifierSignal);
101765 +extern char _ZN6Router19router_read_handlerEP7ElementPv[];
101766 +EXPORT_SYMBOL(_ZN6Router19router_read_handlerEP7ElementPv);
101767 +extern char _ZN6Router19store_local_handlerEiRK7Handler[];
101768 +EXPORT_SYMBOL(_ZN6Router19store_local_handlerEiRK7Handler);
101769 +extern char _ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj[];
101770 +EXPORT_SYMBOL(_ZN6Router20change_handler_flagsEPK7ElementRK6Stringjj);
101771 +extern char _ZN6Router20store_global_handlerERK7Handler[];
101772 +EXPORT_SYMBOL(_ZN6Router20store_global_handlerERK7Handler);
101773 +extern char _ZN6Router21check_hookup_elementsEP12ErrorHandler[];
101774 +EXPORT_SYMBOL(_ZN6Router21check_hookup_elementsEP12ErrorHandler);
101775 +extern char _ZN6Router25check_hookup_completenessEP12ErrorHandler[];
101776 +EXPORT_SYMBOL(_ZN6Router25check_hookup_completenessEP12ErrorHandler);
101777 +extern char _ZN6Router5unuseEv[];
101778 +EXPORT_SYMBOL(_ZN6Router5unuseEv);
101779 +extern char _ZN6Router6HookupC1Eii[];
101780 +EXPORT_SYMBOL(_ZN6Router6HookupC1Eii);
101781 +extern char _ZN6Router6hindexEPK7ElementRK6String[];
101782 +EXPORT_SYMBOL(_ZN6Router6hindexEPK7ElementRK6String);
101783 +extern char _ZN6Router7elementEPKS_i[];
101784 +EXPORT_SYMBOL(_ZN6Router7elementEPKS_i);
101785 +extern char _ZN6Router7handlerEPK7ElementRK6String[];
101786 +EXPORT_SYMBOL(_ZN6Router7handlerEPK7ElementRK6String);
101787 +extern char _ZN6Router7handlerEPKS_i[];
101788 +EXPORT_SYMBOL(_ZN6Router7handlerEPKS_i);
101789 +extern char _ZN6Router8activateEbP12ErrorHandler[];
101790 +EXPORT_SYMBOL(_ZN6Router8activateEbP12ErrorHandler);
101791 +extern char _ZN6RouterC1ERK6StringP6Master[];
101792 +EXPORT_SYMBOL(_ZN6RouterC1ERK6StringP6Master);
101793 +extern char _ZN6RouterC2ERK6StringP6Master[];
101794 +EXPORT_SYMBOL(_ZN6RouterC2ERK6StringP6Master);
101795 +extern char _ZN6RouterD1Ev[];
101796 +EXPORT_SYMBOL(_ZN6RouterD1Ev);
101797 +extern char _ZN6RouterD2Ev[];
101798 +EXPORT_SYMBOL(_ZN6RouterD2Ev);
101799 +extern char _ZN6VectorIiE5beginEv[];
101800 +EXPORT_SYMBOL(_ZN6VectorIiE5beginEv);
101801 +extern char _ZN6VectorIiEC1EiRKi[];
101802 +EXPORT_SYMBOL(_ZN6VectorIiEC1EiRKi);
101803 +extern char _ZN7Handler12unparse_nameEP7ElementRK6String[];
101804 +EXPORT_SYMBOL(_ZN7Handler12unparse_nameEP7ElementRK6String);
101805 +extern char _ZN7Handler17the_blank_handlerE[];
101806 +EXPORT_SYMBOL(_ZN7Handler17the_blank_handlerE);
101807 +extern char _ZNK6Router10attachmentERK6String[];
101808 +EXPORT_SYMBOL(_ZNK6Router10attachmentERK6String);
101809 +extern char _ZNK6Router13find_ehandlerEiRK6Stringb[];
101810 +EXPORT_SYMBOL(_ZNK6Router13find_ehandlerEiRK6Stringb);
101811 +extern char _ZNK6Router14econfigurationEi[];
101812 +EXPORT_SYMBOL(_ZNK6Router14econfigurationEi);
101813 +extern char _ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz[];
101814 +EXPORT_SYMBOL(_ZNK6Router14element_lerrorEP12ErrorHandlerP7ElementPKcz);
101815 +extern char _ZNK6Router15chatter_channelERK6String[];
101816 +EXPORT_SYMBOL(_ZNK6Router15chatter_channelERK6String);
101817 +extern char _ZNK6Router15context_messageEiPKc[];
101818 +EXPORT_SYMBOL(_ZNK6Router15context_messageEiPKc);
101819 +extern char _ZNK6Router15unparse_classesER11StringAccumRK6String[];
101820 +EXPORT_SYMBOL(_ZNK6Router15unparse_classesER11StringAccumRK6String);
101821 +extern char _ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE[];
101822 +EXPORT_SYMBOL(_ZNK6Router19gport_list_elementsEbRK9BitvectorR6VectorIP7ElementE);
101823 +extern char _ZNK6Router19unparse_connectionsER11StringAccumRK6String[];
101824 +EXPORT_SYMBOL(_ZNK6Router19unparse_connectionsER11StringAccumRK6String);
101825 +extern char _ZNK6Router20element_ports_stringEi[];
101826 +EXPORT_SYMBOL(_ZNK6Router20element_ports_stringEi);
101827 +extern char _ZNK6Router20unparse_declarationsER11StringAccumRK6String[];
101828 +EXPORT_SYMBOL(_ZNK6Router20unparse_declarationsER11StringAccumRK6String);
101829 +extern char _ZNK6Router20unparse_requirementsER11StringAccumRK6String[];
101830 +EXPORT_SYMBOL(_ZNK6Router20unparse_requirementsER11StringAccumRK6String);
101831 +extern char _ZNK6Router4findERK6StringP7ElementP12ErrorHandler[];
101832 +EXPORT_SYMBOL(_ZNK6Router4findERK6StringP7ElementP12ErrorHandler);
101833 +extern char _ZNK6Router4findERK6StringS0_P12ErrorHandler[];
101834 +EXPORT_SYMBOL(_ZNK6Router4findERK6StringS0_P12ErrorHandler);
101835 +extern char _ZNK6Router5enameEi[];
101836 +EXPORT_SYMBOL(_ZNK6Router5enameEi);
101837 +extern char _ZNK6Router7unparseER11StringAccumRK6String[];
101838 +EXPORT_SYMBOL(_ZNK6Router7unparseER11StringAccumRK6String);
101839 +extern char _ZNK6Router9elandmarkEi[];
101840 +EXPORT_SYMBOL(_ZNK6Router9elandmarkEi);
101841 +extern char _ZNK6VectorI6StringEixEi[];
101842 +EXPORT_SYMBOL(_ZNK6VectorI6StringEixEi);
101843 +extern char _ZNK6VectorIN6Router6HookupEE4sizeEv[];
101844 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4sizeEv);
101845 +extern char _ZNK6VectorIN6Router6HookupEEixEi[];
101846 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEEixEi);
101847 +extern char _ZNK6VectorIP7ElementEixEi[];
101848 +EXPORT_SYMBOL(_ZNK6VectorIP7ElementEixEi);
101849 +extern char _ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler[];
101850 +EXPORT_SYMBOL(_ZNK7Handler10call_writeERK6StringP7ElementbP12ErrorHandler);
101851 +extern char _ZNK7Handler12unparse_nameEP7Element[];
101852 +EXPORT_SYMBOL(_ZNK7Handler12unparse_nameEP7Element);
101853 +extern char _ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler[];
101854 +EXPORT_SYMBOL(_ZNK7Handler9call_readEP7ElementRK6StringbP12ErrorHandler);
101855 +extern char _ZTV11ThreadSched[];
101856 +EXPORT_SYMBOL(_ZTV11ThreadSched);
101857 +extern char _ZN12RouterThread11driver_onceEv[];
101858 +EXPORT_SYMBOL(_ZN12RouterThread11driver_onceEv);
101859 +extern char _ZN12RouterThread23unschedule_router_tasksEP6Router[];
101860 +EXPORT_SYMBOL(_ZN12RouterThread23unschedule_router_tasksEP6Router);
101861 +extern char _ZN12RouterThread6driverEv[];
101862 +EXPORT_SYMBOL(_ZN12RouterThread6driverEv);
101863 +extern char _ZN12RouterThreadC1EP6Masteri[];
101864 +EXPORT_SYMBOL(_ZN12RouterThreadC1EP6Masteri);
101865 +extern char _ZN12RouterThreadC2EP6Masteri[];
101866 +EXPORT_SYMBOL(_ZN12RouterThreadC2EP6Masteri);
101867 +extern char _ZN12RouterThreadD1Ev[];
101868 +EXPORT_SYMBOL(_ZN12RouterThreadD1Ev);
101869 +extern char _ZN12RouterThreadD2Ev[];
101870 +EXPORT_SYMBOL(_ZN12RouterThreadD2Ev);
101871 +extern char _ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler[];
101872 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapper15notify_rewriterEP4IPRwP12ErrorHandler);
101873 +extern char _ZN18RoundRobinIPMapper4castEPKc[];
101874 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapper4castEPKc);
101875 +extern char _ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE[];
101876 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapper7cleanupEN7Element12CleanupStageE);
101877 +extern char _ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[];
101878 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet);
101879 +extern char _ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler[];
101880 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapper9configureER6VectorI6StringEP12ErrorHandler);
101881 +extern char _ZN18RoundRobinIPMapperC1Ev[];
101882 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapperC1Ev);
101883 +extern char _ZN18RoundRobinIPMapperC2Ev[];
101884 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapperC2Ev);
101885 +extern char _ZN18RoundRobinIPMapperD0Ev[];
101886 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD0Ev);
101887 +extern char _ZN18RoundRobinIPMapperD1Ev[];
101888 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD1Ev);
101889 +extern char _ZN18RoundRobinIPMapperD2Ev[];
101890 +EXPORT_SYMBOL(_ZN18RoundRobinIPMapperD2Ev);
101891 +extern char _ZNK18RoundRobinIPMapper10class_nameEv[];
101892 +EXPORT_SYMBOL(_ZNK18RoundRobinIPMapper10class_nameEv);
101893 +extern char _ZNK18RoundRobinIPMapper15configure_phaseEv[];
101894 +EXPORT_SYMBOL(_ZNK18RoundRobinIPMapper15configure_phaseEv);
101895 +extern char _ZTV18RoundRobinIPMapper[];
101896 +EXPORT_SYMBOL(_ZTV18RoundRobinIPMapper);
101897 +extern char _ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[];
101898 +EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet);
101899 +extern char _ZThn60_N18RoundRobinIPMapperD0Ev[];
101900 +EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapperD0Ev);
101901 +extern char _ZThn60_N18RoundRobinIPMapperD1Ev[];
101902 +EXPORT_SYMBOL(_ZThn60_N18RoundRobinIPMapperD1Ev);
101903 +extern char _ZN7RRSched10initializeEP12ErrorHandler[];
101904 +EXPORT_SYMBOL(_ZN7RRSched10initializeEP12ErrorHandler);
101905 +extern char _ZN7RRSched4pullEi[];
101906 +EXPORT_SYMBOL(_ZN7RRSched4pullEi);
101907 +extern char _ZN7RRSched7cleanupEN7Element12CleanupStageE[];
101908 +EXPORT_SYMBOL(_ZN7RRSched7cleanupEN7Element12CleanupStageE);
101909 +extern char _ZN7RRSchedC1Ev[];
101910 +EXPORT_SYMBOL(_ZN7RRSchedC1Ev);
101911 +extern char _ZN7RRSchedC2Ev[];
101912 +EXPORT_SYMBOL(_ZN7RRSchedC2Ev);
101913 +extern char _ZN7RRSchedD0Ev[];
101914 +EXPORT_SYMBOL(_ZN7RRSchedD0Ev);
101915 +extern char _ZN7RRSchedD1Ev[];
101916 +EXPORT_SYMBOL(_ZN7RRSchedD1Ev);
101917 +extern char _ZN7RRSchedD2Ev[];
101918 +EXPORT_SYMBOL(_ZN7RRSchedD2Ev);
101919 +extern char _ZNK7RRSched10class_nameEv[];
101920 +EXPORT_SYMBOL(_ZNK7RRSched10class_nameEv);
101921 +extern char _ZNK7RRSched10port_countEv[];
101922 +EXPORT_SYMBOL(_ZNK7RRSched10port_countEv);
101923 +extern char _ZNK7RRSched10processingEv[];
101924 +EXPORT_SYMBOL(_ZNK7RRSched10processingEv);
101925 +extern char _ZTV7RRSched[];
101926 +EXPORT_SYMBOL(_ZTV7RRSched);
101927 +extern char _ZN16RoundRobinSwitch4pushEiP6Packet[];
101928 +EXPORT_SYMBOL(_ZN16RoundRobinSwitch4pushEiP6Packet);
101929 +extern char _ZN16RoundRobinSwitchC1Ev[];
101930 +EXPORT_SYMBOL(_ZN16RoundRobinSwitchC1Ev);
101931 +extern char _ZN16RoundRobinSwitchC2Ev[];
101932 +EXPORT_SYMBOL(_ZN16RoundRobinSwitchC2Ev);
101933 +extern char _ZN16RoundRobinSwitchD0Ev[];
101934 +EXPORT_SYMBOL(_ZN16RoundRobinSwitchD0Ev);
101935 +extern char _ZN16RoundRobinSwitchD1Ev[];
101936 +EXPORT_SYMBOL(_ZN16RoundRobinSwitchD1Ev);
101937 +extern char _ZN16RoundRobinSwitchD2Ev[];
101938 +EXPORT_SYMBOL(_ZN16RoundRobinSwitchD2Ev);
101939 +extern char _ZNK16RoundRobinSwitch10class_nameEv[];
101940 +EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10class_nameEv);
101941 +extern char _ZNK16RoundRobinSwitch10port_countEv[];
101942 +EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10port_countEv);
101943 +extern char _ZNK16RoundRobinSwitch10processingEv[];
101944 +EXPORT_SYMBOL(_ZNK16RoundRobinSwitch10processingEv);
101945 +extern char _ZTV16RoundRobinSwitch[];
101946 +EXPORT_SYMBOL(_ZTV16RoundRobinSwitch);
101947 +extern char _ZN8RTCycles12add_handlersEv[];
101948 +EXPORT_SYMBOL(_ZN8RTCycles12add_handlersEv);
101949 +extern char _ZN8RTCycles4pullEi[];
101950 +EXPORT_SYMBOL(_ZN8RTCycles4pullEi);
101951 +extern char _ZN8RTCycles4pushEiP6Packet[];
101952 +EXPORT_SYMBOL(_ZN8RTCycles4pushEiP6Packet);
101953 +extern char _ZN8RTCyclesC1Ev[];
101954 +EXPORT_SYMBOL(_ZN8RTCyclesC1Ev);
101955 +extern char _ZN8RTCyclesC2Ev[];
101956 +EXPORT_SYMBOL(_ZN8RTCyclesC2Ev);
101957 +extern char _ZN8RTCyclesD0Ev[];
101958 +EXPORT_SYMBOL(_ZN8RTCyclesD0Ev);
101959 +extern char _ZN8RTCyclesD1Ev[];
101960 +EXPORT_SYMBOL(_ZN8RTCyclesD1Ev);
101961 +extern char _ZN8RTCyclesD2Ev[];
101962 +EXPORT_SYMBOL(_ZN8RTCyclesD2Ev);
101963 +extern char _ZNK8RTCycles10class_nameEv[];
101964 +EXPORT_SYMBOL(_ZNK8RTCycles10class_nameEv);
101965 +extern char _ZNK8RTCycles10port_countEv[];
101966 +EXPORT_SYMBOL(_ZNK8RTCycles10port_countEv);
101967 +extern char _ZNK8RTCycles10processingEv[];
101968 +EXPORT_SYMBOL(_ZNK8RTCycles10processingEv);
101969 +extern char _ZTV8RTCycles[];
101970 +EXPORT_SYMBOL(_ZTV8RTCycles);
101971 +extern char _Z16click_init_schedP12ErrorHandler[];
101972 +EXPORT_SYMBOL(_Z16click_init_schedP12ErrorHandler);
101973 +extern char _Z19click_cleanup_schedv[];
101974 +EXPORT_SYMBOL(_Z19click_cleanup_schedv);
101975 +extern char _ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler[];
101976 +EXPORT_SYMBOL(_ZN12ScheduleInfo15initialize_taskEP7ElementP4TaskbP12ErrorHandler);
101977 +extern char _ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler[];
101978 +EXPORT_SYMBOL(_ZN12ScheduleInfo5queryEP7ElementP12ErrorHandler);
101979 +extern char _ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler[];
101980 +EXPORT_SYMBOL(_ZN12ScheduleInfo9configureER6VectorI6StringEP12ErrorHandler);
101981 +extern char _ZN12ScheduleInfoC1Ev[];
101982 +EXPORT_SYMBOL(_ZN12ScheduleInfoC1Ev);
101983 +extern char _ZN12ScheduleInfoC2Ev[];
101984 +EXPORT_SYMBOL(_ZN12ScheduleInfoC2Ev);
101985 +extern char _ZN12ScheduleInfoD0Ev[];
101986 +EXPORT_SYMBOL(_ZN12ScheduleInfoD0Ev);
101987 +extern char _ZN12ScheduleInfoD1Ev[];
101988 +EXPORT_SYMBOL(_ZN12ScheduleInfoD1Ev);
101989 +extern char _ZN12ScheduleInfoD2Ev[];
101990 +EXPORT_SYMBOL(_ZN12ScheduleInfoD2Ev);
101991 +extern char _ZNK12ScheduleInfo10class_nameEv[];
101992 +EXPORT_SYMBOL(_ZNK12ScheduleInfo10class_nameEv);
101993 +extern char _ZNK12ScheduleInfo15configure_phaseEv[];
101994 +EXPORT_SYMBOL(_ZNK12ScheduleInfo15configure_phaseEv);
101995 +extern char _ZTV12ScheduleInfo[];
101996 +EXPORT_SYMBOL(_ZTV12ScheduleInfo);
101997 +extern char _ZN13ScheduleLinux10initializeEP12ErrorHandler[];
101998 +EXPORT_SYMBOL(_ZN13ScheduleLinux10initializeEP12ErrorHandler);
101999 +extern char _ZN13ScheduleLinux12add_handlersEv[];
102000 +EXPORT_SYMBOL(_ZN13ScheduleLinux12add_handlersEv);
102001 +extern char _ZN13ScheduleLinux8run_taskEP4Task[];
102002 +EXPORT_SYMBOL(_ZN13ScheduleLinux8run_taskEP4Task);
102003 +extern char _ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler[];
102004 +EXPORT_SYMBOL(_ZN13ScheduleLinux9configureER6VectorI6StringEP12ErrorHandler);
102005 +extern char _ZN13ScheduleLinuxC1Ev[];
102006 +EXPORT_SYMBOL(_ZN13ScheduleLinuxC1Ev);
102007 +extern char _ZN13ScheduleLinuxC2Ev[];
102008 +EXPORT_SYMBOL(_ZN13ScheduleLinuxC2Ev);
102009 +extern char _ZN13ScheduleLinuxD0Ev[];
102010 +EXPORT_SYMBOL(_ZN13ScheduleLinuxD0Ev);
102011 +extern char _ZN13ScheduleLinuxD1Ev[];
102012 +EXPORT_SYMBOL(_ZN13ScheduleLinuxD1Ev);
102013 +extern char _ZN13ScheduleLinuxD2Ev[];
102014 +EXPORT_SYMBOL(_ZN13ScheduleLinuxD2Ev);
102015 +extern char _ZNK13ScheduleLinux10class_nameEv[];
102016 +EXPORT_SYMBOL(_ZNK13ScheduleLinux10class_nameEv);
102017 +extern char _ZTV13ScheduleLinux[];
102018 +EXPORT_SYMBOL(_ZTV13ScheduleLinux);
102019 +extern char _ZN6Script10initializeEP12ErrorHandler[];
102020 +EXPORT_SYMBOL(_ZN6Script10initializeEP12ErrorHandler);
102021 +extern char _ZN6Script12add_handlersEv[];
102022 +EXPORT_SYMBOL(_ZN6Script12add_handlersEv);
102023 +extern char _ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[];
102024 +EXPORT_SYMBOL(_ZN6Script12step_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler);
102025 +extern char _ZN6Script14static_cleanupEv[];
102026 +EXPORT_SYMBOL(_ZN6Script14static_cleanupEv);
102027 +extern char _ZN6Script17static_initializeEv[];
102028 +EXPORT_SYMBOL(_ZN6Script17static_initializeEv);
102029 +extern char _ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler[];
102030 +EXPORT_SYMBOL(_ZN6Script18arithmetic_handlerEiR6StringP7ElementPK7HandlerP12ErrorHandler);
102031 +extern char _ZN6Script4stepEiii[];
102032 +EXPORT_SYMBOL(_ZN6Script4stepEiii);
102033 +extern char _ZN6Script8Expander6expandERK6StringiiR11StringAccum[];
102034 +EXPORT_SYMBOL(_ZN6Script8Expander6expandERK6StringiiR11StringAccum);
102035 +extern char _ZN6Script8ExpanderD0Ev[];
102036 +EXPORT_SYMBOL(_ZN6Script8ExpanderD0Ev);
102037 +extern char _ZN6Script8ExpanderD1Ev[];
102038 +EXPORT_SYMBOL(_ZN6Script8ExpanderD1Ev);
102039 +extern char _ZN6Script8add_insnEiiiRK6String[];
102040 +EXPORT_SYMBOL(_ZN6Script8add_insnEiiiRK6String);
102041 +extern char _ZN6Script9configureER6VectorI6StringEP12ErrorHandler[];
102042 +EXPORT_SYMBOL(_ZN6Script9configureER6VectorI6StringEP12ErrorHandler);
102043 +extern char _ZN6Script9run_timerEP5Timer[];
102044 +EXPORT_SYMBOL(_ZN6Script9run_timerEP5Timer);
102045 +extern char _ZN6ScriptC1Ev[];
102046 +EXPORT_SYMBOL(_ZN6ScriptC1Ev);
102047 +extern char _ZN6ScriptC2Ev[];
102048 +EXPORT_SYMBOL(_ZN6ScriptC2Ev);
102049 +extern char _ZN6ScriptD0Ev[];
102050 +EXPORT_SYMBOL(_ZN6ScriptD0Ev);
102051 +extern char _ZN6ScriptD1Ev[];
102052 +EXPORT_SYMBOL(_ZN6ScriptD1Ev);
102053 +extern char _ZN6ScriptD2Ev[];
102054 +EXPORT_SYMBOL(_ZN6ScriptD2Ev);
102055 +extern char _ZNK6Script10class_nameEv[];
102056 +EXPORT_SYMBOL(_ZNK6Script10class_nameEv);
102057 +extern char _ZNK6Script10find_labelERK6String[];
102058 +EXPORT_SYMBOL(_ZNK6Script10find_labelERK6String);
102059 +extern char _ZNK6Script13find_variableERK6String[];
102060 +EXPORT_SYMBOL(_ZNK6Script13find_variableERK6String);
102061 +extern char _ZTV6Script[];
102062 +EXPORT_SYMBOL(_ZTV6Script);
102063 +extern char _ZTVN6Script8ExpanderE[];
102064 +EXPORT_SYMBOL(_ZTVN6Script8ExpanderE);
102065 +extern char _ZN11SetAnnoByte12add_handlersEv[];
102066 +EXPORT_SYMBOL(_ZN11SetAnnoByte12add_handlersEv);
102067 +extern char _ZN11SetAnnoByte13simple_actionEP6Packet[];
102068 +EXPORT_SYMBOL(_ZN11SetAnnoByte13simple_actionEP6Packet);
102069 +extern char _ZN11SetAnnoByte18value_read_handlerEP7ElementPv[];
102070 +EXPORT_SYMBOL(_ZN11SetAnnoByte18value_read_handlerEP7ElementPv);
102071 +extern char _ZN11SetAnnoByte19offset_read_handlerEP7ElementPv[];
102072 +EXPORT_SYMBOL(_ZN11SetAnnoByte19offset_read_handlerEP7ElementPv);
102073 +extern char _ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler[];
102074 +EXPORT_SYMBOL(_ZN11SetAnnoByte9configureER6VectorI6StringEP12ErrorHandler);
102075 +extern char _ZN11SetAnnoByteC1Ev[];
102076 +EXPORT_SYMBOL(_ZN11SetAnnoByteC1Ev);
102077 +extern char _ZN11SetAnnoByteC2Ev[];
102078 +EXPORT_SYMBOL(_ZN11SetAnnoByteC2Ev);
102079 +extern char _ZN11SetAnnoByteD0Ev[];
102080 +EXPORT_SYMBOL(_ZN11SetAnnoByteD0Ev);
102081 +extern char _ZN11SetAnnoByteD1Ev[];
102082 +EXPORT_SYMBOL(_ZN11SetAnnoByteD1Ev);
102083 +extern char _ZN11SetAnnoByteD2Ev[];
102084 +EXPORT_SYMBOL(_ZN11SetAnnoByteD2Ev);
102085 +extern char _ZNK11SetAnnoByte10class_nameEv[];
102086 +EXPORT_SYMBOL(_ZNK11SetAnnoByte10class_nameEv);
102087 +extern char _ZNK11SetAnnoByte10port_countEv[];
102088 +EXPORT_SYMBOL(_ZNK11SetAnnoByte10port_countEv);
102089 +extern char _ZNK11SetAnnoByte10processingEv[];
102090 +EXPORT_SYMBOL(_ZNK11SetAnnoByte10processingEv);
102091 +extern char _ZNK11SetAnnoByte20can_live_reconfigureEv[];
102092 +EXPORT_SYMBOL(_ZNK11SetAnnoByte20can_live_reconfigureEv);
102093 +extern char _ZTV11SetAnnoByte[];
102094 +EXPORT_SYMBOL(_ZTV11SetAnnoByte);
102095 +extern char _ZN8SetCRC3213simple_actionEP6Packet[];
102096 +EXPORT_SYMBOL(_ZN8SetCRC3213simple_actionEP6Packet);
102097 +extern char _ZN8SetCRC32C1Ev[];
102098 +EXPORT_SYMBOL(_ZN8SetCRC32C1Ev);
102099 +extern char _ZN8SetCRC32C2Ev[];
102100 +EXPORT_SYMBOL(_ZN8SetCRC32C2Ev);
102101 +extern char _ZN8SetCRC32D0Ev[];
102102 +EXPORT_SYMBOL(_ZN8SetCRC32D0Ev);
102103 +extern char _ZN8SetCRC32D1Ev[];
102104 +EXPORT_SYMBOL(_ZN8SetCRC32D1Ev);
102105 +extern char _ZN8SetCRC32D2Ev[];
102106 +EXPORT_SYMBOL(_ZN8SetCRC32D2Ev);
102107 +extern char _ZNK8SetCRC3210class_nameEv[];
102108 +EXPORT_SYMBOL(_ZNK8SetCRC3210class_nameEv);
102109 +extern char _ZNK8SetCRC3210port_countEv[];
102110 +EXPORT_SYMBOL(_ZNK8SetCRC3210port_countEv);
102111 +extern char _ZNK8SetCRC3210processingEv[];
102112 +EXPORT_SYMBOL(_ZNK8SetCRC3210processingEv);
102113 +extern char _ZTV8SetCRC32[];
102114 +EXPORT_SYMBOL(_ZTV8SetCRC32);
102115 +extern char _ZN13SetCycleCount4pullEi[];
102116 +EXPORT_SYMBOL(_ZN13SetCycleCount4pullEi);
102117 +extern char _ZN13SetCycleCount4pushEiP6Packet[];
102118 +EXPORT_SYMBOL(_ZN13SetCycleCount4pushEiP6Packet);
102119 +extern char _ZN13SetCycleCountC1Ev[];
102120 +EXPORT_SYMBOL(_ZN13SetCycleCountC1Ev);
102121 +extern char _ZN13SetCycleCountC2Ev[];
102122 +EXPORT_SYMBOL(_ZN13SetCycleCountC2Ev);
102123 +extern char _ZN13SetCycleCountD0Ev[];
102124 +EXPORT_SYMBOL(_ZN13SetCycleCountD0Ev);
102125 +extern char _ZN13SetCycleCountD1Ev[];
102126 +EXPORT_SYMBOL(_ZN13SetCycleCountD1Ev);
102127 +extern char _ZN13SetCycleCountD2Ev[];
102128 +EXPORT_SYMBOL(_ZN13SetCycleCountD2Ev);
102129 +extern char _ZNK13SetCycleCount10class_nameEv[];
102130 +EXPORT_SYMBOL(_ZNK13SetCycleCount10class_nameEv);
102131 +extern char _ZNK13SetCycleCount10port_countEv[];
102132 +EXPORT_SYMBOL(_ZNK13SetCycleCount10port_countEv);
102133 +extern char _ZNK13SetCycleCount10processingEv[];
102134 +EXPORT_SYMBOL(_ZNK13SetCycleCount10processingEv);
102135 +extern char _ZTV13SetCycleCount[];
102136 +EXPORT_SYMBOL(_ZTV13SetCycleCount);
102137 +extern char _ZN12SetIPAddress13simple_actionEP6Packet[];
102138 +EXPORT_SYMBOL(_ZN12SetIPAddress13simple_actionEP6Packet);
102139 +extern char _ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler[];
102140 +EXPORT_SYMBOL(_ZN12SetIPAddress9configureER6VectorI6StringEP12ErrorHandler);
102141 +extern char _ZN12SetIPAddressC1Ev[];
102142 +EXPORT_SYMBOL(_ZN12SetIPAddressC1Ev);
102143 +extern char _ZN12SetIPAddressC2Ev[];
102144 +EXPORT_SYMBOL(_ZN12SetIPAddressC2Ev);
102145 +extern char _ZN12SetIPAddressD0Ev[];
102146 +EXPORT_SYMBOL(_ZN12SetIPAddressD0Ev);
102147 +extern char _ZN12SetIPAddressD1Ev[];
102148 +EXPORT_SYMBOL(_ZN12SetIPAddressD1Ev);
102149 +extern char _ZN12SetIPAddressD2Ev[];
102150 +EXPORT_SYMBOL(_ZN12SetIPAddressD2Ev);
102151 +extern char _ZNK12SetIPAddress10class_nameEv[];
102152 +EXPORT_SYMBOL(_ZNK12SetIPAddress10class_nameEv);
102153 +extern char _ZNK12SetIPAddress10port_countEv[];
102154 +EXPORT_SYMBOL(_ZNK12SetIPAddress10port_countEv);
102155 +extern char _ZNK12SetIPAddress10processingEv[];
102156 +EXPORT_SYMBOL(_ZNK12SetIPAddress10processingEv);
102157 +extern char _ZNK12SetIPAddress20can_live_reconfigureEv[];
102158 +EXPORT_SYMBOL(_ZNK12SetIPAddress20can_live_reconfigureEv);
102159 +extern char _ZTV12SetIPAddress[];
102160 +EXPORT_SYMBOL(_ZTV12SetIPAddress);
102161 +extern char _ZN13SetIPChecksum13simple_actionEP6Packet[];
102162 +EXPORT_SYMBOL(_ZN13SetIPChecksum13simple_actionEP6Packet);
102163 +extern char _ZN13SetIPChecksumC1Ev[];
102164 +EXPORT_SYMBOL(_ZN13SetIPChecksumC1Ev);
102165 +extern char _ZN13SetIPChecksumC2Ev[];
102166 +EXPORT_SYMBOL(_ZN13SetIPChecksumC2Ev);
102167 +extern char _ZN13SetIPChecksumD0Ev[];
102168 +EXPORT_SYMBOL(_ZN13SetIPChecksumD0Ev);
102169 +extern char _ZN13SetIPChecksumD1Ev[];
102170 +EXPORT_SYMBOL(_ZN13SetIPChecksumD1Ev);
102171 +extern char _ZN13SetIPChecksumD2Ev[];
102172 +EXPORT_SYMBOL(_ZN13SetIPChecksumD2Ev);
102173 +extern char _ZNK13SetIPChecksum10class_nameEv[];
102174 +EXPORT_SYMBOL(_ZNK13SetIPChecksum10class_nameEv);
102175 +extern char _ZNK13SetIPChecksum10port_countEv[];
102176 +EXPORT_SYMBOL(_ZNK13SetIPChecksum10port_countEv);
102177 +extern char _ZNK13SetIPChecksum10processingEv[];
102178 +EXPORT_SYMBOL(_ZNK13SetIPChecksum10processingEv);
102179 +extern char _ZTV13SetIPChecksum[];
102180 +EXPORT_SYMBOL(_ZTV13SetIPChecksum);
102181 +extern char _ZN9SetIPDSCP12add_handlersEv[];
102182 +EXPORT_SYMBOL(_ZN9SetIPDSCP12add_handlersEv);
102183 +extern char _ZN9SetIPDSCP4pullEi[];
102184 +EXPORT_SYMBOL(_ZN9SetIPDSCP4pullEi);
102185 +extern char _ZN9SetIPDSCP4pushEiP6Packet[];
102186 +EXPORT_SYMBOL(_ZN9SetIPDSCP4pushEiP6Packet);
102187 +extern char _ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler[];
102188 +EXPORT_SYMBOL(_ZN9SetIPDSCP9configureER6VectorI6StringEP12ErrorHandler);
102189 +extern char _ZN9SetIPDSCPC1Ev[];
102190 +EXPORT_SYMBOL(_ZN9SetIPDSCPC1Ev);
102191 +extern char _ZN9SetIPDSCPC2Ev[];
102192 +EXPORT_SYMBOL(_ZN9SetIPDSCPC2Ev);
102193 +extern char _ZN9SetIPDSCPD0Ev[];
102194 +EXPORT_SYMBOL(_ZN9SetIPDSCPD0Ev);
102195 +extern char _ZN9SetIPDSCPD1Ev[];
102196 +EXPORT_SYMBOL(_ZN9SetIPDSCPD1Ev);
102197 +extern char _ZN9SetIPDSCPD2Ev[];
102198 +EXPORT_SYMBOL(_ZN9SetIPDSCPD2Ev);
102199 +extern char _ZNK9SetIPDSCP10class_nameEv[];
102200 +EXPORT_SYMBOL(_ZNK9SetIPDSCP10class_nameEv);
102201 +extern char _ZNK9SetIPDSCP10port_countEv[];
102202 +EXPORT_SYMBOL(_ZNK9SetIPDSCP10port_countEv);
102203 +extern char _ZNK9SetIPDSCP10processingEv[];
102204 +EXPORT_SYMBOL(_ZNK9SetIPDSCP10processingEv);
102205 +extern char _ZNK9SetIPDSCP20can_live_reconfigureEv[];
102206 +EXPORT_SYMBOL(_ZNK9SetIPDSCP20can_live_reconfigureEv);
102207 +extern char _ZTV9SetIPDSCP[];
102208 +EXPORT_SYMBOL(_ZTV9SetIPDSCP);
102209 +extern char _ZN13SetPacketType10parse_typeERK6String[];
102210 +EXPORT_SYMBOL(_ZN13SetPacketType10parse_typeERK6String);
102211 +extern char _ZN13SetPacketType12unparse_typeEi[];
102212 +EXPORT_SYMBOL(_ZN13SetPacketType12unparse_typeEi);
102213 +extern char _ZN13SetPacketType13simple_actionEP6Packet[];
102214 +EXPORT_SYMBOL(_ZN13SetPacketType13simple_actionEP6Packet);
102215 +extern char _ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler[];
102216 +EXPORT_SYMBOL(_ZN13SetPacketType9configureER6VectorI6StringEP12ErrorHandler);
102217 +extern char _ZN13SetPacketTypeC1Ev[];
102218 +EXPORT_SYMBOL(_ZN13SetPacketTypeC1Ev);
102219 +extern char _ZN13SetPacketTypeC2Ev[];
102220 +EXPORT_SYMBOL(_ZN13SetPacketTypeC2Ev);
102221 +extern char _ZN13SetPacketTypeD0Ev[];
102222 +EXPORT_SYMBOL(_ZN13SetPacketTypeD0Ev);
102223 +extern char _ZN13SetPacketTypeD1Ev[];
102224 +EXPORT_SYMBOL(_ZN13SetPacketTypeD1Ev);
102225 +extern char _ZN13SetPacketTypeD2Ev[];
102226 +EXPORT_SYMBOL(_ZN13SetPacketTypeD2Ev);
102227 +extern char _ZNK13SetPacketType10class_nameEv[];
102228 +EXPORT_SYMBOL(_ZNK13SetPacketType10class_nameEv);
102229 +extern char _ZNK13SetPacketType10port_countEv[];
102230 +EXPORT_SYMBOL(_ZNK13SetPacketType10port_countEv);
102231 +extern char _ZNK13SetPacketType10processingEv[];
102232 +EXPORT_SYMBOL(_ZNK13SetPacketType10processingEv);
102233 +extern char _ZNK13SetPacketType20can_live_reconfigureEv[];
102234 +EXPORT_SYMBOL(_ZNK13SetPacketType20can_live_reconfigureEv);
102235 +extern char _ZTV13SetPacketType[];
102236 +EXPORT_SYMBOL(_ZTV13SetPacketType);
102237 +extern char _ZN12SetPerfCount4castEPKc[];
102238 +EXPORT_SYMBOL(_ZN12SetPerfCount4castEPKc);
102239 +extern char _ZN12SetPerfCount4pullEi[];
102240 +EXPORT_SYMBOL(_ZN12SetPerfCount4pullEi);
102241 +extern char _ZN12SetPerfCount4pushEiP6Packet[];
102242 +EXPORT_SYMBOL(_ZN12SetPerfCount4pushEiP6Packet);
102243 +extern char _ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler[];
102244 +EXPORT_SYMBOL(_ZN12SetPerfCount9configureER6VectorI6StringEP12ErrorHandler);
102245 +extern char _ZN12SetPerfCountC1Ev[];
102246 +EXPORT_SYMBOL(_ZN12SetPerfCountC1Ev);
102247 +extern char _ZN12SetPerfCountC2Ev[];
102248 +EXPORT_SYMBOL(_ZN12SetPerfCountC2Ev);
102249 +extern char _ZN12SetPerfCountD0Ev[];
102250 +EXPORT_SYMBOL(_ZN12SetPerfCountD0Ev);
102251 +extern char _ZN12SetPerfCountD1Ev[];
102252 +EXPORT_SYMBOL(_ZN12SetPerfCountD1Ev);
102253 +extern char _ZN12SetPerfCountD2Ev[];
102254 +EXPORT_SYMBOL(_ZN12SetPerfCountD2Ev);
102255 +extern char _ZNK12SetPerfCount10class_nameEv[];
102256 +EXPORT_SYMBOL(_ZNK12SetPerfCount10class_nameEv);
102257 +extern char _ZNK12SetPerfCount10port_countEv[];
102258 +EXPORT_SYMBOL(_ZNK12SetPerfCount10port_countEv);
102259 +extern char _ZNK12SetPerfCount10processingEv[];
102260 +EXPORT_SYMBOL(_ZNK12SetPerfCount10processingEv);
102261 +extern char _ZTV12SetPerfCount[];
102262 +EXPORT_SYMBOL(_ZTV12SetPerfCount);
102263 +extern char _ZN16SetRandIPAddress13simple_actionEP6Packet[];
102264 +EXPORT_SYMBOL(_ZN16SetRandIPAddress13simple_actionEP6Packet);
102265 +extern char _ZN16SetRandIPAddress4pickEv[];
102266 +EXPORT_SYMBOL(_ZN16SetRandIPAddress4pickEv);
102267 +extern char _ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler[];
102268 +EXPORT_SYMBOL(_ZN16SetRandIPAddress9configureER6VectorI6StringEP12ErrorHandler);
102269 +extern char _ZN16SetRandIPAddressC1Ev[];
102270 +EXPORT_SYMBOL(_ZN16SetRandIPAddressC1Ev);
102271 +extern char _ZN16SetRandIPAddressC2Ev[];
102272 +EXPORT_SYMBOL(_ZN16SetRandIPAddressC2Ev);
102273 +extern char _ZN16SetRandIPAddressD0Ev[];
102274 +EXPORT_SYMBOL(_ZN16SetRandIPAddressD0Ev);
102275 +extern char _ZN16SetRandIPAddressD1Ev[];
102276 +EXPORT_SYMBOL(_ZN16SetRandIPAddressD1Ev);
102277 +extern char _ZN16SetRandIPAddressD2Ev[];
102278 +EXPORT_SYMBOL(_ZN16SetRandIPAddressD2Ev);
102279 +extern char _ZNK16SetRandIPAddress10class_nameEv[];
102280 +EXPORT_SYMBOL(_ZNK16SetRandIPAddress10class_nameEv);
102281 +extern char _ZNK16SetRandIPAddress10port_countEv[];
102282 +EXPORT_SYMBOL(_ZNK16SetRandIPAddress10port_countEv);
102283 +extern char _ZNK16SetRandIPAddress10processingEv[];
102284 +EXPORT_SYMBOL(_ZNK16SetRandIPAddress10processingEv);
102285 +extern char _ZTV16SetRandIPAddress[];
102286 +EXPORT_SYMBOL(_ZTV16SetRandIPAddress);
102287 +extern char _ZN14SetTCPChecksum13simple_actionEP6Packet[];
102288 +EXPORT_SYMBOL(_ZN14SetTCPChecksum13simple_actionEP6Packet);
102289 +extern char _ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler[];
102290 +EXPORT_SYMBOL(_ZN14SetTCPChecksum9configureER6VectorI6StringEP12ErrorHandler);
102291 +extern char _ZN14SetTCPChecksumC1Ev[];
102292 +EXPORT_SYMBOL(_ZN14SetTCPChecksumC1Ev);
102293 +extern char _ZN14SetTCPChecksumC2Ev[];
102294 +EXPORT_SYMBOL(_ZN14SetTCPChecksumC2Ev);
102295 +extern char _ZN14SetTCPChecksumD0Ev[];
102296 +EXPORT_SYMBOL(_ZN14SetTCPChecksumD0Ev);
102297 +extern char _ZN14SetTCPChecksumD1Ev[];
102298 +EXPORT_SYMBOL(_ZN14SetTCPChecksumD1Ev);
102299 +extern char _ZN14SetTCPChecksumD2Ev[];
102300 +EXPORT_SYMBOL(_ZN14SetTCPChecksumD2Ev);
102301 +extern char _ZNK14SetTCPChecksum10class_nameEv[];
102302 +EXPORT_SYMBOL(_ZNK14SetTCPChecksum10class_nameEv);
102303 +extern char _ZNK14SetTCPChecksum10port_countEv[];
102304 +EXPORT_SYMBOL(_ZNK14SetTCPChecksum10port_countEv);
102305 +extern char _ZNK14SetTCPChecksum10processingEv[];
102306 +EXPORT_SYMBOL(_ZNK14SetTCPChecksum10processingEv);
102307 +extern char _ZTV14SetTCPChecksum[];
102308 +EXPORT_SYMBOL(_ZTV14SetTCPChecksum);
102309 +extern char _ZN12SetTimestamp13simple_actionEP6Packet[];
102310 +EXPORT_SYMBOL(_ZN12SetTimestamp13simple_actionEP6Packet);
102311 +extern char _ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler[];
102312 +EXPORT_SYMBOL(_ZN12SetTimestamp9configureER6VectorI6StringEP12ErrorHandler);
102313 +extern char _ZN12SetTimestampC1Ev[];
102314 +EXPORT_SYMBOL(_ZN12SetTimestampC1Ev);
102315 +extern char _ZN12SetTimestampC2Ev[];
102316 +EXPORT_SYMBOL(_ZN12SetTimestampC2Ev);
102317 +extern char _ZN12SetTimestampD0Ev[];
102318 +EXPORT_SYMBOL(_ZN12SetTimestampD0Ev);
102319 +extern char _ZN12SetTimestampD1Ev[];
102320 +EXPORT_SYMBOL(_ZN12SetTimestampD1Ev);
102321 +extern char _ZN12SetTimestampD2Ev[];
102322 +EXPORT_SYMBOL(_ZN12SetTimestampD2Ev);
102323 +extern char _ZNK12SetTimestamp10class_nameEv[];
102324 +EXPORT_SYMBOL(_ZNK12SetTimestamp10class_nameEv);
102325 +extern char _ZNK12SetTimestamp10port_countEv[];
102326 +EXPORT_SYMBOL(_ZNK12SetTimestamp10port_countEv);
102327 +extern char _ZNK12SetTimestamp10processingEv[];
102328 +EXPORT_SYMBOL(_ZNK12SetTimestamp10processingEv);
102329 +extern char _ZTV12SetTimestamp[];
102330 +EXPORT_SYMBOL(_ZTV12SetTimestamp);
102331 +extern char _ZN14SetUDPChecksum13simple_actionEP6Packet[];
102332 +EXPORT_SYMBOL(_ZN14SetUDPChecksum13simple_actionEP6Packet);
102333 +extern char _ZN14SetUDPChecksumC1Ev[];
102334 +EXPORT_SYMBOL(_ZN14SetUDPChecksumC1Ev);
102335 +extern char _ZN14SetUDPChecksumC2Ev[];
102336 +EXPORT_SYMBOL(_ZN14SetUDPChecksumC2Ev);
102337 +extern char _ZN14SetUDPChecksumD0Ev[];
102338 +EXPORT_SYMBOL(_ZN14SetUDPChecksumD0Ev);
102339 +extern char _ZN14SetUDPChecksumD1Ev[];
102340 +EXPORT_SYMBOL(_ZN14SetUDPChecksumD1Ev);
102341 +extern char _ZN14SetUDPChecksumD2Ev[];
102342 +EXPORT_SYMBOL(_ZN14SetUDPChecksumD2Ev);
102343 +extern char _ZNK14SetUDPChecksum10class_nameEv[];
102344 +EXPORT_SYMBOL(_ZNK14SetUDPChecksum10class_nameEv);
102345 +extern char _ZNK14SetUDPChecksum10port_countEv[];
102346 +EXPORT_SYMBOL(_ZNK14SetUDPChecksum10port_countEv);
102347 +extern char _ZNK14SetUDPChecksum10processingEv[];
102348 +EXPORT_SYMBOL(_ZNK14SetUDPChecksum10processingEv);
102349 +extern char _ZTV14SetUDPChecksum[];
102350 +EXPORT_SYMBOL(_ZTV14SetUDPChecksum);
102351 +extern char _ZN6Shaper12add_handlersEv[];
102352 +EXPORT_SYMBOL(_ZN6Shaper12add_handlersEv);
102353 +extern char _ZN6Shaper4pullEi[];
102354 +EXPORT_SYMBOL(_ZN6Shaper4pullEi);
102355 +extern char _ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler[];
102356 +EXPORT_SYMBOL(_ZN6Shaper9configureER6VectorI6StringEP12ErrorHandler);
102357 +extern char _ZN6ShaperC1Ev[];
102358 +EXPORT_SYMBOL(_ZN6ShaperC1Ev);
102359 +extern char _ZN6ShaperC2Ev[];
102360 +EXPORT_SYMBOL(_ZN6ShaperC2Ev);
102361 +extern char _ZN6ShaperD0Ev[];
102362 +EXPORT_SYMBOL(_ZN6ShaperD0Ev);
102363 +extern char _ZN6ShaperD1Ev[];
102364 +EXPORT_SYMBOL(_ZN6ShaperD1Ev);
102365 +extern char _ZN6ShaperD2Ev[];
102366 +EXPORT_SYMBOL(_ZN6ShaperD2Ev);
102367 +extern char _ZNK6Shaper10class_nameEv[];
102368 +EXPORT_SYMBOL(_ZNK6Shaper10class_nameEv);
102369 +extern char _ZNK6Shaper13configurationER6VectorI6StringE[];
102370 +EXPORT_SYMBOL(_ZNK6Shaper13configurationER6VectorI6StringE);
102371 +extern char _ZTV6Shaper[];
102372 +EXPORT_SYMBOL(_ZTV6Shaper);
102373 +extern char _ZN11SimpleQueue10initializeEP12ErrorHandler[];
102374 +EXPORT_SYMBOL(_ZN11SimpleQueue10initializeEP12ErrorHandler);
102375 +extern char _ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler[];
102376 +EXPORT_SYMBOL(_ZN11SimpleQueue10take_stateEP7ElementP12ErrorHandler);
102377 +extern char _ZN11SimpleQueue12add_handlersEv[];
102378 +EXPORT_SYMBOL(_ZN11SimpleQueue12add_handlersEv);
102379 +extern char _ZN11SimpleQueue12read_handlerEP7ElementPv[];
102380 +EXPORT_SYMBOL(_ZN11SimpleQueue12read_handlerEP7ElementPv);
102381 +extern char _ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler[];
102382 +EXPORT_SYMBOL(_ZN11SimpleQueue13write_handlerERK6StringP7ElementPvP12ErrorHandler);
102383 +extern char _ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler[];
102384 +EXPORT_SYMBOL(_ZN11SimpleQueue16live_reconfigureER6VectorI6StringEP12ErrorHandler);
102385 +extern char _ZN11SimpleQueue4castEPKc[];
102386 +EXPORT_SYMBOL(_ZN11SimpleQueue4castEPKc);
102387 +extern char _ZN11SimpleQueue4pullEi[];
102388 +EXPORT_SYMBOL(_ZN11SimpleQueue4pullEi);
102389 +extern char _ZN11SimpleQueue4pushEiP6Packet[];
102390 +EXPORT_SYMBOL(_ZN11SimpleQueue4pushEiP6Packet);
102391 +extern char _ZN11SimpleQueue7cleanupEN7Element12CleanupStageE[];
102392 +EXPORT_SYMBOL(_ZN11SimpleQueue7cleanupEN7Element12CleanupStageE);
102393 +extern char _ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler[];
102394 +EXPORT_SYMBOL(_ZN11SimpleQueue9configureER6VectorI6StringEP12ErrorHandler);
102395 +extern char _ZN11SimpleQueueC1Ev[];
102396 +EXPORT_SYMBOL(_ZN11SimpleQueueC1Ev);
102397 +extern char _ZN11SimpleQueueC2Ev[];
102398 +EXPORT_SYMBOL(_ZN11SimpleQueueC2Ev);
102399 +extern char _ZN11SimpleQueueD0Ev[];
102400 +EXPORT_SYMBOL(_ZN11SimpleQueueD0Ev);
102401 +extern char _ZN11SimpleQueueD1Ev[];
102402 +EXPORT_SYMBOL(_ZN11SimpleQueueD1Ev);
102403 +extern char _ZN11SimpleQueueD2Ev[];
102404 +EXPORT_SYMBOL(_ZN11SimpleQueueD2Ev);
102405 +extern char _ZNK11SimpleQueue10class_nameEv[];
102406 +EXPORT_SYMBOL(_ZNK11SimpleQueue10class_nameEv);
102407 +extern char _ZTV11SimpleQueue[];
102408 +EXPORT_SYMBOL(_ZTV11SimpleQueue);
102409 +extern char _Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_[];
102410 +EXPORT_SYMBOL(_Z6jvcompI12chash_node_tIiEiXadL_ZNS1_3keyEEEEiPKvS3_);
102411 +extern char _ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler[];
102412 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper12parse_serverERK6StringPPN4IPRw7PatternEPiS7_S7_P7ElementP12ErrorHandler);
102413 +extern char _ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler[];
102414 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper15notify_rewriterEP4IPRwP12ErrorHandler);
102415 +extern char _ZN18SourceIPHashMapper4castEPKc[];
102416 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper4castEPKc);
102417 +extern char _ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE[];
102418 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper7cleanupEN7Element12CleanupStageE);
102419 +extern char _ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[];
102420 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet);
102421 +extern char _ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler[];
102422 +EXPORT_SYMBOL(_ZN18SourceIPHashMapper9configureER6VectorI6StringEP12ErrorHandler);
102423 +extern char _ZN18SourceIPHashMapperC1Ev[];
102424 +EXPORT_SYMBOL(_ZN18SourceIPHashMapperC1Ev);
102425 +extern char _ZN18SourceIPHashMapperC2Ev[];
102426 +EXPORT_SYMBOL(_ZN18SourceIPHashMapperC2Ev);
102427 +extern char _ZN18SourceIPHashMapperD0Ev[];
102428 +EXPORT_SYMBOL(_ZN18SourceIPHashMapperD0Ev);
102429 +extern char _ZN18SourceIPHashMapperD1Ev[];
102430 +EXPORT_SYMBOL(_ZN18SourceIPHashMapperD1Ev);
102431 +extern char _ZN18SourceIPHashMapperD2Ev[];
102432 +EXPORT_SYMBOL(_ZN18SourceIPHashMapperD2Ev);
102433 +extern char _ZNK18SourceIPHashMapper10class_nameEv[];
102434 +EXPORT_SYMBOL(_ZNK18SourceIPHashMapper10class_nameEv);
102435 +extern char _ZNK18SourceIPHashMapper15configure_phaseEv[];
102436 +EXPORT_SYMBOL(_ZNK18SourceIPHashMapper15configure_phaseEv);
102437 +extern char _ZTV18SourceIPHashMapper[];
102438 +EXPORT_SYMBOL(_ZTV18SourceIPHashMapper);
102439 +extern char _ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet[];
102440 +EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapper7get_mapEP4IPRwiRK8IPFlowIDP6Packet);
102441 +extern char _ZThn60_N18SourceIPHashMapperD0Ev[];
102442 +EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapperD0Ev);
102443 +extern char _ZThn60_N18SourceIPHashMapperD1Ev[];
102444 +EXPORT_SYMBOL(_ZThn60_N18SourceIPHashMapperD1Ev);
102445 +extern char _Z11skbmgr_initv[];
102446 +EXPORT_SYMBOL(_Z11skbmgr_initv);
102447 +extern char _Z14skbmgr_cleanupv[];
102448 +EXPORT_SYMBOL(_Z14skbmgr_cleanupv);
102449 +extern char _Z19skbmgr_recycle_skbsP7sk_buff[];
102450 +EXPORT_SYMBOL(_Z19skbmgr_recycle_skbsP7sk_buff);
102451 +extern char _Z20skbmgr_allocate_skbsjjPi[];
102452 +EXPORT_SYMBOL(_Z20skbmgr_allocate_skbsjjPi);
102453 +extern char _ZN15RecycledSkbPool10initializeEv[];
102454 +EXPORT_SYMBOL(_ZN15RecycledSkbPool10initializeEv);
102455 +extern char _ZN15RecycledSkbPool7cleanupEv[];
102456 +EXPORT_SYMBOL(_ZN15RecycledSkbPool7cleanupEv);
102457 +extern char _ZN15RecycledSkbPool7recycleEP7sk_buff[];
102458 +EXPORT_SYMBOL(_ZN15RecycledSkbPool7recycleEP7sk_buff);
102459 +extern char _ZN15RecycledSkbPool8allocateEjjiPi[];
102460 +EXPORT_SYMBOL(_ZN15RecycledSkbPool8allocateEjjiPi);
102461 +extern char _ZN17RecycledSkbBucket10initializeEv[];
102462 +EXPORT_SYMBOL(_ZN17RecycledSkbBucket10initializeEv);
102463 +extern char _ZN17RecycledSkbBucket7cleanupEv[];
102464 +EXPORT_SYMBOL(_ZN17RecycledSkbBucket7cleanupEv);
102465 +extern char _ZN14SortedIPLookup10sort_tableEv[];
102466 +EXPORT_SYMBOL(_ZN14SortedIPLookup10sort_tableEv);
102467 +extern char _ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler[];
102468 +EXPORT_SYMBOL(_ZN14SortedIPLookup12remove_routeERK7IPRoutePS0_P12ErrorHandler);
102469 +extern char _ZN14SortedIPLookup4pushEiP6Packet[];
102470 +EXPORT_SYMBOL(_ZN14SortedIPLookup4pushEiP6Packet);
102471 +extern char _ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler[];
102472 +EXPORT_SYMBOL(_ZN14SortedIPLookup9add_routeERK7IPRoutebPS0_P12ErrorHandler);
102473 +extern char _ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler[];
102474 +EXPORT_SYMBOL(_ZN14SortedIPLookup9configureER6VectorI6StringEP12ErrorHandler);
102475 +extern char _ZN14SortedIPLookupC1Ev[];
102476 +EXPORT_SYMBOL(_ZN14SortedIPLookupC1Ev);
102477 +extern char _ZN14SortedIPLookupC2Ev[];
102478 +EXPORT_SYMBOL(_ZN14SortedIPLookupC2Ev);
102479 +extern char _ZN14SortedIPLookupD0Ev[];
102480 +EXPORT_SYMBOL(_ZN14SortedIPLookupD0Ev);
102481 +extern char _ZN14SortedIPLookupD1Ev[];
102482 +EXPORT_SYMBOL(_ZN14SortedIPLookupD1Ev);
102483 +extern char _ZN14SortedIPLookupD2Ev[];
102484 +EXPORT_SYMBOL(_ZN14SortedIPLookupD2Ev);
102485 +extern char _ZN6VectorI7IPRouteE4swapERS1_[];
102486 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteE4swapERS1_);
102487 +extern char _ZN6VectorI7IPRouteE6resizeEiRKS0_[];
102488 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteE6resizeEiRKS0_);
102489 +extern char _ZN6VectorI7IPRouteEC1ERKS1_[];
102490 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteEC1ERKS1_);
102491 +extern char _ZN6VectorI7IPRouteEaSERKS1_[];
102492 +EXPORT_SYMBOL(_ZN6VectorI7IPRouteEaSERKS1_);
102493 +extern char _ZNK14SortedIPLookup10class_nameEv[];
102494 +EXPORT_SYMBOL(_ZNK14SortedIPLookup10class_nameEv);
102495 +extern char _ZNK14SortedIPLookup5checkEv[];
102496 +EXPORT_SYMBOL(_ZNK14SortedIPLookup5checkEv);
102497 +extern char _ZTV14SortedIPLookup[];
102498 +EXPORT_SYMBOL(_ZTV14SortedIPLookup);
102499 +extern char _ZN15SpinlockAcquire13simple_actionEP6Packet[];
102500 +EXPORT_SYMBOL(_ZN15SpinlockAcquire13simple_actionEP6Packet);
102501 +extern char _ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler[];
102502 +EXPORT_SYMBOL(_ZN15SpinlockAcquire9configureER6VectorI6StringEP12ErrorHandler);
102503 +extern char _ZN15SpinlockAcquireD0Ev[];
102504 +EXPORT_SYMBOL(_ZN15SpinlockAcquireD0Ev);
102505 +extern char _ZN15SpinlockAcquireD1Ev[];
102506 +EXPORT_SYMBOL(_ZN15SpinlockAcquireD1Ev);
102507 +extern char _ZNK15SpinlockAcquire10class_nameEv[];
102508 +EXPORT_SYMBOL(_ZNK15SpinlockAcquire10class_nameEv);
102509 +extern char _ZNK15SpinlockAcquire10port_countEv[];
102510 +EXPORT_SYMBOL(_ZNK15SpinlockAcquire10port_countEv);
102511 +extern char _ZNK15SpinlockAcquire10processingEv[];
102512 +EXPORT_SYMBOL(_ZNK15SpinlockAcquire10processingEv);
102513 +extern char _ZTV15SpinlockAcquire[];
102514 +EXPORT_SYMBOL(_ZTV15SpinlockAcquire);
102515 +extern char _ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler[];
102516 +EXPORT_SYMBOL(_ZN12SpinlockInfo12add_spinlockERK6VectorI6StringERKS1_P12ErrorHandler);
102517 +extern char _ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE[];
102518 +EXPORT_SYMBOL(_ZN12SpinlockInfo7cleanupEN7Element12CleanupStageE);
102519 +extern char _ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler[];
102520 +EXPORT_SYMBOL(_ZN12SpinlockInfo9configureER6VectorI6StringEP12ErrorHandler);
102521 +extern char _ZN12SpinlockInfoC1Ev[];
102522 +EXPORT_SYMBOL(_ZN12SpinlockInfoC1Ev);
102523 +extern char _ZN12SpinlockInfoC2Ev[];
102524 +EXPORT_SYMBOL(_ZN12SpinlockInfoC2Ev);
102525 +extern char _ZN12SpinlockInfoD0Ev[];
102526 +EXPORT_SYMBOL(_ZN12SpinlockInfoD0Ev);
102527 +extern char _ZN12SpinlockInfoD1Ev[];
102528 +EXPORT_SYMBOL(_ZN12SpinlockInfoD1Ev);
102529 +extern char _ZN12SpinlockInfoD2Ev[];
102530 +EXPORT_SYMBOL(_ZN12SpinlockInfoD2Ev);
102531 +extern char _ZNK12SpinlockInfo10class_nameEv[];
102532 +EXPORT_SYMBOL(_ZNK12SpinlockInfo10class_nameEv);
102533 +extern char _ZNK12SpinlockInfo15configure_phaseEv[];
102534 +EXPORT_SYMBOL(_ZNK12SpinlockInfo15configure_phaseEv);
102535 +extern char _ZNK12SpinlockInfo5queryERK6StringS2_[];
102536 +EXPORT_SYMBOL(_ZNK12SpinlockInfo5queryERK6StringS2_);
102537 +extern char _ZTV12SpinlockInfo[];
102538 +EXPORT_SYMBOL(_ZTV12SpinlockInfo);
102539 +extern char _ZN15SpinlockRelease13simple_actionEP6Packet[];
102540 +EXPORT_SYMBOL(_ZN15SpinlockRelease13simple_actionEP6Packet);
102541 +extern char _ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler[];
102542 +EXPORT_SYMBOL(_ZN15SpinlockRelease9configureER6VectorI6StringEP12ErrorHandler);
102543 +extern char _ZN15SpinlockReleaseD0Ev[];
102544 +EXPORT_SYMBOL(_ZN15SpinlockReleaseD0Ev);
102545 +extern char _ZN15SpinlockReleaseD1Ev[];
102546 +EXPORT_SYMBOL(_ZN15SpinlockReleaseD1Ev);
102547 +extern char _ZNK15SpinlockRelease10class_nameEv[];
102548 +EXPORT_SYMBOL(_ZNK15SpinlockRelease10class_nameEv);
102549 +extern char _ZNK15SpinlockRelease10port_countEv[];
102550 +EXPORT_SYMBOL(_ZNK15SpinlockRelease10port_countEv);
102551 +extern char _ZNK15SpinlockRelease10processingEv[];
102552 +EXPORT_SYMBOL(_ZNK15SpinlockRelease10processingEv);
102553 +extern char _ZTV15SpinlockRelease[];
102554 +EXPORT_SYMBOL(_ZTV15SpinlockRelease);
102555 +extern char _ZN16StaticPullSwitch4pullEi[];
102556 +EXPORT_SYMBOL(_ZN16StaticPullSwitch4pullEi);
102557 +extern char _ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler[];
102558 +EXPORT_SYMBOL(_ZN16StaticPullSwitch9configureER6VectorI6StringEP12ErrorHandler);
102559 +extern char _ZN16StaticPullSwitchC1Ev[];
102560 +EXPORT_SYMBOL(_ZN16StaticPullSwitchC1Ev);
102561 +extern char _ZN16StaticPullSwitchC2Ev[];
102562 +EXPORT_SYMBOL(_ZN16StaticPullSwitchC2Ev);
102563 +extern char _ZN16StaticPullSwitchD0Ev[];
102564 +EXPORT_SYMBOL(_ZN16StaticPullSwitchD0Ev);
102565 +extern char _ZN16StaticPullSwitchD1Ev[];
102566 +EXPORT_SYMBOL(_ZN16StaticPullSwitchD1Ev);
102567 +extern char _ZN16StaticPullSwitchD2Ev[];
102568 +EXPORT_SYMBOL(_ZN16StaticPullSwitchD2Ev);
102569 +extern char _ZNK16StaticPullSwitch10class_nameEv[];
102570 +EXPORT_SYMBOL(_ZNK16StaticPullSwitch10class_nameEv);
102571 +extern char _ZNK16StaticPullSwitch10port_countEv[];
102572 +EXPORT_SYMBOL(_ZNK16StaticPullSwitch10port_countEv);
102573 +extern char _ZNK16StaticPullSwitch10processingEv[];
102574 +EXPORT_SYMBOL(_ZNK16StaticPullSwitch10processingEv);
102575 +extern char _ZTV16StaticPullSwitch[];
102576 +EXPORT_SYMBOL(_ZTV16StaticPullSwitch);
102577 +extern char _ZN12StaticSwitch4pushEiP6Packet[];
102578 +EXPORT_SYMBOL(_ZN12StaticSwitch4pushEiP6Packet);
102579 +extern char _ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler[];
102580 +EXPORT_SYMBOL(_ZN12StaticSwitch9configureER6VectorI6StringEP12ErrorHandler);
102581 +extern char _ZN12StaticSwitchC1Ev[];
102582 +EXPORT_SYMBOL(_ZN12StaticSwitchC1Ev);
102583 +extern char _ZN12StaticSwitchC2Ev[];
102584 +EXPORT_SYMBOL(_ZN12StaticSwitchC2Ev);
102585 +extern char _ZN12StaticSwitchD0Ev[];
102586 +EXPORT_SYMBOL(_ZN12StaticSwitchD0Ev);
102587 +extern char _ZN12StaticSwitchD1Ev[];
102588 +EXPORT_SYMBOL(_ZN12StaticSwitchD1Ev);
102589 +extern char _ZN12StaticSwitchD2Ev[];
102590 +EXPORT_SYMBOL(_ZN12StaticSwitchD2Ev);
102591 +extern char _ZNK12StaticSwitch10class_nameEv[];
102592 +EXPORT_SYMBOL(_ZNK12StaticSwitch10class_nameEv);
102593 +extern char _ZNK12StaticSwitch10port_countEv[];
102594 +EXPORT_SYMBOL(_ZNK12StaticSwitch10port_countEv);
102595 +extern char _ZNK12StaticSwitch10processingEv[];
102596 +EXPORT_SYMBOL(_ZNK12StaticSwitch10processingEv);
102597 +extern char _ZTV12StaticSwitch[];
102598 +EXPORT_SYMBOL(_ZTV12StaticSwitch);
102599 +extern char _ZN17StaticThreadSched22initial_home_thread_idEP4Taskb[];
102600 +EXPORT_SYMBOL(_ZN17StaticThreadSched22initial_home_thread_idEP4Taskb);
102601 +extern char _ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler[];
102602 +EXPORT_SYMBOL(_ZN17StaticThreadSched9configureER6VectorI6StringEP12ErrorHandler);
102603 +extern char _ZN17StaticThreadSchedC1Ev[];
102604 +EXPORT_SYMBOL(_ZN17StaticThreadSchedC1Ev);
102605 +extern char _ZN17StaticThreadSchedC2Ev[];
102606 +EXPORT_SYMBOL(_ZN17StaticThreadSchedC2Ev);
102607 +extern char _ZN17StaticThreadSchedD0Ev[];
102608 +EXPORT_SYMBOL(_ZN17StaticThreadSchedD0Ev);
102609 +extern char _ZN17StaticThreadSchedD1Ev[];
102610 +EXPORT_SYMBOL(_ZN17StaticThreadSchedD1Ev);
102611 +extern char _ZN17StaticThreadSchedD2Ev[];
102612 +EXPORT_SYMBOL(_ZN17StaticThreadSchedD2Ev);
102613 +extern char _ZNK17StaticThreadSched10class_nameEv[];
102614 +EXPORT_SYMBOL(_ZNK17StaticThreadSched10class_nameEv);
102615 +extern char _ZTV17StaticThreadSched[];
102616 +EXPORT_SYMBOL(_ZTV17StaticThreadSched);
102617 +extern char _ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb[];
102618 +EXPORT_SYMBOL(_ZThn60_N17StaticThreadSched22initial_home_thread_idEP4Taskb);
102619 +extern char _ZThn60_N17StaticThreadSchedD0Ev[];
102620 +EXPORT_SYMBOL(_ZThn60_N17StaticThreadSchedD0Ev);
102621 +extern char _ZThn60_N17StaticThreadSchedD1Ev[];
102622 +EXPORT_SYMBOL(_ZThn60_N17StaticThreadSchedD1Ev);
102623 +extern char _ZN9StoreData13simple_actionEP6Packet[];
102624 +EXPORT_SYMBOL(_ZN9StoreData13simple_actionEP6Packet);
102625 +extern char _ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler[];
102626 +EXPORT_SYMBOL(_ZN9StoreData9configureER6VectorI6StringEP12ErrorHandler);
102627 +extern char _ZN9StoreDataC1Ev[];
102628 +EXPORT_SYMBOL(_ZN9StoreDataC1Ev);
102629 +extern char _ZN9StoreDataC2Ev[];
102630 +EXPORT_SYMBOL(_ZN9StoreDataC2Ev);
102631 +extern char _ZN9StoreDataD0Ev[];
102632 +EXPORT_SYMBOL(_ZN9StoreDataD0Ev);
102633 +extern char _ZN9StoreDataD1Ev[];
102634 +EXPORT_SYMBOL(_ZN9StoreDataD1Ev);
102635 +extern char _ZN9StoreDataD2Ev[];
102636 +EXPORT_SYMBOL(_ZN9StoreDataD2Ev);
102637 +extern char _ZNK9StoreData10class_nameEv[];
102638 +EXPORT_SYMBOL(_ZNK9StoreData10class_nameEv);
102639 +extern char _ZNK9StoreData10port_countEv[];
102640 +EXPORT_SYMBOL(_ZNK9StoreData10port_countEv);
102641 +extern char _ZNK9StoreData10processingEv[];
102642 +EXPORT_SYMBOL(_ZNK9StoreData10processingEv);
102643 +extern char _ZTV9StoreData[];
102644 +EXPORT_SYMBOL(_ZTV9StoreData);
102645 +extern char _ZN14StoreIPAddress13simple_actionEP6Packet[];
102646 +EXPORT_SYMBOL(_ZN14StoreIPAddress13simple_actionEP6Packet);
102647 +extern char _ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler[];
102648 +EXPORT_SYMBOL(_ZN14StoreIPAddress9configureER6VectorI6StringEP12ErrorHandler);
102649 +extern char _ZN14StoreIPAddressC1Ev[];
102650 +EXPORT_SYMBOL(_ZN14StoreIPAddressC1Ev);
102651 +extern char _ZN14StoreIPAddressC2Ev[];
102652 +EXPORT_SYMBOL(_ZN14StoreIPAddressC2Ev);
102653 +extern char _ZN14StoreIPAddressD0Ev[];
102654 +EXPORT_SYMBOL(_ZN14StoreIPAddressD0Ev);
102655 +extern char _ZN14StoreIPAddressD1Ev[];
102656 +EXPORT_SYMBOL(_ZN14StoreIPAddressD1Ev);
102657 +extern char _ZN14StoreIPAddressD2Ev[];
102658 +EXPORT_SYMBOL(_ZN14StoreIPAddressD2Ev);
102659 +extern char _ZNK14StoreIPAddress10class_nameEv[];
102660 +EXPORT_SYMBOL(_ZNK14StoreIPAddress10class_nameEv);
102661 +extern char _ZNK14StoreIPAddress10port_countEv[];
102662 +EXPORT_SYMBOL(_ZNK14StoreIPAddress10port_countEv);
102663 +extern char _ZNK14StoreIPAddress10processingEv[];
102664 +EXPORT_SYMBOL(_ZNK14StoreIPAddress10processingEv);
102665 +extern char _ZTV14StoreIPAddress[];
102666 +EXPORT_SYMBOL(_ZTV14StoreIPAddress);
102667 +extern char _ZN11StringAccum11append_fillEii[];
102668 +EXPORT_SYMBOL(_ZN11StringAccum11append_fillEii);
102669 +extern char _ZN11StringAccum11take_stringEv[];
102670 +EXPORT_SYMBOL(_ZN11StringAccum11take_stringEv);
102671 +extern char _ZN11StringAccum14append_numericExib[];
102672 +EXPORT_SYMBOL(_ZN11StringAccum14append_numericExib);
102673 +extern char _ZN11StringAccum14append_numericEyib[];
102674 +EXPORT_SYMBOL(_ZN11StringAccum14append_numericEyib);
102675 +extern char _ZN11StringAccum18make_out_of_memoryEv[];
102676 +EXPORT_SYMBOL(_ZN11StringAccum18make_out_of_memoryEv);
102677 +extern char _ZN11StringAccum4growEi[];
102678 +EXPORT_SYMBOL(_ZN11StringAccum4growEi);
102679 +extern char _ZN11StringAccum4swapERS_[];
102680 +EXPORT_SYMBOL(_ZN11StringAccum4swapERS_);
102681 +extern char _ZN11StringAccum5c_strEv[];
102682 +EXPORT_SYMBOL(_ZN11StringAccum5c_strEv);
102683 +extern char _ZN11StringAccum8snprintfEiPKcz[];
102684 +EXPORT_SYMBOL(_ZN11StringAccum8snprintfEiPKcz);
102685 +extern char _ZlsR11StringAccumPv[];
102686 +EXPORT_SYMBOL(_ZlsR11StringAccumPv);
102687 +extern char _ZlsR11StringAccuml[];
102688 +EXPORT_SYMBOL(_ZlsR11StringAccuml);
102689 +extern char _ZlsR11StringAccumm[];
102690 +EXPORT_SYMBOL(_ZlsR11StringAccumm);
102691 +extern char _ZN11StrideSched10initializeEP12ErrorHandler[];
102692 +EXPORT_SYMBOL(_ZN11StrideSched10initializeEP12ErrorHandler);
102693 +extern char _ZN11StrideSched11set_ticketsEiiP12ErrorHandler[];
102694 +EXPORT_SYMBOL(_ZN11StrideSched11set_ticketsEiiP12ErrorHandler);
102695 +extern char _ZN11StrideSched12add_handlersEv[];
102696 +EXPORT_SYMBOL(_ZN11StrideSched12add_handlersEv);
102697 +extern char _ZN11StrideSched4pullEi[];
102698 +EXPORT_SYMBOL(_ZN11StrideSched4pullEi);
102699 +extern char _ZN11StrideSched7cleanupEN7Element12CleanupStageE[];
102700 +EXPORT_SYMBOL(_ZN11StrideSched7cleanupEN7Element12CleanupStageE);
102701 +extern char _ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler[];
102702 +EXPORT_SYMBOL(_ZN11StrideSched9configureER6VectorI6StringEP12ErrorHandler);
102703 +extern char _ZN11StrideSchedC1Ev[];
102704 +EXPORT_SYMBOL(_ZN11StrideSchedC1Ev);
102705 +extern char _ZN11StrideSchedC2Ev[];
102706 +EXPORT_SYMBOL(_ZN11StrideSchedC2Ev);
102707 +extern char _ZN11StrideSchedD0Ev[];
102708 +EXPORT_SYMBOL(_ZN11StrideSchedD0Ev);
102709 +extern char _ZN11StrideSchedD1Ev[];
102710 +EXPORT_SYMBOL(_ZN11StrideSchedD1Ev);
102711 +extern char _ZN11StrideSchedD2Ev[];
102712 +EXPORT_SYMBOL(_ZN11StrideSchedD2Ev);
102713 +extern char _ZNK11StrideSched10class_nameEv[];
102714 +EXPORT_SYMBOL(_ZNK11StrideSched10class_nameEv);
102715 +extern char _ZNK11StrideSched10port_countEv[];
102716 +EXPORT_SYMBOL(_ZNK11StrideSched10port_countEv);
102717 +extern char _ZNK11StrideSched10processingEv[];
102718 +EXPORT_SYMBOL(_ZNK11StrideSched10processingEv);
102719 +extern char _ZNK11StrideSched7ticketsEi[];
102720 +EXPORT_SYMBOL(_ZNK11StrideSched7ticketsEi);
102721 +extern char _ZTV11StrideSched[];
102722 +EXPORT_SYMBOL(_ZTV11StrideSched);
102723 +extern char _ZN12StrideSwitch4pushEiP6Packet[];
102724 +EXPORT_SYMBOL(_ZN12StrideSwitch4pushEiP6Packet);
102725 +extern char _ZN12StrideSwitchC1Ev[];
102726 +EXPORT_SYMBOL(_ZN12StrideSwitchC1Ev);
102727 +extern char _ZN12StrideSwitchC2Ev[];
102728 +EXPORT_SYMBOL(_ZN12StrideSwitchC2Ev);
102729 +extern char _ZN12StrideSwitchD0Ev[];
102730 +EXPORT_SYMBOL(_ZN12StrideSwitchD0Ev);
102731 +extern char _ZN12StrideSwitchD1Ev[];
102732 +EXPORT_SYMBOL(_ZN12StrideSwitchD1Ev);
102733 +extern char _ZN12StrideSwitchD2Ev[];
102734 +EXPORT_SYMBOL(_ZN12StrideSwitchD2Ev);
102735 +extern char _ZNK12StrideSwitch10class_nameEv[];
102736 +EXPORT_SYMBOL(_ZNK12StrideSwitch10class_nameEv);
102737 +extern char _ZNK12StrideSwitch10port_countEv[];
102738 +EXPORT_SYMBOL(_ZNK12StrideSwitch10port_countEv);
102739 +extern char _ZNK12StrideSwitch10processingEv[];
102740 +EXPORT_SYMBOL(_ZNK12StrideSwitch10processingEv);
102741 +extern char _ZTV12StrideSwitch[];
102742 +EXPORT_SYMBOL(_ZTV12StrideSwitch);
102743 +extern char _ZN6String11InitializerC1Ev[];
102744 +EXPORT_SYMBOL(_ZN6String11InitializerC1Ev);
102745 +extern char _ZN6String11InitializerC2Ev[];
102746 +EXPORT_SYMBOL(_ZN6String11InitializerC2Ev);
102747 +extern char _ZN6String11append_fillEii[];
102748 +EXPORT_SYMBOL(_ZN6String11append_fillEii);
102749 +extern char _ZN6String12claim_stringEPcii[];
102750 +EXPORT_SYMBOL(_ZN6String12claim_stringEPcii);
102751 +extern char _ZN6String12mutable_dataEv[];
102752 +EXPORT_SYMBOL(_ZN6String12mutable_dataEv);
102753 +extern char _ZN6String12oom_string_pE[];
102754 +EXPORT_SYMBOL(_ZN6String12oom_string_pE);
102755 +extern char _ZN6String13mutable_c_strEv[];
102756 +EXPORT_SYMBOL(_ZN6String13mutable_c_strEv);
102757 +extern char _ZN6String13null_string_pE[];
102758 +EXPORT_SYMBOL(_ZN6String13null_string_pE);
102759 +extern char _ZN6String13stable_stringEPKci[];
102760 +EXPORT_SYMBOL(_ZN6String13stable_stringEPKci);
102761 +extern char _ZN6String14append_garbageEi[];
102762 +EXPORT_SYMBOL(_ZN6String14append_garbageEi);
102763 +extern char _ZN6String14garbage_stringEi[];
102764 +EXPORT_SYMBOL(_ZN6String14garbage_stringEi);
102765 +extern char _ZN6String14numeric_stringExib[];
102766 +EXPORT_SYMBOL(_ZN6String14numeric_stringExib);
102767 +extern char _ZN6String14numeric_stringEyib[];
102768 +EXPORT_SYMBOL(_ZN6String14numeric_stringEyib);
102769 +extern char _ZN6String14permanent_memoE[];
102770 +EXPORT_SYMBOL(_ZN6String14permanent_memoE);
102771 +extern char _ZN6String14static_cleanupEv[];
102772 +EXPORT_SYMBOL(_ZN6String14static_cleanupEv);
102773 +extern char _ZN6String15oom_string_dataE[];
102774 +EXPORT_SYMBOL(_ZN6String15oom_string_dataE);
102775 +extern char _ZN6String17static_initializeEv[];
102776 +EXPORT_SYMBOL(_ZN6String17static_initializeEv);
102777 +extern char _ZN6String18make_out_of_memoryEv[];
102778 +EXPORT_SYMBOL(_ZN6String18make_out_of_memoryEv);
102779 +extern char _ZN6String4MemoC1Eii[];
102780 +EXPORT_SYMBOL(_ZN6String4MemoC1Eii);
102781 +extern char _ZN6String4MemoC2Eii[];
102782 +EXPORT_SYMBOL(_ZN6String4MemoC2Eii);
102783 +extern char _ZN6String4MemoD1Ev[];
102784 +EXPORT_SYMBOL(_ZN6String4MemoD1Ev);
102785 +extern char _ZN6String4MemoD2Ev[];
102786 +EXPORT_SYMBOL(_ZN6String4MemoD2Ev);
102787 +extern char _ZN6String6appendEPKci[];
102788 +EXPORT_SYMBOL(_ZN6String6appendEPKci);
102789 +extern char _ZN6String6assignEPKci[];
102790 +EXPORT_SYMBOL(_ZN6String6assignEPKci);
102791 +extern char _ZN6String8oom_memoE[];
102792 +EXPORT_SYMBOL(_ZN6String8oom_memoE);
102793 +extern char _ZN6String9null_memoE[];
102794 +EXPORT_SYMBOL(_ZN6String9null_memoE);
102795 +extern char _ZN6StringC1Ei[];
102796 +EXPORT_SYMBOL(_ZN6StringC1Ei);
102797 +extern char _ZN6StringC1Ej[];
102798 +EXPORT_SYMBOL(_ZN6StringC1Ej);
102799 +extern char _ZN6StringC1El[];
102800 +EXPORT_SYMBOL(_ZN6StringC1El);
102801 +extern char _ZN6StringC1Em[];
102802 +EXPORT_SYMBOL(_ZN6StringC1Em);
102803 +extern char _ZN6StringC1Ex[];
102804 +EXPORT_SYMBOL(_ZN6StringC1Ex);
102805 +extern char _ZN6StringC1Ey[];
102806 +EXPORT_SYMBOL(_ZN6StringC1Ey);
102807 +extern char _ZN6StringC2Ei[];
102808 +EXPORT_SYMBOL(_ZN6StringC2Ei);
102809 +extern char _ZN6StringC2Ej[];
102810 +EXPORT_SYMBOL(_ZN6StringC2Ej);
102811 +extern char _ZN6StringC2El[];
102812 +EXPORT_SYMBOL(_ZN6StringC2El);
102813 +extern char _ZN6StringC2Em[];
102814 +EXPORT_SYMBOL(_ZN6StringC2Em);
102815 +extern char _ZN6StringC2Ex[];
102816 +EXPORT_SYMBOL(_ZN6StringC2Ex);
102817 +extern char _ZN6StringC2Ey[];
102818 +EXPORT_SYMBOL(_ZN6StringC2Ey);
102819 +extern char _ZNK6String10find_rightEci[];
102820 +EXPORT_SYMBOL(_ZNK6String10find_rightEci);
102821 +extern char _ZNK6String10quoted_hexEv[];
102822 +EXPORT_SYMBOL(_ZNK6String10quoted_hexEv);
102823 +extern char _ZNK6String10trim_spaceEv[];
102824 +EXPORT_SYMBOL(_ZNK6String10trim_spaceEv);
102825 +extern char _ZNK6String5c_strEv[];
102826 +EXPORT_SYMBOL(_ZNK6String5c_strEv);
102827 +extern char _ZNK6String5lowerEv[];
102828 +EXPORT_SYMBOL(_ZNK6String5lowerEv);
102829 +extern char _ZNK6String5upperEv[];
102830 +EXPORT_SYMBOL(_ZNK6String5upperEv);
102831 +extern char _ZNK6String6equalsEPKci[];
102832 +EXPORT_SYMBOL(_ZNK6String6equalsEPKci);
102833 +extern char _ZNK6String7compareEPKci[];
102834 +EXPORT_SYMBOL(_ZNK6String7compareEPKci);
102835 +extern char _ZNK6String8hashcodeEv[];
102836 +EXPORT_SYMBOL(_ZNK6String8hashcodeEv);
102837 +extern char _ZNK6String9find_leftERKS_i[];
102838 +EXPORT_SYMBOL(_ZNK6String9find_leftERKS_i);
102839 +extern char _ZNK6String9find_leftEci[];
102840 +EXPORT_SYMBOL(_ZNK6String9find_leftEci);
102841 +extern char _ZNK6String9printableEv[];
102842 +EXPORT_SYMBOL(_ZNK6String9printableEv);
102843 +extern char _ZNK6String9substringEii[];
102844 +EXPORT_SYMBOL(_ZNK6String9substringEii);
102845 +extern char _ZN5Strip13simple_actionEP6Packet[];
102846 +EXPORT_SYMBOL(_ZN5Strip13simple_actionEP6Packet);
102847 +extern char _ZN5Strip9configureER6VectorI6StringEP12ErrorHandler[];
102848 +EXPORT_SYMBOL(_ZN5Strip9configureER6VectorI6StringEP12ErrorHandler);
102849 +extern char _ZN5StripC1Ev[];
102850 +EXPORT_SYMBOL(_ZN5StripC1Ev);
102851 +extern char _ZN5StripC2Ev[];
102852 +EXPORT_SYMBOL(_ZN5StripC2Ev);
102853 +extern char _ZN5StripD0Ev[];
102854 +EXPORT_SYMBOL(_ZN5StripD0Ev);
102855 +extern char _ZN5StripD1Ev[];
102856 +EXPORT_SYMBOL(_ZN5StripD1Ev);
102857 +extern char _ZN5StripD2Ev[];
102858 +EXPORT_SYMBOL(_ZN5StripD2Ev);
102859 +extern char _ZNK5Strip10class_nameEv[];
102860 +EXPORT_SYMBOL(_ZNK5Strip10class_nameEv);
102861 +extern char _ZNK5Strip10port_countEv[];
102862 +EXPORT_SYMBOL(_ZNK5Strip10port_countEv);
102863 +extern char _ZNK5Strip10processingEv[];
102864 +EXPORT_SYMBOL(_ZNK5Strip10processingEv);
102865 +extern char _ZTV5Strip[];
102866 +EXPORT_SYMBOL(_ZTV5Strip);
102867 +extern char _ZN13StripIPHeader13simple_actionEP6Packet[];
102868 +EXPORT_SYMBOL(_ZN13StripIPHeader13simple_actionEP6Packet);
102869 +extern char _ZN13StripIPHeaderC1Ev[];
102870 +EXPORT_SYMBOL(_ZN13StripIPHeaderC1Ev);
102871 +extern char _ZN13StripIPHeaderC2Ev[];
102872 +EXPORT_SYMBOL(_ZN13StripIPHeaderC2Ev);
102873 +extern char _ZN13StripIPHeaderD0Ev[];
102874 +EXPORT_SYMBOL(_ZN13StripIPHeaderD0Ev);
102875 +extern char _ZN13StripIPHeaderD1Ev[];
102876 +EXPORT_SYMBOL(_ZN13StripIPHeaderD1Ev);
102877 +extern char _ZN13StripIPHeaderD2Ev[];
102878 +EXPORT_SYMBOL(_ZN13StripIPHeaderD2Ev);
102879 +extern char _ZNK13StripIPHeader10class_nameEv[];
102880 +EXPORT_SYMBOL(_ZNK13StripIPHeader10class_nameEv);
102881 +extern char _ZNK13StripIPHeader10port_countEv[];
102882 +EXPORT_SYMBOL(_ZNK13StripIPHeader10port_countEv);
102883 +extern char _ZTV13StripIPHeader[];
102884 +EXPORT_SYMBOL(_ZTV13StripIPHeader);
102885 +extern char _ZN20StripToNetworkHeader13simple_actionEP6Packet[];
102886 +EXPORT_SYMBOL(_ZN20StripToNetworkHeader13simple_actionEP6Packet);
102887 +extern char _ZN20StripToNetworkHeaderC1Ev[];
102888 +EXPORT_SYMBOL(_ZN20StripToNetworkHeaderC1Ev);
102889 +extern char _ZN20StripToNetworkHeaderC2Ev[];
102890 +EXPORT_SYMBOL(_ZN20StripToNetworkHeaderC2Ev);
102891 +extern char _ZN20StripToNetworkHeaderD0Ev[];
102892 +EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD0Ev);
102893 +extern char _ZN20StripToNetworkHeaderD1Ev[];
102894 +EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD1Ev);
102895 +extern char _ZN20StripToNetworkHeaderD2Ev[];
102896 +EXPORT_SYMBOL(_ZN20StripToNetworkHeaderD2Ev);
102897 +extern char _ZNK20StripToNetworkHeader10class_nameEv[];
102898 +EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10class_nameEv);
102899 +extern char _ZNK20StripToNetworkHeader10port_countEv[];
102900 +EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10port_countEv);
102901 +extern char _ZNK20StripToNetworkHeader10processingEv[];
102902 +EXPORT_SYMBOL(_ZNK20StripToNetworkHeader10processingEv);
102903 +extern char _ZTV20StripToNetworkHeader[];
102904 +EXPORT_SYMBOL(_ZTV20StripToNetworkHeader);
102905 +extern char _ZN10Suppressor10initializeEP12ErrorHandler[];
102906 +EXPORT_SYMBOL(_ZN10Suppressor10initializeEP12ErrorHandler);
102907 +extern char _ZN10Suppressor12add_handlersEv[];
102908 +EXPORT_SYMBOL(_ZN10Suppressor12add_handlersEv);
102909 +extern char _ZN10Suppressor3setEib[];
102910 +EXPORT_SYMBOL(_ZN10Suppressor3setEib);
102911 +extern char _ZN10Suppressor4pullEi[];
102912 +EXPORT_SYMBOL(_ZN10Suppressor4pullEi);
102913 +extern char _ZN10Suppressor4pushEiP6Packet[];
102914 +EXPORT_SYMBOL(_ZN10Suppressor4pushEiP6Packet);
102915 +extern char _ZN10SuppressorC1Ev[];
102916 +EXPORT_SYMBOL(_ZN10SuppressorC1Ev);
102917 +extern char _ZN10SuppressorC2Ev[];
102918 +EXPORT_SYMBOL(_ZN10SuppressorC2Ev);
102919 +extern char _ZN10SuppressorD0Ev[];
102920 +EXPORT_SYMBOL(_ZN10SuppressorD0Ev);
102921 +extern char _ZN10SuppressorD1Ev[];
102922 +EXPORT_SYMBOL(_ZN10SuppressorD1Ev);
102923 +extern char _ZN10SuppressorD2Ev[];
102924 +EXPORT_SYMBOL(_ZN10SuppressorD2Ev);
102925 +extern char _ZNK10Suppressor10class_nameEv[];
102926 +EXPORT_SYMBOL(_ZNK10Suppressor10class_nameEv);
102927 +extern char _ZNK10Suppressor10port_countEv[];
102928 +EXPORT_SYMBOL(_ZNK10Suppressor10port_countEv);
102929 +extern char _ZNK10Suppressor10processingEv[];
102930 +EXPORT_SYMBOL(_ZNK10Suppressor10processingEv);
102931 +extern char _ZNK10Suppressor9flow_codeEv[];
102932 +EXPORT_SYMBOL(_ZNK10Suppressor9flow_codeEv);
102933 +extern char _ZTV10Suppressor[];
102934 +EXPORT_SYMBOL(_ZTV10Suppressor);
102935 +extern char _ZN6Switch10read_paramEP7ElementPv[];
102936 +EXPORT_SYMBOL(_ZN6Switch10read_paramEP7ElementPv);
102937 +extern char _ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler[];
102938 +EXPORT_SYMBOL(_ZN6Switch11write_paramERK6StringP7ElementPvP12ErrorHandler);
102939 +extern char _ZN6Switch12add_handlersEv[];
102940 +EXPORT_SYMBOL(_ZN6Switch12add_handlersEv);
102941 +extern char _ZN6Switch4pushEiP6Packet[];
102942 +EXPORT_SYMBOL(_ZN6Switch4pushEiP6Packet);
102943 +extern char _ZN6Switch5llrpcEjPv[];
102944 +EXPORT_SYMBOL(_ZN6Switch5llrpcEjPv);
102945 +extern char _ZN6Switch9configureER6VectorI6StringEP12ErrorHandler[];
102946 +EXPORT_SYMBOL(_ZN6Switch9configureER6VectorI6StringEP12ErrorHandler);
102947 +extern char _ZN6SwitchC1Ev[];
102948 +EXPORT_SYMBOL(_ZN6SwitchC1Ev);
102949 +extern char _ZN6SwitchC2Ev[];
102950 +EXPORT_SYMBOL(_ZN6SwitchC2Ev);
102951 +extern char _ZN6SwitchD0Ev[];
102952 +EXPORT_SYMBOL(_ZN6SwitchD0Ev);
102953 +extern char _ZN6SwitchD1Ev[];
102954 +EXPORT_SYMBOL(_ZN6SwitchD1Ev);
102955 +extern char _ZN6SwitchD2Ev[];
102956 +EXPORT_SYMBOL(_ZN6SwitchD2Ev);
102957 +extern char _ZNK6Switch10class_nameEv[];
102958 +EXPORT_SYMBOL(_ZNK6Switch10class_nameEv);
102959 +extern char _ZNK6Switch10port_countEv[];
102960 +EXPORT_SYMBOL(_ZNK6Switch10port_countEv);
102961 +extern char _ZNK6Switch10processingEv[];
102962 +EXPORT_SYMBOL(_ZNK6Switch10processingEv);
102963 +extern char _ZNK6Switch13configurationER6VectorI6StringE[];
102964 +EXPORT_SYMBOL(_ZNK6Switch13configurationER6VectorI6StringE);
102965 +extern char _ZNK6Switch20can_live_reconfigureEv[];
102966 +EXPORT_SYMBOL(_ZNK6Switch20can_live_reconfigureEv);
102967 +extern char _ZTV6Switch[];
102968 +EXPORT_SYMBOL(_ZTV6Switch);
102969 +extern char _ZN4Task10error_hookEPS_Pv[];
102970 +EXPORT_SYMBOL(_ZN4Task10error_hookEPS_Pv);
102971 +extern char _ZN4Task10initializeEP6Routerb[];
102972 +EXPORT_SYMBOL(_ZN4Task10initializeEP6Routerb);
102973 +extern char _ZN4Task10initializeEP7Elementb[];
102974 +EXPORT_SYMBOL(_ZN4Task10initializeEP7Elementb);
102975 +extern char _ZN4Task10unscheduleEv[];
102976 +EXPORT_SYMBOL(_ZN4Task10unscheduleEv);
102977 +extern char _ZN4Task11add_pendingEv[];
102978 +EXPORT_SYMBOL(_ZN4Task11add_pendingEv);
102979 +extern char _ZN4Task11move_threadEi[];
102980 +EXPORT_SYMBOL(_ZN4Task11move_threadEi);
102981 +extern char _ZN4Task15process_pendingEP12RouterThread[];
102982 +EXPORT_SYMBOL(_ZN4Task15process_pendingEP12RouterThread);
102983 +extern char _ZN4Task15true_rescheduleEv[];
102984 +EXPORT_SYMBOL(_ZN4Task15true_rescheduleEv);
102985 +extern char _ZN4Task17strong_rescheduleEv[];
102986 +EXPORT_SYMBOL(_ZN4Task17strong_rescheduleEv);
102987 +extern char _ZN4Task17strong_unscheduleEv[];
102988 +EXPORT_SYMBOL(_ZN4Task17strong_unscheduleEv);
102989 +extern char _ZN4Task7cleanupEv[];
102990 +EXPORT_SYMBOL(_ZN4Task7cleanupEv);
102991 +extern char _ZN4TaskD1Ev[];
102992 +EXPORT_SYMBOL(_ZN4TaskD1Ev);
102993 +extern char _ZN4TaskD2Ev[];
102994 +EXPORT_SYMBOL(_ZN4TaskD2Ev);
102995 +extern char _ZNK4Task6masterEv[];
102996 +EXPORT_SYMBOL(_ZNK4Task6masterEv);
102997 +extern char _ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi[];
102998 +EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping10apply_sackEP9click_tcpi);
102999 +extern char _ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji[];
103000 +EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping18update_seqno_deltaEji);
103001 +extern char _ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket[];
103002 +EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMapping5applyEP14WritablePacket);
103003 +extern char _ZN11TCPRewriter10TCPMappingC1Eb[];
103004 +EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMappingC1Eb);
103005 +extern char _ZN11TCPRewriter10TCPMappingC2Eb[];
103006 +EXPORT_SYMBOL(_ZN11TCPRewriter10TCPMappingC2Eb);
103007 +extern char _ZN11TCPRewriter10initializeEP12ErrorHandler[];
103008 +EXPORT_SYMBOL(_ZN11TCPRewriter10initializeEP12ErrorHandler);
103009 +extern char _ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler[];
103010 +EXPORT_SYMBOL(_ZN11TCPRewriter10take_stateEP7ElementP12ErrorHandler);
103011 +extern char _ZN11TCPRewriter11tcp_gc_hookEP5TimerPv[];
103012 +EXPORT_SYMBOL(_ZN11TCPRewriter11tcp_gc_hookEP5TimerPv);
103013 +extern char _ZN11TCPRewriter12add_handlersEv[];
103014 +EXPORT_SYMBOL(_ZN11TCPRewriter12add_handlersEv);
103015 +extern char _ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii[];
103016 +EXPORT_SYMBOL(_ZN11TCPRewriter13apply_patternEPN4IPRw7PatternEiRK8IPFlowIDii);
103017 +extern char _ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler[];
103018 +EXPORT_SYMBOL(_ZN11TCPRewriter14notify_patternEPN4IPRw7PatternEP12ErrorHandler);
103019 +extern char _ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv[];
103020 +EXPORT_SYMBOL(_ZN11TCPRewriter16tcp_done_gc_hookEP5TimerPv);
103021 +extern char _ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv[];
103022 +EXPORT_SYMBOL(_ZN11TCPRewriter21dump_mappings_handlerEP7ElementPv);
103023 +extern char _ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv[];
103024 +EXPORT_SYMBOL(_ZN11TCPRewriter21dump_patterns_handlerEP7ElementPv);
103025 +extern char _ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv[];
103026 +EXPORT_SYMBOL(_ZN11TCPRewriter22dump_nmappings_handlerEP7ElementPv);
103027 +extern char _ZN11TCPRewriter4castEPKc[];
103028 +EXPORT_SYMBOL(_ZN11TCPRewriter4castEPKc);
103029 +extern char _ZN11TCPRewriter4pushEiP6Packet[];
103030 +EXPORT_SYMBOL(_ZN11TCPRewriter4pushEiP6Packet);
103031 +extern char _ZN11TCPRewriter5llrpcEjPv[];
103032 +EXPORT_SYMBOL(_ZN11TCPRewriter5llrpcEjPv);
103033 +extern char _ZN11TCPRewriter7cleanupEN7Element12CleanupStageE[];
103034 +EXPORT_SYMBOL(_ZN11TCPRewriter7cleanupEN7Element12CleanupStageE);
103035 +extern char _ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler[];
103036 +EXPORT_SYMBOL(_ZN11TCPRewriter9configureER6VectorI6StringEP12ErrorHandler);
103037 +extern char _ZN11TCPRewriterC1Ev[];
103038 +EXPORT_SYMBOL(_ZN11TCPRewriterC1Ev);
103039 +extern char _ZN11TCPRewriterC2Ev[];
103040 +EXPORT_SYMBOL(_ZN11TCPRewriterC2Ev);
103041 +extern char _ZN11TCPRewriterD0Ev[];
103042 +EXPORT_SYMBOL(_ZN11TCPRewriterD0Ev);
103043 +extern char _ZN11TCPRewriterD1Ev[];
103044 +EXPORT_SYMBOL(_ZN11TCPRewriterD1Ev);
103045 +extern char _ZN11TCPRewriterD2Ev[];
103046 +EXPORT_SYMBOL(_ZN11TCPRewriterD2Ev);
103047 +extern char _ZNK11TCPRewriter10TCPMapping1sEv[];
103048 +EXPORT_SYMBOL(_ZNK11TCPRewriter10TCPMapping1sEv);
103049 +extern char _ZNK11TCPRewriter10class_nameEv[];
103050 +EXPORT_SYMBOL(_ZNK11TCPRewriter10class_nameEv);
103051 +extern char _ZNK11TCPRewriter10port_countEv[];
103052 +EXPORT_SYMBOL(_ZNK11TCPRewriter10port_countEv);
103053 +extern char _ZNK11TCPRewriter10processingEv[];
103054 +EXPORT_SYMBOL(_ZNK11TCPRewriter10processingEv);
103055 +extern char _ZNK11TCPRewriter11get_mappingEiRK8IPFlowID[];
103056 +EXPORT_SYMBOL(_ZNK11TCPRewriter11get_mappingEiRK8IPFlowID);
103057 +extern char _ZTV11TCPRewriter[];
103058 +EXPORT_SYMBOL(_ZTV11TCPRewriter);
103059 +extern char _ZN3Tee4pushEiP6Packet[];
103060 +EXPORT_SYMBOL(_ZN3Tee4pushEiP6Packet);
103061 +extern char _ZN3Tee9configureER6VectorI6StringEP12ErrorHandler[];
103062 +EXPORT_SYMBOL(_ZN3Tee9configureER6VectorI6StringEP12ErrorHandler);
103063 +extern char _ZN3TeeC1Ev[];
103064 +EXPORT_SYMBOL(_ZN3TeeC1Ev);
103065 +extern char _ZN3TeeC2Ev[];
103066 +EXPORT_SYMBOL(_ZN3TeeC2Ev);
103067 +extern char _ZN3TeeD0Ev[];
103068 +EXPORT_SYMBOL(_ZN3TeeD0Ev);
103069 +extern char _ZN3TeeD1Ev[];
103070 +EXPORT_SYMBOL(_ZN3TeeD1Ev);
103071 +extern char _ZN3TeeD2Ev[];
103072 +EXPORT_SYMBOL(_ZN3TeeD2Ev);
103073 +extern char _ZN7PullTee4pullEi[];
103074 +EXPORT_SYMBOL(_ZN7PullTee4pullEi);
103075 +extern char _ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler[];
103076 +EXPORT_SYMBOL(_ZN7PullTee9configureER6VectorI6StringEP12ErrorHandler);
103077 +extern char _ZN7PullTeeC1Ev[];
103078 +EXPORT_SYMBOL(_ZN7PullTeeC1Ev);
103079 +extern char _ZN7PullTeeC2Ev[];
103080 +EXPORT_SYMBOL(_ZN7PullTeeC2Ev);
103081 +extern char _ZN7PullTeeD0Ev[];
103082 +EXPORT_SYMBOL(_ZN7PullTeeD0Ev);
103083 +extern char _ZN7PullTeeD1Ev[];
103084 +EXPORT_SYMBOL(_ZN7PullTeeD1Ev);
103085 +extern char _ZN7PullTeeD2Ev[];
103086 +EXPORT_SYMBOL(_ZN7PullTeeD2Ev);
103087 +extern char _ZNK3Tee10class_nameEv[];
103088 +EXPORT_SYMBOL(_ZNK3Tee10class_nameEv);
103089 +extern char _ZNK3Tee10port_countEv[];
103090 +EXPORT_SYMBOL(_ZNK3Tee10port_countEv);
103091 +extern char _ZNK3Tee10processingEv[];
103092 +EXPORT_SYMBOL(_ZNK3Tee10processingEv);
103093 +extern char _ZNK7PullTee10class_nameEv[];
103094 +EXPORT_SYMBOL(_ZNK7PullTee10class_nameEv);
103095 +extern char _ZNK7PullTee10port_countEv[];
103096 +EXPORT_SYMBOL(_ZNK7PullTee10port_countEv);
103097 +extern char _ZNK7PullTee10processingEv[];
103098 +EXPORT_SYMBOL(_ZNK7PullTee10processingEv);
103099 +extern char _ZTV3Tee[];
103100 +EXPORT_SYMBOL(_ZTV3Tee);
103101 +extern char _ZTV7PullTee[];
103102 +EXPORT_SYMBOL(_ZTV7PullTee);
103103 +extern char _ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb[];
103104 +EXPORT_SYMBOL(_ZN17_HashMap_iteratorI6StringiEC1EP7HashMapIS0_iEb);
103105 +extern char _ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb[];
103106 +EXPORT_SYMBOL(_ZN17_HashMap_iteratorI6StringiEC2EP7HashMapIS0_iEb);
103107 +extern char _ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb[];
103108 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEC1EPK7HashMapIS0_iEb);
103109 +extern char _ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb[];
103110 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEC2EPK7HashMapIS0_iEb);
103111 +extern char _ZN23_HashMap_const_iteratorI6StringiEppEi[];
103112 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEppEi);
103113 +extern char _ZN23_HashMap_const_iteratorI6StringiEppEv[];
103114 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI6StringiEppEv);
103115 +extern char _ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb[];
103116 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDbEC1EPK7HashMapIS0_bEb);
103117 +extern char _ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb[];
103118 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI8IPFlowIDbEC2EPK7HashMapIS0_bEb);
103119 +extern char _ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb[];
103120 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI9IPAddressjEC1EPK7HashMapIS0_jEb);
103121 +extern char _ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb[];
103122 +EXPORT_SYMBOL(_ZN23_HashMap_const_iteratorI9IPAddressjEC2EPK7HashMapIS0_jEb);
103123 +extern char _ZN6VectorI6StringE10push_frontERKS0_[];
103124 +EXPORT_SYMBOL(_ZN6VectorI6StringE10push_frontERKS0_);
103125 +extern char _ZN6VectorI6StringE2atEi[];
103126 +EXPORT_SYMBOL(_ZN6VectorI6StringE2atEi);
103127 +extern char _ZN6VectorI6StringE3endEv[];
103128 +EXPORT_SYMBOL(_ZN6VectorI6StringE3endEv);
103129 +extern char _ZN6VectorI6StringE4at_uEi[];
103130 +EXPORT_SYMBOL(_ZN6VectorI6StringE4at_uEi);
103131 +extern char _ZN6VectorI6StringE4backEv[];
103132 +EXPORT_SYMBOL(_ZN6VectorI6StringE4backEv);
103133 +extern char _ZN6VectorI6StringE4swapERS1_[];
103134 +EXPORT_SYMBOL(_ZN6VectorI6StringE4swapERS1_);
103135 +extern char _ZN6VectorI6StringE4veltEPS0_i[];
103136 +EXPORT_SYMBOL(_ZN6VectorI6StringE4veltEPS0_i);
103137 +extern char _ZN6VectorI6StringE5beginEv[];
103138 +EXPORT_SYMBOL(_ZN6VectorI6StringE5beginEv);
103139 +extern char _ZN6VectorI6StringE5clearEv[];
103140 +EXPORT_SYMBOL(_ZN6VectorI6StringE5clearEv);
103141 +extern char _ZN6VectorI6StringE5eraseEPS0_[];
103142 +EXPORT_SYMBOL(_ZN6VectorI6StringE5eraseEPS0_);
103143 +extern char _ZN6VectorI6StringE5frontEv[];
103144 +EXPORT_SYMBOL(_ZN6VectorI6StringE5frontEv);
103145 +extern char _ZN6VectorI6StringE6assignEiRKS0_[];
103146 +EXPORT_SYMBOL(_ZN6VectorI6StringE6assignEiRKS0_);
103147 +extern char _ZN6VectorI6StringE6insertEPS0_RKS0_[];
103148 +EXPORT_SYMBOL(_ZN6VectorI6StringE6insertEPS0_RKS0_);
103149 +extern char _ZN6VectorI6StringE8pop_backEv[];
103150 +EXPORT_SYMBOL(_ZN6VectorI6StringE8pop_backEv);
103151 +extern char _ZN6VectorI6StringE9pop_frontEv[];
103152 +EXPORT_SYMBOL(_ZN6VectorI6StringE9pop_frontEv);
103153 +extern char _ZN6VectorI6StringE9push_backERKS0_[];
103154 +EXPORT_SYMBOL(_ZN6VectorI6StringE9push_backERKS0_);
103155 +extern char _ZN6VectorI6StringEC1ERKS1_[];
103156 +EXPORT_SYMBOL(_ZN6VectorI6StringEC1ERKS1_);
103157 +extern char _ZN6VectorI6StringEC1EiRKS0_[];
103158 +EXPORT_SYMBOL(_ZN6VectorI6StringEC1EiRKS0_);
103159 +extern char _ZN6VectorI6StringEC1Ev[];
103160 +EXPORT_SYMBOL(_ZN6VectorI6StringEC1Ev);
103161 +extern char _ZN6VectorI6StringEC2ERKS1_[];
103162 +EXPORT_SYMBOL(_ZN6VectorI6StringEC2ERKS1_);
103163 +extern char _ZN6VectorI6StringEC2EiRKS0_[];
103164 +EXPORT_SYMBOL(_ZN6VectorI6StringEC2EiRKS0_);
103165 +extern char _ZN6VectorI6StringEC2Ev[];
103166 +EXPORT_SYMBOL(_ZN6VectorI6StringEC2Ev);
103167 +extern char _ZN6VectorI6StringED2Ev[];
103168 +EXPORT_SYMBOL(_ZN6VectorI6StringED2Ev);
103169 +extern char _ZN6VectorI6StringEaSERKS1_[];
103170 +EXPORT_SYMBOL(_ZN6VectorI6StringEaSERKS1_);
103171 +extern char _ZN6VectorI6StringEixEi[];
103172 +EXPORT_SYMBOL(_ZN6VectorI6StringEixEi);
103173 +extern char _ZN6VectorI9IPAddressE10push_frontERKS0_[];
103174 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE10push_frontERKS0_);
103175 +extern char _ZN6VectorI9IPAddressE2atEi[];
103176 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE2atEi);
103177 +extern char _ZN6VectorI9IPAddressE3endEv[];
103178 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE3endEv);
103179 +extern char _ZN6VectorI9IPAddressE4at_uEi[];
103180 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4at_uEi);
103181 +extern char _ZN6VectorI9IPAddressE4backEv[];
103182 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4backEv);
103183 +extern char _ZN6VectorI9IPAddressE4swapERS1_[];
103184 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4swapERS1_);
103185 +extern char _ZN6VectorI9IPAddressE4veltEPS0_i[];
103186 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE4veltEPS0_i);
103187 +extern char _ZN6VectorI9IPAddressE5beginEv[];
103188 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5beginEv);
103189 +extern char _ZN6VectorI9IPAddressE5clearEv[];
103190 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5clearEv);
103191 +extern char _ZN6VectorI9IPAddressE5eraseEPS0_[];
103192 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5eraseEPS0_);
103193 +extern char _ZN6VectorI9IPAddressE5eraseEPS0_S2_[];
103194 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5eraseEPS0_S2_);
103195 +extern char _ZN6VectorI9IPAddressE5frontEv[];
103196 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE5frontEv);
103197 +extern char _ZN6VectorI9IPAddressE6assignEiRKS0_[];
103198 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6assignEiRKS0_);
103199 +extern char _ZN6VectorI9IPAddressE6insertEPS0_RKS0_[];
103200 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6insertEPS0_RKS0_);
103201 +extern char _ZN6VectorI9IPAddressE6resizeEiRKS0_[];
103202 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE6resizeEiRKS0_);
103203 +extern char _ZN6VectorI9IPAddressE7reserveEi[];
103204 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE7reserveEi);
103205 +extern char _ZN6VectorI9IPAddressE8pop_backEv[];
103206 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE8pop_backEv);
103207 +extern char _ZN6VectorI9IPAddressE9pop_frontEv[];
103208 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE9pop_frontEv);
103209 +extern char _ZN6VectorI9IPAddressE9push_backERKS0_[];
103210 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressE9push_backERKS0_);
103211 +extern char _ZN6VectorI9IPAddressEC1ERKS1_[];
103212 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1ERKS1_);
103213 +extern char _ZN6VectorI9IPAddressEC1EiRKS0_[];
103214 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1EiRKS0_);
103215 +extern char _ZN6VectorI9IPAddressEC1Ev[];
103216 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC1Ev);
103217 +extern char _ZN6VectorI9IPAddressEC2ERKS1_[];
103218 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2ERKS1_);
103219 +extern char _ZN6VectorI9IPAddressEC2EiRKS0_[];
103220 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2EiRKS0_);
103221 +extern char _ZN6VectorI9IPAddressEC2Ev[];
103222 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEC2Ev);
103223 +extern char _ZN6VectorI9IPAddressED1Ev[];
103224 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressED1Ev);
103225 +extern char _ZN6VectorI9IPAddressED2Ev[];
103226 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressED2Ev);
103227 +extern char _ZN6VectorI9IPAddressEaSERKS1_[];
103228 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEaSERKS1_);
103229 +extern char _ZN6VectorI9IPAddressEixEi[];
103230 +EXPORT_SYMBOL(_ZN6VectorI9IPAddressEixEi);
103231 +extern char _ZN6VectorIN6Router6HookupEE10push_frontERKS1_[];
103232 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE10push_frontERKS1_);
103233 +extern char _ZN6VectorIN6Router6HookupEE2atEi[];
103234 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE2atEi);
103235 +extern char _ZN6VectorIN6Router6HookupEE3endEv[];
103236 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE3endEv);
103237 +extern char _ZN6VectorIN6Router6HookupEE4at_uEi[];
103238 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4at_uEi);
103239 +extern char _ZN6VectorIN6Router6HookupEE4backEv[];
103240 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4backEv);
103241 +extern char _ZN6VectorIN6Router6HookupEE4swapERS2_[];
103242 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4swapERS2_);
103243 +extern char _ZN6VectorIN6Router6HookupEE4veltEPS1_i[];
103244 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE4veltEPS1_i);
103245 +extern char _ZN6VectorIN6Router6HookupEE5beginEv[];
103246 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5beginEv);
103247 +extern char _ZN6VectorIN6Router6HookupEE5clearEv[];
103248 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5clearEv);
103249 +extern char _ZN6VectorIN6Router6HookupEE5eraseEPS1_[];
103250 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5eraseEPS1_);
103251 +extern char _ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_[];
103252 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5eraseEPS1_S3_);
103253 +extern char _ZN6VectorIN6Router6HookupEE5frontEv[];
103254 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE5frontEv);
103255 +extern char _ZN6VectorIN6Router6HookupEE6assignEiRKS1_[];
103256 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6assignEiRKS1_);
103257 +extern char _ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_[];
103258 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6insertEPS1_RKS1_);
103259 +extern char _ZN6VectorIN6Router6HookupEE6resizeEiRKS1_[];
103260 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE6resizeEiRKS1_);
103261 +extern char _ZN6VectorIN6Router6HookupEE8pop_backEv[];
103262 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE8pop_backEv);
103263 +extern char _ZN6VectorIN6Router6HookupEE9pop_frontEv[];
103264 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE9pop_frontEv);
103265 +extern char _ZN6VectorIN6Router6HookupEE9push_backERKS1_[];
103266 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEE9push_backERKS1_);
103267 +extern char _ZN6VectorIN6Router6HookupEEC1ERKS2_[];
103268 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1ERKS2_);
103269 +extern char _ZN6VectorIN6Router6HookupEEC1EiRKS1_[];
103270 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1EiRKS1_);
103271 +extern char _ZN6VectorIN6Router6HookupEEC1Ev[];
103272 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC1Ev);
103273 +extern char _ZN6VectorIN6Router6HookupEEC2ERKS2_[];
103274 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2ERKS2_);
103275 +extern char _ZN6VectorIN6Router6HookupEEC2EiRKS1_[];
103276 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2EiRKS1_);
103277 +extern char _ZN6VectorIN6Router6HookupEEC2Ev[];
103278 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEC2Ev);
103279 +extern char _ZN6VectorIN6Router6HookupEED2Ev[];
103280 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEED2Ev);
103281 +extern char _ZN6VectorIN6Router6HookupEEaSERKS2_[];
103282 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEaSERKS2_);
103283 +extern char _ZN6VectorIN6Router6HookupEEixEi[];
103284 +EXPORT_SYMBOL(_ZN6VectorIN6Router6HookupEEixEi);
103285 +extern char _ZN6VectorIiE10push_frontERKi[];
103286 +EXPORT_SYMBOL(_ZN6VectorIiE10push_frontERKi);
103287 +extern char _ZN6VectorIiE2atEi[];
103288 +EXPORT_SYMBOL(_ZN6VectorIiE2atEi);
103289 +extern char _ZN6VectorIiE3endEv[];
103290 +EXPORT_SYMBOL(_ZN6VectorIiE3endEv);
103291 +extern char _ZN6VectorIiE4at_uEi[];
103292 +EXPORT_SYMBOL(_ZN6VectorIiE4at_uEi);
103293 +extern char _ZN6VectorIiE4backEv[];
103294 +EXPORT_SYMBOL(_ZN6VectorIiE4backEv);
103295 +extern char _ZN6VectorIiE4swapERS0_[];
103296 +EXPORT_SYMBOL(_ZN6VectorIiE4swapERS0_);
103297 +extern char _ZN6VectorIiE4veltEPii[];
103298 +EXPORT_SYMBOL(_ZN6VectorIiE4veltEPii);
103299 +extern char _ZN6VectorIiE5clearEv[];
103300 +EXPORT_SYMBOL(_ZN6VectorIiE5clearEv);
103301 +extern char _ZN6VectorIiE5eraseEPi[];
103302 +EXPORT_SYMBOL(_ZN6VectorIiE5eraseEPi);
103303 +extern char _ZN6VectorIiE5eraseEPiS1_[];
103304 +EXPORT_SYMBOL(_ZN6VectorIiE5eraseEPiS1_);
103305 +extern char _ZN6VectorIiE5frontEv[];
103306 +EXPORT_SYMBOL(_ZN6VectorIiE5frontEv);
103307 +extern char _ZN6VectorIiE6insertEPiRKi[];
103308 +EXPORT_SYMBOL(_ZN6VectorIiE6insertEPiRKi);
103309 +extern char _ZN6VectorIiE8pop_backEv[];
103310 +EXPORT_SYMBOL(_ZN6VectorIiE8pop_backEv);
103311 +extern char _ZN6VectorIiE9pop_frontEv[];
103312 +EXPORT_SYMBOL(_ZN6VectorIiE9pop_frontEv);
103313 +extern char _ZN6VectorIiE9push_backERKi[];
103314 +EXPORT_SYMBOL(_ZN6VectorIiE9push_backERKi);
103315 +extern char _ZN6VectorIiEC1Ev[];
103316 +EXPORT_SYMBOL(_ZN6VectorIiEC1Ev);
103317 +extern char _ZN6VectorIiEC2ERKS0_[];
103318 +EXPORT_SYMBOL(_ZN6VectorIiEC2ERKS0_);
103319 +extern char _ZN6VectorIiEC2EiRKi[];
103320 +EXPORT_SYMBOL(_ZN6VectorIiEC2EiRKi);
103321 +extern char _ZN6VectorIiEC2Ev[];
103322 +EXPORT_SYMBOL(_ZN6VectorIiEC2Ev);
103323 +extern char _ZN6VectorIiED2Ev[];
103324 +EXPORT_SYMBOL(_ZN6VectorIiED2Ev);
103325 +extern char _ZN6VectorIiEixEi[];
103326 +EXPORT_SYMBOL(_ZN6VectorIiEixEi);
103327 +extern char _ZN6VectorIjE10push_frontERKj[];
103328 +EXPORT_SYMBOL(_ZN6VectorIjE10push_frontERKj);
103329 +extern char _ZN6VectorIjE2atEi[];
103330 +EXPORT_SYMBOL(_ZN6VectorIjE2atEi);
103331 +extern char _ZN6VectorIjE3endEv[];
103332 +EXPORT_SYMBOL(_ZN6VectorIjE3endEv);
103333 +extern char _ZN6VectorIjE4at_uEi[];
103334 +EXPORT_SYMBOL(_ZN6VectorIjE4at_uEi);
103335 +extern char _ZN6VectorIjE4backEv[];
103336 +EXPORT_SYMBOL(_ZN6VectorIjE4backEv);
103337 +extern char _ZN6VectorIjE4swapERS0_[];
103338 +EXPORT_SYMBOL(_ZN6VectorIjE4swapERS0_);
103339 +extern char _ZN6VectorIjE4veltEPji[];
103340 +EXPORT_SYMBOL(_ZN6VectorIjE4veltEPji);
103341 +extern char _ZN6VectorIjE5beginEv[];
103342 +EXPORT_SYMBOL(_ZN6VectorIjE5beginEv);
103343 +extern char _ZN6VectorIjE5clearEv[];
103344 +EXPORT_SYMBOL(_ZN6VectorIjE5clearEv);
103345 +extern char _ZN6VectorIjE5eraseEPj[];
103346 +EXPORT_SYMBOL(_ZN6VectorIjE5eraseEPj);
103347 +extern char _ZN6VectorIjE5eraseEPjS1_[];
103348 +EXPORT_SYMBOL(_ZN6VectorIjE5eraseEPjS1_);
103349 +extern char _ZN6VectorIjE5frontEv[];
103350 +EXPORT_SYMBOL(_ZN6VectorIjE5frontEv);
103351 +extern char _ZN6VectorIjE6assignEiRKj[];
103352 +EXPORT_SYMBOL(_ZN6VectorIjE6assignEiRKj);
103353 +extern char _ZN6VectorIjE6insertEPjRKj[];
103354 +EXPORT_SYMBOL(_ZN6VectorIjE6insertEPjRKj);
103355 +extern char _ZN6VectorIjE6resizeEiRKj[];
103356 +EXPORT_SYMBOL(_ZN6VectorIjE6resizeEiRKj);
103357 +extern char _ZN6VectorIjE7reserveEi[];
103358 +EXPORT_SYMBOL(_ZN6VectorIjE7reserveEi);
103359 +extern char _ZN6VectorIjE8pop_backEv[];
103360 +EXPORT_SYMBOL(_ZN6VectorIjE8pop_backEv);
103361 +extern char _ZN6VectorIjE9pop_frontEv[];
103362 +EXPORT_SYMBOL(_ZN6VectorIjE9pop_frontEv);
103363 +extern char _ZN6VectorIjE9push_backERKj[];
103364 +EXPORT_SYMBOL(_ZN6VectorIjE9push_backERKj);
103365 +extern char _ZN6VectorIjEC1ERKS0_[];
103366 +EXPORT_SYMBOL(_ZN6VectorIjEC1ERKS0_);
103367 +extern char _ZN6VectorIjEC1EiRKj[];
103368 +EXPORT_SYMBOL(_ZN6VectorIjEC1EiRKj);
103369 +extern char _ZN6VectorIjEC1Ev[];
103370 +EXPORT_SYMBOL(_ZN6VectorIjEC1Ev);
103371 +extern char _ZN6VectorIjEC2ERKS0_[];
103372 +EXPORT_SYMBOL(_ZN6VectorIjEC2ERKS0_);
103373 +extern char _ZN6VectorIjEC2EiRKj[];
103374 +EXPORT_SYMBOL(_ZN6VectorIjEC2EiRKj);
103375 +extern char _ZN6VectorIjEC2Ev[];
103376 +EXPORT_SYMBOL(_ZN6VectorIjEC2Ev);
103377 +extern char _ZN6VectorIjED1Ev[];
103378 +EXPORT_SYMBOL(_ZN6VectorIjED1Ev);
103379 +extern char _ZN6VectorIjED2Ev[];
103380 +EXPORT_SYMBOL(_ZN6VectorIjED2Ev);
103381 +extern char _ZN6VectorIjEaSERKS0_[];
103382 +EXPORT_SYMBOL(_ZN6VectorIjEaSERKS0_);
103383 +extern char _ZN6VectorIjEixEi[];
103384 +EXPORT_SYMBOL(_ZN6VectorIjEixEi);
103385 +extern char _ZN7HashMapI6StringiE10find_forceERKS0_[];
103386 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE10find_forceERKS0_);
103387 +extern char _ZN7HashMapI6StringiE10find_forceERKS0_RKi[];
103388 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE10find_forceERKS0_RKi);
103389 +extern char _ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj[];
103390 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE10initializeEP20HashMap_ArenaFactoryj);
103391 +extern char _ZN7HashMapI6StringiE11findp_forceERKS0_[];
103392 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE11findp_forceERKS0_);
103393 +extern char _ZN7HashMapI6StringiE11findp_forceERKS0_RKi[];
103394 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE11findp_forceERKS0_RKi);
103395 +extern char _ZN7HashMapI6StringiE15find_pair_forceERKS0_[];
103396 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE15find_pair_forceERKS0_);
103397 +extern char _ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi[];
103398 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE15find_pair_forceERKS0_RKi);
103399 +extern char _ZN7HashMapI6StringiE20set_dynamic_resizingEb[];
103400 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE20set_dynamic_resizingEb);
103401 +extern char _ZN7HashMapI6StringiE3endEv[];
103402 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE3endEv);
103403 +extern char _ZN7HashMapI6StringiE4swapERS1_[];
103404 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE4swapERS1_);
103405 +extern char _ZN7HashMapI6StringiE5beginEv[];
103406 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE5beginEv);
103407 +extern char _ZN7HashMapI6StringiE5clearEv[];
103408 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE5clearEv);
103409 +extern char _ZN7HashMapI6StringiE6insertERKS0_RKi[];
103410 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE6insertERKS0_RKi);
103411 +extern char _ZN7HashMapI6StringiE6removeERKS0_[];
103412 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE6removeERKS0_);
103413 +extern char _ZN7HashMapI6StringiE6resizeEj[];
103414 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE6resizeEj);
103415 +extern char _ZN7HashMapI6StringiE7resize0Ej[];
103416 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE7resize0Ej);
103417 +extern char _ZN7HashMapI6StringiE9copy_fromERKS1_[];
103418 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE9copy_fromERKS1_);
103419 +extern char _ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory[];
103420 +EXPORT_SYMBOL(_ZN7HashMapI6StringiE9set_arenaEP20HashMap_ArenaFactory);
103421 +extern char _ZN7HashMapI6StringiEC1ERKS1_[];
103422 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1ERKS1_);
103423 +extern char _ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory[];
103424 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1ERKiP20HashMap_ArenaFactory);
103425 +extern char _ZN7HashMapI6StringiEC1Ev[];
103426 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC1Ev);
103427 +extern char _ZN7HashMapI6StringiEC2ERKS1_[];
103428 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2ERKS1_);
103429 +extern char _ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory[];
103430 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2ERKiP20HashMap_ArenaFactory);
103431 +extern char _ZN7HashMapI6StringiEC2Ev[];
103432 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEC2Ev);
103433 +extern char _ZN7HashMapI6StringiED1Ev[];
103434 +EXPORT_SYMBOL(_ZN7HashMapI6StringiED1Ev);
103435 +extern char _ZN7HashMapI6StringiED2Ev[];
103436 +EXPORT_SYMBOL(_ZN7HashMapI6StringiED2Ev);
103437 +extern char _ZN7HashMapI6StringiEaSERKS1_[];
103438 +EXPORT_SYMBOL(_ZN7HashMapI6StringiEaSERKS1_);
103439 +extern char _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_[];
103440 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10find_forceERKS0_);
103441 +extern char _ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb[];
103442 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10find_forceERKS0_RKb);
103443 +extern char _ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj[];
103444 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE10initializeEP20HashMap_ArenaFactoryj);
103445 +extern char _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_[];
103446 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_);
103447 +extern char _ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb[];
103448 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE11findp_forceERKS0_RKb);
103449 +extern char _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_[];
103450 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_);
103451 +extern char _ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb[];
103452 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE15find_pair_forceERKS0_RKb);
103453 +extern char _ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb[];
103454 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE20set_dynamic_resizingEb);
103455 +extern char _ZN7HashMapI8IPFlowIDbE3endEv[];
103456 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE3endEv);
103457 +extern char _ZN7HashMapI8IPFlowIDbE4swapERS1_[];
103458 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE4swapERS1_);
103459 +extern char _ZN7HashMapI8IPFlowIDbE5beginEv[];
103460 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE5beginEv);
103461 +extern char _ZN7HashMapI8IPFlowIDbE5clearEv[];
103462 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE5clearEv);
103463 +extern char _ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb[];
103464 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6insertERKS0_RKb);
103465 +extern char _ZN7HashMapI8IPFlowIDbE6removeERKS0_[];
103466 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6removeERKS0_);
103467 +extern char _ZN7HashMapI8IPFlowIDbE6resizeEj[];
103468 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE6resizeEj);
103469 +extern char _ZN7HashMapI8IPFlowIDbE7resize0Ej[];
103470 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE7resize0Ej);
103471 +extern char _ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_[];
103472 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE9copy_fromERKS1_);
103473 +extern char _ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory[];
103474 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbE9set_arenaEP20HashMap_ArenaFactory);
103475 +extern char _ZN7HashMapI8IPFlowIDbEC1ERKS1_[];
103476 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1ERKS1_);
103477 +extern char _ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory[];
103478 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1ERKbP20HashMap_ArenaFactory);
103479 +extern char _ZN7HashMapI8IPFlowIDbEC1Ev[];
103480 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC1Ev);
103481 +extern char _ZN7HashMapI8IPFlowIDbEC2ERKS1_[];
103482 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2ERKS1_);
103483 +extern char _ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory[];
103484 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2ERKbP20HashMap_ArenaFactory);
103485 +extern char _ZN7HashMapI8IPFlowIDbEC2Ev[];
103486 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEC2Ev);
103487 +extern char _ZN7HashMapI8IPFlowIDbED1Ev[];
103488 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbED1Ev);
103489 +extern char _ZN7HashMapI8IPFlowIDbED2Ev[];
103490 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbED2Ev);
103491 +extern char _ZN7HashMapI8IPFlowIDbEaSERKS1_[];
103492 +EXPORT_SYMBOL(_ZN7HashMapI8IPFlowIDbEaSERKS1_);
103493 +extern char _ZN7HashMapI9IPAddressjE10find_forceERKS0_[];
103494 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10find_forceERKS0_);
103495 +extern char _ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj[];
103496 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10find_forceERKS0_RKj);
103497 +extern char _ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj[];
103498 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE10initializeEP20HashMap_ArenaFactoryj);
103499 +extern char _ZN7HashMapI9IPAddressjE11findp_forceERKS0_[];
103500 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE11findp_forceERKS0_);
103501 +extern char _ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj[];
103502 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE11findp_forceERKS0_RKj);
103503 +extern char _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_[];
103504 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_);
103505 +extern char _ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj[];
103506 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE15find_pair_forceERKS0_RKj);
103507 +extern char _ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb[];
103508 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE20set_dynamic_resizingEb);
103509 +extern char _ZN7HashMapI9IPAddressjE3endEv[];
103510 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE3endEv);
103511 +extern char _ZN7HashMapI9IPAddressjE4swapERS1_[];
103512 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE4swapERS1_);
103513 +extern char _ZN7HashMapI9IPAddressjE5beginEv[];
103514 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE5beginEv);
103515 +extern char _ZN7HashMapI9IPAddressjE5clearEv[];
103516 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE5clearEv);
103517 +extern char _ZN7HashMapI9IPAddressjE6insertERKS0_RKj[];
103518 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6insertERKS0_RKj);
103519 +extern char _ZN7HashMapI9IPAddressjE6removeERKS0_[];
103520 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6removeERKS0_);
103521 +extern char _ZN7HashMapI9IPAddressjE6resizeEj[];
103522 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE6resizeEj);
103523 +extern char _ZN7HashMapI9IPAddressjE7resize0Ej[];
103524 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE7resize0Ej);
103525 +extern char _ZN7HashMapI9IPAddressjE9copy_fromERKS1_[];
103526 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE9copy_fromERKS1_);
103527 +extern char _ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory[];
103528 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjE9set_arenaEP20HashMap_ArenaFactory);
103529 +extern char _ZN7HashMapI9IPAddressjEC1ERKS1_[];
103530 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1ERKS1_);
103531 +extern char _ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory[];
103532 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1ERKjP20HashMap_ArenaFactory);
103533 +extern char _ZN7HashMapI9IPAddressjEC1Ev[];
103534 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC1Ev);
103535 +extern char _ZN7HashMapI9IPAddressjEC2ERKS1_[];
103536 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2ERKS1_);
103537 +extern char _ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory[];
103538 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2ERKjP20HashMap_ArenaFactory);
103539 +extern char _ZN7HashMapI9IPAddressjEC2Ev[];
103540 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEC2Ev);
103541 +extern char _ZN7HashMapI9IPAddressjED1Ev[];
103542 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjED1Ev);
103543 +extern char _ZN7HashMapI9IPAddressjED2Ev[];
103544 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjED2Ev);
103545 +extern char _ZN7HashMapI9IPAddressjEaSERKS1_[];
103546 +EXPORT_SYMBOL(_ZN7HashMapI9IPAddressjEaSERKS1_);
103547 +extern char _ZNK17_HashMap_iteratorI6StringiE4pairEv[];
103548 +EXPORT_SYMBOL(_ZNK17_HashMap_iteratorI6StringiE4pairEv);
103549 +extern char _ZNK17_HashMap_iteratorI6StringiE5valueEv[];
103550 +EXPORT_SYMBOL(_ZNK17_HashMap_iteratorI6StringiE5valueEv);
103551 +extern char _ZNK23_HashMap_const_iteratorI6StringiE3keyEv[];
103552 +EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE3keyEv);
103553 +extern char _ZNK23_HashMap_const_iteratorI6StringiE4liveEv[];
103554 +EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE4liveEv);
103555 +extern char _ZNK23_HashMap_const_iteratorI6StringiE4pairEv[];
103556 +EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE4pairEv);
103557 +extern char _ZNK23_HashMap_const_iteratorI6StringiE5valueEv[];
103558 +EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiE5valueEv);
103559 +extern char _ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv[];
103560 +EXPORT_SYMBOL(_ZNK23_HashMap_const_iteratorI6StringiEcvMS1_KFbvEEv);
103561 +extern char _ZNK6VectorI6StringE2atEi[];
103562 +EXPORT_SYMBOL(_ZNK6VectorI6StringE2atEi);
103563 +extern char _ZNK6VectorI6StringE3endEv[];
103564 +EXPORT_SYMBOL(_ZNK6VectorI6StringE3endEv);
103565 +extern char _ZNK6VectorI6StringE4at_uEi[];
103566 +EXPORT_SYMBOL(_ZNK6VectorI6StringE4at_uEi);
103567 +extern char _ZNK6VectorI6StringE4backEv[];
103568 +EXPORT_SYMBOL(_ZNK6VectorI6StringE4backEv);
103569 +extern char _ZNK6VectorI6StringE4sizeEv[];
103570 +EXPORT_SYMBOL(_ZNK6VectorI6StringE4sizeEv);
103571 +extern char _ZNK6VectorI6StringE4veltEi[];
103572 +EXPORT_SYMBOL(_ZNK6VectorI6StringE4veltEi);
103573 +extern char _ZNK6VectorI6StringE5beginEv[];
103574 +EXPORT_SYMBOL(_ZNK6VectorI6StringE5beginEv);
103575 +extern char _ZNK6VectorI6StringE5emptyEv[];
103576 +EXPORT_SYMBOL(_ZNK6VectorI6StringE5emptyEv);
103577 +extern char _ZNK6VectorI6StringE5frontEv[];
103578 +EXPORT_SYMBOL(_ZNK6VectorI6StringE5frontEv);
103579 +extern char _ZNK6VectorI6StringE8capacityEv[];
103580 +EXPORT_SYMBOL(_ZNK6VectorI6StringE8capacityEv);
103581 +extern char _ZNK6VectorI9IPAddressE2atEi[];
103582 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE2atEi);
103583 +extern char _ZNK6VectorI9IPAddressE3endEv[];
103584 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE3endEv);
103585 +extern char _ZNK6VectorI9IPAddressE4at_uEi[];
103586 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4at_uEi);
103587 +extern char _ZNK6VectorI9IPAddressE4backEv[];
103588 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4backEv);
103589 +extern char _ZNK6VectorI9IPAddressE4sizeEv[];
103590 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4sizeEv);
103591 +extern char _ZNK6VectorI9IPAddressE4veltEi[];
103592 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE4veltEi);
103593 +extern char _ZNK6VectorI9IPAddressE5beginEv[];
103594 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5beginEv);
103595 +extern char _ZNK6VectorI9IPAddressE5emptyEv[];
103596 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5emptyEv);
103597 +extern char _ZNK6VectorI9IPAddressE5frontEv[];
103598 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE5frontEv);
103599 +extern char _ZNK6VectorI9IPAddressE8capacityEv[];
103600 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressE8capacityEv);
103601 +extern char _ZNK6VectorI9IPAddressEixEi[];
103602 +EXPORT_SYMBOL(_ZNK6VectorI9IPAddressEixEi);
103603 +extern char _ZNK6VectorIN6Router6HookupEE2atEi[];
103604 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE2atEi);
103605 +extern char _ZNK6VectorIN6Router6HookupEE3endEv[];
103606 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE3endEv);
103607 +extern char _ZNK6VectorIN6Router6HookupEE4at_uEi[];
103608 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4at_uEi);
103609 +extern char _ZNK6VectorIN6Router6HookupEE4backEv[];
103610 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4backEv);
103611 +extern char _ZNK6VectorIN6Router6HookupEE4veltEi[];
103612 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE4veltEi);
103613 +extern char _ZNK6VectorIN6Router6HookupEE5beginEv[];
103614 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5beginEv);
103615 +extern char _ZNK6VectorIN6Router6HookupEE5emptyEv[];
103616 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5emptyEv);
103617 +extern char _ZNK6VectorIN6Router6HookupEE5frontEv[];
103618 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE5frontEv);
103619 +extern char _ZNK6VectorIN6Router6HookupEE8capacityEv[];
103620 +EXPORT_SYMBOL(_ZNK6VectorIN6Router6HookupEE8capacityEv);
103621 +extern char _ZNK6VectorIiE2atEi[];
103622 +EXPORT_SYMBOL(_ZNK6VectorIiE2atEi);
103623 +extern char _ZNK6VectorIiE3endEv[];
103624 +EXPORT_SYMBOL(_ZNK6VectorIiE3endEv);
103625 +extern char _ZNK6VectorIiE4at_uEi[];
103626 +EXPORT_SYMBOL(_ZNK6VectorIiE4at_uEi);
103627 +extern char _ZNK6VectorIiE4backEv[];
103628 +EXPORT_SYMBOL(_ZNK6VectorIiE4backEv);
103629 +extern char _ZNK6VectorIiE4sizeEv[];
103630 +EXPORT_SYMBOL(_ZNK6VectorIiE4sizeEv);
103631 +extern char _ZNK6VectorIiE4veltEi[];
103632 +EXPORT_SYMBOL(_ZNK6VectorIiE4veltEi);
103633 +extern char _ZNK6VectorIiE5beginEv[];
103634 +EXPORT_SYMBOL(_ZNK6VectorIiE5beginEv);
103635 +extern char _ZNK6VectorIiE5emptyEv[];
103636 +EXPORT_SYMBOL(_ZNK6VectorIiE5emptyEv);
103637 +extern char _ZNK6VectorIiE5frontEv[];
103638 +EXPORT_SYMBOL(_ZNK6VectorIiE5frontEv);
103639 +extern char _ZNK6VectorIiE8capacityEv[];
103640 +EXPORT_SYMBOL(_ZNK6VectorIiE8capacityEv);
103641 +extern char _ZNK6VectorIiEixEi[];
103642 +EXPORT_SYMBOL(_ZNK6VectorIiEixEi);
103643 +extern char _ZNK6VectorIjE2atEi[];
103644 +EXPORT_SYMBOL(_ZNK6VectorIjE2atEi);
103645 +extern char _ZNK6VectorIjE3endEv[];
103646 +EXPORT_SYMBOL(_ZNK6VectorIjE3endEv);
103647 +extern char _ZNK6VectorIjE4at_uEi[];
103648 +EXPORT_SYMBOL(_ZNK6VectorIjE4at_uEi);
103649 +extern char _ZNK6VectorIjE4backEv[];
103650 +EXPORT_SYMBOL(_ZNK6VectorIjE4backEv);
103651 +extern char _ZNK6VectorIjE4sizeEv[];
103652 +EXPORT_SYMBOL(_ZNK6VectorIjE4sizeEv);
103653 +extern char _ZNK6VectorIjE4veltEi[];
103654 +EXPORT_SYMBOL(_ZNK6VectorIjE4veltEi);
103655 +extern char _ZNK6VectorIjE5beginEv[];
103656 +EXPORT_SYMBOL(_ZNK6VectorIjE5beginEv);
103657 +extern char _ZNK6VectorIjE5emptyEv[];
103658 +EXPORT_SYMBOL(_ZNK6VectorIjE5emptyEv);
103659 +extern char _ZNK6VectorIjE5frontEv[];
103660 +EXPORT_SYMBOL(_ZNK6VectorIjE5frontEv);
103661 +extern char _ZNK6VectorIjE8capacityEv[];
103662 +EXPORT_SYMBOL(_ZNK6VectorIjE8capacityEv);
103663 +extern char _ZNK6VectorIjEixEi[];
103664 +EXPORT_SYMBOL(_ZNK6VectorIjEixEi);
103665 +extern char _ZNK7HashMapI6StringiE16dynamic_resizingEv[];
103666 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE16dynamic_resizingEv);
103667 +extern char _ZNK7HashMapI6StringiE3endEv[];
103668 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE3endEv);
103669 +extern char _ZNK7HashMapI6StringiE4findERKS0_[];
103670 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4findERKS0_);
103671 +extern char _ZNK7HashMapI6StringiE4findERKS0_RKi[];
103672 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4findERKS0_RKi);
103673 +extern char _ZNK7HashMapI6StringiE4sizeEv[];
103674 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE4sizeEv);
103675 +extern char _ZNK7HashMapI6StringiE5beginEv[];
103676 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5beginEv);
103677 +extern char _ZNK7HashMapI6StringiE5emptyEv[];
103678 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5emptyEv);
103679 +extern char _ZNK7HashMapI6StringiE5findpERKS0_[];
103680 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE5findpERKS0_);
103681 +extern char _ZNK7HashMapI6StringiE6bucketERKS0_[];
103682 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE6bucketERKS0_);
103683 +extern char _ZNK7HashMapI6StringiE8nbucketsEv[];
103684 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE8nbucketsEv);
103685 +extern char _ZNK7HashMapI6StringiE9find_pairERKS0_[];
103686 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiE9find_pairERKS0_);
103687 +extern char _ZNK7HashMapI6StringiEixERKS0_[];
103688 +EXPORT_SYMBOL(_ZNK7HashMapI6StringiEixERKS0_);
103689 +extern char _ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv[];
103690 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE16dynamic_resizingEv);
103691 +extern char _ZNK7HashMapI8IPFlowIDbE3endEv[];
103692 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE3endEv);
103693 +extern char _ZNK7HashMapI8IPFlowIDbE4findERKS0_[];
103694 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4findERKS0_);
103695 +extern char _ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb[];
103696 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4findERKS0_RKb);
103697 +extern char _ZNK7HashMapI8IPFlowIDbE4sizeEv[];
103698 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE4sizeEv);
103699 +extern char _ZNK7HashMapI8IPFlowIDbE5beginEv[];
103700 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5beginEv);
103701 +extern char _ZNK7HashMapI8IPFlowIDbE5emptyEv[];
103702 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5emptyEv);
103703 +extern char _ZNK7HashMapI8IPFlowIDbE5findpERKS0_[];
103704 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE5findpERKS0_);
103705 +extern char _ZNK7HashMapI8IPFlowIDbE6bucketERKS0_[];
103706 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE6bucketERKS0_);
103707 +extern char _ZNK7HashMapI8IPFlowIDbE8nbucketsEv[];
103708 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE8nbucketsEv);
103709 +extern char _ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_[];
103710 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbE9find_pairERKS0_);
103711 +extern char _ZNK7HashMapI8IPFlowIDbEixERKS0_[];
103712 +EXPORT_SYMBOL(_ZNK7HashMapI8IPFlowIDbEixERKS0_);
103713 +extern char _ZNK7HashMapI9IPAddressjE16dynamic_resizingEv[];
103714 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE16dynamic_resizingEv);
103715 +extern char _ZNK7HashMapI9IPAddressjE3endEv[];
103716 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE3endEv);
103717 +extern char _ZNK7HashMapI9IPAddressjE4findERKS0_[];
103718 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4findERKS0_);
103719 +extern char _ZNK7HashMapI9IPAddressjE4findERKS0_RKj[];
103720 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4findERKS0_RKj);
103721 +extern char _ZNK7HashMapI9IPAddressjE4sizeEv[];
103722 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE4sizeEv);
103723 +extern char _ZNK7HashMapI9IPAddressjE5beginEv[];
103724 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5beginEv);
103725 +extern char _ZNK7HashMapI9IPAddressjE5emptyEv[];
103726 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5emptyEv);
103727 +extern char _ZNK7HashMapI9IPAddressjE5findpERKS0_[];
103728 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE5findpERKS0_);
103729 +extern char _ZNK7HashMapI9IPAddressjE6bucketERKS0_[];
103730 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE6bucketERKS0_);
103731 +extern char _ZNK7HashMapI9IPAddressjE8nbucketsEv[];
103732 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE8nbucketsEv);
103733 +extern char _ZNK7HashMapI9IPAddressjE9find_pairERKS0_[];
103734 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjE9find_pairERKS0_);
103735 +extern char _ZNK7HashMapI9IPAddressjEixERKS0_[];
103736 +EXPORT_SYMBOL(_ZNK7HashMapI9IPAddressjEixERKS0_);
103737 +extern char _ZN9TimedSink10initializeEP12ErrorHandler[];
103738 +EXPORT_SYMBOL(_ZN9TimedSink10initializeEP12ErrorHandler);
103739 +extern char _ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler[];
103740 +EXPORT_SYMBOL(_ZN9TimedSink9configureER6VectorI6StringEP12ErrorHandler);
103741 +extern char _ZN9TimedSink9run_timerEP5Timer[];
103742 +EXPORT_SYMBOL(_ZN9TimedSink9run_timerEP5Timer);
103743 +extern char _ZN9TimedSinkC1Ev[];
103744 +EXPORT_SYMBOL(_ZN9TimedSinkC1Ev);
103745 +extern char _ZN9TimedSinkC2Ev[];
103746 +EXPORT_SYMBOL(_ZN9TimedSinkC2Ev);
103747 +extern char _ZN9TimedSinkD0Ev[];
103748 +EXPORT_SYMBOL(_ZN9TimedSinkD0Ev);
103749 +extern char _ZN9TimedSinkD1Ev[];
103750 +EXPORT_SYMBOL(_ZN9TimedSinkD1Ev);
103751 +extern char _ZN9TimedSinkD2Ev[];
103752 +EXPORT_SYMBOL(_ZN9TimedSinkD2Ev);
103753 +extern char _ZNK9TimedSink10class_nameEv[];
103754 +EXPORT_SYMBOL(_ZNK9TimedSink10class_nameEv);
103755 +extern char _ZNK9TimedSink10port_countEv[];
103756 +EXPORT_SYMBOL(_ZNK9TimedSink10port_countEv);
103757 +extern char _ZNK9TimedSink10processingEv[];
103758 +EXPORT_SYMBOL(_ZNK9TimedSink10processingEv);
103759 +extern char _ZTV9TimedSink[];
103760 +EXPORT_SYMBOL(_ZTV9TimedSink);
103761 +extern char _ZN11TimedSource10initializeEP12ErrorHandler[];
103762 +EXPORT_SYMBOL(_ZN11TimedSource10initializeEP12ErrorHandler);
103763 +extern char _ZN11TimedSource10read_paramEP7ElementPv[];
103764 +EXPORT_SYMBOL(_ZN11TimedSource10read_paramEP7ElementPv);
103765 +extern char _ZN11TimedSource12add_handlersEv[];
103766 +EXPORT_SYMBOL(_ZN11TimedSource12add_handlersEv);
103767 +extern char _ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler[];
103768 +EXPORT_SYMBOL(_ZN11TimedSource12change_paramERK6StringP7ElementPvP12ErrorHandler);
103769 +extern char _ZN11TimedSource7cleanupEN7Element12CleanupStageE[];
103770 +EXPORT_SYMBOL(_ZN11TimedSource7cleanupEN7Element12CleanupStageE);
103771 +extern char _ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler[];
103772 +EXPORT_SYMBOL(_ZN11TimedSource9configureER6VectorI6StringEP12ErrorHandler);
103773 +extern char _ZN11TimedSource9run_timerEP5Timer[];
103774 +EXPORT_SYMBOL(_ZN11TimedSource9run_timerEP5Timer);
103775 +extern char _ZN11TimedSourceC1Ev[];
103776 +EXPORT_SYMBOL(_ZN11TimedSourceC1Ev);
103777 +extern char _ZN11TimedSourceC2Ev[];
103778 +EXPORT_SYMBOL(_ZN11TimedSourceC2Ev);
103779 +extern char _ZN11TimedSourceD0Ev[];
103780 +EXPORT_SYMBOL(_ZN11TimedSourceD0Ev);
103781 +extern char _ZN11TimedSourceD1Ev[];
103782 +EXPORT_SYMBOL(_ZN11TimedSourceD1Ev);
103783 +extern char _ZN11TimedSourceD2Ev[];
103784 +EXPORT_SYMBOL(_ZN11TimedSourceD2Ev);
103785 +extern char _ZNK11TimedSource10class_nameEv[];
103786 +EXPORT_SYMBOL(_ZNK11TimedSource10class_nameEv);
103787 +extern char _ZNK11TimedSource10port_countEv[];
103788 +EXPORT_SYMBOL(_ZNK11TimedSource10port_countEv);
103789 +extern char _ZNK11TimedSource10processingEv[];
103790 +EXPORT_SYMBOL(_ZNK11TimedSource10processingEv);
103791 +extern char _ZTV11TimedSource[];
103792 +EXPORT_SYMBOL(_ZTV11TimedSource);
103793 +extern char _ZN5Timer10unscheduleEv[];
103794 +EXPORT_SYMBOL(_ZN5Timer10unscheduleEv);
103795 +extern char _ZN5Timer11schedule_atERK9Timestamp[];
103796 +EXPORT_SYMBOL(_ZN5Timer11schedule_atERK9Timestamp);
103797 +extern char _ZN5Timer14schedule_afterERK9Timestamp[];
103798 +EXPORT_SYMBOL(_ZN5Timer14schedule_afterERK9Timestamp);
103799 +extern char _ZN5Timer8set_hookEP4Task[];
103800 +EXPORT_SYMBOL(_ZN5Timer8set_hookEP4Task);
103801 +extern char _ZN5Timer8set_hookEP7Element[];
103802 +EXPORT_SYMBOL(_ZN5Timer8set_hookEP7Element);
103803 +extern char _ZN5Timer8set_hookEPFvPS_PvES1_[];
103804 +EXPORT_SYMBOL(_ZN5Timer8set_hookEPFvPS_PvES1_);
103805 +extern char _ZN5TimerC1EP4Task[];
103806 +EXPORT_SYMBOL(_ZN5TimerC1EP4Task);
103807 +extern char _ZN5TimerC1EP7Element[];
103808 +EXPORT_SYMBOL(_ZN5TimerC1EP7Element);
103809 +extern char _ZN5TimerC1EPFvPS_PvES1_[];
103810 +EXPORT_SYMBOL(_ZN5TimerC1EPFvPS_PvES1_);
103811 +extern char _ZN5TimerC1Ev[];
103812 +EXPORT_SYMBOL(_ZN5TimerC1Ev);
103813 +extern char _ZN5TimerC2EP4Task[];
103814 +EXPORT_SYMBOL(_ZN5TimerC2EP4Task);
103815 +extern char _ZN5TimerC2EP7Element[];
103816 +EXPORT_SYMBOL(_ZN5TimerC2EP7Element);
103817 +extern char _ZN5TimerC2EPFvPS_PvES1_[];
103818 +EXPORT_SYMBOL(_ZN5TimerC2EPFvPS_PvES1_);
103819 +extern char _ZN5TimerC2Ev[];
103820 +EXPORT_SYMBOL(_ZN5TimerC2Ev);
103821 +extern char _ZNK9Timestamp7unparseEv[];
103822 +EXPORT_SYMBOL(_ZNK9Timestamp7unparseEv);
103823 +extern char _ZlsR11StringAccumRK7timeval[];
103824 +EXPORT_SYMBOL(_ZlsR11StringAccumRK7timeval);
103825 +extern char _ZlsR11StringAccumRK9Timestamp[];
103826 +EXPORT_SYMBOL(_ZlsR11StringAccumRK9Timestamp);
103827 +extern char _ZN8ToDevice10initializeEP12ErrorHandler[];
103828 +EXPORT_SYMBOL(_ZN8ToDevice10initializeEP12ErrorHandler);
103829 +extern char _ZN8ToDevice12add_handlersEv[];
103830 +EXPORT_SYMBOL(_ZN8ToDevice12add_handlersEv);
103831 +extern char _ZN8ToDevice12queue_packetEP6Packet[];
103832 +EXPORT_SYMBOL(_ZN8ToDevice12queue_packetEP6Packet);
103833 +extern char _ZN8ToDevice12reset_countsEv[];
103834 +EXPORT_SYMBOL(_ZN8ToDevice12reset_countsEv);
103835 +extern char _ZN8ToDevice13change_deviceEP10net_device[];
103836 +EXPORT_SYMBOL(_ZN8ToDevice13change_deviceEP10net_device);
103837 +extern char _ZN8ToDevice14static_cleanupEv[];
103838 +EXPORT_SYMBOL(_ZN8ToDevice14static_cleanupEv);
103839 +extern char _ZN8ToDevice17static_initializeEv[];
103840 +EXPORT_SYMBOL(_ZN8ToDevice17static_initializeEv);
103841 +extern char _ZN8ToDevice7cleanupEN7Element12CleanupStageE[];
103842 +EXPORT_SYMBOL(_ZN8ToDevice7cleanupEN7Element12CleanupStageE);
103843 +extern char _ZN8ToDevice8run_taskEP4Task[];
103844 +EXPORT_SYMBOL(_ZN8ToDevice8run_taskEP4Task);
103845 +extern char _ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler[];
103846 +EXPORT_SYMBOL(_ZN8ToDevice9configureER6VectorI6StringEP12ErrorHandler);
103847 +extern char _ZN8ToDeviceC1Ev[];
103848 +EXPORT_SYMBOL(_ZN8ToDeviceC1Ev);
103849 +extern char _ZN8ToDeviceC2Ev[];
103850 +EXPORT_SYMBOL(_ZN8ToDeviceC2Ev);
103851 +extern char _ZN8ToDeviceD0Ev[];
103852 +EXPORT_SYMBOL(_ZN8ToDeviceD0Ev);
103853 +extern char _ZN8ToDeviceD1Ev[];
103854 +EXPORT_SYMBOL(_ZN8ToDeviceD1Ev);
103855 +extern char _ZN8ToDeviceD2Ev[];
103856 +EXPORT_SYMBOL(_ZN8ToDeviceD2Ev);
103857 +extern char _ZNK8ToDevice10class_nameEv[];
103858 +EXPORT_SYMBOL(_ZNK8ToDevice10class_nameEv);
103859 +extern char _ZNK8ToDevice10port_countEv[];
103860 +EXPORT_SYMBOL(_ZNK8ToDevice10port_countEv);
103861 +extern char _ZNK8ToDevice10processingEv[];
103862 +EXPORT_SYMBOL(_ZNK8ToDevice10processingEv);
103863 +extern char _ZNK8ToDevice15configure_phaseEv[];
103864 +EXPORT_SYMBOL(_ZNK8ToDevice15configure_phaseEv);
103865 +extern char _ZTV8ToDevice[];
103866 +EXPORT_SYMBOL(_ZTV8ToDevice);
103867 +extern char _ZN6ToHost10initializeEP12ErrorHandler[];
103868 +EXPORT_SYMBOL(_ZN6ToHost10initializeEP12ErrorHandler);
103869 +extern char _ZN6ToHost12add_handlersEv[];
103870 +EXPORT_SYMBOL(_ZN6ToHost12add_handlersEv);
103871 +extern char _ZN6ToHost12read_handlerEP7ElementPv[];
103872 +EXPORT_SYMBOL(_ZN6ToHost12read_handlerEP7ElementPv);
103873 +extern char _ZN6ToHost14static_cleanupEv[];
103874 +EXPORT_SYMBOL(_ZN6ToHost14static_cleanupEv);
103875 +extern char _ZN6ToHost17static_initializeEv[];
103876 +EXPORT_SYMBOL(_ZN6ToHost17static_initializeEv);
103877 +extern char _ZN6ToHost4pushEiP6Packet[];
103878 +EXPORT_SYMBOL(_ZN6ToHost4pushEiP6Packet);
103879 +extern char _ZN6ToHost7cleanupEN7Element12CleanupStageE[];
103880 +EXPORT_SYMBOL(_ZN6ToHost7cleanupEN7Element12CleanupStageE);
103881 +extern char _ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler[];
103882 +EXPORT_SYMBOL(_ZN6ToHost9configureER6VectorI6StringEP12ErrorHandler);
103883 +extern char _ZN6ToHostC1Ev[];
103884 +EXPORT_SYMBOL(_ZN6ToHostC1Ev);
103885 +extern char _ZN6ToHostC2Ev[];
103886 +EXPORT_SYMBOL(_ZN6ToHostC2Ev);
103887 +extern char _ZN6ToHostD0Ev[];
103888 +EXPORT_SYMBOL(_ZN6ToHostD0Ev);
103889 +extern char _ZN6ToHostD1Ev[];
103890 +EXPORT_SYMBOL(_ZN6ToHostD1Ev);
103891 +extern char _ZN6ToHostD2Ev[];
103892 +EXPORT_SYMBOL(_ZN6ToHostD2Ev);
103893 +extern char _ZNK6ToHost10class_nameEv[];
103894 +EXPORT_SYMBOL(_ZNK6ToHost10class_nameEv);
103895 +extern char _ZNK6ToHost10port_countEv[];
103896 +EXPORT_SYMBOL(_ZNK6ToHost10port_countEv);
103897 +extern char _ZNK6ToHost10processingEv[];
103898 +EXPORT_SYMBOL(_ZNK6ToHost10processingEv);
103899 +extern char _ZNK6ToHost15configure_phaseEv[];
103900 +EXPORT_SYMBOL(_ZNK6ToHost15configure_phaseEv);
103901 +extern char _ZNK6ToHost5flagsEv[];
103902 +EXPORT_SYMBOL(_ZNK6ToHost5flagsEv);
103903 +extern char _ZTV6ToHost[];
103904 +EXPORT_SYMBOL(_ZTV6ToHost);
103905 +extern char _ZN14ToHostSniffersC1Ev[];
103906 +EXPORT_SYMBOL(_ZN14ToHostSniffersC1Ev);
103907 +extern char _ZN14ToHostSniffersC2Ev[];
103908 +EXPORT_SYMBOL(_ZN14ToHostSniffersC2Ev);
103909 +extern char _ZN14ToHostSniffersD0Ev[];
103910 +EXPORT_SYMBOL(_ZN14ToHostSniffersD0Ev);
103911 +extern char _ZN14ToHostSniffersD1Ev[];
103912 +EXPORT_SYMBOL(_ZN14ToHostSniffersD1Ev);
103913 +extern char _ZN14ToHostSniffersD2Ev[];
103914 +EXPORT_SYMBOL(_ZN14ToHostSniffersD2Ev);
103915 +extern char _ZNK14ToHostSniffers10class_nameEv[];
103916 +EXPORT_SYMBOL(_ZNK14ToHostSniffers10class_nameEv);
103917 +extern char _ZTV14ToHostSniffers[];
103918 +EXPORT_SYMBOL(_ZTV14ToHostSniffers);
103919 +extern char _ZN8Truncate13simple_actionEP6Packet[];
103920 +EXPORT_SYMBOL(_ZN8Truncate13simple_actionEP6Packet);
103921 +extern char _ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler[];
103922 +EXPORT_SYMBOL(_ZN8Truncate9configureER6VectorI6StringEP12ErrorHandler);
103923 +extern char _ZN8TruncateC1Ev[];
103924 +EXPORT_SYMBOL(_ZN8TruncateC1Ev);
103925 +extern char _ZN8TruncateC2Ev[];
103926 +EXPORT_SYMBOL(_ZN8TruncateC2Ev);
103927 +extern char _ZN8TruncateD0Ev[];
103928 +EXPORT_SYMBOL(_ZN8TruncateD0Ev);
103929 +extern char _ZN8TruncateD1Ev[];
103930 +EXPORT_SYMBOL(_ZN8TruncateD1Ev);
103931 +extern char _ZN8TruncateD2Ev[];
103932 +EXPORT_SYMBOL(_ZN8TruncateD2Ev);
103933 +extern char _ZNK8Truncate10class_nameEv[];
103934 +EXPORT_SYMBOL(_ZNK8Truncate10class_nameEv);
103935 +extern char _ZNK8Truncate10port_countEv[];
103936 +EXPORT_SYMBOL(_ZNK8Truncate10port_countEv);
103937 +extern char _ZNK8Truncate10processingEv[];
103938 +EXPORT_SYMBOL(_ZNK8Truncate10processingEv);
103939 +extern char _ZTV8Truncate[];
103940 +EXPORT_SYMBOL(_ZTV8Truncate);
103941 +extern char _ZN10UDPIPEncap12add_handlersEv[];
103942 +EXPORT_SYMBOL(_ZN10UDPIPEncap12add_handlersEv);
103943 +extern char _ZN10UDPIPEncap12read_handlerEP7ElementPv[];
103944 +EXPORT_SYMBOL(_ZN10UDPIPEncap12read_handlerEP7ElementPv);
103945 +extern char _ZN10UDPIPEncap13simple_actionEP6Packet[];
103946 +EXPORT_SYMBOL(_ZN10UDPIPEncap13simple_actionEP6Packet);
103947 +extern char _ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler[];
103948 +EXPORT_SYMBOL(_ZN10UDPIPEncap9configureER6VectorI6StringEP12ErrorHandler);
103949 +extern char _ZN10UDPIPEncapC1Ev[];
103950 +EXPORT_SYMBOL(_ZN10UDPIPEncapC1Ev);
103951 +extern char _ZN10UDPIPEncapC2Ev[];
103952 +EXPORT_SYMBOL(_ZN10UDPIPEncapC2Ev);
103953 +extern char _ZN10UDPIPEncapD0Ev[];
103954 +EXPORT_SYMBOL(_ZN10UDPIPEncapD0Ev);
103955 +extern char _ZN10UDPIPEncapD1Ev[];
103956 +EXPORT_SYMBOL(_ZN10UDPIPEncapD1Ev);
103957 +extern char _ZN10UDPIPEncapD2Ev[];
103958 +EXPORT_SYMBOL(_ZN10UDPIPEncapD2Ev);
103959 +extern char _ZNK10UDPIPEncap10class_nameEv[];
103960 +EXPORT_SYMBOL(_ZNK10UDPIPEncap10class_nameEv);
103961 +extern char _ZNK10UDPIPEncap10port_countEv[];
103962 +EXPORT_SYMBOL(_ZNK10UDPIPEncap10port_countEv);
103963 +extern char _ZNK10UDPIPEncap10processingEv[];
103964 +EXPORT_SYMBOL(_ZNK10UDPIPEncap10processingEv);
103965 +extern char _ZNK10UDPIPEncap20can_live_reconfigureEv[];
103966 +EXPORT_SYMBOL(_ZNK10UDPIPEncap20can_live_reconfigureEv);
103967 +extern char _ZNK10UDPIPEncap5flagsEv[];
103968 +EXPORT_SYMBOL(_ZNK10UDPIPEncap5flagsEv);
103969 +extern char _ZTV10UDPIPEncap[];
103970 +EXPORT_SYMBOL(_ZTV10UDPIPEncap);
103971 +extern char _ZN7Unqueue10initializeEP12ErrorHandler[];
103972 +EXPORT_SYMBOL(_ZN7Unqueue10initializeEP12ErrorHandler);
103973 +extern char _ZN7Unqueue10read_paramEP7ElementPv[];
103974 +EXPORT_SYMBOL(_ZN7Unqueue10read_paramEP7ElementPv);
103975 +extern char _ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler[];
103976 +EXPORT_SYMBOL(_ZN7Unqueue11write_paramERK6StringP7ElementPvP12ErrorHandler);
103977 +extern char _ZN7Unqueue12add_handlersEv[];
103978 +EXPORT_SYMBOL(_ZN7Unqueue12add_handlersEv);
103979 +extern char _ZN7Unqueue8run_taskEP4Task[];
103980 +EXPORT_SYMBOL(_ZN7Unqueue8run_taskEP4Task);
103981 +extern char _ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler[];
103982 +EXPORT_SYMBOL(_ZN7Unqueue9configureER6VectorI6StringEP12ErrorHandler);
103983 +extern char _ZN7UnqueueC1Ev[];
103984 +EXPORT_SYMBOL(_ZN7UnqueueC1Ev);
103985 +extern char _ZN7UnqueueC2Ev[];
103986 +EXPORT_SYMBOL(_ZN7UnqueueC2Ev);
103987 +extern char _ZN7UnqueueD0Ev[];
103988 +EXPORT_SYMBOL(_ZN7UnqueueD0Ev);
103989 +extern char _ZN7UnqueueD1Ev[];
103990 +EXPORT_SYMBOL(_ZN7UnqueueD1Ev);
103991 +extern char _ZN7UnqueueD2Ev[];
103992 +EXPORT_SYMBOL(_ZN7UnqueueD2Ev);
103993 +extern char _ZNK7Unqueue10class_nameEv[];
103994 +EXPORT_SYMBOL(_ZNK7Unqueue10class_nameEv);
103995 +extern char _ZNK7Unqueue10port_countEv[];
103996 +EXPORT_SYMBOL(_ZNK7Unqueue10port_countEv);
103997 +extern char _ZNK7Unqueue10processingEv[];
103998 +EXPORT_SYMBOL(_ZNK7Unqueue10processingEv);
103999 +extern char _ZTV7Unqueue[];
104000 +EXPORT_SYMBOL(_ZTV7Unqueue);
104001 +extern char _ZN8Unqueue210initializeEP12ErrorHandler[];
104002 +EXPORT_SYMBOL(_ZN8Unqueue210initializeEP12ErrorHandler);
104003 +extern char _ZN8Unqueue210read_paramEP7ElementPv[];
104004 +EXPORT_SYMBOL(_ZN8Unqueue210read_paramEP7ElementPv);
104005 +extern char _ZN8Unqueue212add_handlersEv[];
104006 +EXPORT_SYMBOL(_ZN8Unqueue212add_handlersEv);
104007 +extern char _ZN8Unqueue28run_taskEP4Task[];
104008 +EXPORT_SYMBOL(_ZN8Unqueue28run_taskEP4Task);
104009 +extern char _ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler[];
104010 +EXPORT_SYMBOL(_ZN8Unqueue29configureER6VectorI6StringEP12ErrorHandler);
104011 +extern char _ZN8Unqueue2C1Ev[];
104012 +EXPORT_SYMBOL(_ZN8Unqueue2C1Ev);
104013 +extern char _ZN8Unqueue2C2Ev[];
104014 +EXPORT_SYMBOL(_ZN8Unqueue2C2Ev);
104015 +extern char _ZN8Unqueue2D0Ev[];
104016 +EXPORT_SYMBOL(_ZN8Unqueue2D0Ev);
104017 +extern char _ZN8Unqueue2D1Ev[];
104018 +EXPORT_SYMBOL(_ZN8Unqueue2D1Ev);
104019 +extern char _ZN8Unqueue2D2Ev[];
104020 +EXPORT_SYMBOL(_ZN8Unqueue2D2Ev);
104021 +extern char _ZNK8Unqueue210class_nameEv[];
104022 +EXPORT_SYMBOL(_ZNK8Unqueue210class_nameEv);
104023 +extern char _ZNK8Unqueue210port_countEv[];
104024 +EXPORT_SYMBOL(_ZNK8Unqueue210port_countEv);
104025 +extern char _ZNK8Unqueue210processingEv[];
104026 +EXPORT_SYMBOL(_ZNK8Unqueue210processingEv);
104027 +extern char _ZTV8Unqueue2[];
104028 +EXPORT_SYMBOL(_ZTV8Unqueue2);
104029 +extern char _ZN7Unstrip13simple_actionEP6Packet[];
104030 +EXPORT_SYMBOL(_ZN7Unstrip13simple_actionEP6Packet);
104031 +extern char _ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler[];
104032 +EXPORT_SYMBOL(_ZN7Unstrip9configureER6VectorI6StringEP12ErrorHandler);
104033 +extern char _ZN7UnstripC1Ej[];
104034 +EXPORT_SYMBOL(_ZN7UnstripC1Ej);
104035 +extern char _ZN7UnstripC2Ej[];
104036 +EXPORT_SYMBOL(_ZN7UnstripC2Ej);
104037 +extern char _ZN7UnstripD0Ev[];
104038 +EXPORT_SYMBOL(_ZN7UnstripD0Ev);
104039 +extern char _ZN7UnstripD1Ev[];
104040 +EXPORT_SYMBOL(_ZN7UnstripD1Ev);
104041 +extern char _ZN7UnstripD2Ev[];
104042 +EXPORT_SYMBOL(_ZN7UnstripD2Ev);
104043 +extern char _ZNK7Unstrip10class_nameEv[];
104044 +EXPORT_SYMBOL(_ZNK7Unstrip10class_nameEv);
104045 +extern char _ZNK7Unstrip10port_countEv[];
104046 +EXPORT_SYMBOL(_ZNK7Unstrip10port_countEv);
104047 +extern char _ZNK7Unstrip10processingEv[];
104048 +EXPORT_SYMBOL(_ZNK7Unstrip10processingEv);
104049 +extern char _ZTV7Unstrip[];
104050 +EXPORT_SYMBOL(_ZTV7Unstrip);
104051 +extern char _ZN15UnstripIPHeader13simple_actionEP6Packet[];
104052 +EXPORT_SYMBOL(_ZN15UnstripIPHeader13simple_actionEP6Packet);
104053 +extern char _ZN15UnstripIPHeaderC1Ev[];
104054 +EXPORT_SYMBOL(_ZN15UnstripIPHeaderC1Ev);
104055 +extern char _ZN15UnstripIPHeaderC2Ev[];
104056 +EXPORT_SYMBOL(_ZN15UnstripIPHeaderC2Ev);
104057 +extern char _ZN15UnstripIPHeaderD0Ev[];
104058 +EXPORT_SYMBOL(_ZN15UnstripIPHeaderD0Ev);
104059 +extern char _ZN15UnstripIPHeaderD1Ev[];
104060 +EXPORT_SYMBOL(_ZN15UnstripIPHeaderD1Ev);
104061 +extern char _ZN15UnstripIPHeaderD2Ev[];
104062 +EXPORT_SYMBOL(_ZN15UnstripIPHeaderD2Ev);
104063 +extern char _ZNK15UnstripIPHeader10class_nameEv[];
104064 +EXPORT_SYMBOL(_ZNK15UnstripIPHeader10class_nameEv);
104065 +extern char _ZNK15UnstripIPHeader10port_countEv[];
104066 +EXPORT_SYMBOL(_ZNK15UnstripIPHeader10port_countEv);
104067 +extern char _ZTV15UnstripIPHeader[];
104068 +EXPORT_SYMBOL(_ZTV15UnstripIPHeader);
104069 +extern char _Z19cp_expand_in_quotesRK6Stringi[];
104070 +EXPORT_SYMBOL(_Z19cp_expand_in_quotesRK6Stringi);
104071 +extern char _Z9cp_expandRK6StringR16VariableExpanderb[];
104072 +EXPORT_SYMBOL(_Z9cp_expandRK6StringR16VariableExpanderb);
104073 +extern char _ZN19VariableEnvironment6defineERK6StringS2_b[];
104074 +EXPORT_SYMBOL(_ZN19VariableEnvironment6defineERK6StringS2_b);
104075 +extern char _ZN19VariableEnvironment6expandERK6StringiiR11StringAccum[];
104076 +EXPORT_SYMBOL(_ZN19VariableEnvironment6expandERK6StringiiR11StringAccum);
104077 +extern char _ZN19VariableEnvironment9parent_ofEi[];
104078 +EXPORT_SYMBOL(_ZN19VariableEnvironment9parent_ofEi);
104079 +extern char _ZN19VariableEnvironmentC1EPS_[];
104080 +EXPORT_SYMBOL(_ZN19VariableEnvironmentC1EPS_);
104081 +extern char _ZN19VariableEnvironmentC2EPS_[];
104082 +EXPORT_SYMBOL(_ZN19VariableEnvironmentC2EPS_);
104083 +extern char _ZN19VariableEnvironmentD0Ev[];
104084 +EXPORT_SYMBOL(_ZN19VariableEnvironmentD0Ev);
104085 +extern char _ZN19VariableEnvironmentD1Ev[];
104086 +EXPORT_SYMBOL(_ZN19VariableEnvironmentD1Ev);
104087 +extern char _ZNK19VariableEnvironment5valueERK6StringRb[];
104088 +EXPORT_SYMBOL(_ZNK19VariableEnvironment5valueERK6StringRb);
104089 +extern char _ZTV19VariableEnvironment[];
104090 +EXPORT_SYMBOL(_ZTV19VariableEnvironment);
104091 +extern char _ZN6VectorIPvE4swapERS1_[];
104092 +EXPORT_SYMBOL(_ZN6VectorIPvE4swapERS1_);
104093 +extern char _ZN6VectorIPvE5eraseEPS0_S2_[];
104094 +EXPORT_SYMBOL(_ZN6VectorIPvE5eraseEPS0_S2_);
104095 +extern char _ZN6VectorIPvE6assignEiS0_[];
104096 +EXPORT_SYMBOL(_ZN6VectorIPvE6assignEiS0_);
104097 +extern char _ZN6VectorIPvE6insertEPS0_S0_[];
104098 +EXPORT_SYMBOL(_ZN6VectorIPvE6insertEPS0_S0_);
104099 +extern char _ZN6VectorIPvE6resizeEiS0_[];
104100 +EXPORT_SYMBOL(_ZN6VectorIPvE6resizeEiS0_);
104101 +extern char _ZN6VectorIPvE7reserveEi[];
104102 +EXPORT_SYMBOL(_ZN6VectorIPvE7reserveEi);
104103 +extern char _ZN6VectorIPvEC1ERKS1_[];
104104 +EXPORT_SYMBOL(_ZN6VectorIPvEC1ERKS1_);
104105 +extern char _ZN6VectorIPvEC2ERKS1_[];
104106 +EXPORT_SYMBOL(_ZN6VectorIPvEC2ERKS1_);
104107 +extern char _ZN6VectorIPvED1Ev[];
104108 +EXPORT_SYMBOL(_ZN6VectorIPvED1Ev);
104109 +extern char _ZN6VectorIPvED2Ev[];
104110 +EXPORT_SYMBOL(_ZN6VectorIPvED2Ev);
104111 +extern char _ZN6VectorIPvEaSERKS1_[];
104112 +EXPORT_SYMBOL(_ZN6VectorIPvEaSERKS1_);
104113 diff -Nurb click-1.6.0/linuxmodule/modules.order click-1.6.0-27/linuxmodule/modules.order
104114 --- click-1.6.0/linuxmodule/modules.order       1969-12-31 19:00:00.000000000 -0500
104115 +++ click-1.6.0-27/linuxmodule/modules.order    2009-02-11 16:55:09.000000000 -0500
104116 @@ -0,0 +1,2 @@
104117 +kernel//d/click/click-1.6.0-27/linuxmodule/click.ko
104118 +kernel//d/click/click-1.6.0-27/linuxmodule/proclikefs.ko
104119 diff -Nurb click-1.6.0/linuxmodule/proclikefs.c click-1.6.0-27/linuxmodule/proclikefs.c
104120 --- click-1.6.0/linuxmodule/proclikefs.c        2007-07-16 19:47:50.000000000 -0400
104121 +++ click-1.6.0-27/linuxmodule/proclikefs.c     2009-02-11 16:49:44.000000000 -0500
104122 @@ -20,6 +20,8 @@
104123  #undef CLICK_LINUXMODULE
104124  #include <linux/version.h>
104125  #include <linux/autoconf.h>
104126 +#include <linux/list.h>
104127 +
104128  #ifndef EXPORT_SYMTAB
104129  # define EXPORT_SYMTAB
104130  #endif
104131 @@ -73,7 +75,7 @@
104132      char name[1];
104133  };
104134  
104135 -static LIST_HEAD(fs_list);
104136 +static struct list_head fs_list;
104137  static spinlock_t fslist_lock;
104138  extern spinlock_t inode_lock;
104139  extern spinlock_t sb_lock;
104140 @@ -357,7 +359,7 @@
104141         fo->unlocked_ioctl = (void *) return_EIO;
104142         fo->compat_ioctl = (void *) return_EIO;
104143         fo->aio_fsync = (void *) return_EIO;
104144 -       fo->sendfile = (void *) return_EIO;
104145 +       //fo->sendfile = (void *) return_EIO;
104146         fo->check_flags = (void *) return_EIO;
104147         fo->flock = (void *) return_EIO;
104148  #endif
104149 @@ -533,10 +535,12 @@
104150  int
104151  init_module(void)
104152  {
104153 -    proclikefs_null_super_operations.read_inode = proclikefs_read_inode;
104154 +    //proclikefs_null_super_operations.read_inode = proclikefs_read_inode;
104155      proclikefs_null_super_operations.put_super = proclikefs_put_super;
104156      proclikefs_null_root_inode_operations.lookup = proclikefs_null_root_lookup;
104157      spin_lock_init(&fslist_lock);
104158 +    INIT_LIST_HEAD(&fs_list);
104159 +    printk (KERN_CRIT "Initializing module\n");
104160      return 0;
104161  }
104162  
104163 diff -Nurb click-1.6.0/linuxmodule/proclikefs.c.orig click-1.6.0-27/linuxmodule/proclikefs.c.orig
104164 --- click-1.6.0/linuxmodule/proclikefs.c.orig   1969-12-31 19:00:00.000000000 -0500
104165 +++ click-1.6.0-27/linuxmodule/proclikefs.c.orig        2007-07-16 19:47:50.000000000 -0400
104166 @@ -0,0 +1,567 @@
104167 +/* -*- c-basic-offset: 4 -*- */
104168 +/*
104169 + * proclikefs.c -- /proc-like file system infrastructure; allow file systems
104170 + * to be unmounted even while active
104171 + * Eddie Kohler
104172 + *
104173 + * Copyright (c) 2002-2003 International Computer Science Institute
104174 + * Copyright (c) 2005 Regents of the University of California
104175 + *
104176 + * This source code is free software; you can redistribute it and/or modify it
104177 + * under the terms of the GNU General Public License as published by the Free
104178 + * Software Foundation, version 2.
104179 + *
104180 + * This program is distributed in the hope that it will be useful, but WITHOUT
104181 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
104182 + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
104183 + * more details.
104184 + */
104185 +
104186 +#undef CLICK_LINUXMODULE
104187 +#include <linux/version.h>
104188 +#include <linux/autoconf.h>
104189 +#ifndef EXPORT_SYMTAB
104190 +# define EXPORT_SYMTAB
104191 +#endif
104192 +#ifdef CONFIG_MODVERSIONS
104193 +# define MODVERSIONS
104194 +# if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
104195 +#  include <linux/modversions.h>
104196 +# endif
104197 +#endif
104198 +#include <linux/module.h>
104199 +#include "proclikefs.h"
104200 +#include <linux/string.h>
104201 +#include <linux/slab.h>
104202 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
104203 +# include <linux/locks.h>
104204 +#endif
104205 +#include <linux/file.h>
104206 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104207 +# include <linux/namei.h>
104208 +#endif
104209 +
104210 +#ifndef MOD_DEC_USE_COUNT
104211 +# define MOD_DEC_USE_COUNT     module_put(THIS_MODULE)
104212 +#endif
104213 +
104214 +
104215 +#if 0
104216 +# define DEBUG(args...) do { printk("<1>proclikefs: " args); printk("\n"); } while (0)
104217 +#else
104218 +# define DEBUG(args...) /* nada */
104219 +#endif
104220 +
104221 +struct proclikefs_file_operations {
104222 +    struct file_operations pfo_op;
104223 +    struct proclikefs_file_operations *pfo_next;
104224 +};
104225 +
104226 +struct proclikefs_inode_operations {
104227 +    struct inode_operations pio_op;
104228 +    struct proclikefs_inode_operations *pio_next;
104229 +};
104230 +
104231 +struct proclikefs_file_system {
104232 +    struct file_system_type fs;
104233 +    struct list_head fs_list;
104234 +    atomic_t nsuper;
104235 +    int live;
104236 +    spinlock_t lock;
104237 +    struct proclikefs_file_operations *pfs_pfo;
104238 +    struct proclikefs_inode_operations *pfs_pio;
104239 +    char name[1];
104240 +};
104241 +
104242 +static LIST_HEAD(fs_list);
104243 +static spinlock_t fslist_lock;
104244 +extern spinlock_t inode_lock;
104245 +extern spinlock_t sb_lock;
104246 +
104247 +static struct super_operations proclikefs_null_super_operations;
104248 +static struct inode_operations proclikefs_null_root_inode_operations;
104249 +
104250 +EXPORT_SYMBOL(proclikefs_register_filesystem);
104251 +EXPORT_SYMBOL(proclikefs_reinitialize_supers);
104252 +EXPORT_SYMBOL(proclikefs_unregister_filesystem);
104253 +EXPORT_SYMBOL(proclikefs_read_super);
104254 +EXPORT_SYMBOL(proclikefs_put_super);
104255 +EXPORT_SYMBOL(proclikefs_new_file_operations);
104256 +EXPORT_SYMBOL(proclikefs_new_inode_operations);
104257 +
104258 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
104259 +static struct super_block *
104260 +proclikefs_null_read_super(struct super_block *sb, void *data, int silent)
104261 +{
104262 +    DEBUG("null_read_super");
104263 +    sb->s_dev = 0;
104264 +    return 0;
104265 +}
104266 +#endif
104267 +
104268 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16)
104269 +static struct dentry *
104270 +proclikefs_null_root_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *namei)
104271 +{
104272 +    return (struct dentry *)(ERR_PTR(-ENOENT));
104273 +}
104274 +#else
104275 +static struct dentry *
104276 +proclikefs_null_root_lookup(struct inode *dir, struct dentry *dentry)
104277 +{
104278 +    return (struct dentry *)(ERR_PTR(-ENOENT));
104279 +}
104280 +#endif
104281 +
104282 +struct proclikefs_file_system *
104283 +proclikefs_register_filesystem(const char *name, int fs_flags,
104284 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
104285 +       int (*get_sb) (struct file_system_type *, int, const char *, void *, struct vfsmount *)
104286 +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104287 +       struct super_block *(*get_sb) (struct file_system_type *, int, const char *, void *)
104288 +#else
104289 +       struct super_block *(*read_super) (struct super_block *, void *, int)
104290 +#endif
104291 +       )
104292 +{
104293 +    struct proclikefs_file_system *newfs = 0;
104294 +    struct list_head *next;
104295 +    int newfs_is_new = 0;
104296 +    
104297 +    if (!name)
104298 +       return 0;
104299 +    
104300 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104301 +    if (!try_module_get(THIS_MODULE)) {
104302 +       printk("<1>proclikefs: error using module\n");
104303 +       return 0;
104304 +    }
104305 +#else 
104306 +    MOD_INC_USE_COUNT;
104307 +#endif
104308 +
104309 +    spin_lock(&fslist_lock);
104310 +    
104311 +    for (next = fs_list.next; next != &fs_list; next = next->next) {
104312 +       newfs = list_entry(next, struct proclikefs_file_system, fs_list);
104313 +       if (strcmp(name, newfs->name) == 0) {
104314 +           if (newfs->live > 0) { /* active filesystem with that name */
104315 +               spin_unlock(&fslist_lock);
104316 +               MOD_DEC_USE_COUNT;
104317 +               return 0;
104318 +           } else
104319 +               break;
104320 +       }
104321 +    }
104322 +
104323 +    if (!newfs) {
104324 +       newfs = kmalloc(sizeof(struct proclikefs_file_system) + strlen(name), GFP_ATOMIC);
104325 +       if (!newfs) {           /* out of memory */
104326 +           spin_unlock(&fslist_lock);
104327 +           MOD_DEC_USE_COUNT;
104328 +           return 0;
104329 +       }
104330 +       newfs->pfs_pfo = 0;
104331 +       newfs->pfs_pio = 0;
104332 +       list_add(&newfs->fs_list, &fs_list);
104333 +       strcpy(newfs->name, name);
104334 +       spin_lock_init(&newfs->lock);
104335 +       atomic_set(&newfs->nsuper, 0);
104336 +       newfs->fs.name = newfs->name;
104337 +       newfs->fs.next = 0;
104338 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
104339 +       newfs->fs.owner = THIS_MODULE;
104340 +#endif
104341 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10)
104342 +       INIT_LIST_HEAD(&newfs->fs.fs_supers);
104343 +#endif
104344 +       newfs_is_new = 1;
104345 +    }
104346 +
104347 +    newfs->fs.fs_flags = fs_flags;
104348 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104349 +    newfs->fs.get_sb = get_sb;
104350 +    newfs->fs.kill_sb = kill_anon_super;
104351 +#else
104352 +    newfs->fs.read_super = read_super;
104353 +#endif
104354 +    newfs->live = 1;
104355 +    DEBUG("pfs[%p]: created filesystem %s", newfs, name);
104356 +
104357 +    if (newfs_is_new) {
104358 +       int err = register_filesystem(&newfs->fs);
104359 +       if (err != 0)
104360 +           printk("<1>proclikefs: error %d while initializing pfs[%p] (%s)\n", -err, newfs, name);
104361 +    }
104362 +
104363 +    spin_unlock(&fslist_lock);
104364 +    return newfs;
104365 +}
104366 +
104367 +void
104368 +proclikefs_reinitialize_supers(struct proclikefs_file_system *pfs,
104369 +                              void (*reread_super) (struct super_block *))
104370 +{
104371 +    struct super_block *sb;
104372 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10)
104373 +       struct list_head *p;
104374 +#endif
104375 +    spin_lock(&fslist_lock);
104376 +    /* transfer superblocks */
104377 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10)
104378 +    spin_lock(&sb_lock);
104379 +    for (p = pfs->fs.fs_supers.next; p != &pfs->fs.fs_supers; p = p->next) {
104380 +       sb = list_entry(p, struct super_block, s_instances);
104381 +       if (sb->s_type == &pfs->fs)
104382 +           (*reread_super)(sb);
104383 +       else
104384 +           printk("<1>proclikefs: confusion\n");
104385 +    }
104386 +    spin_unlock(&sb_lock);
104387 +#else
104388 +    for (sb = sb_entry(super_blocks.next); sb != sb_entry(&super_blocks); 
104389 +        sb = sb_entry(sb->s_list.next))
104390 +       if (sb->s_type == &pfs->fs)
104391 +           (*reread_super)(sb);
104392 +#endif
104393 +    spin_unlock(&fslist_lock);
104394 +}
104395 +
104396 +static void
104397 +proclikefs_kill_super(struct super_block *sb, struct file_operations *dummy)
104398 +{
104399 +    struct dentry *dentry_tree;
104400 +    struct list_head *p;
104401 +
104402 +    DEBUG("killing files");
104403 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16)
104404 +    file_list_lock();
104405 +    list_for_each(p, &sb->s_files) {
104406 +       struct file *filp = list_entry(p, struct file, f_u.fu_list);
104407 +       filp->f_op = dummy;
104408 +    }
104409 +    file_list_unlock();
104410 +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
104411 +    file_list_lock();
104412 +    for (p = sb->s_files.next; p != &sb->s_files; p = p->next) {
104413 +       struct file *filp = list_entry(p, struct file, f_list);
104414 +       filp->f_op = dummy;
104415 +    }
104416 +    file_list_unlock();
104417 +#else
104418 +    (void) dummy;
104419 +    (void) p;
104420 +#endif
104421 +
104422 +    lock_super(sb);
104423 +
104424 +    sb->s_op = &proclikefs_null_super_operations;
104425 +    /* will not create new dentries any more */
104426 +
104427 +    /* clear out dentries, starting from the root */
104428 +    /* Develop a linked list corresponding to depth-first search, through
104429 +       the d_fsdata fields. */
104430 +    /* XXX locking? */
104431 +    
104432 +    DEBUG("killing dentries");
104433 +    dentry_tree = sb->s_root;
104434 +    if (dentry_tree) {
104435 +       /* Do not d_drop(root) */
104436 +       dentry_tree->d_fsdata = 0;
104437 +    }
104438 +    while (dentry_tree) {
104439 +       struct list_head *next;
104440 +       struct dentry *active = dentry_tree;
104441 +       /* Process this dentry, move to next */
104442 +       active->d_op = 0;
104443 +       dentry_tree = (struct dentry *)active->d_fsdata;
104444 +       /* Prepend children to dentry_tree */
104445 +       next = active->d_subdirs.next;
104446 +       while (next != &active->d_subdirs) {
104447 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16)
104448 +           struct dentry *child = list_entry(next, struct dentry, d_u.d_child);
104449 +#else
104450 +           struct dentry *child = list_entry(next, struct dentry, d_child);
104451 +#endif
104452 +           next = next->next;
104453 +           d_drop(child);
104454 +           child->d_fsdata = (void *)dentry_tree;
104455 +           dentry_tree = child;
104456 +       }
104457 +    }
104458 +
104459 +    /* But the root inode can't be a dead inode */
104460 +    sb->s_root->d_inode->i_op = &proclikefs_null_root_inode_operations;
104461 +
104462 +    unlock_super(sb);
104463 +    DEBUG("done killing super");
104464 +}
104465 +
104466 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 16)
104467 +static int bad_follow_link(struct dentry *dent, struct nameidata *nd)
104468 +{
104469 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104470 +       nd_set_link(nd, ERR_PTR(-EIO));
104471 +       return 0;
104472 +# else
104473 +       return vfs_follow_link(nd, ERR_PTR(-EIO));
104474 +# endif
104475 +}
104476 +#endif
104477 +
104478 +static int return_EIO(void)
104479 +{
104480 +       return -EIO;
104481 +}
104482 +
104483 +void
104484 +proclikefs_unregister_filesystem(struct proclikefs_file_system *pfs)
104485 +{
104486 +    struct super_block *sb;
104487 +    struct file *filp;
104488 +    struct list_head *p;
104489 +    struct proclikefs_file_operations *pfo;
104490 +    struct proclikefs_inode_operations *pio;
104491 +    
104492 +    if (!pfs)
104493 +       return;
104494 +
104495 +    DEBUG("unregister_filesystem entry");
104496 +    spin_lock(&fslist_lock);
104497 +
104498 +    /* clear out file operations */
104499 +    for (pfo = pfs->pfs_pfo; pfo; pfo = pfo->pfo_next) {
104500 +       struct file_operations *fo = &pfo->pfo_op;
104501 +       fo->llseek = (void *) return_EIO;
104502 +       fo->read = (void *) return_EIO;
104503 +       fo->write = (void *) return_EIO;
104504 +       fo->readdir = (void *) return_EIO;
104505 +       fo->poll = (void *) return_EIO;
104506 +       fo->ioctl = (void *) return_EIO;
104507 +       fo->mmap = (void *) return_EIO;
104508 +       fo->open = (void *) return_EIO;
104509 +       fo->flush = (void *) return_EIO;
104510 +       fo->release = (void *) return_EIO;
104511 +       fo->fsync = (void *) return_EIO;
104512 +       fo->fasync = (void *) return_EIO;
104513 +       fo->lock = (void *) return_EIO;
104514 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)
104515 +       fo->readv = (void *) return_EIO;
104516 +       fo->writev = (void *) return_EIO;
104517 +#endif
104518 +       fo->sendpage = (void *) return_EIO;
104519 +       fo->get_unmapped_area = (void *) return_EIO;
104520 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104521 +       fo->aio_read = (void *) return_EIO;
104522 +       fo->aio_write = (void *) return_EIO;
104523 +       fo->unlocked_ioctl = (void *) return_EIO;
104524 +       fo->compat_ioctl = (void *) return_EIO;
104525 +       fo->aio_fsync = (void *) return_EIO;
104526 +       fo->sendfile = (void *) return_EIO;
104527 +       fo->check_flags = (void *) return_EIO;
104528 +       fo->flock = (void *) return_EIO;
104529 +#endif
104530 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
104531 +       fo->dir_notify = (void *) return_EIO;
104532 +       fo->splice_write = (void *) return_EIO;
104533 +       fo->splice_read = (void *) return_EIO;
104534 +#endif
104535 +    }
104536 +
104537 +    for (pio = pfs->pfs_pio; pio; pio = pio->pio_next) {
104538 +       struct inode_operations *io = &pio->pio_op;
104539 +       io->create = (void *) return_EIO;
104540 +       io->lookup = (void *) return_EIO;
104541 +       io->link = (void *) return_EIO;
104542 +       io->unlink = (void *) return_EIO;
104543 +       io->symlink = (void *) return_EIO;
104544 +       io->mkdir = (void *) return_EIO;
104545 +       io->rmdir = (void *) return_EIO;
104546 +       io->mknod = (void *) return_EIO;
104547 +       io->rename = (void *) return_EIO;
104548 +       io->readlink = (void *) return_EIO;
104549 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 16)
104550 +       io->follow_link = 0;
104551 +#else
104552 +       io->follow_link = bad_follow_link;
104553 +#endif
104554 +       io->truncate = (void *) return_EIO;
104555 +       io->permission = (void *) return_EIO;
104556 +       io->setattr = (void *) return_EIO;
104557 +       io->getattr = (void *) return_EIO;
104558 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 20)
104559 +       io->setxattr = (void *) return_EIO;
104560 +       io->getxattr = (void *) return_EIO;
104561 +       io->listxattr = (void *) return_EIO;
104562 +       io->removexattr = (void *) return_EIO;
104563 +#endif
104564 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104565 +       io->put_link = (void *) return_EIO;
104566 +#else
104567 +       io->revalidate = (void *) return_EIO;
104568 +#endif
104569 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
104570 +       io->truncate_range = (void *) return_EIO;
104571 +#endif
104572 +    }
104573 +    
104574 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
104575 +    /* file operations cleared out superblock by superblock, below */
104576 +    (void) filp;
104577 +#else
104578 +    /* clear out file operations */
104579 +    /* inuse_filps is protected by the single kernel lock */
104580 +    /* XXX locking? */
104581 +    for (filp = inuse_filps; filp; filp = filp->f_next) {
104582 +       struct dentry *dentry = filp->f_dentry;
104583 +       if (!dentry)
104584 +           continue;
104585 +       inode = dentry->d_inode;
104586 +       if (!inode || !inode->i_sb || inode->i_sb->s_type != &pfs->fs)
104587 +           continue;
104588 +       filp->f_op = &pfs->pfs_pfo->pfo_op;
104589 +    }
104590 +#endif
104591 +    
104592 +    spin_lock(&pfs->lock);
104593 +
104594 +    /* clear out superblock operations */
104595 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 10)
104596 +    DEBUG("clearing superblocks");
104597 +    spin_lock(&sb_lock);
104598 +    for (p = pfs->fs.fs_supers.next; p != &pfs->fs.fs_supers; p = p->next) {
104599 +       sb = list_entry(p, struct super_block, s_instances);
104600 +       proclikefs_kill_super(sb, &pfs->pfs_pfo->pfo_op);
104601 +    }
104602 +    spin_unlock(&sb_lock);
104603 +#else
104604 +    for (sb = sb_entry(super_blocks.next); sb != sb_entry(&super_blocks); 
104605 +        sb = sb_entry(sb->s_list.next)) {
104606 +       if (sb->s_type != &pfs->fs)
104607 +           continue;
104608 +       proclikefs_kill_super(sb, &pfs->pfs_pfo->pfo_op);
104609 +    }
104610 +    (void) p;
104611 +#endif
104612 +
104613 +    pfs->live = 0;
104614 +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
104615 +    pfs->fs.read_super = proclikefs_null_read_super;
104616 +#endif
104617 +    MOD_DEC_USE_COUNT;
104618 +
104619 +    spin_unlock(&pfs->lock);
104620 +    spin_unlock(&fslist_lock);
104621 +}
104622 +
104623 +void
104624 +proclikefs_read_super(struct super_block *sb)
104625 +{
104626 +    struct proclikefs_file_system *pfs = (struct proclikefs_file_system *) (sb->s_type);
104627 +    atomic_inc(&pfs->nsuper);
104628 +    DEBUG("pfs[%p]: read_super for %s", pfs, pfs->fs.name);
104629 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104630 +    if (!try_module_get(THIS_MODULE))
104631 +       printk("<1>proclikefs: error using module\n");
104632 +#else 
104633 +    MOD_INC_USE_COUNT;
104634 +#endif
104635 +}
104636 +
104637 +void
104638 +proclikefs_put_super(struct super_block *sb)
104639 +{
104640 +    struct proclikefs_file_system *pfs = (struct proclikefs_file_system *) (sb->s_type);
104641 +    atomic_dec(&pfs->nsuper);
104642 +    DEBUG("pfs[%p]: put_super for %s", pfs, pfs->fs.name);
104643 +    MOD_DEC_USE_COUNT;
104644 +    spin_lock(&fslist_lock);
104645 +    if (!pfs->live && atomic_read(&pfs->nsuper) == 0) {
104646 +       struct proclikefs_file_operations *pfo;
104647 +       struct proclikefs_inode_operations *pio;
104648 +       
104649 +       list_del(&pfs->fs_list);
104650 +       unregister_filesystem(&pfs->fs);
104651 +       while ((pfo = pfs->pfs_pfo)) {
104652 +           pfs->pfs_pfo = pfo->pfo_next;
104653 +           kfree(pfo);
104654 +       }
104655 +       while ((pio = pfs->pfs_pio)) {
104656 +           pfs->pfs_pio = pio->pio_next;
104657 +           kfree(pio);
104658 +       }
104659 +       kfree(pfs);
104660 +    }
104661 +    spin_unlock(&fslist_lock);
104662 +}
104663 +
104664 +struct file_operations *
104665 +proclikefs_new_file_operations(struct proclikefs_file_system *pfs)
104666 +{
104667 +    struct proclikefs_file_operations *pfo = kmalloc(sizeof(struct proclikefs_file_operations), GFP_ATOMIC);
104668 +    
104669 +    if (pfo) {
104670 +       spin_lock(&fslist_lock);
104671 +       pfo->pfo_next = pfs->pfs_pfo;
104672 +       pfs->pfs_pfo = pfo;
104673 +       spin_unlock(&fslist_lock);
104674 +       memset(&pfo->pfo_op, 0, sizeof(struct file_operations));
104675 +    }
104676 +    return &pfo->pfo_op;
104677 +}
104678 +
104679 +struct inode_operations *
104680 +proclikefs_new_inode_operations(struct proclikefs_file_system *pfs)
104681 +{
104682 +    struct proclikefs_inode_operations *pio = kmalloc(sizeof(struct proclikefs_inode_operations), GFP_ATOMIC);
104683 +    
104684 +    if (pio) {
104685 +       spin_lock(&fslist_lock);
104686 +       pio->pio_next = pfs->pfs_pio;
104687 +       pfs->pfs_pio = pio;
104688 +       spin_unlock(&fslist_lock);
104689 +       memset(&pio->pio_op, 0, sizeof(struct inode_operations));
104690 +    }
104691 +    return &pio->pio_op;
104692 +}
104693 +
104694 +void
104695 +proclikefs_read_inode(struct inode *inode)
104696 +{
104697 +}
104698 +
104699 +int
104700 +init_module(void)
104701 +{
104702 +    proclikefs_null_super_operations.read_inode = proclikefs_read_inode;
104703 +    proclikefs_null_super_operations.put_super = proclikefs_put_super;
104704 +    proclikefs_null_root_inode_operations.lookup = proclikefs_null_root_lookup;
104705 +    spin_lock_init(&fslist_lock);
104706 +    return 0;
104707 +}
104708 +
104709 +void
104710 +cleanup_module(void)
104711 +{
104712 +    struct list_head *next;
104713 +    spin_lock(&fslist_lock);
104714 +    for (next = fs_list.next; next != &fs_list; ) {
104715 +       struct proclikefs_file_system *pfs = list_entry(next, struct proclikefs_file_system, fs_list);
104716 +       next = next->next;
104717 +       if (pfs->live || atomic_read(&pfs->nsuper) != 0)
104718 +           printk("<1>proclikefs: unregistering active FS %s, prepare to die\n", pfs->name);       
104719 +       unregister_filesystem(&pfs->fs);
104720 +       kfree(pfs);
104721 +    }
104722 +    spin_unlock(&fslist_lock);
104723 +}
104724 +
104725 +#ifdef MODULE_AUTHOR
104726 +MODULE_AUTHOR("Eddie Kohler <kohler@cs.ucla.edu>");
104727 +#endif
104728 +#ifdef MODULE_DESCRIPTION
104729 +MODULE_DESCRIPTION("Proclikefs: allow module unload of mounted filesystems");
104730 +#endif
104731 +#ifdef MODULE_LICENSE
104732 +MODULE_LICENSE("GPL");
104733 +#endif
104734 diff -Nurb click-1.6.0/linuxmodule/read-pmc.c click-1.6.0-27/linuxmodule/read-pmc.c
104735 --- click-1.6.0/linuxmodule/read-pmc.c  2007-07-16 19:47:50.000000000 -0400
104736 +++ click-1.6.0-27/linuxmodule/read-pmc.c       2009-02-11 16:51:50.000000000 -0500
104737 @@ -21,6 +21,7 @@
104738  #include <asm/system.h>
104739  
104740  
104741 +
104742  #define P6MSR_CTRSEL0 0x186   /* MSR for programming CTR0 on P6 */
104743  #define P6MSR_CTRSEL1 0x187   /* MSR for programming CTR0 on P6 */
104744  #define P6MSR_CTR0 0xc1       /* Ctr0 on P6 */
104745 diff -Nurb click-1.6.0/linuxmodule/read-pmc.c.orig click-1.6.0-27/linuxmodule/read-pmc.c.orig
104746 --- click-1.6.0/linuxmodule/read-pmc.c.orig     1969-12-31 19:00:00.000000000 -0500
104747 +++ click-1.6.0-27/linuxmodule/read-pmc.c.orig  2007-07-16 19:47:50.000000000 -0400
104748 @@ -0,0 +1,62 @@
104749 +/*
104750 + * Read and clear the PPro performance counters.
104751 + * Can't be compiled in C++?
104752 + */
104753 +
104754 +  /*
104755 +   * Event number.
104756 +   * 0x48 Number of cycles while a DCU mis is outstanding.
104757 +   * 0x80 instruction fetches.
104758 +   * 0x81 instruction fetch misses.
104759 +   * 0x85 ITLB misses.
104760 +   * 0x86 cycles of instruction fetch stall.
104761 +   * 0xC8 interrupts.
104762 +   * 0x13 floating point divides (only counter 1).
104763 +   * 0x79 cycles in which the cpu is NOT halted.
104764 +   */
104765 +
104766 +#include <click/config.h>
104767 +#include <linux/types.h>
104768 +#include <linux/kernel.h>
104769 +#include <asm/system.h>
104770 +
104771 +
104772 +#define P6MSR_CTRSEL0 0x186   /* MSR for programming CTR0 on P6 */
104773 +#define P6MSR_CTRSEL1 0x187   /* MSR for programming CTR0 on P6 */
104774 +#define P6MSR_CTR0 0xc1       /* Ctr0 on P6 */
104775 +#define P6MSR_CTR1 0xc2       /* Ctr1 on P6 */
104776 +
104777 +typedef unsigned long long u_quad_t;
104778 +typedef u_quad_t pctrval;
104779 +
104780 +#define rdmsr(msr)                                             \
104781 +({                                                             \
104782 +  pctrval v;                                                   \
104783 +  __asm __volatile (".byte 0xf, 0x32" : "=A" (v) : "c" (msr)); \
104784 +  v;                                                           \
104785 +})
104786 +
104787 +#define wrmsr(msr, v) \
104788 +     __asm __volatile (".byte 0xf, 0x30" :: "A" ((u_quad_t) (v)), "c" (msr));
104789 +
104790 +/* Read the performance counters (Pentium Pro only) */
104791 +#define rdpmc(ctr)                             \
104792 +({                                             \
104793 +  pctrval v;                                   \
104794 +  __asm __volatile (".byte 0xf, 0x33\n"                \
104795 +                   "\tandl $0xff, %%edx"       \
104796 +                   : "=A" (v) : "c" (ctr));    \
104797 +  v;                                           \
104798 +})
104799 +
104800 +void
104801 +click_cycle_counter(int which, unsigned int *fnp, unsigned long long *valp)
104802 +{
104803 +#ifdef __i386__
104804 +  *fnp = rdmsr(P6MSR_CTRSEL0 + which);
104805 +  *valp = rdpmc(which);
104806 +  wrmsr(P6MSR_CTR0+which, 0);
104807 +#else
104808 +  printk("<1>click_cycle_counter: not i386\n");
104809 +#endif
104810 +}
104811 diff -Nurb click-1.6.0/linuxmodule/sched.cc click-1.6.0-27/linuxmodule/sched.cc
104812 --- click-1.6.0/linuxmodule/sched.cc    2007-08-28 19:01:58.000000000 -0400
104813 +++ click-1.6.0-27/linuxmodule/sched.cc 2009-01-26 16:55:57.000000000 -0500
104814 @@ -228,7 +228,7 @@
104815    click_thread_priority = priority;
104816    if (click_thread_pids)
104817      for (int i = 0; i < click_thread_pids->size(); i++) {
104818 -      struct task_struct *task = find_task_by_pid((*click_thread_pids)[i]);
104819 +      struct task_struct *task = find_task_by_vpid((*click_thread_pids)[i]);
104820        if (task)
104821         TASK_PRIO(task) = priority;
104822      }
104823 @@ -429,7 +429,7 @@
104824      SOFT_SPIN_LOCK(&click_thread_lock);
104825      for (int i = 0; i < click_thread_pids->size(); i++) {
104826        printk("<1>click:   router thread pid %d\n", (*click_thread_pids)[i]);
104827 -      struct task_struct *ct = find_task_by_pid((*click_thread_pids)[i]);
104828 +      struct task_struct *ct = find_task_by_vpid((*click_thread_pids)[i]);
104829        if (ct)
104830           printk("<1>click:   state %d, EIP %08x\n", (int) ct->state, KSTK_EIP(ct));
104831      }
104832 diff -Nurb click-1.6.0/linuxmodule/sched.cc.orig click-1.6.0-27/linuxmodule/sched.cc.orig
104833 --- click-1.6.0/linuxmodule/sched.cc.orig       1969-12-31 19:00:00.000000000 -0500
104834 +++ click-1.6.0-27/linuxmodule/sched.cc.orig    2007-08-28 19:01:58.000000000 -0400
104835 @@ -0,0 +1,446 @@
104836 +// -*- c-basic-offset: 4 -*-
104837 +/*
104838 + * sched.cc -- kernel scheduler thread for click
104839 + * Benjie Chen, Eddie Kohler
104840 + *
104841 + * Copyright (c) 1999-2000 Massachusetts Institute of Technology
104842 + * Copyright (c) 2002-2003 International Computer Science Institute
104843 + * Copyright (c) 2007 Regents of the University of California
104844 + *
104845 + * Permission is hereby granted, free of charge, to any person obtaining a
104846 + * copy of this software and associated documentation files (the "Software"),
104847 + * to deal in the Software without restriction, subject to the conditions
104848 + * listed in the Click LICENSE file. These conditions include: you must
104849 + * preserve this copyright notice, and you cannot mention the copyright
104850 + * holders in advertising related to the Software without their permission.
104851 + * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
104852 + * notice is a summary of the Click LICENSE file; the license in that file is
104853 + * legally binding.
104854 + */
104855 +
104856 +#define CLICK_SCHED_DEBUG
104857 +#include <click/config.h>
104858 +#include "modulepriv.hh"
104859 +
104860 +#include <click/routerthread.hh>
104861 +#include <click/glue.hh>
104862 +#include <click/router.hh>
104863 +#include <click/straccum.hh>
104864 +#include <click/master.hh>
104865 +#include <click/confparse.hh>
104866 +
104867 +#include <click/cxxprotect.h>
104868 +CLICK_CXX_PROTECT
104869 +#include <linux/sched.h>
104870 +#include <linux/timer.h>
104871 +#include <linux/interrupt.h>
104872 +#include <linux/netdevice.h>
104873 +#include <linux/etherdevice.h>
104874 +#include <asm/bitops.h>
104875 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104876 +# include <linux/cpumask.h>
104877 +#endif
104878 +CLICK_CXX_UNPROTECT
104879 +#include <click/cxxunprotect.h>
104880 +
104881 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104882 +# define MIN_PRIO      MAX_RT_PRIO
104883 +/* MAX_PRIO already defined */
104884 +# define PRIO2NICE(p)  ((p) - MIN_PRIO - 20)
104885 +# define NICE2PRIO(n)  (MIN_PRIO + (n) + 20)
104886 +# define DEF_PRIO      NICE2PRIO(0)
104887 +# define TASK_PRIO(t)  ((t)->static_prio)
104888 +#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 0)
104889 +# define MIN_PRIO      (-20)
104890 +# define MAX_PRIO      20
104891 +# define PRIO2NICE(p)  (p)
104892 +# define NICE2PRIO(n)  (n)
104893 +# define DEF_PRIO      DEF_NICE
104894 +# define TASK_PRIO(t)  ((t)->nice)
104895 +#else
104896 +# define MIN_PRIO      1
104897 +# define MAX_PRIO      (2 * DEF_PRIORITY)
104898 +# define PRIO2NICE(p)  (DEF_PRIORITY - (p))
104899 +# define NICE2PRIO(n)  (DEF_PRIORITY - (n))
104900 +# define DEF_PRIO      DEF_PRIORITY
104901 +# define TASK_PRIO(t)  ((t)->priority)
104902 +#endif
104903 +
104904 +#define SOFT_SPIN_LOCK(l)      do { /*MDEBUG("soft_lock %s", #l);*/ soft_spin_lock((l)); } while (0)
104905 +#define SPIN_UNLOCK(l)         do { /*MDEBUG("unlock %s", #l);*/ spin_unlock((l)); } while (0)
104906 +
104907 +static spinlock_t click_thread_lock;
104908 +static int click_thread_priority = DEF_PRIO;
104909 +static Vector<int> *click_thread_pids;
104910 +static Router *placeholder_router;
104911 +
104912 +#ifdef HAVE_ADAPTIVE_SCHEDULER
104913 +static unsigned min_click_frac = 5, max_click_frac = 800;
104914 +#endif
104915 +
104916 +static void
104917 +soft_spin_lock(spinlock_t *l)
104918 +{
104919 +    while (!spin_trylock(l))
104920 +       schedule();
104921 +}
104922 +
104923 +static int
104924 +click_sched(void *thunk)
104925 +{
104926 +#ifdef LINUX_2_2
104927 +  // In Linux 2.2, daemonize() doesn't do exit_files.
104928 +  exit_files(current);
104929 +  current->files = init_task.files;
104930 +  if (current->files)
104931 +    atomic_inc(&current->files->count);
104932 +#endif
104933 +
104934 +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104935 +  daemonize("kclick");
104936 +#else
104937 +  daemonize();
104938 +  strcpy(current->comm, "kclick");
104939 +#endif
104940 +  
104941 +  TASK_PRIO(current) = click_thread_priority;
104942 +
104943 +  RouterThread *rt = (RouterThread *)thunk;
104944 +#ifdef HAVE_ADAPTIVE_SCHEDULER
104945 +  rt->set_cpu_share(min_click_frac, max_click_frac);
104946 +#endif
104947 +
104948 +#if CONFIG_SMP
104949 +  int mycpu = click_parm(CLICKPARM_CPU);
104950 +  if (mycpu >= 0) {
104951 +      mycpu += rt->thread_id();
104952 +# if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
104953 +      if (mycpu < num_possible_cpus() && cpu_online(mycpu))
104954 +         set_cpus_allowed(current, cpumask_of_cpu(mycpu));
104955 +      else
104956 +         printk("<1>click: warning: cpu %d for thread %d offline\n", mycpu, rt->thread_id());
104957 +# elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 4, 21)
104958 +      if (mycpu < smp_num_cpus && (cpu_online_map & (1UL << cpu_logical_map(mycpu))))
104959 +         set_cpus_allowed(current, 1UL << cpu_logical_map(mycpu));
104960 +      else
104961 +         printk("<1>click: warning: cpu %d for thread %d offline\n", mycpu, rt->thread_id());
104962 +# endif
104963 +  }
104964 +#endif
104965 +  
104966 +  printk("<1>click: starting router thread pid %d (%p)\n", current->pid, rt);
104967 +
104968 +  // add pid to thread list
104969 +  SOFT_SPIN_LOCK(&click_thread_lock);
104970 +  if (click_thread_pids)
104971 +    click_thread_pids->push_back(current->pid);
104972 +  SPIN_UNLOCK(&click_thread_lock);
104973 +
104974 +  // driver loop; does not return for a while
104975 +  rt->driver();
104976 +
104977 +  // release master (preserved in click_init_sched)
104978 +  click_master->unuse();
104979 +
104980 +  // remove pid from thread list
104981 +  SOFT_SPIN_LOCK(&click_thread_lock);
104982 +  if (click_thread_pids)
104983 +    for (int i = 0; i < click_thread_pids->size(); i++) {
104984 +      if ((*click_thread_pids)[i] == current->pid) {
104985 +       (*click_thread_pids)[i] = click_thread_pids->back();
104986 +       click_thread_pids->pop_back();
104987 +       break;
104988 +      }
104989 +    }
104990 +  printk("<1>click: stopping router thread pid %d\n", current->pid);
104991 +  SPIN_UNLOCK(&click_thread_lock);
104992 +  
104993 +  return 0;
104994 +}
104995 +
104996 +static int
104997 +kill_router_threads()
104998 +{
104999 +    delete placeholder_router;
105000 +    if (click_router)
105001 +       click_router->set_runcount(Router::STOP_RUNCOUNT);
105002 +  
105003 +    // wait up to 5 seconds for routers to exit
105004 +    unsigned long out_jiffies = jiffies + 5 * HZ;
105005 +    int num_threads;
105006 +    do {
105007 +       MDEBUG("click_sched: waiting for threads to die");
105008 +       SOFT_SPIN_LOCK(&click_thread_lock);
105009 +       num_threads = click_thread_pids->size();
105010 +       SPIN_UNLOCK(&click_thread_lock);
105011 +       if (num_threads > 0)
105012 +           schedule();
105013 +    } while (num_threads > 0 && jiffies < out_jiffies);
105014 +
105015 +  if (num_threads > 0) {
105016 +    printk("<1>click: current router threads refuse to die!\n");
105017 +    return -1;
105018 +  } else
105019 +    return 0;
105020 +}
105021 +
105022 +
105023 +/******************************* Handlers ************************************/
105024 +
105025 +static String
105026 +read_threads(Element *, void *)
105027 +{
105028 +  StringAccum sa;
105029 +  MDEBUG("reading threads");
105030 +  SOFT_SPIN_LOCK(&click_thread_lock);
105031 +  if (click_thread_pids)
105032 +    for (int i = 0; i < click_thread_pids->size(); i++)
105033 +      sa << (*click_thread_pids)[i] << '\n';
105034 +  SPIN_UNLOCK(&click_thread_lock);
105035 +  return sa.take_string();
105036 +}
105037 +
105038 +static String
105039 +read_priority(Element *, void *)
105040 +{
105041 +  return String(PRIO2NICE(click_thread_priority)) + "\n";
105042 +}
105043 +
105044 +static int
105045 +write_priority(const String &conf, Element *, void *, ErrorHandler *errh)
105046 +{
105047 +  int priority;
105048 +  if (!cp_integer(cp_uncomment(conf), &priority))
105049 +    return errh->error("priority must be an integer");
105050 +
105051 +  priority = NICE2PRIO(priority);
105052 +  if (priority < MIN_PRIO) {
105053 +    priority = MIN_PRIO;
105054 +    errh->warning("priority pinned at %d", PRIO2NICE(priority));
105055 +  } else if (priority > MAX_PRIO) {
105056 +    priority = MAX_PRIO;
105057 +    errh->warning("priority pinned at %d", PRIO2NICE(priority));
105058 +  }
105059 +
105060 +  // change current thread priorities
105061 +  MDEBUG("writing priority");
105062 +  SOFT_SPIN_LOCK(&click_thread_lock);
105063 +  click_thread_priority = priority;
105064 +  if (click_thread_pids)
105065 +    for (int i = 0; i < click_thread_pids->size(); i++) {
105066 +      struct task_struct *task = find_task_by_pid((*click_thread_pids)[i]);
105067 +      if (task)
105068 +       TASK_PRIO(task) = priority;
105069 +    }
105070 +  SPIN_UNLOCK(&click_thread_lock);
105071 +  
105072 +  return 0;
105073 +}
105074 +
105075 +
105076 +#if CLICK_DEBUG_MASTER
105077 +static String
105078 +read_master_info(Element *, void *)
105079 +{
105080 +  return click_master->info();
105081 +}
105082 +#endif
105083 +
105084 +
105085 +#ifdef HAVE_ADAPTIVE_SCHEDULER
105086 +
105087 +static String
105088 +read_cpu_share(Element *, void *thunk)
105089 +{
105090 +  int val = (thunk ? max_click_frac : min_click_frac);
105091 +  return cp_unparse_real10(val, 3) + "\n";
105092 +}
105093 +
105094 +static String
105095 +read_cur_cpu_share(Element *, void *)
105096 +{
105097 +  if (click_router) {
105098 +    String s;
105099 +    for (int i = 0; i < click_master->nthreads(); i++)
105100 +      s += cp_unparse_real10(click_master->thread(i)->cur_cpu_share(), 3) + "\n";
105101 +    return s;
105102 +  } else
105103 +    return "0\n";
105104 +}
105105 +
105106 +static int
105107 +write_cpu_share(const String &conf, Element *, void *thunk, ErrorHandler *errh)
105108 +{
105109 +  const char *name = (thunk ? "max_" : "min_");
105110 +  
105111 +  int32_t frac;
105112 +  if (!cp_real10(cp_uncomment(conf), 3, &frac) || frac < 1 || frac > 999)
105113 +    return errh->error("%scpu_share must be a real number between 0.001 and 0.999", name);
105114 +
105115 +  (thunk ? max_click_frac : min_click_frac) = frac;
105116 +
105117 +  // change current thread priorities
105118 +  for (int i = 0; i < click_master->nthreads(); i++)
105119 +    click_master->thread(i)->set_cpu_share(min_click_frac, max_click_frac);
105120 +  
105121 +  return 0;
105122 +}
105123 +
105124 +#endif
105125 +
105126 +enum { H_TASKS_PER_ITER, H_ITERS_PER_TIMERS, H_ITERS_PER_OS };
105127 +
105128 +
105129 +static String
105130 +read_sched_param(Element *, void *thunk) 
105131 +{
105132 +    String s;
105133 +    switch (reinterpret_cast<uintptr_t>(thunk)) {
105134 +       
105135 +      case H_TASKS_PER_ITER:
105136 +       for (int i = 0; i < click_master->nthreads(); i++)
105137 +           s += String(click_master->thread(i)->_tasks_per_iter) + "\n";
105138 +       break;
105139 +
105140 +      case H_ITERS_PER_TIMERS:
105141 +       for (int i = 0; i < click_master->nthreads(); i++)
105142 +           s += String(click_master->thread(i)->_iters_per_timers) + "\n";
105143 +       break;
105144 +         
105145 +      case H_ITERS_PER_OS:
105146 +       for (int i = 0; i < click_master->nthreads(); i++)
105147 +           s += String(click_master->thread(i)->_iters_per_os) + "\n";
105148 +       break;
105149 +       
105150 +    }
105151 +    return s;
105152 +}
105153 +
105154 +static int
105155 +write_sched_param(const String &conf, Element *e, void *thunk, ErrorHandler *errh) 
105156 +{
105157 +    switch (reinterpret_cast<uintptr_t>(thunk)) {
105158 +
105159 +      case H_TASKS_PER_ITER: {
105160 +         unsigned x;
105161 +         if (!cp_integer(conf, &x)) 
105162 +             return errh->error("tasks_per_iter must be unsigned\n");
105163 +         // change current thread priorities
105164 +         for (int i = 0; i < click_master->nthreads(); i++)
105165 +             click_master->thread(i)->_tasks_per_iter = x;
105166 +         break;
105167 +      }
105168 +
105169 +      case H_ITERS_PER_TIMERS: {
105170 +         unsigned x;
105171 +         if (!cp_integer(conf, &x)) 
105172 +             return errh->error("tasks_per_iter_timers must be unsigned\n");
105173 +         // change current thread priorities
105174 +         for (int i = 0; i < click_master->nthreads(); i++)
105175 +             click_master->thread(i)->_iters_per_timers = x;
105176 +         break;
105177 +      }
105178 +
105179 +      case H_ITERS_PER_OS: {
105180 +         unsigned x;
105181 +         if (!cp_integer(conf, &x)) 
105182 +             return errh->error("tasks_per_iter_os must be unsigned\n");
105183 +         // change current thread priorities
105184 +         for (int i = 0; i < click_master->nthreads(); i++)
105185 +             click_master->thread(i)->_iters_per_os = x;
105186 +         break;
105187 +      }
105188 +       
105189 +    }
105190 +    return 0;
105191 +}
105192 +
105193 +/********************** Initialization and cleanup ***************************/
105194 +
105195 +void
105196 +click_init_sched(ErrorHandler *errh)
105197 +{
105198 +  spin_lock_init(&click_thread_lock);
105199 +  click_thread_pids = new Vector<int>;
105200 +  bool greedy = click_parm(CLICKPARM_GREEDY);
105201 +
105202 +#if __MTCLICK__
105203 +  click_master = new Master(click_parm(CLICKPARM_THREADS));
105204 +  if (num_possible_cpus() != NUM_CLICK_CPUS)
105205 +    click_chatter("warning: click compiled for %d cpus, machine allows %d", 
105206 +                 NUM_CLICK_CPUS, num_possible_cpus());
105207 +#else
105208 +  click_master = new Master(1);
105209 +#endif
105210 +  click_master->use();
105211 +
105212 +  placeholder_router = new Router("", click_master);
105213 +  placeholder_router->initialize(errh);
105214 +  placeholder_router->activate(errh);
105215 +
105216 +  for (int i = 0; i < click_master->nthreads(); i++) {
105217 +    click_master->use();
105218 +    RouterThread *thread = click_master->thread(i);
105219 +    thread->set_greedy(greedy);
105220 +    pid_t pid = kernel_thread 
105221 +      (click_sched, thread, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
105222 +    if (pid < 0) {
105223 +      errh->error("cannot create kernel thread for Click thread %i!", i); 
105224 +      click_master->unuse();
105225 +    }
105226 +  }
105227 +
105228 +  Router::add_read_handler(0, "threads", read_threads, 0);
105229 +  Router::add_read_handler(0, "priority", read_priority, 0);
105230 +  Router::add_write_handler(0, "priority", write_priority, 0);
105231 +#ifdef HAVE_ADAPTIVE_SCHEDULER
105232 +  static_assert(Task::MAX_UTILIZATION == 1000);
105233 +  Router::add_read_handler(0, "min_cpu_share", read_cpu_share, 0);
105234 +  Router::add_write_handler(0, "min_cpu_share", write_cpu_share, 0);
105235 +  Router::add_read_handler(0, "max_cpu_share", read_cpu_share, (void *)1);
105236 +  Router::add_write_handler(0, "max_cpu_share", write_cpu_share, (void *)1);
105237 +  Router::add_read_handler(0, "cpu_share", read_cur_cpu_share, 0);
105238 +#else 
105239 +  Router::add_read_handler(0, "tasks_per_iter", read_sched_param, 
105240 +                          (void *)H_TASKS_PER_ITER);
105241 +  Router::add_read_handler(0, "iters_per_timers", read_sched_param, 
105242 +                          (void *)H_ITERS_PER_TIMERS);
105243 +  Router::add_read_handler(0, "iters_per_os", read_sched_param, 
105244 +                          (void *)H_ITERS_PER_OS);
105245 +
105246 +  Router::add_write_handler(0, "tasks_per_iter", write_sched_param, 
105247 +                           (void *)H_TASKS_PER_ITER);
105248 +  Router::add_write_handler(0, "iters_per_timers", write_sched_param, 
105249 +                           (void *)H_ITERS_PER_TIMERS);
105250 +  Router::add_write_handler(0, "iters_per_os", write_sched_param, 
105251 +                           (void *)H_ITERS_PER_OS);
105252 +
105253 +#endif
105254 +#if CLICK_DEBUG_MASTER
105255 +  Router::add_read_handler(0, "master_info", read_master_info, 0);
105256 +#endif
105257 +}
105258 +
105259 +int
105260 +click_cleanup_sched()
105261 +{
105262 +  if (kill_router_threads() < 0) {
105263 +    printk("<1>click: Following threads still active, expect a crash:\n");
105264 +    SOFT_SPIN_LOCK(&click_thread_lock);
105265 +    for (int i = 0; i < click_thread_pids->size(); i++) {
105266 +      printk("<1>click:   router thread pid %d\n", (*click_thread_pids)[i]);
105267 +      struct task_struct *ct = find_task_by_pid((*click_thread_pids)[i]);
105268 +      if (ct)
105269 +         printk("<1>click:   state %d, EIP %08x\n", (int) ct->state, KSTK_EIP(ct));
105270 +    }
105271 +    SPIN_UNLOCK(&click_thread_lock);
105272 +    click_master->unuse();
105273 +    return -1;
105274 +  } else {
105275 +    delete click_thread_pids;
105276 +    click_thread_pids = 0;
105277 +    click_master->unuse();
105278 +    click_master = 0;
105279 +    return 0;
105280 +  }
105281 +}
105282 diff -Nurb click-1.6.0/linuxmodule/string.i click-1.6.0-27/linuxmodule/string.i
105283 --- click-1.6.0/linuxmodule/string.i    1969-12-31 19:00:00.000000000 -0500
105284 +++ click-1.6.0-27/linuxmodule/string.i 2009-02-11 15:17:46.000000000 -0500
105285 @@ -0,0 +1,24292 @@
105286 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
105287 +# 1 "<built-in>"
105288 +# 1 "<command line>"
105289 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
105290 +# 20 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
105291 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h" 1
105292 +# 150 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h"
105293 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 1
105294 +# 90 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h"
105295 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/autoconf.h" 1
105296 +# 91 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2
105297 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 1
105298 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105299 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 1
105300 +
105301 +
105302 +
105303 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stddef.h" 1
105304 +
105305 +
105306 +
105307 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h" 1
105308 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h"
105309 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc4.h" 1
105310 +
105311 +
105312 +
105313 +
105314 +
105315 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc.h" 1
105316 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler-gcc4.h" 2
105317 +# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/compiler.h" 2
105318 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stddef.h" 2
105319 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 2
105320 +# 36 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h"
105321 +typedef struct {
105322 + unsigned long fds_bits [(1024/(8 * sizeof(unsigned long)))];
105323 +} __kernel_fd_set;
105324 +
105325 +
105326 +typedef void (*__kernel_sighandler_t)(int);
105327 +
105328 +
105329 +typedef int __kernel_key_t;
105330 +typedef int __kernel_mqd_t;
105331 +
105332 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types.h" 1
105333 +
105334 +
105335 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types_32.h" 1
105336 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types_32.h"
105337 +typedef unsigned long __kernel_ino_t;
105338 +typedef unsigned short __kernel_mode_t;
105339 +typedef unsigned short __kernel_nlink_t;
105340 +typedef long __kernel_off_t;
105341 +typedef int __kernel_pid_t;
105342 +typedef unsigned short __kernel_ipc_pid_t;
105343 +typedef unsigned short __kernel_uid_t;
105344 +typedef unsigned short __kernel_gid_t;
105345 +typedef unsigned int __kernel_size_t;
105346 +typedef int __kernel_ssize_t;
105347 +typedef int __kernel_ptrdiff_t;
105348 +typedef long __kernel_time_t;
105349 +typedef long __kernel_suseconds_t;
105350 +typedef long __kernel_clock_t;
105351 +typedef int __kernel_timer_t;
105352 +typedef int __kernel_clockid_t;
105353 +typedef int __kernel_daddr_t;
105354 +typedef char * __kernel_caddr_t;
105355 +typedef unsigned short __kernel_uid16_t;
105356 +typedef unsigned short __kernel_gid16_t;
105357 +typedef unsigned int __kernel_uid32_t;
105358 +typedef unsigned int __kernel_gid32_t;
105359 +
105360 +typedef unsigned short __kernel_old_uid_t;
105361 +typedef unsigned short __kernel_old_gid_t;
105362 +typedef unsigned short __kernel_old_dev_t;
105363 +
105364 +
105365 +typedef long long __kernel_loff_t;
105366 +
105367 +
105368 +typedef struct {
105369 + int val[2];
105370 +} __kernel_fsid_t;
105371 +# 4 "/d/kernels/linux-2.6.27.10-clickport/include/asm/posix_types.h" 2
105372 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/posix_types.h" 2
105373 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 2
105374 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h" 1
105375 +
105376 +
105377 +
105378 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h" 1
105379 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h"
105380 +typedef __signed__ char __s8;
105381 +typedef unsigned char __u8;
105382 +
105383 +typedef __signed__ short __s16;
105384 +typedef unsigned short __u16;
105385 +
105386 +typedef __signed__ int __s32;
105387 +typedef unsigned int __u32;
105388 +
105389 +
105390 +__extension__ typedef __signed__ long long __s64;
105391 +__extension__ typedef unsigned long long __u64;
105392 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/int-ll64.h"
105393 +typedef signed char s8;
105394 +typedef unsigned char u8;
105395 +
105396 +typedef signed short s16;
105397 +typedef unsigned short u16;
105398 +
105399 +typedef signed int s32;
105400 +typedef unsigned int u32;
105401 +
105402 +typedef signed long long s64;
105403 +typedef unsigned long long u64;
105404 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h" 2
105405 +
105406 +
105407 +
105408 +typedef unsigned short umode_t;
105409 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/types.h"
105410 +typedef u64 dma64_addr_t;
105411 +
105412 +
105413 +
105414 +
105415 +typedef u32 dma_addr_t;
105416 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h" 2
105417 +
105418 +
105419 +
105420 +typedef __u32 __kernel_dev_t;
105421 +
105422 +typedef __kernel_fd_set fd_set;
105423 +typedef __kernel_dev_t dev_t;
105424 +typedef __kernel_ino_t ino_t;
105425 +typedef __kernel_mode_t mode_t;
105426 +typedef __kernel_nlink_t nlink_t;
105427 +typedef __kernel_off_t off_t;
105428 +typedef __kernel_pid_t pid_t;
105429 +typedef __kernel_daddr_t daddr_t;
105430 +typedef __kernel_key_t key_t;
105431 +typedef __kernel_suseconds_t suseconds_t;
105432 +typedef __kernel_timer_t timer_t;
105433 +typedef __kernel_clockid_t clockid_t;
105434 +typedef __kernel_mqd_t mqd_t;
105435 +
105436 +
105437 +
105438 +
105439 +
105440 +
105441 +typedef __kernel_uid32_t uid_t;
105442 +typedef __kernel_gid32_t gid_t;
105443 +typedef __kernel_uid16_t uid16_t;
105444 +typedef __kernel_gid16_t gid16_t;
105445 +typedef unsigned int xid_t;
105446 +typedef unsigned int nid_t;
105447 +typedef unsigned int tag_t;
105448 +
105449 +typedef unsigned long uintptr_t;
105450 +
105451 +
105452 +
105453 +typedef __kernel_old_uid_t old_uid_t;
105454 +typedef __kernel_old_gid_t old_gid_t;
105455 +# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105456 +typedef __kernel_loff_t loff_t;
105457 +# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105458 +typedef __kernel_size_t size_t;
105459 +
105460 +
105461 +
105462 +
105463 +typedef __kernel_ssize_t ssize_t;
105464 +
105465 +
105466 +
105467 +
105468 +typedef __kernel_ptrdiff_t ptrdiff_t;
105469 +
105470 +
105471 +
105472 +
105473 +typedef __kernel_time_t time_t;
105474 +
105475 +
105476 +
105477 +
105478 +typedef __kernel_clock_t clock_t;
105479 +
105480 +
105481 +
105482 +
105483 +typedef __kernel_caddr_t caddr_t;
105484 +
105485 +
105486 +
105487 +typedef unsigned char u_char;
105488 +typedef unsigned short u_short;
105489 +typedef unsigned int u_int;
105490 +typedef unsigned long u_long;
105491 +
105492 +
105493 +typedef unsigned char unchar;
105494 +typedef unsigned short ushort;
105495 +typedef unsigned int uint;
105496 +typedef unsigned long ulong;
105497 +
105498 +
105499 +
105500 +
105501 +typedef __u8 u_int8_t;
105502 +typedef __s8 int8_t;
105503 +typedef __u16 u_int16_t;
105504 +typedef __s16 int16_t;
105505 +typedef __u32 u_int32_t;
105506 +typedef __s32 int32_t;
105507 +
105508 +
105509 +
105510 +typedef __u8 uint8_t;
105511 +typedef __u16 uint16_t;
105512 +typedef __u32 uint32_t;
105513 +
105514 +
105515 +typedef __u64 uint64_t;
105516 +typedef __u64 u_int64_t;
105517 +typedef __s64 int64_t;
105518 +# 145 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105519 +typedef u64 sector_t;
105520 +# 154 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105521 +typedef u64 blkcnt_t;
105522 +# 185 "/d/kernels/linux-2.6.27.10-clickport/include/linux/types.h"
105523 +typedef __u16 __le16;
105524 +typedef __u16 __be16;
105525 +typedef __u32 __le32;
105526 +typedef __u32 __be32;
105527 +
105528 +typedef __u64 __le64;
105529 +typedef __u64 __be64;
105530 +
105531 +typedef __u16 __sum16;
105532 +typedef __u32 __wsum;
105533 +
105534 +
105535 +typedef unsigned gfp_t;
105536 +
105537 +
105538 +typedef u64 resource_size_t;
105539 +
105540 +
105541 +
105542 +
105543 +struct ustat {
105544 + __kernel_daddr_t f_tfree;
105545 + __kernel_ino_t f_tinode;
105546 + char f_fname[6];
105547 + char f_fpack[6];
105548 +};
105549 +# 92 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2
105550 +typedef ptrdiff_t intptr_t;
105551 +# 115 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h"
105552 +void *operator new(size_t) throw ();
105553 +void *operator new[](size_t) throw ();
105554 +
105555 +
105556 +inline __attribute__((always_inline)) void *operator new(size_t, void *v) { return v; }
105557 +# 129 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h"
105558 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/fixconfig.h" 1
105559 +
105560 +
105561 +
105562 +
105563 +
105564 +
105565 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 1
105566 +
105567 +
105568 +
105569 +
105570 +
105571 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/asm.h" 1
105572 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 2
105573 +# 42 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h"
105574 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 1
105575 +
105576 +
105577 +
105578 +
105579 +
105580 +
105581 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/required-features.h" 1
105582 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 2
105583 +# 123 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h"
105584 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" 1
105585 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h"
105586 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 1
105587 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105588 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 1
105589 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
105590 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105591 +static inline __attribute__((always_inline)) void set_bit(unsigned int nr, volatile unsigned long *addr)
105592 +{
105593 + if ((__builtin_constant_p(nr))) {
105594 +  asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "orb %1,%0"
105595 +   : "+m" (*(volatile long *) ((char *)(addr) + ((nr)>>3)))
105596 +   : "iq" ((u8)(1 << ((nr) & 7)))
105597 +   : "memory");
105598 + } else {
105599 +  asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %1,%0"
105600 +   : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory");
105601 + }
105602 +}
105603 +# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105604 +static inline __attribute__((always_inline)) void __set_bit(int nr, volatile unsigned long *addr)
105605 +{
105606 + asm volatile("bts %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory");
105607 +}
105608 +# 93 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105609 +static inline __attribute__((always_inline)) void clear_bit(int nr, volatile unsigned long *addr)
105610 +{
105611 + if ((__builtin_constant_p(nr))) {
105612 +  asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "andb %1,%0"
105613 +   : "+m" (*(volatile long *) ((char *)(addr) + ((nr)>>3)))
105614 +   : "iq" ((u8)~(1 << ((nr) & 7))));
105615 + } else {
105616 +  asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %1,%0"
105617 +   : "+m" (*(volatile long *) (addr))
105618 +   : "Ir" (nr));
105619 + }
105620 +}
105621 +# 114 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105622 +static inline __attribute__((always_inline)) void clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
105623 +{
105624 + __asm__ __volatile__("": : :"memory");
105625 + clear_bit(nr, addr);
105626 +}
105627 +
105628 +static inline __attribute__((always_inline)) void __clear_bit(int nr, volatile unsigned long *addr)
105629 +{
105630 + asm volatile("btr %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr));
105631 +}
105632 +# 137 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105633 +static inline __attribute__((always_inline)) void __clear_bit_unlock(unsigned nr, volatile unsigned long *addr)
105634 +{
105635 + __asm__ __volatile__("": : :"memory");
105636 + __clear_bit(nr, addr);
105637 +}
105638 +# 155 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105639 +static inline __attribute__((always_inline)) void __change_bit(int nr, volatile unsigned long *addr)
105640 +{
105641 + asm volatile("btc %1,%0" : "+m" (*(volatile long *) (addr)) : "Ir" (nr));
105642 +}
105643 +# 169 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105644 +static inline __attribute__((always_inline)) void change_bit(int nr, volatile unsigned long *addr)
105645 +{
105646 + 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));
105647 +}
105648 +# 182 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105649 +static inline __attribute__((always_inline)) int test_and_set_bit(int nr, volatile unsigned long *addr)
105650 +{
105651 + int oldbit;
105652 +
105653 + asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "bts %2,%1\n\t"
105654 +       "sbb %0,%0" : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory");
105655 +
105656 + return oldbit;
105657 +}
105658 +# 199 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105659 +static inline __attribute__((always_inline)) int test_and_set_bit_lock(int nr, volatile unsigned long *addr)
105660 +{
105661 + return test_and_set_bit(nr, addr);
105662 +}
105663 +# 213 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105664 +static inline __attribute__((always_inline)) int __test_and_set_bit(int nr, volatile unsigned long *addr)
105665 +{
105666 + int oldbit;
105667 +
105668 + asm("bts %2,%1\n\t"
105669 +     "sbb %0,%0"
105670 +     : "=r" (oldbit), "+m" (*(volatile long *) (addr))
105671 +     : "Ir" (nr));
105672 + return oldbit;
105673 +}
105674 +# 232 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105675 +static inline __attribute__((always_inline)) int test_and_clear_bit(int nr, volatile unsigned long *addr)
105676 +{
105677 + int oldbit;
105678 +
105679 + asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btr %2,%1\n\t"
105680 +       "sbb %0,%0"
105681 +       : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory");
105682 +
105683 + return oldbit;
105684 +}
105685 +# 252 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105686 +static inline __attribute__((always_inline)) int __test_and_clear_bit(int nr, volatile unsigned long *addr)
105687 +{
105688 + int oldbit;
105689 +
105690 + asm volatile("btr %2,%1\n\t"
105691 +       "sbb %0,%0"
105692 +       : "=r" (oldbit), "+m" (*(volatile long *) (addr))
105693 +       : "Ir" (nr));
105694 + return oldbit;
105695 +}
105696 +
105697 +
105698 +static inline __attribute__((always_inline)) int __test_and_change_bit(int nr, volatile unsigned long *addr)
105699 +{
105700 + int oldbit;
105701 +
105702 + asm volatile("btc %2,%1\n\t"
105703 +       "sbb %0,%0"
105704 +       : "=r" (oldbit), "+m" (*(volatile long *) (addr))
105705 +       : "Ir" (nr) : "memory");
105706 +
105707 + return oldbit;
105708 +}
105709 +# 284 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105710 +static inline __attribute__((always_inline)) int test_and_change_bit(int nr, volatile unsigned long *addr)
105711 +{
105712 + int oldbit;
105713 +
105714 + asm volatile(".section .smp_locks,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "661f\n" ".previous\n" "661:\n\tlock; " "btc %2,%1\n\t"
105715 +       "sbb %0,%0"
105716 +       : "=r" (oldbit), "+m" (*(volatile long *) (addr)) : "Ir" (nr) : "memory");
105717 +
105718 + return oldbit;
105719 +}
105720 +
105721 +static inline __attribute__((always_inline)) int constant_test_bit(int nr, const volatile unsigned long *addr)
105722 +{
105723 + return ((1UL << (nr % 32)) &
105724 +  (((unsigned long *)addr)[nr / 32])) != 0;
105725 +}
105726 +
105727 +static inline __attribute__((always_inline)) int variable_test_bit(int nr, volatile const unsigned long *addr)
105728 +{
105729 + int oldbit;
105730 +
105731 + asm volatile("bt %2,%1\n\t"
105732 +       "sbb %0,%0"
105733 +       : "=r" (oldbit)
105734 +       : "m" (*(unsigned long *)addr), "Ir" (nr));
105735 +
105736 + return oldbit;
105737 +}
105738 +# 333 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105739 +static inline __attribute__((always_inline)) unsigned long __ffs(unsigned long word)
105740 +{
105741 + asm("bsf %1,%0"
105742 +  : "=r" (word)
105743 +  : "rm" (word));
105744 + return word;
105745 +}
105746 +
105747 +
105748 +
105749 +
105750 +
105751 +
105752 +
105753 +static inline __attribute__((always_inline)) unsigned long ffz(unsigned long word)
105754 +{
105755 + asm("bsf %1,%0"
105756 +  : "=r" (word)
105757 +  : "r" (~word));
105758 + return word;
105759 +}
105760 +
105761 +
105762 +
105763 +
105764 +
105765 +
105766 +
105767 +static inline __attribute__((always_inline)) unsigned long __fls(unsigned long word)
105768 +{
105769 + asm("bsr %1,%0"
105770 +     : "=r" (word)
105771 +     : "rm" (word));
105772 + return word;
105773 +}
105774 +# 381 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105775 +static inline __attribute__((always_inline)) int ffs(int x)
105776 +{
105777 + int r;
105778 +
105779 + asm("bsfl %1,%0\n\t"
105780 +     "cmovzl %2,%0"
105781 +     : "=r" (r) : "rm" (x), "r" (-1));
105782 +
105783 +
105784 +
105785 +
105786 +
105787 +
105788 + return r + 1;
105789 +}
105790 +# 408 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h"
105791 +static inline __attribute__((always_inline)) int fls(int x)
105792 +{
105793 + int r;
105794 +
105795 + asm("bsrl %1,%0\n\t"
105796 +     "cmovzl %2,%0"
105797 +     : "=&r" (r) : "rm" (x), "rm" (-1));
105798 +
105799 +
105800 +
105801 +
105802 +
105803 +
105804 + return r + 1;
105805 +}
105806 +
105807 +
105808 +
105809 +
105810 +static inline __attribute__((always_inline)) void set_bit_string(unsigned long *bitmap,
105811 +  unsigned long i, int len)
105812 +{
105813 + unsigned long end = i + len;
105814 + while (i < end) {
105815 +  __set_bit(i, bitmap);
105816 +  i++;
105817 + }
105818 +}
105819 +
105820 +
105821 +
105822 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/sched.h" 1
105823 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/sched.h"
105824 +static inline __attribute__((always_inline)) int sched_find_first_bit(const unsigned long *b)
105825 +{
105826 +
105827 +
105828 +
105829 +
105830 +
105831 + if (b[0])
105832 +  return __ffs(b[0]);
105833 + if (b[1])
105834 +  return __ffs(b[1]) + 32;
105835 + if (b[2])
105836 +  return __ffs(b[2]) + 64;
105837 + return __ffs(b[3]) + 96;
105838 +
105839 +
105840 +
105841 +}
105842 +# 440 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
105843 +
105844 +
105845 +
105846 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/hweight.h" 1
105847 +
105848 +
105849 +
105850 +
105851 +
105852 +
105853 +extern unsigned int hweight16(unsigned int w);
105854 +extern unsigned int hweight8(unsigned int w);
105855 +extern unsigned long hweight64(__u64 w);
105856 +# 444 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
105857 +
105858 +
105859 +
105860 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/fls64.h" 1
105861 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/fls64.h"
105862 +static inline __attribute__((always_inline)) int fls64(__u64 x)
105863 +{
105864 + __u32 h = x >> 32;
105865 + if (h)
105866 +  return fls(h) + 32;
105867 + return fls(x);
105868 +}
105869 +# 448 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
105870 +
105871 +
105872 +
105873 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/ext2-non-atomic.h" 1
105874 +
105875 +
105876 +
105877 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/le.h" 1
105878 +
105879 +
105880 +
105881 +
105882 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" 1
105883 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h"
105884 +static inline __attribute__((always_inline)) __attribute__((__const__)) __u32 ___arch__swab32(__u32 x)
105885 +{
105886 +
105887 + asm("bswap %0" : "=r" (x) : "0" (x));
105888 +
105889 +
105890 +
105891 +
105892 +
105893 +
105894 +
105895 + return x;
105896 +}
105897 +
105898 +static inline __attribute__((always_inline)) __attribute__((__const__)) __u64 ___arch__swab64(__u64 val)
105899 +{
105900 + union {
105901 +  struct {
105902 +   __u32 a;
105903 +   __u32 b;
105904 +  } s;
105905 +  __u64 u;
105906 + } v;
105907 + v.u = val;
105908 +
105909 + asm("bswapl %0 ; bswapl %1 ; xchgl %0,%1"
105910 +     : "=r" (v.s.a), "=r" (v.s.b)
105911 +     : "0" (v.s.a), "1" (v.s.b));
105912 +
105913 +
105914 +
105915 +
105916 +
105917 +
105918 +
105919 + return v.u;
105920 +}
105921 +# 79 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h"
105922 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 1
105923 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h"
105924 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h" 1
105925 +# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h"
105926 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 ___swab16(__u16 x)
105927 +{
105928 + return x<<8 | x>>8;
105929 +}
105930 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 ___swab32(__u32 x)
105931 +{
105932 + return x<<24 | x>>24 |
105933 +  (x & (__u32)0x0000ff00UL)<<8 |
105934 +  (x & (__u32)0x00ff0000UL)>>8;
105935 +}
105936 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 ___swab64(__u64 x)
105937 +{
105938 + return x<<56 | x>>56 |
105939 +  (x & (__u64)0x000000000000ff00ULL)<<40 |
105940 +  (x & (__u64)0x0000000000ff0000ULL)<<24 |
105941 +  (x & (__u64)0x00000000ff000000ULL)<< 8 |
105942 +         (x & (__u64)0x000000ff00000000ULL)>> 8 |
105943 +  (x & (__u64)0x0000ff0000000000ULL)>>24 |
105944 +  (x & (__u64)0x00ff000000000000ULL)>>40;
105945 +}
105946 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/swab.h"
105947 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u16 __fswab16(__u16 x)
105948 +{
105949 + return ___swab16(x);
105950 +}
105951 +static __inline__ __attribute__((always_inline)) __u16 __swab16p(const __u16 *x)
105952 +{
105953 + return ___swab16(*(x));
105954 +}
105955 +static __inline__ __attribute__((always_inline)) void __swab16s(__u16 *addr)
105956 +{
105957 + ((void)(*(addr) = ___swab16(*(addr))));
105958 +}
105959 +
105960 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u32 __fswab32(__u32 x)
105961 +{
105962 + return ___arch__swab32(x);
105963 +}
105964 +static __inline__ __attribute__((always_inline)) __u32 __swab32p(const __u32 *x)
105965 +{
105966 + return ___arch__swab32(*(x));
105967 +}
105968 +static __inline__ __attribute__((always_inline)) void __swab32s(__u32 *addr)
105969 +{
105970 + ((void)(*(addr) = ___arch__swab32(*(addr))));
105971 +}
105972 +
105973 +
105974 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) __u64 __fswab64(__u64 x)
105975 +{
105976 +
105977 +
105978 +
105979 +
105980 +
105981 + return ___arch__swab64(x);
105982 +
105983 +}
105984 +static __inline__ __attribute__((always_inline)) __u64 __swab64p(const __u64 *x)
105985 +{
105986 + return ___arch__swab64(*(x));
105987 +}
105988 +static __inline__ __attribute__((always_inline)) void __swab64s(__u64 *addr)
105989 +{
105990 + ((void)(*(addr) = ___arch__swab64(*(addr))));
105991 +}
105992 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 2
105993 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h"
105994 +static inline __attribute__((always_inline)) __le64 __cpu_to_le64p(const __u64 *p)
105995 +{
105996 + return ( __le64)*p;
105997 +}
105998 +static inline __attribute__((always_inline)) __u64 __le64_to_cpup(const __le64 *p)
105999 +{
106000 + return ( __u64)*p;
106001 +}
106002 +static inline __attribute__((always_inline)) __le32 __cpu_to_le32p(const __u32 *p)
106003 +{
106004 + return ( __le32)*p;
106005 +}
106006 +static inline __attribute__((always_inline)) __u32 __le32_to_cpup(const __le32 *p)
106007 +{
106008 + return ( __u32)*p;
106009 +}
106010 +static inline __attribute__((always_inline)) __le16 __cpu_to_le16p(const __u16 *p)
106011 +{
106012 + return ( __le16)*p;
106013 +}
106014 +static inline __attribute__((always_inline)) __u16 __le16_to_cpup(const __le16 *p)
106015 +{
106016 + return ( __u16)*p;
106017 +}
106018 +static inline __attribute__((always_inline)) __be64 __cpu_to_be64p(const __u64 *p)
106019 +{
106020 + return ( __be64)__swab64p(p);
106021 +}
106022 +static inline __attribute__((always_inline)) __u64 __be64_to_cpup(const __be64 *p)
106023 +{
106024 + return __swab64p((__u64 *)p);
106025 +}
106026 +static inline __attribute__((always_inline)) __be32 __cpu_to_be32p(const __u32 *p)
106027 +{
106028 + return ( __be32)__swab32p(p);
106029 +}
106030 +static inline __attribute__((always_inline)) __u32 __be32_to_cpup(const __be32 *p)
106031 +{
106032 + return __swab32p((__u32 *)p);
106033 +}
106034 +static inline __attribute__((always_inline)) __be16 __cpu_to_be16p(const __u16 *p)
106035 +{
106036 + return ( __be16)__swab16p(p);
106037 +}
106038 +static inline __attribute__((always_inline)) __u16 __be16_to_cpup(const __be16 *p)
106039 +{
106040 + return __swab16p((__u16 *)p);
106041 +}
106042 +# 105 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h"
106043 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/generic.h" 1
106044 +# 143 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/generic.h"
106045 +static inline __attribute__((always_inline)) void le16_add_cpu(__le16 *var, u16 val)
106046 +{
106047 + *var = (( __le16)(__u16)((( __u16)(__le16)(*var)) + val));
106048 +}
106049 +
106050 +static inline __attribute__((always_inline)) void le32_add_cpu(__le32 *var, u32 val)
106051 +{
106052 + *var = (( __le32)(__u32)((( __u32)(__le32)(*var)) + val));
106053 +}
106054 +
106055 +static inline __attribute__((always_inline)) void le64_add_cpu(__le64 *var, u64 val)
106056 +{
106057 + *var = (( __le64)(__u64)((( __u64)(__le64)(*var)) + val));
106058 +}
106059 +
106060 +static inline __attribute__((always_inline)) void be16_add_cpu(__be16 *var, u16 val)
106061 +{
106062 + *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)))));
106063 +}
106064 +
106065 +static inline __attribute__((always_inline)) void be32_add_cpu(__be32 *var, u32 val)
106066 +{
106067 + *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)))));
106068 +}
106069 +
106070 +static inline __attribute__((always_inline)) void be64_add_cpu(__be64 *var, u64 val)
106071 +{
106072 + *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)))));
106073 +}
106074 +# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/byteorder/little_endian.h" 2
106075 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/asm/byteorder.h" 2
106076 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/le.h" 2
106077 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/ext2-non-atomic.h" 2
106078 +# 452 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
106079 +
106080 +
106081 +
106082 +
106083 +
106084 +
106085 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bitops/minix.h" 1
106086 +# 459 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bitops.h" 2
106087 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h" 2
106088 +
106089 +
106090 +
106091 +
106092 +
106093 +
106094 +
106095 +static __inline__ __attribute__((always_inline)) int get_bitmask_order(unsigned int count)
106096 +{
106097 + int order;
106098 +
106099 + order = fls(count);
106100 + return order;
106101 +}
106102 +
106103 +static __inline__ __attribute__((always_inline)) int get_count_order(unsigned int count)
106104 +{
106105 + int order;
106106 +
106107 + order = fls(count) - 1;
106108 + if (count & (count - 1))
106109 +  order++;
106110 + return order;
106111 +}
106112 +
106113 +static inline __attribute__((always_inline)) unsigned long hweight_long(unsigned long w)
106114 +{
106115 + return sizeof(w) == 4 ? hweight32(w) : hweight64(w);
106116 +}
106117 +
106118 +
106119 +
106120 +
106121 +
106122 +static inline __attribute__((always_inline)) __u32 rol32(__u32 word, unsigned int shift)
106123 +{
106124 + return (word << shift) | (word >> (32 - shift));
106125 +}
106126 +
106127 +
106128 +
106129 +
106130 +
106131 +
106132 +static inline __attribute__((always_inline)) __u32 ror32(__u32 word, unsigned int shift)
106133 +{
106134 + return (word >> shift) | (word << (32 - shift));
106135 +}
106136 +
106137 +
106138 +
106139 +
106140 +
106141 +
106142 +static inline __attribute__((always_inline)) __u16 rol16(__u16 word, unsigned int shift)
106143 +{
106144 + return (word << shift) | (word >> (16 - shift));
106145 +}
106146 +
106147 +
106148 +
106149 +
106150 +
106151 +
106152 +static inline __attribute__((always_inline)) __u16 ror16(__u16 word, unsigned int shift)
106153 +{
106154 + return (word >> shift) | (word << (16 - shift));
106155 +}
106156 +
106157 +
106158 +
106159 +
106160 +
106161 +
106162 +static inline __attribute__((always_inline)) __u8 rol8(__u8 word, unsigned int shift)
106163 +{
106164 + return (word << shift) | (word >> (8 - shift));
106165 +}
106166 +
106167 +
106168 +
106169 +
106170 +
106171 +
106172 +static inline __attribute__((always_inline)) __u8 ror8(__u8 word, unsigned int shift)
106173 +{
106174 + return (word >> shift) | (word << (8 - shift));
106175 +}
106176 +
106177 +static inline __attribute__((always_inline)) unsigned fls_long(unsigned long l)
106178 +{
106179 + if (sizeof(l) == 4)
106180 +  return fls(l);
106181 + return fls64(l);
106182 +}
106183 +# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h"
106184 +extern unsigned long find_first_bit(const unsigned long *addr,
106185 +        unsigned long size);
106186 +# 134 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h"
106187 +extern unsigned long find_first_zero_bit(const unsigned long *addr,
106188 +      unsigned long size);
106189 +# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h"
106190 +extern unsigned long find_next_bit(const unsigned long *addr,
106191 +       unsigned long size, unsigned long offset);
106192 +# 157 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitops.h"
106193 +extern unsigned long find_next_zero_bit(const unsigned long *addr,
106194 +     unsigned long size,
106195 +     unsigned long offset);
106196 +# 124 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cpufeature.h" 2
106197 +
106198 +extern const char * const x86_cap_flags[8*32];
106199 +extern const char * const x86_power_flags[32];
106200 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h" 2
106201 +
106202 +struct alt_instr {
106203 + u8 *instr;
106204 + u8 *replacement;
106205 + u8 cpuid;
106206 + u8 instrlen;
106207 + u8 replacementlen;
106208 + u8 pad1;
106209 +
106210 +
106211 +
106212 +};
106213 +
106214 +extern void alternative_instructions(void);
106215 +extern void apply_alternatives(struct alt_instr *start, struct alt_instr *end);
106216 +
106217 +struct module;
106218 +
106219 +
106220 +extern void alternatives_smp_module_add(struct module *mod, char *name,
106221 +     void *locks, void *locks_end,
106222 +     void *text, void *text_end);
106223 +extern void alternatives_smp_module_del(struct module *mod);
106224 +extern void alternatives_smp_switch(int smp);
106225 +# 75 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h"
106226 +const unsigned char *const *find_nop_table(void);
106227 +# 148 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h"
106228 +struct paravirt_patch_site;
106229 +
106230 +void apply_paravirt(struct paravirt_patch_site *start,
106231 +      struct paravirt_patch_site *end);
106232 +# 160 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h"
106233 +extern void add_nops(void *insns, unsigned int len);
106234 +# 180 "/d/kernels/linux-2.6.27.10-clickport/include/asm/alternative.h"
106235 +extern void *text_poke(void *addr, const void *opcode, size_t len);
106236 +extern void *text_poke_early(void *addr, const void *opcode, size_t len);
106237 +# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/fixconfig.h" 2
106238 +# 130 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config-linuxmodule.h" 2
106239 +
106240 +
106241 +
106242 +
106243 +
106244 +extern "C" {
106245 +
106246 +void click_assert_failed(const char *file, int line, const char *problem_text);
106247 +
106248 +}
106249 +# 151 "/d/click/click-1.6.0-27/linuxmodule/../include/click/config.h" 2
106250 +# 21 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2
106251 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 1
106252 +
106253 +
106254 +
106255 +
106256 +
106257 +
106258 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/algorithm.hh" 1
106259 +
106260 +
106261 +
106262 +
106263 +template <class T>
106264 +inline __attribute__((always_inline)) T *
106265 +find(T *begin, T *end, const T &val)
106266 +{
106267 +    while (begin < end && *begin != val)
106268 + begin++;
106269 +    return begin;
106270 +}
106271 +
106272 +template <class T>
106273 +inline __attribute__((always_inline)) const T *
106274 +find(const T *begin, const T *end, const T &val)
106275 +{
106276 +    while (begin < end && *begin != val)
106277 + begin++;
106278 +    return begin;
106279 +}
106280 +
106281 +
106282 +# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 2
106283 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" 1
106284 +
106285 +
106286 +
106287 +
106288 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 1
106289 +# 16 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
106290 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/cxxprotect.h" 1
106291 +# 17 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
106292 +extern "C" {
106293 +
106294 +
106295 +
106296 +
106297 +
106298 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 1
106299 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106300 +# 1 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 1 3 4
106301 +# 43 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 3 4
106302 +typedef __builtin_va_list __gnuc_va_list;
106303 +# 105 "/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/stdarg.h" 3 4
106304 +typedef __gnuc_va_list va_list;
106305 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106306 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/linkage.h" 1
106307 +
106308 +
106309 +
106310 +
106311 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/linkage.h" 1
106312 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/linkage.h" 2
106313 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106314 +
106315 +
106316 +
106317 +
106318 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h" 1
106319 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h"
106320 +extern __attribute__((const, noreturn))
106321 +int ____ilog2_NaN(void);
106322 +# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/log2.h"
106323 +static inline __attribute__((always_inline)) __attribute__((const))
106324 +int __ilog2_u32(u32 n)
106325 +{
106326 + return fls(n) - 1;
106327 +}
106328 +
106329 +
106330 +
106331 +static inline __attribute__((always_inline)) __attribute__((const))
106332 +int __ilog2_u64(u64 n)
106333 +{
106334 + return fls64(n) - 1;
106335 +}
106336 +
106337 +
106338 +
106339 +
106340 +
106341 +
106342 +
106343 +static inline __attribute__((always_inline)) __attribute__((const))
106344 +bool is_power_of_2(unsigned long n)
106345 +{
106346 + return (n != 0 && ((n & (n - 1)) == 0));
106347 +}
106348 +
106349 +
106350 +
106351 +
106352 +static inline __attribute__((always_inline)) __attribute__((const))
106353 +unsigned long __roundup_pow_of_two(unsigned long n)
106354 +{
106355 + return 1UL << fls_long(n - 1);
106356 +}
106357 +
106358 +
106359 +
106360 +
106361 +static inline __attribute__((always_inline)) __attribute__((const))
106362 +unsigned long __rounddown_pow_of_two(unsigned long n)
106363 +{
106364 + return 1UL << (fls_long(n) - 1);
106365 +}
106366 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106367 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/typecheck.h" 1
106368 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106369 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h" 1
106370 +
106371 +
106372 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/param.h" 1
106373 +
106374 +
106375 +
106376 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/param.h" 1
106377 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/param.h" 2
106378 +# 4 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ratelimit.h" 2
106379 +
106380 +
106381 +
106382 +
106383 +struct ratelimit_state {
106384 + int interval;
106385 + int burst;
106386 + int printed;
106387 + int missed;
106388 + unsigned long begin;
106389 +};
106390 +
106391 +
106392 +
106393 +
106394 +extern int __ratelimit(struct ratelimit_state *rs);
106395 +
106396 +static inline __attribute__((always_inline)) int ratelimit(void)
106397 +{
106398 + static struct ratelimit_state rs = {(5 * 1000), 10,};
106399 +
106400 + return __ratelimit(&rs);
106401 +}
106402 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106403 +
106404 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h" 1
106405 +# 38 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h"
106406 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h" 1
106407 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h"
106408 +struct bug_entry {
106409 + unsigned long bug_addr;
106410 +
106411 + const char *file;
106412 + unsigned short line;
106413 +
106414 + unsigned short flags;
106415 +};
106416 +# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/bug.h"
106417 +extern void warn_on_slowpath(const char *file, const int line);
106418 +extern void warn_slowpath(const char *file, const int line,
106419 +  const char *fmt, ...) __attribute__((format(printf, 3, 4)));
106420 +# 39 "/d/kernels/linux-2.6.27.10-clickport/include/asm/bug.h" 2
106421 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106422 +
106423 +extern const char linux_banner[];
106424 +extern const char linux_proc_banner[];
106425 +# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106426 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/div64.h" 1
106427 +# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm/div64.h"
106428 +static inline __attribute__((always_inline)) u64 div_u64_rem(u64 dividend, u32 divisor, u32 *remainder)
106429 +{
106430 + union {
106431 +  u64 v64;
106432 +  u32 v32[2];
106433 + } d = { dividend };
106434 + u32 upper;
106435 +
106436 + upper = d.v32[1];
106437 + d.v32[1] = 0;
106438 + if (upper >= divisor) {
106439 +  d.v32[1] = upper / divisor;
106440 +  upper %= divisor;
106441 + }
106442 + asm ("divl %2" : "=a" (d.v32[0]), "=d" (*remainder) :
106443 +  "rm" (divisor), "0" (d.v32[0]), "1" (upper));
106444 + return d.v64;
106445 +}
106446 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h" 2
106447 +# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106448 +extern int console_printk[];
106449 +
106450 +
106451 +
106452 +
106453 +
106454 +
106455 +struct completion;
106456 +struct pt_regs;
106457 +struct user;
106458 +# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106459 +  void __might_sleep(char *file, int line);
106460 +# 143 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106461 +extern struct atomic_notifier_head panic_notifier_list;
106462 +extern long (*panic_blink)(long time);
106463 + void panic(const char * fmt, ...)
106464 + __attribute__ ((noreturn, format (printf, 1, 2))) ;
106465 +extern void oops_enter(void);
106466 +extern void oops_exit(void);
106467 +extern int oops_may_print(void);
106468 + void do_exit(long error_code)
106469 + __attribute__((noreturn));
106470 + void complete_and_exit(struct completion *, long)
106471 + __attribute__((noreturn));
106472 +extern unsigned long simple_strtoul(const char *,char **,unsigned int);
106473 +extern long simple_strtol(const char *,char **,unsigned int);
106474 +extern unsigned long long simple_strtoull(const char *,char **,unsigned int);
106475 +extern long long simple_strtoll(const char *,char **,unsigned int);
106476 +extern int strict_strtoul(const char *, unsigned int, unsigned long *);
106477 +extern int strict_strtol(const char *, unsigned int, long *);
106478 +extern int strict_strtoull(const char *, unsigned int, unsigned long long *);
106479 +extern int strict_strtoll(const char *, unsigned int, long long *);
106480 +extern int sprintf(char * buf, const char * fmt, ...)
106481 + __attribute__ ((format (printf, 2, 3)));
106482 +extern int vsprintf(char *buf, const char *, va_list)
106483 + __attribute__ ((format (printf, 2, 0)));
106484 +extern int snprintf(char * buf, size_t size, const char * fmt, ...)
106485 + __attribute__ ((format (printf, 3, 4)));
106486 +extern int vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
106487 + __attribute__ ((format (printf, 3, 0)));
106488 +extern int scnprintf(char * buf, size_t size, const char * fmt, ...)
106489 + __attribute__ ((format (printf, 3, 4)));
106490 +extern int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
106491 + __attribute__ ((format (printf, 3, 0)));
106492 +extern char *kasprintf(gfp_t gfp, const char *fmt, ...)
106493 + __attribute__ ((format (printf, 2, 3)));
106494 +extern char *kvasprintf(gfp_t gfp, const char *fmt, va_list args);
106495 +
106496 +extern int sscanf(const char *, const char *, ...)
106497 + __attribute__ ((format (scanf, 2, 3)));
106498 +extern int vsscanf(const char *, const char *, va_list)
106499 + __attribute__ ((format (scanf, 2, 0)));
106500 +
106501 +extern int get_option(char **str, int *pint);
106502 +extern char *get_options(const char *str, int nints, int *ints);
106503 +extern unsigned long long memparse(char *ptr, char **retptr);
106504 +
106505 +extern int core_kernel_text(unsigned long addr);
106506 +extern int __kernel_text_address(unsigned long addr);
106507 +extern int kernel_text_address(unsigned long addr);
106508 +struct pid;
106509 +extern struct pid *session_of_pgrp(struct pid *pgrp);
106510 +
106511 +
106512 +extern "C" __attribute__((regparm(0))) int vprintk(const char *fmt, va_list args)
106513 + __attribute__ ((format (printf, 1, 0)));
106514 +extern "C" __attribute__((regparm(0))) int printk(const char * fmt, ...)
106515 + __attribute__ ((format (printf, 1, 2))) ;
106516 +
106517 +extern struct ratelimit_state printk_ratelimit_state;
106518 +extern int printk_ratelimit(void);
106519 +extern bool printk_timed_ratelimit(unsigned long *caller_jiffies,
106520 +       unsigned int interval_msec);
106521 +# 216 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106522 +extern "C" __attribute__((regparm(0))) void __attribute__((format(printf, 1, 2)))
106523 +    early_printk(const char *fmt, ...);
106524 +
106525 +unsigned long int_sqrt(unsigned long);
106526 +
106527 +static inline __attribute__((always_inline)) void console_silent(void)
106528 +{
106529 + (console_printk[0]) = 0;
106530 +}
106531 +
106532 +static inline __attribute__((always_inline)) void console_verbose(void)
106533 +{
106534 + if ((console_printk[0]))
106535 +  (console_printk[0]) = 15;
106536 +}
106537 +
106538 +extern void bust_spinlocks(int yes);
106539 +extern void wake_up_klogd(void);
106540 +extern int oops_in_progress;
106541 +extern int panic_timeout;
106542 +extern int panic_on_oops;
106543 +extern int panic_on_unrecovered_nmi;
106544 +extern int tainted;
106545 +extern const char *print_tainted(void);
106546 +extern void add_taint(unsigned);
106547 +extern int root_mountflags;
106548 +
106549 +
106550 +extern enum system_states {
106551 + SYSTEM_BOOTING,
106552 + SYSTEM_RUNNING,
106553 + SYSTEM_HALT,
106554 + SYSTEM_POWER_OFF,
106555 + SYSTEM_RESTART,
106556 + SYSTEM_SUSPEND_DISK,
106557 +} system_state;
106558 +# 264 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106559 +extern void dump_stack(void) ;
106560 +
106561 +enum {
106562 + DUMP_PREFIX_NONE,
106563 + DUMP_PREFIX_ADDRESS,
106564 + DUMP_PREFIX_OFFSET
106565 +};
106566 +extern void hex_dump_to_buffer(const void *buf, size_t len,
106567 +    int rowsize, int groupsize,
106568 +    char *linebuf, size_t linebuflen, bool ascii);
106569 +extern void print_hex_dump(const char *level, const char *prefix_str,
106570 +    int prefix_type, int rowsize, int groupsize,
106571 +    const void *buf, size_t len, bool ascii);
106572 +extern void print_hex_dump_bytes(const char *prefix_str, int prefix_type,
106573 +   const void *buf, size_t len);
106574 +
106575 +extern const char hex_asc[];
106576 +
106577 +
106578 +
106579 +static inline __attribute__((always_inline)) char *pack_hex_byte(char *buf, u8 byte)
106580 +{
106581 + *buf++ = hex_asc[((byte) & 0xf0) >> 4];
106582 + *buf++ = hex_asc[((byte) & 0x0f)];
106583 + return buf;
106584 +}
106585 +# 447 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kernel.h"
106586 +struct sysinfo;
106587 +extern int do_sysinfo(struct sysinfo *info);
106588 +
106589 +
106590 +
106591 +
106592 +struct sysinfo {
106593 + long uptime;
106594 + unsigned long loads[3];
106595 + unsigned long totalram;
106596 + unsigned long freeram;
106597 + unsigned long sharedram;
106598 + unsigned long bufferram;
106599 + unsigned long totalswap;
106600 + unsigned long freeswap;
106601 + unsigned short procs;
106602 + unsigned short pad;
106603 + unsigned long totalhigh;
106604 + unsigned long freehigh;
106605 + unsigned int mem_unit;
106606 + char _f[20-2*sizeof(long)-sizeof(int)];
106607 +};
106608 +# 24 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
106609 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/version.h" 1
106610 +# 25 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
106611 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" 1
106612 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106613 +extern char *strndup_user(const char *, long);
106614 +
106615 +
106616 +
106617 +
106618 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 1
106619 +
106620 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h" 1
106621 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h"
106622 +extern char *strcpy(char *dest, const char *src);
106623 +
106624 +
106625 +extern char *strncpy(char *dest, const char *src, size_t count);
106626 +
106627 +
106628 +extern char *strcat(char *dest, const char *src);
106629 +
106630 +
106631 +extern char *strncat(char *dest, const char *src, size_t count);
106632 +
106633 +
106634 +extern int strcmp(const char *cs, const char *ct);
106635 +
106636 +
106637 +extern int strncmp(const char *cs, const char *ct, size_t count);
106638 +
106639 +
106640 +extern char *strchr(const char *s, int c);
106641 +
106642 +
106643 +extern size_t strlen(const char *s);
106644 +
106645 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void *__memcpy(void *to, const void *from, size_t n)
106646 +{
106647 + int d0, d1, d2;
106648 + asm volatile("rep ; movsl\n\t"
106649 +       "movl %4,%%ecx\n\t"
106650 +       "andl $3,%%ecx\n\t"
106651 +       "jz 1f\n\t"
106652 +       "rep ; movsb\n\t"
106653 +       "1:"
106654 +       : "=&c" (d0), "=&D" (d1), "=&S" (d2)
106655 +       : "0" (n / 4), "g" (n), "1" ((long)to), "2" ((long)from)
106656 +       : "memory");
106657 + return to;
106658 +}
106659 +
106660 +
106661 +
106662 +
106663 +
106664 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void *__constant_memcpy(void *to, const void *from,
106665 +            size_t n)
106666 +{
106667 + long esi, edi;
106668 + if (!n)
106669 +  return to;
106670 +
106671 + switch (n) {
106672 + case 1:
106673 +  *(char *)to = *(char *)from;
106674 +  return to;
106675 + case 2:
106676 +  *(short *)to = *(short *)from;
106677 +  return to;
106678 + case 4:
106679 +  *(int *)to = *(int *)from;
106680 +  return to;
106681 +
106682 + case 3:
106683 +  *(short *)to = *(short *)from;
106684 +  *((char *)to + 2) = *((char *)from + 2);
106685 +  return to;
106686 + case 5:
106687 +  *(int *)to = *(int *)from;
106688 +  *((char *)to + 4) = *((char *)from + 4);
106689 +  return to;
106690 + case 6:
106691 +  *(int *)to = *(int *)from;
106692 +  *((short *)to + 2) = *((short *)from + 2);
106693 +  return to;
106694 + case 8:
106695 +  *(int *)to = *(int *)from;
106696 +  *((int *)to + 1) = *((int *)from + 1);
106697 +  return to;
106698 + }
106699 +
106700 + esi = (long)from;
106701 + edi = (long)to;
106702 + if (n >= 5 * 4) {
106703 +
106704 +  int ecx;
106705 +  asm volatile("rep ; movsl"
106706 +        : "=&c" (ecx), "=&D" (edi), "=&S" (esi)
106707 +        : "0" (n / 4), "1" (edi), "2" (esi)
106708 +        : "memory"
106709 +  );
106710 + } else {
106711 +
106712 +  if (n >= 4 * 4)
106713 +   asm volatile("movsl"
106714 +         : "=&D"(edi), "=&S"(esi)
106715 +         : "0"(edi), "1"(esi)
106716 +         : "memory");
106717 +  if (n >= 3 * 4)
106718 +   asm volatile("movsl"
106719 +         : "=&D"(edi), "=&S"(esi)
106720 +         : "0"(edi), "1"(esi)
106721 +         : "memory");
106722 +  if (n >= 2 * 4)
106723 +   asm volatile("movsl"
106724 +         : "=&D"(edi), "=&S"(esi)
106725 +         : "0"(edi), "1"(esi)
106726 +         : "memory");
106727 +  if (n >= 1 * 4)
106728 +   asm volatile("movsl"
106729 +         : "=&D"(edi), "=&S"(esi)
106730 +         : "0"(edi), "1"(esi)
106731 +         : "memory");
106732 + }
106733 + switch (n % 4) {
106734 +
106735 + case 0:
106736 +  return to;
106737 + case 1:
106738 +  asm volatile("movsb"
106739 +        : "=&D"(edi), "=&S"(esi)
106740 +        : "0"(edi), "1"(esi)
106741 +        : "memory");
106742 +  return to;
106743 + case 2:
106744 +  asm volatile("movsw"
106745 +        : "=&D"(edi), "=&S"(esi)
106746 +        : "0"(edi), "1"(esi)
106747 +        : "memory");
106748 +  return to;
106749 + default:
106750 +  asm volatile("movsw\n\tmovsb"
106751 +        : "=&D"(edi), "=&S"(esi)
106752 +        : "0"(edi), "1"(esi)
106753 +        : "memory");
106754 +  return to;
106755 + }
106756 +}
106757 +# 188 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h"
106758 +void *memmove(void *dest, const void *src, size_t n);
106759 +
106760 +
106761 +
106762 +
106763 +extern void *memchr(const void *cs, int c, size_t count);
106764 +
106765 +static inline __attribute__((always_inline)) void *__memset_generic(void *s, char c, size_t count)
106766 +{
106767 + int d0, d1;
106768 + asm volatile("rep\n\t"
106769 +       "stosb"
106770 +       : "=&c" (d0), "=&D" (d1)
106771 +       : "a" (c), "1" (s), "0" (count)
106772 +       : "memory");
106773 + return s;
106774 +}
106775 +# 214 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h"
106776 +static inline __attribute__((always_inline)) __attribute__((always_inline))
106777 +void *__constant_c_memset(void *s, unsigned long c, size_t count)
106778 +{
106779 + int d0, d1;
106780 + asm volatile("rep ; stosl\n\t"
106781 +       "testb $2,%b3\n\t"
106782 +       "je 1f\n\t"
106783 +       "stosw\n"
106784 +       "1:\ttestb $1,%b3\n\t"
106785 +       "je 2f\n\t"
106786 +       "stosb\n"
106787 +       "2:"
106788 +       : "=&c" (d0), "=&D" (d1)
106789 +       : "a" (c), "q" (count), "0" (count/4), "1" ((long)s)
106790 +       : "memory");
106791 + return s;
106792 +}
106793 +
106794 +
106795 +
106796 +extern size_t strnlen(const char *s, size_t count);
106797 +
106798 +
106799 +
106800 +extern char *strstr(const char *cs, const char *ct);
106801 +
106802 +
106803 +
106804 +
106805 +
106806 +static inline __attribute__((always_inline)) __attribute__((always_inline))
106807 +void *__constant_c_and_count_memset(void *s, unsigned long pattern,
106808 +        size_t count)
106809 +{
106810 + switch (count) {
106811 + case 0:
106812 +  return s;
106813 + case 1:
106814 +  *(unsigned char *)s = pattern & 0xff;
106815 +  return s;
106816 + case 2:
106817 +  *(unsigned short *)s = pattern & 0xffff;
106818 +  return s;
106819 + case 3:
106820 +  *(unsigned short *)s = pattern & 0xffff;
106821 +  *((unsigned char *)s + 2) = pattern & 0xff;
106822 +  return s;
106823 + case 4:
106824 +  *(unsigned long *)s = pattern;
106825 +  return s;
106826 + }
106827 +# 273 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h"
106828 + {
106829 +  int d0, d1;
106830 +
106831 +
106832 +
106833 +
106834 +  unsigned long eax = pattern;
106835 +
106836 +
106837 +  switch (count % 4) {
106838 +  case 0:
106839 +   asm volatile("rep ; stosl" "" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory");
106840 +   return s;
106841 +  case 1:
106842 +   asm volatile("rep ; stosl" "\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory");
106843 +   return s;
106844 +  case 2:
106845 +   asm volatile("rep ; stosl" "\n\tstosw" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory");
106846 +   return s;
106847 +  default:
106848 +   asm volatile("rep ; stosl" "\n\tstosw\n\tstosb" : "=&c" (d0), "=&D" (d1) : "a" (eax), "0" (count/4), "1" ((long)s) : "memory");
106849 +   return s;
106850 +  }
106851 + }
106852 +
106853 +
106854 +}
106855 +# 322 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string_32.h"
106856 +extern void *memscan(void *addr, int c, size_t size);
106857 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 2
106858 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h" 2
106859 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106860 +size_t strlcpy(char *, const char *, size_t);
106861 +# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106862 +extern size_t strlcat(char *, const char *, __kernel_size_t);
106863 +# 46 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106864 +extern int strnicmp(const char *, const char *, __kernel_size_t);
106865 +
106866 +
106867 +extern int strcasecmp(const char *s1, const char *s2);
106868 +
106869 +
106870 +extern int strncasecmp(const char *s1, const char *s2, size_t n);
106871 +
106872 +
106873 +
106874 +
106875 +
106876 +extern char * strnchr(const char *, size_t, int);
106877 +
106878 +
106879 +extern char * strrchr(const char *,int);
106880 +
106881 +extern char * strstrip(char *);
106882 +# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106883 +extern char * strpbrk(const char *,const char *);
106884 +
106885 +
106886 +extern char * strsep(char **,const char *);
106887 +
106888 +
106889 +extern __kernel_size_t strspn(const char *,const char *);
106890 +
106891 +
106892 +extern __kernel_size_t strcspn(const char *,const char *);
106893 +# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/string.h"
106894 +extern int __builtin_memcmp(const void *,const void *,__kernel_size_t);
106895 +
106896 +
106897 +
106898 +
106899 +
106900 +extern char *kstrdup(const char *s, gfp_t gfp);
106901 +extern char *kstrndup(const char *s, size_t len, gfp_t gfp);
106902 +extern void *kmemdup(const void *src, size_t len, gfp_t gfp);
106903 +
106904 +extern char **argv_split(gfp_t gfp, const char *str, int *argcp);
106905 +extern void argv_free(char **argv);
106906 +
106907 +extern bool sysfs_streq(const char *s1, const char *s2);
106908 +
106909 +extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos,
106910 +   const void *from, size_t available);
106911 +# 26 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
106912 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 1
106913 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
106914 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 1
106915 +
106916 +
106917 +
106918 +
106919 +
106920 +
106921 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cache.h" 1
106922 +
106923 +
106924 +
106925 +
106926 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cache.h" 1
106927 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cache.h" 2
106928 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2
106929 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" 1
106930 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h"
106931 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 1
106932 +# 50 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h"
106933 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 1
106934 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h"
106935 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" 1
106936 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h"
106937 +struct timespec;
106938 +struct compat_timespec;
106939 +
106940 +
106941 +
106942 +
106943 +struct restart_block {
106944 + long (*fn)(struct restart_block *);
106945 + union {
106946 +  struct {
106947 +   unsigned long arg0, arg1, arg2, arg3;
106948 +  };
106949 +
106950 +  struct {
106951 +   u32 *uaddr;
106952 +   u32 val;
106953 +   u32 flags;
106954 +   u32 bitset;
106955 +   u64 time;
106956 +  } futex;
106957 +
106958 +  struct {
106959 +   clockid_t index;
106960 +   struct timespec *rmtp;
106961 +
106962 +
106963 +
106964 +   u64 expires;
106965 +  } nanosleep;
106966 + };
106967 +};
106968 +
106969 +extern long do_no_restart_syscall(struct restart_block *parm);
106970 +
106971 +
106972 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 1
106973 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h"
106974 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 1
106975 +
106976 +
106977 +
106978 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/const.h" 1
106979 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
106980 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h"
106981 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h" 1
106982 +# 52 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h"
106983 +typedef unsigned long pteval_t;
106984 +typedef unsigned long pmdval_t;
106985 +typedef unsigned long pudval_t;
106986 +typedef unsigned long pgdval_t;
106987 +typedef unsigned long pgprotval_t;
106988 +typedef unsigned long phys_addr_t;
106989 +
106990 +typedef union {
106991 + pteval_t pte;
106992 + pteval_t pte_low;
106993 +} pte_t;
106994 +
106995 +
106996 +
106997 +
106998 +
106999 +typedef struct page *pgtable_t;
107000 +# 83 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h"
107001 +extern int nx_enabled;
107002 +
107003 +
107004 +
107005 +
107006 +
107007 +extern unsigned int __VMALLOC_RESERVE;
107008 +extern int sysctl_legacy_va_layout;
107009 +
107010 +
107011 +
107012 +
107013 +extern void find_low_pfn_range(void);
107014 +extern unsigned long init_memory_mapping(unsigned long start,
107015 +      unsigned long end);
107016 +extern void initmem_init(unsigned long, unsigned long);
107017 +extern void setup_bootmem_allocator(void);
107018 +# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page_32.h"
107019 +static inline __attribute__((always_inline)) void clear_page(void *page)
107020 +{
107021 + (__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))))));
107022 +}
107023 +
107024 +static inline __attribute__((always_inline)) void copy_page(void *to, void *from)
107025 +{
107026 + (__builtin_constant_p((((1UL) << 12))) ? __constant_memcpy((to), (from), (((1UL) << 12))) : __memcpy((to), (from), (((1UL) << 12))));
107027 +}
107028 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
107029 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h"
107030 +typedef struct { pgdval_t pgd; } pgd_t;
107031 +typedef struct { pgprotval_t pgprot; } pgprot_t;
107032 +
107033 +extern int page_is_ram(unsigned long pagenr);
107034 +extern int devmem_is_allowed(unsigned long pagenr);
107035 +extern void map_devmem(unsigned long pfn, unsigned long size,
107036 +         pgprot_t vma_prot);
107037 +extern void unmap_devmem(unsigned long pfn, unsigned long size,
107038 +    pgprot_t vma_prot);
107039 +
107040 +extern unsigned long max_low_pfn_mapped;
107041 +extern unsigned long max_pfn_mapped;
107042 +
107043 +struct page;
107044 +
107045 +static inline __attribute__((always_inline)) void clear_user_page(void *page, unsigned long vaddr,
107046 +    struct page *pg)
107047 +{
107048 + clear_page(page);
107049 +}
107050 +
107051 +static inline __attribute__((always_inline)) void copy_user_page(void *to, void *from, unsigned long vaddr,
107052 +    struct page *topage)
107053 +{
107054 + copy_page(to, from);
107055 +}
107056 +
107057 +
107058 +
107059 +
107060 +
107061 +static inline __attribute__((always_inline)) pgd_t native_make_pgd(pgdval_t val)
107062 +{
107063 + return (pgd_t) { val };
107064 +}
107065 +
107066 +static inline __attribute__((always_inline)) pgdval_t native_pgd_val(pgd_t pgd)
107067 +{
107068 + return pgd.pgd;
107069 +}
107070 +# 131 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h"
107071 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" 1
107072 +
107073 +
107074 +
107075 +
107076 +
107077 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h" 1
107078 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h"
107079 +typedef struct { pgd_t pgd; } pud_t;
107080 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h"
107081 +static inline __attribute__((always_inline)) int pgd_none(pgd_t pgd) { return 0; }
107082 +static inline __attribute__((always_inline)) int pgd_bad(pgd_t pgd) { return 0; }
107083 +static inline __attribute__((always_inline)) int pgd_present(pgd_t pgd) { return 1; }
107084 +static inline __attribute__((always_inline)) void pgd_clear(pgd_t *pgd) { }
107085 +# 38 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopud.h"
107086 +static inline __attribute__((always_inline)) pud_t * pud_offset(pgd_t * pgd, unsigned long address)
107087 +{
107088 + return (pud_t *)pgd;
107089 +}
107090 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h" 2
107091 +
107092 +struct mm_struct;
107093 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h"
107094 +typedef struct { pud_t pud; } pmd_t;
107095 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h"
107096 +static inline __attribute__((always_inline)) int pud_none(pud_t pud) { return 0; }
107097 +static inline __attribute__((always_inline)) int pud_bad(pud_t pud) { return 0; }
107098 +static inline __attribute__((always_inline)) int pud_present(pud_t pud) { return 1; }
107099 +static inline __attribute__((always_inline)) void pud_clear(pud_t *pud) { }
107100 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h"
107101 +static inline __attribute__((always_inline)) pmd_t * pmd_offset(pud_t * pud, unsigned long address)
107102 +{
107103 + return (pmd_t *)pud;
107104 +}
107105 +# 59 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable-nopmd.h"
107106 +static inline __attribute__((always_inline)) void pmd_free(struct mm_struct *mm, pmd_t *pmd)
107107 +{
107108 +}
107109 +# 132 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
107110 +
107111 +static inline __attribute__((always_inline)) pmdval_t native_pmd_val(pmd_t pmd)
107112 +{
107113 + return native_pgd_val(pmd.pud.pgd);
107114 +}
107115 +
107116 +
107117 +static inline __attribute__((always_inline)) pte_t native_make_pte(pteval_t val)
107118 +{
107119 + return (pte_t) ({pte_t duh; duh.pte = val;duh;});
107120 +}
107121 +
107122 +static inline __attribute__((always_inline)) pteval_t native_pte_val(pte_t pte)
107123 +{
107124 + return pte.pte;
107125 +}
107126 +
107127 +static inline __attribute__((always_inline)) pteval_t native_pte_flags(pte_t pte)
107128 +{
107129 + return native_pte_val(pte) & (~((pteval_t)(((signed long)(~(((1UL) << 12)-1))) & ((phys_addr_t)(1ULL << 32) - 1))));
107130 +}
107131 +
107132 +
107133 +
107134 +
107135 +
107136 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 1
107137 +
107138 +
107139 +
107140 +
107141 +
107142 +
107143 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 1
107144 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2
107145 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
107146 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 1
107147 +# 138 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h"
107148 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/threads.h" 1
107149 +# 139 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 2
107150 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitmap.h" 1
107151 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bitmap.h"
107152 +extern int __bitmap_empty(const unsigned long *bitmap, int bits);
107153 +extern int __bitmap_full(const unsigned long *bitmap, int bits);
107154 +extern int __bitmap_equal(const unsigned long *bitmap1,
107155 +                 const unsigned long *bitmap2, int bits);
107156 +extern void __bitmap_complement(unsigned long *dst, const unsigned long *src,
107157 +   int bits);
107158 +extern void __bitmap_shift_right(unsigned long *dst,
107159 +                        const unsigned long *src, int shift, int bits);
107160 +extern void __bitmap_shift_left(unsigned long *dst,
107161 +                        const unsigned long *src, int shift, int bits);
107162 +extern void __bitmap_and(unsigned long *dst, const unsigned long *bitmap1,
107163 +   const unsigned long *bitmap2, int bits);
107164 +extern void __bitmap_or(unsigned long *dst, const unsigned long *bitmap1,
107165 +   const unsigned long *bitmap2, int bits);
107166 +extern void __bitmap_xor(unsigned long *dst, const unsigned long *bitmap1,
107167 +   const unsigned long *bitmap2, int bits);
107168 +extern void __bitmap_andnot(unsigned long *dst, const unsigned long *bitmap1,
107169 +   const unsigned long *bitmap2, int bits);
107170 +extern int __bitmap_intersects(const unsigned long *bitmap1,
107171 +   const unsigned long *bitmap2, int bits);
107172 +extern int __bitmap_subset(const unsigned long *bitmap1,
107173 +   const unsigned long *bitmap2, int bits);
107174 +extern int __bitmap_weight(const unsigned long *bitmap, int bits);
107175 +
107176 +extern int bitmap_scnprintf(char *buf, unsigned int len,
107177 +   const unsigned long *src, int nbits);
107178 +extern int bitmap_scnprintf_len(unsigned int nr_bits);
107179 +extern int __bitmap_parse(const char *buf, unsigned int buflen, int is_user,
107180 +   unsigned long *dst, int nbits);
107181 +extern int bitmap_parse_user(const char *ubuf, unsigned int ulen,
107182 +   unsigned long *dst, int nbits);
107183 +extern int bitmap_scnlistprintf(char *buf, unsigned int len,
107184 +   const unsigned long *src, int nbits);
107185 +extern int bitmap_parselist(const char *buf, unsigned long *maskp,
107186 +   int nmaskbits);
107187 +extern void bitmap_remap(unsigned long *dst, const unsigned long *src,
107188 +  const unsigned long *old, const unsigned long *xxx_new, int bits);
107189 +extern int bitmap_bitremap(int oldbit,
107190 +  const unsigned long *old, const unsigned long *xxx_new, int bits);
107191 +extern void bitmap_onto(unsigned long *dst, const unsigned long *orig,
107192 +  const unsigned long *relmap, int bits);
107193 +extern void bitmap_fold(unsigned long *dst, const unsigned long *orig,
107194 +  int sz, int bits);
107195 +extern int bitmap_find_free_region(unsigned long *bitmap, int bits, int order);
107196 +extern void bitmap_release_region(unsigned long *bitmap, int pos, int order);
107197 +extern int bitmap_allocate_region(unsigned long *bitmap, int pos, int order);
107198 +
107199 +
107200 +
107201 +
107202 +
107203 +
107204 +
107205 +static inline __attribute__((always_inline)) void bitmap_zero(unsigned long *dst, int nbits)
107206 +{
107207 + if (nbits <= 32)
107208 +  *dst = 0UL;
107209 + else {
107210 +  int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long);
107211 +  (__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)))));
107212 + }
107213 +}
107214 +
107215 +static inline __attribute__((always_inline)) void bitmap_fill(unsigned long *dst, int nbits)
107216 +{
107217 + size_t nlongs = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)));
107218 + if (nlongs > 1) {
107219 +  int len = (nlongs - 1) * sizeof(unsigned long);
107220 +  (__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)))));
107221 + }
107222 + dst[nlongs - 1] = ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL );
107223 +}
107224 +
107225 +static inline __attribute__((always_inline)) void bitmap_copy(unsigned long *dst, const unsigned long *src,
107226 +   int nbits)
107227 +{
107228 + if (nbits <= 32)
107229 +  *dst = *src;
107230 + else {
107231 +  int len = (((nbits) + (8 * sizeof(long)) - 1) / (8 * sizeof(long))) * sizeof(unsigned long);
107232 +  (__builtin_constant_p((len)) ? __constant_memcpy((dst), (src), (len)) : __memcpy((dst), (src), (len)));
107233 + }
107234 +}
107235 +
107236 +static inline __attribute__((always_inline)) void bitmap_and(unsigned long *dst, const unsigned long *src1,
107237 +   const unsigned long *src2, int nbits)
107238 +{
107239 + if (nbits <= 32)
107240 +  *dst = *src1 & *src2;
107241 + else
107242 +  __bitmap_and(dst, src1, src2, nbits);
107243 +}
107244 +
107245 +static inline __attribute__((always_inline)) void bitmap_or(unsigned long *dst, const unsigned long *src1,
107246 +   const unsigned long *src2, int nbits)
107247 +{
107248 + if (nbits <= 32)
107249 +  *dst = *src1 | *src2;
107250 + else
107251 +  __bitmap_or(dst, src1, src2, nbits);
107252 +}
107253 +
107254 +static inline __attribute__((always_inline)) void bitmap_xor(unsigned long *dst, const unsigned long *src1,
107255 +   const unsigned long *src2, int nbits)
107256 +{
107257 + if (nbits <= 32)
107258 +  *dst = *src1 ^ *src2;
107259 + else
107260 +  __bitmap_xor(dst, src1, src2, nbits);
107261 +}
107262 +
107263 +static inline __attribute__((always_inline)) void bitmap_andnot(unsigned long *dst, const unsigned long *src1,
107264 +   const unsigned long *src2, int nbits)
107265 +{
107266 + if (nbits <= 32)
107267 +  *dst = *src1 & ~(*src2);
107268 + else
107269 +  __bitmap_andnot(dst, src1, src2, nbits);
107270 +}
107271 +
107272 +static inline __attribute__((always_inline)) void bitmap_complement(unsigned long *dst, const unsigned long *src,
107273 +   int nbits)
107274 +{
107275 + if (nbits <= 32)
107276 +  *dst = ~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL );
107277 + else
107278 +  __bitmap_complement(dst, src, nbits);
107279 +}
107280 +
107281 +static inline __attribute__((always_inline)) int bitmap_equal(const unsigned long *src1,
107282 +   const unsigned long *src2, int nbits)
107283 +{
107284 + if (nbits <= 32)
107285 +  return ! ((*src1 ^ *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
107286 + else
107287 +  return __bitmap_equal(src1, src2, nbits);
107288 +}
107289 +
107290 +static inline __attribute__((always_inline)) int bitmap_intersects(const unsigned long *src1,
107291 +   const unsigned long *src2, int nbits)
107292 +{
107293 + if (nbits <= 32)
107294 +  return ((*src1 & *src2) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL )) != 0;
107295 + else
107296 +  return __bitmap_intersects(src1, src2, nbits);
107297 +}
107298 +
107299 +static inline __attribute__((always_inline)) int bitmap_subset(const unsigned long *src1,
107300 +   const unsigned long *src2, int nbits)
107301 +{
107302 + if (nbits <= 32)
107303 +  return ! ((*src1 & ~(*src2)) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
107304 + else
107305 +  return __bitmap_subset(src1, src2, nbits);
107306 +}
107307 +
107308 +static inline __attribute__((always_inline)) int bitmap_empty(const unsigned long *src, int nbits)
107309 +{
107310 + if (nbits <= 32)
107311 +  return ! (*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
107312 + else
107313 +  return __bitmap_empty(src, nbits);
107314 +}
107315 +
107316 +static inline __attribute__((always_inline)) int bitmap_full(const unsigned long *src, int nbits)
107317 +{
107318 + if (nbits <= 32)
107319 +  return ! (~(*src) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
107320 + else
107321 +  return __bitmap_full(src, nbits);
107322 +}
107323 +
107324 +static inline __attribute__((always_inline)) int bitmap_weight(const unsigned long *src, int nbits)
107325 +{
107326 + if (nbits <= 32)
107327 +  return hweight_long(*src & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL ));
107328 + return __bitmap_weight(src, nbits);
107329 +}
107330 +
107331 +static inline __attribute__((always_inline)) void bitmap_shift_right(unsigned long *dst,
107332 +   const unsigned long *src, int n, int nbits)
107333 +{
107334 + if (nbits <= 32)
107335 +  *dst = *src >> n;
107336 + else
107337 +  __bitmap_shift_right(dst, src, n, nbits);
107338 +}
107339 +
107340 +static inline __attribute__((always_inline)) void bitmap_shift_left(unsigned long *dst,
107341 +   const unsigned long *src, int n, int nbits)
107342 +{
107343 + if (nbits <= 32)
107344 +  *dst = (*src << n) & ( ((nbits) % 32) ? (1UL<<((nbits) % 32))-1 : ~0UL );
107345 + else
107346 +  __bitmap_shift_left(dst, src, n, nbits);
107347 +}
107348 +
107349 +static inline __attribute__((always_inline)) int bitmap_parse(const char *buf, unsigned int buflen,
107350 +   unsigned long *maskp, int nmaskbits)
107351 +{
107352 + return __bitmap_parse(buf, buflen, 0, maskp, nmaskbits);
107353 +}
107354 +# 140 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h" 2
107355 +
107356 +typedef struct { unsigned long bits[(((32) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } cpumask_t;
107357 +extern cpumask_t _unused_cpumask_arg_;
107358 +
107359 +
107360 +static inline __attribute__((always_inline)) void __cpu_set(int cpu, volatile cpumask_t *dstp)
107361 +{
107362 + set_bit(cpu, dstp->bits);
107363 +}
107364 +
107365 +
107366 +static inline __attribute__((always_inline)) void __cpu_clear(int cpu, volatile cpumask_t *dstp)
107367 +{
107368 + clear_bit(cpu, dstp->bits);
107369 +}
107370 +
107371 +
107372 +static inline __attribute__((always_inline)) void __cpus_setall(cpumask_t *dstp, int nbits)
107373 +{
107374 + bitmap_fill(dstp->bits, nbits);
107375 +}
107376 +
107377 +
107378 +static inline __attribute__((always_inline)) void __cpus_clear(cpumask_t *dstp, int nbits)
107379 +{
107380 + bitmap_zero(dstp->bits, nbits);
107381 +}
107382 +
107383 +
107384 +
107385 +
107386 +
107387 +static inline __attribute__((always_inline)) int __cpu_test_and_set(int cpu, cpumask_t *addr)
107388 +{
107389 + return test_and_set_bit(cpu, addr->bits);
107390 +}
107391 +
107392 +
107393 +static inline __attribute__((always_inline)) void __cpus_and(cpumask_t *dstp, const cpumask_t *src1p,
107394 +     const cpumask_t *src2p, int nbits)
107395 +{
107396 + bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits);
107397 +}
107398 +
107399 +
107400 +static inline __attribute__((always_inline)) void __cpus_or(cpumask_t *dstp, const cpumask_t *src1p,
107401 +     const cpumask_t *src2p, int nbits)
107402 +{
107403 + bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits);
107404 +}
107405 +
107406 +
107407 +static inline __attribute__((always_inline)) void __cpus_xor(cpumask_t *dstp, const cpumask_t *src1p,
107408 +     const cpumask_t *src2p, int nbits)
107409 +{
107410 + bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits);
107411 +}
107412 +
107413 +
107414 +
107415 +static inline __attribute__((always_inline)) void __cpus_andnot(cpumask_t *dstp, const cpumask_t *src1p,
107416 +     const cpumask_t *src2p, int nbits)
107417 +{
107418 + bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits);
107419 +}
107420 +
107421 +
107422 +static inline __attribute__((always_inline)) void __cpus_complement(cpumask_t *dstp,
107423 +     const cpumask_t *srcp, int nbits)
107424 +{
107425 + bitmap_complement(dstp->bits, srcp->bits, nbits);
107426 +}
107427 +
107428 +
107429 +static inline __attribute__((always_inline)) int __cpus_equal(const cpumask_t *src1p,
107430 +     const cpumask_t *src2p, int nbits)
107431 +{
107432 + return bitmap_equal(src1p->bits, src2p->bits, nbits);
107433 +}
107434 +
107435 +
107436 +static inline __attribute__((always_inline)) int __cpus_intersects(const cpumask_t *src1p,
107437 +     const cpumask_t *src2p, int nbits)
107438 +{
107439 + return bitmap_intersects(src1p->bits, src2p->bits, nbits);
107440 +}
107441 +
107442 +
107443 +static inline __attribute__((always_inline)) int __cpus_subset(const cpumask_t *src1p,
107444 +     const cpumask_t *src2p, int nbits)
107445 +{
107446 + return bitmap_subset(src1p->bits, src2p->bits, nbits);
107447 +}
107448 +
107449 +
107450 +static inline __attribute__((always_inline)) int __cpus_empty(const cpumask_t *srcp, int nbits)
107451 +{
107452 + return bitmap_empty(srcp->bits, nbits);
107453 +}
107454 +
107455 +
107456 +static inline __attribute__((always_inline)) int __cpus_full(const cpumask_t *srcp, int nbits)
107457 +{
107458 + return bitmap_full(srcp->bits, nbits);
107459 +}
107460 +
107461 +
107462 +static inline __attribute__((always_inline)) int __cpus_weight(const cpumask_t *srcp, int nbits)
107463 +{
107464 + return bitmap_weight(srcp->bits, nbits);
107465 +}
107466 +
107467 +
107468 +
107469 +static inline __attribute__((always_inline)) void __cpus_shift_right(cpumask_t *dstp,
107470 +     const cpumask_t *srcp, int n, int nbits)
107471 +{
107472 + bitmap_shift_right(dstp->bits, srcp->bits, n, nbits);
107473 +}
107474 +
107475 +
107476 +
107477 +static inline __attribute__((always_inline)) void __cpus_shift_left(cpumask_t *dstp,
107478 +     const cpumask_t *srcp, int n, int nbits)
107479 +{
107480 + bitmap_shift_left(dstp->bits, srcp->bits, n, nbits);
107481 +}
107482 +# 275 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h"
107483 +extern const unsigned long
107484 + cpu_bit_bitmap[32 +1][(((32) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))];
107485 +
107486 +static inline __attribute__((always_inline)) const cpumask_t *get_cpu_mask(unsigned int cpu)
107487 +{
107488 + const unsigned long *p = cpu_bit_bitmap[1 + cpu % 32];
107489 + p -= cpu / 32;
107490 + return (const cpumask_t *)p;
107491 +}
107492 +# 341 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h"
107493 +static inline __attribute__((always_inline)) int __cpumask_scnprintf(char *buf, int len,
107494 +     const cpumask_t *srcp, int nbits)
107495 +{
107496 + return bitmap_scnprintf(buf, len, srcp->bits, nbits);
107497 +}
107498 +
107499 +
107500 +
107501 +static inline __attribute__((always_inline)) int __cpumask_parse_user(const char *buf, int len,
107502 +     cpumask_t *dstp, int nbits)
107503 +{
107504 + return bitmap_parse_user(buf, len, dstp->bits, nbits);
107505 +}
107506 +
107507 +
107508 +
107509 +static inline __attribute__((always_inline)) int __cpulist_scnprintf(char *buf, int len,
107510 +     const cpumask_t *srcp, int nbits)
107511 +{
107512 + return bitmap_scnlistprintf(buf, len, srcp->bits, nbits);
107513 +}
107514 +
107515 +
107516 +static inline __attribute__((always_inline)) int __cpulist_parse(const char *buf, cpumask_t *dstp, int nbits)
107517 +{
107518 + return bitmap_parselist(buf, dstp->bits, nbits);
107519 +}
107520 +
107521 +
107522 +
107523 +static inline __attribute__((always_inline)) int __cpu_remap(int oldbit,
107524 +  const cpumask_t *oldp, const cpumask_t *newp, int nbits)
107525 +{
107526 + return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits);
107527 +}
107528 +
107529 +
107530 +
107531 +static inline __attribute__((always_inline)) void __cpus_remap(cpumask_t *dstp, const cpumask_t *srcp,
107532 +  const cpumask_t *oldp, const cpumask_t *newp, int nbits)
107533 +{
107534 + bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits);
107535 +}
107536 +
107537 +
107538 +
107539 +static inline __attribute__((always_inline)) void __cpus_onto(cpumask_t *dstp, const cpumask_t *origp,
107540 +  const cpumask_t *relmapp, int nbits)
107541 +{
107542 + bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits);
107543 +}
107544 +
107545 +
107546 +
107547 +static inline __attribute__((always_inline)) void __cpus_fold(cpumask_t *dstp, const cpumask_t *origp,
107548 +  int sz, int nbits)
107549 +{
107550 + bitmap_fold(dstp->bits, origp->bits, sz, nbits);
107551 +}
107552 +# 412 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h"
107553 +extern int nr_cpu_ids;
107554 +int __first_cpu(const cpumask_t *srcp);
107555 +int __next_cpu(int n, const cpumask_t *srcp);
107556 +int __any_online_cpu(const cpumask_t *mask);
107557 +# 501 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cpumask.h"
107558 +extern cpumask_t cpu_possible_map;
107559 +extern cpumask_t cpu_online_map;
107560 +extern cpumask_t cpu_present_map;
107561 +extern cpumask_t cpu_active_map;
107562 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2
107563 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/kmap_types.h" 1
107564 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/kmap_types.h"
107565 +enum km_type {
107566 + KM_BOUNCE_READ,
107567 + KM_SKB_SUNRPC_DATA,
107568 + KM_SKB_DATA_SOFTIRQ,
107569 + KM_USER0,
107570 + KM_USER1,
107571 + KM_BIO_SRC_IRQ,
107572 + KM_BIO_DST_IRQ,
107573 + KM_PTE0,
107574 + KM_PTE1,
107575 + KM_IRQ0,
107576 + KM_IRQ1,
107577 + KM_SOFTIRQ0,
107578 + KM_SOFTIRQ1,
107579 + KM_TYPE_NR
107580 +};
107581 +# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2
107582 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h" 1
107583 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h"
107584 +struct desc_struct {
107585 + union {
107586 +  struct {
107587 +   unsigned int a;
107588 +   unsigned int b;
107589 +  };
107590 +  struct {
107591 +   u16 limit0;
107592 +   u16 base0;
107593 +   unsigned base1: 8, type: 4, s: 1, dpl: 2, p: 1;
107594 +   unsigned limit: 4, avl: 1, l: 1, d: 1, g: 1, base2: 8;
107595 +  };
107596 + };
107597 +} __attribute__((packed));
107598 +
107599 +enum {
107600 + GATE_INTERRUPT = 0xE,
107601 + GATE_TRAP = 0xF,
107602 + GATE_CALL = 0xC,
107603 + GATE_TASK = 0x5,
107604 +};
107605 +
107606 +
107607 +struct gate_struct64 {
107608 + u16 offset_low;
107609 + u16 segment;
107610 + unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1;
107611 + u16 offset_middle;
107612 + u32 offset_high;
107613 + u32 zero1;
107614 +} __attribute__((packed));
107615 +
107616 +
107617 +
107618 +
107619 +
107620 +enum {
107621 + DESC_TSS = 0x9,
107622 + DESC_LDT = 0x2,
107623 + DESCTYPE_S = 0x10,
107624 +};
107625 +
107626 +
107627 +struct ldttss_desc64 {
107628 + u16 limit0;
107629 + u16 base0;
107630 + unsigned base1 : 8, type : 5, dpl : 2, p : 1;
107631 + unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;
107632 + u32 base3;
107633 + u32 zero1;
107634 +} __attribute__((packed));
107635 +# 81 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc_defs.h"
107636 +typedef struct desc_struct gate_desc;
107637 +typedef struct desc_struct ldt_desc;
107638 +typedef struct desc_struct tss_desc;
107639 +
107640 +
107641 +
107642 +
107643 +struct desc_ptr {
107644 + unsigned short size;
107645 + unsigned long address;
107646 +} __attribute__((packed)) ;
107647 +# 35 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h" 2
107648 +
107649 +struct page;
107650 +struct thread_struct;
107651 +struct desc_ptr;
107652 +struct tss_struct;
107653 +struct mm_struct;
107654 +struct desc_struct;
107655 +
107656 +
107657 +struct pv_info {
107658 + unsigned int kernel_rpl;
107659 + int shared_kernel_pmd;
107660 + int paravirt_enabled;
107661 + const char *name;
107662 +};
107663 +
107664 +struct pv_init_ops {
107665 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
107666 + unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
107667 +     unsigned long addr, unsigned len);
107668 +
107669 +
107670 + void (*arch_setup)(void);
107671 + char *(*memory_setup)(void);
107672 + void (*post_allocator_init)(void);
107673 +
107674 +
107675 + void (*banner)(void);
107676 +};
107677 +
107678 +
107679 +struct pv_lazy_ops {
107680 +
107681 + void (*enter)(void);
107682 + void (*leave)(void);
107683 +};
107684 +
107685 +struct pv_time_ops {
107686 + void (*time_init)(void);
107687 +
107688 +
107689 + unsigned long (*get_wallclock)(void);
107690 + int (*set_wallclock)(unsigned long);
107691 +
107692 + unsigned long long (*sched_clock)(void);
107693 + unsigned long (*get_tsc_khz)(void);
107694 +};
107695 +
107696 +struct pv_cpu_ops {
107697 +
107698 + unsigned long (*get_debugreg)(int regno);
107699 + void (*set_debugreg)(int regno, unsigned long value);
107700 +
107701 + void (*clts)(void);
107702 +
107703 + unsigned long (*read_cr0)(void);
107704 + void (*write_cr0)(unsigned long);
107705 +
107706 + unsigned long (*read_cr4_safe)(void);
107707 + unsigned long (*read_cr4)(void);
107708 + void (*write_cr4)(unsigned long);
107709 +
107710 +
107711 +
107712 +
107713 +
107714 +
107715 +
107716 + void (*load_tr_desc)(void);
107717 + void (*load_gdt)(const struct desc_ptr *);
107718 + void (*load_idt)(const struct desc_ptr *);
107719 + void (*store_gdt)(struct desc_ptr *);
107720 + void (*store_idt)(struct desc_ptr *);
107721 + void (*set_ldt)(const void *desc, unsigned entries);
107722 + unsigned long (*store_tr)(void);
107723 + void (*load_tls)(struct thread_struct *t, unsigned int cpu);
107724 +
107725 +
107726 +
107727 + void (*write_ldt_entry)(struct desc_struct *ldt, int entrynum,
107728 +    const void *desc);
107729 + void (*write_gdt_entry)(struct desc_struct *,
107730 +    int entrynum, const void *desc, int size);
107731 + void (*write_idt_entry)(gate_desc *,
107732 +    int entrynum, const gate_desc *gate);
107733 + void (*load_sp0)(struct tss_struct *tss, struct thread_struct *t);
107734 +
107735 + void (*set_iopl_mask)(unsigned mask);
107736 +
107737 + void (*wbinvd)(void);
107738 + void (*io_delay)(void);
107739 +
107740 +
107741 + void (*cpuid)(unsigned int *eax, unsigned int *ebx,
107742 +        unsigned int *ecx, unsigned int *edx);
107743 +
107744 +
107745 +
107746 + u64 (*read_msr)(unsigned int msr, int *err);
107747 + int (*write_msr)(unsigned int msr, unsigned low, unsigned high);
107748 +
107749 + u64 (*read_tsc)(void);
107750 + u64 (*read_pmc)(int counter);
107751 + unsigned long long (*read_tscp)(unsigned int *aux);
107752 +
107753 +
107754 +
107755 +
107756 +
107757 +
107758 +
107759 + void (*irq_enable_sysexit)(void);
107760 +
107761 +
107762 +
107763 +
107764 +
107765 +
107766 +
107767 + void (*usergs_sysret64)(void);
107768 +
107769 +
107770 +
107771 +
107772 +
107773 +
107774 +
107775 + void (*usergs_sysret32)(void);
107776 +
107777 +
107778 +
107779 + void (*iret)(void);
107780 +
107781 + void (*swapgs)(void);
107782 +
107783 + struct pv_lazy_ops lazy_mode;
107784 +};
107785 +
107786 +struct pv_irq_ops {
107787 + void (*init_IRQ)(void);
107788 +
107789 +
107790 +
107791 +
107792 +
107793 +
107794 +
107795 + unsigned long (*save_fl)(void);
107796 + void (*restore_fl)(unsigned long);
107797 + void (*irq_disable)(void);
107798 + void (*irq_enable)(void);
107799 + void (*safe_halt)(void);
107800 + void (*halt)(void);
107801 +
107802 +
107803 +
107804 +
107805 +};
107806 +
107807 +struct pv_apic_ops {
107808 +
107809 +
107810 +
107811 +
107812 +
107813 + void (*apic_write)(unsigned long reg, u32 v);
107814 + u32 (*apic_read)(unsigned long reg);
107815 + void (*setup_boot_clock)(void);
107816 + void (*setup_secondary_clock)(void);
107817 +
107818 + void (*startup_ipi_hook)(int phys_apicid,
107819 +     unsigned long start_eip,
107820 +     unsigned long start_esp);
107821 +
107822 +};
107823 +
107824 +struct pv_mmu_ops {
107825 +
107826 +
107827 +
107828 +
107829 +
107830 +
107831 + void (*pagetable_setup_start)(pgd_t *pgd_base);
107832 + void (*pagetable_setup_done)(pgd_t *pgd_base);
107833 +
107834 + unsigned long (*read_cr2)(void);
107835 + void (*write_cr2)(unsigned long);
107836 +
107837 + unsigned long (*read_cr3)(void);
107838 + void (*write_cr3)(unsigned long);
107839 +
107840 +
107841 +
107842 +
107843 +
107844 + void (*activate_mm)(struct mm_struct *prev,
107845 +       struct mm_struct *next);
107846 + void (*dup_mmap)(struct mm_struct *oldmm,
107847 +    struct mm_struct *mm);
107848 + void (*exit_mmap)(struct mm_struct *mm);
107849 +
107850 +
107851 +
107852 + void (*flush_tlb_user)(void);
107853 + void (*flush_tlb_kernel)(void);
107854 + void (*flush_tlb_single)(unsigned long addr);
107855 + void (*flush_tlb_others)(const cpumask_t *cpus, struct mm_struct *mm,
107856 +     unsigned long va);
107857 +
107858 +
107859 + int (*pgd_alloc)(struct mm_struct *mm);
107860 + void (*pgd_free)(struct mm_struct *mm, pgd_t *pgd);
107861 +
107862 +
107863 +
107864 +
107865 +
107866 + void (*alloc_pte)(struct mm_struct *mm, u32 pfn);
107867 + void (*alloc_pmd)(struct mm_struct *mm, u32 pfn);
107868 + void (*alloc_pmd_clone)(u32 pfn, u32 clonepfn, u32 start, u32 count);
107869 + void (*alloc_pud)(struct mm_struct *mm, u32 pfn);
107870 + void (*release_pte)(u32 pfn);
107871 + void (*release_pmd)(u32 pfn);
107872 + void (*release_pud)(u32 pfn);
107873 +
107874 +
107875 + void (*set_pte)(pte_t *ptep, pte_t pteval);
107876 + void (*set_pte_at)(struct mm_struct *mm, unsigned long addr,
107877 +      pte_t *ptep, pte_t pteval);
107878 + void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval);
107879 + void (*pte_update)(struct mm_struct *mm, unsigned long addr,
107880 +      pte_t *ptep);
107881 + void (*pte_update_defer)(struct mm_struct *mm,
107882 +     unsigned long addr, pte_t *ptep);
107883 +
107884 + pte_t (*ptep_modify_prot_start)(struct mm_struct *mm, unsigned long addr,
107885 +     pte_t *ptep);
107886 + void (*ptep_modify_prot_commit)(struct mm_struct *mm, unsigned long addr,
107887 +     pte_t *ptep, pte_t pte);
107888 +
107889 + pteval_t (*pte_val)(pte_t);
107890 + pteval_t (*pte_flags)(pte_t);
107891 + pte_t (*make_pte)(pteval_t pte);
107892 +
107893 + pgdval_t (*pgd_val)(pgd_t);
107894 + pgd_t (*make_pgd)(pgdval_t pgd);
107895 +# 315 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
107896 + void *(*kmap_atomic_pte)(struct page *page, enum km_type type);
107897 +
107898 +
107899 + struct pv_lazy_ops lazy_mode;
107900 +
107901 +
107902 +
107903 +
107904 +
107905 + void (*set_fixmap)(unsigned idx,
107906 +      unsigned long phys, pgprot_t flags);
107907 +};
107908 +
107909 +struct raw_spinlock;
107910 +struct pv_lock_ops {
107911 + int (*spin_is_locked)(struct raw_spinlock *lock);
107912 + int (*spin_is_contended)(struct raw_spinlock *lock);
107913 + void (*spin_lock)(struct raw_spinlock *lock);
107914 + int (*spin_trylock)(struct raw_spinlock *lock);
107915 + void (*spin_unlock)(struct raw_spinlock *lock);
107916 +};
107917 +
107918 +
107919 +
107920 +
107921 +struct paravirt_patch_template {
107922 + struct pv_init_ops pv_init_ops;
107923 + struct pv_time_ops pv_time_ops;
107924 + struct pv_cpu_ops pv_cpu_ops;
107925 + struct pv_irq_ops pv_irq_ops;
107926 + struct pv_apic_ops pv_apic_ops;
107927 + struct pv_mmu_ops pv_mmu_ops;
107928 + struct pv_lock_ops pv_lock_ops;
107929 +};
107930 +
107931 +extern struct pv_info pv_info;
107932 +extern struct pv_init_ops pv_init_ops;
107933 +extern struct pv_time_ops pv_time_ops;
107934 +extern struct pv_cpu_ops pv_cpu_ops;
107935 +extern struct pv_irq_ops pv_irq_ops;
107936 +extern struct pv_apic_ops pv_apic_ops;
107937 +extern struct pv_mmu_ops pv_mmu_ops;
107938 +extern struct pv_lock_ops pv_lock_ops;
107939 +# 391 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
107940 +unsigned paravirt_patch_nop(void);
107941 +unsigned paravirt_patch_ignore(unsigned len);
107942 +unsigned paravirt_patch_call(void *insnbuf,
107943 +        const void *target, u16 tgt_clobbers,
107944 +        unsigned long addr, u16 site_clobbers,
107945 +        unsigned len);
107946 +unsigned paravirt_patch_jmp(void *insnbuf, const void *target,
107947 +       unsigned long addr, unsigned len);
107948 +unsigned paravirt_patch_default(u8 type, u16 clobbers, void *insnbuf,
107949 +    unsigned long addr, unsigned len);
107950 +
107951 +unsigned paravirt_patch_insns(void *insnbuf, unsigned len,
107952 +         const char *start, const char *end);
107953 +
107954 +unsigned native_patch(u8 type, u16 clobbers, void *ibuf,
107955 +        unsigned long addr, unsigned len);
107956 +
107957 +int paravirt_disable_iospace(void);
107958 +# 600 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
107959 +static inline __attribute__((always_inline)) int paravirt_enabled(void)
107960 +{
107961 + return pv_info.paravirt_enabled;
107962 +}
107963 +
107964 +static inline __attribute__((always_inline)) void load_sp0(struct tss_struct *tss,
107965 +        struct thread_struct *thread)
107966 +{
107967 + ({ 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" ); });
107968 +}
107969 +
107970 +
107971 +static inline __attribute__((always_inline)) unsigned long get_wallclock(void)
107972 +{
107973 + 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; });
107974 +}
107975 +
107976 +static inline __attribute__((always_inline)) int set_wallclock(unsigned long nowtime)
107977 +{
107978 + 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; });
107979 +}
107980 +
107981 +static inline __attribute__((always_inline)) void (*choose_time_init(void))(void)
107982 +{
107983 + return pv_time_ops.time_init;
107984 +}
107985 +
107986 +
107987 +static inline __attribute__((always_inline)) void __cpuid(unsigned int *eax, unsigned int *ebx,
107988 +      unsigned int *ecx, unsigned int *edx)
107989 +{
107990 + ({ 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" ); });
107991 +}
107992 +
107993 +
107994 +
107995 +
107996 +static inline __attribute__((always_inline)) unsigned long paravirt_get_debugreg(int reg)
107997 +{
107998 + 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; });
107999 +}
108000 +
108001 +static inline __attribute__((always_inline)) void set_debugreg(unsigned long val, int reg)
108002 +{
108003 + ({ 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" ); });
108004 +}
108005 +
108006 +static inline __attribute__((always_inline)) void clts(void)
108007 +{
108008 + ({ 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" ); });
108009 +}
108010 +
108011 +static inline __attribute__((always_inline)) unsigned long read_cr0(void)
108012 +{
108013 + 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; });
108014 +}
108015 +
108016 +static inline __attribute__((always_inline)) void write_cr0(unsigned long x)
108017 +{
108018 + ({ 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" ); });
108019 +}
108020 +
108021 +static inline __attribute__((always_inline)) unsigned long read_cr2(void)
108022 +{
108023 + 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; });
108024 +}
108025 +
108026 +static inline __attribute__((always_inline)) void write_cr2(unsigned long x)
108027 +{
108028 + ({ 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" ); });
108029 +}
108030 +
108031 +static inline __attribute__((always_inline)) unsigned long read_cr3(void)
108032 +{
108033 + 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; });
108034 +}
108035 +
108036 +static inline __attribute__((always_inline)) void write_cr3(unsigned long x)
108037 +{
108038 + ({ 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" ); });
108039 +}
108040 +
108041 +static inline __attribute__((always_inline)) unsigned long read_cr4(void)
108042 +{
108043 + 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; });
108044 +}
108045 +static inline __attribute__((always_inline)) unsigned long read_cr4_safe(void)
108046 +{
108047 + 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; });
108048 +}
108049 +
108050 +static inline __attribute__((always_inline)) void write_cr4(unsigned long x)
108051 +{
108052 + ({ 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" ); });
108053 +}
108054 +# 708 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108055 +static inline __attribute__((always_inline)) void raw_safe_halt(void)
108056 +{
108057 + ({ 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" ); });
108058 +}
108059 +
108060 +static inline __attribute__((always_inline)) void halt(void)
108061 +{
108062 + ({ 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" ); });
108063 +}
108064 +
108065 +static inline __attribute__((always_inline)) void wbinvd(void)
108066 +{
108067 + ({ 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" ); });
108068 +}
108069 +
108070 +
108071 +
108072 +static inline __attribute__((always_inline)) u64 paravirt_read_msr(unsigned msr, int *err)
108073 +{
108074 + 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; });
108075 +}
108076 +static inline __attribute__((always_inline)) int paravirt_write_msr(unsigned msr, unsigned low, unsigned high)
108077 +{
108078 + 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; });
108079 +}
108080 +# 767 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108081 +static inline __attribute__((always_inline)) int rdmsrl_safe(unsigned msr, unsigned long long *p)
108082 +{
108083 + int err;
108084 +
108085 + *p = paravirt_read_msr(msr, &err);
108086 + return err;
108087 +}
108088 +
108089 +static inline __attribute__((always_inline)) u64 paravirt_read_tsc(void)
108090 +{
108091 + 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; });
108092 +}
108093 +# 788 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108094 +static inline __attribute__((always_inline)) unsigned long long paravirt_sched_clock(void)
108095 +{
108096 + 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; });
108097 +}
108098 +
108099 +
108100 +static inline __attribute__((always_inline)) unsigned long long paravirt_read_pmc(int counter)
108101 +{
108102 + 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; });
108103 +}
108104 +# 806 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108105 +static inline __attribute__((always_inline)) unsigned long long paravirt_rdtscp(unsigned int *aux)
108106 +{
108107 + 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; });
108108 +}
108109 +# 827 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108110 +static inline __attribute__((always_inline)) void load_TR_desc(void)
108111 +{
108112 + ({ 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" ); });
108113 +}
108114 +static inline __attribute__((always_inline)) void load_gdt(const struct desc_ptr *dtr)
108115 +{
108116 + ({ 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" ); });
108117 +}
108118 +static inline __attribute__((always_inline)) void load_idt(const struct desc_ptr *dtr)
108119 +{
108120 + ({ 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" ); });
108121 +}
108122 +static inline __attribute__((always_inline)) void set_ldt(const void *addr, unsigned entries)
108123 +{
108124 + ({ 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" ); });
108125 +}
108126 +static inline __attribute__((always_inline)) void store_gdt(struct desc_ptr *dtr)
108127 +{
108128 + ({ 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" ); });
108129 +}
108130 +static inline __attribute__((always_inline)) void store_idt(struct desc_ptr *dtr)
108131 +{
108132 + ({ 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" ); });
108133 +}
108134 +static inline __attribute__((always_inline)) unsigned long paravirt_store_tr(void)
108135 +{
108136 + 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; });
108137 +}
108138 +
108139 +static inline __attribute__((always_inline)) void load_TLS(struct thread_struct *t, unsigned cpu)
108140 +{
108141 + ({ 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" ); });
108142 +}
108143 +# 868 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108144 +static inline __attribute__((always_inline)) void write_ldt_entry(struct desc_struct *dt, int entry,
108145 +       const void *desc)
108146 +{
108147 + ({ 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" ); });
108148 +}
108149 +
108150 +static inline __attribute__((always_inline)) void write_gdt_entry(struct desc_struct *dt, int entry,
108151 +       void *desc, int type)
108152 +{
108153 + ({ 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" ); });
108154 +}
108155 +
108156 +static inline __attribute__((always_inline)) void write_idt_entry(gate_desc *dt, int entry, const gate_desc *g)
108157 +{
108158 + ({ 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" ); });
108159 +}
108160 +static inline __attribute__((always_inline)) void set_iopl_mask(unsigned mask)
108161 +{
108162 + ({ 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" ); });
108163 +}
108164 +
108165 +
108166 +static inline __attribute__((always_inline)) void slow_down_io(void)
108167 +{
108168 + pv_cpu_ops.io_delay();
108169 +
108170 +
108171 +
108172 +
108173 +
108174 +}
108175 +
108176 +
108177 +
108178 +
108179 +
108180 +static inline __attribute__((always_inline)) void apic_write(unsigned long reg, u32 v)
108181 +{
108182 + ({ 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" ); });
108183 +}
108184 +
108185 +static inline __attribute__((always_inline)) u32 apic_read(unsigned long reg)
108186 +{
108187 + 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; });
108188 +}
108189 +
108190 +static inline __attribute__((always_inline)) void setup_boot_clock(void)
108191 +{
108192 + ({ 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" ); });
108193 +}
108194 +
108195 +static inline __attribute__((always_inline)) void setup_secondary_clock(void)
108196 +{
108197 + ({ 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" ); });
108198 +}
108199 +
108200 +
108201 +static inline __attribute__((always_inline)) void paravirt_post_allocator_init(void)
108202 +{
108203 + if (pv_init_ops.post_allocator_init)
108204 +  (*pv_init_ops.post_allocator_init)();
108205 +}
108206 +
108207 +static inline __attribute__((always_inline)) void paravirt_pagetable_setup_start(pgd_t *base)
108208 +{
108209 + (*pv_mmu_ops.pagetable_setup_start)(base);
108210 +}
108211 +
108212 +static inline __attribute__((always_inline)) void paravirt_pagetable_setup_done(pgd_t *base)
108213 +{
108214 + (*pv_mmu_ops.pagetable_setup_done)(base);
108215 +}
108216 +
108217 +
108218 +static inline __attribute__((always_inline)) void startup_ipi_hook(int phys_apicid, unsigned long start_eip,
108219 +        unsigned long start_esp)
108220 +{
108221 + ({ 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" ); });
108222 +
108223 +}
108224 +
108225 +
108226 +static inline __attribute__((always_inline)) void paravirt_activate_mm(struct mm_struct *prev,
108227 +     struct mm_struct *next)
108228 +{
108229 + ({ 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" ); });
108230 +}
108231 +
108232 +static inline __attribute__((always_inline)) void arch_dup_mmap(struct mm_struct *oldmm,
108233 +     struct mm_struct *mm)
108234 +{
108235 + ({ 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" ); });
108236 +}
108237 +
108238 +static inline __attribute__((always_inline)) void arch_exit_mmap(struct mm_struct *mm)
108239 +{
108240 + ({ 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" ); });
108241 +}
108242 +
108243 +static inline __attribute__((always_inline)) void __flush_tlb(void)
108244 +{
108245 + ({ 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" ); });
108246 +}
108247 +static inline __attribute__((always_inline)) void __flush_tlb_global(void)
108248 +{
108249 + ({ 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" ); });
108250 +}
108251 +static inline __attribute__((always_inline)) void __flush_tlb_single(unsigned long addr)
108252 +{
108253 + ({ 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" ); });
108254 +}
108255 +
108256 +static inline __attribute__((always_inline)) void flush_tlb_others(cpumask_t cpumask, struct mm_struct *mm,
108257 +        unsigned long va)
108258 +{
108259 + ({ 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" ); });
108260 +}
108261 +
108262 +static inline __attribute__((always_inline)) int paravirt_pgd_alloc(struct mm_struct *mm)
108263 +{
108264 + 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; });
108265 +}
108266 +
108267 +static inline __attribute__((always_inline)) void paravirt_pgd_free(struct mm_struct *mm, pgd_t *pgd)
108268 +{
108269 + ({ 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" ); });
108270 +}
108271 +
108272 +static inline __attribute__((always_inline)) void paravirt_alloc_pte(struct mm_struct *mm, unsigned pfn)
108273 +{
108274 + ({ 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" ); });
108275 +}
108276 +static inline __attribute__((always_inline)) void paravirt_release_pte(unsigned pfn)
108277 +{
108278 + ({ 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" ); });
108279 +}
108280 +
108281 +static inline __attribute__((always_inline)) void paravirt_alloc_pmd(struct mm_struct *mm, unsigned pfn)
108282 +{
108283 + ({ 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" ); });
108284 +}
108285 +
108286 +static inline __attribute__((always_inline)) void paravirt_alloc_pmd_clone(unsigned pfn, unsigned clonepfn,
108287 +         unsigned start, unsigned count)
108288 +{
108289 + ({ 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" ); });
108290 +}
108291 +static inline __attribute__((always_inline)) void paravirt_release_pmd(unsigned pfn)
108292 +{
108293 + ({ 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" ); });
108294 +}
108295 +
108296 +static inline __attribute__((always_inline)) void paravirt_alloc_pud(struct mm_struct *mm, unsigned pfn)
108297 +{
108298 + ({ 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" ); });
108299 +}
108300 +static inline __attribute__((always_inline)) void paravirt_release_pud(unsigned pfn)
108301 +{
108302 + ({ 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" ); });
108303 +}
108304 +
108305 +
108306 +static inline __attribute__((always_inline)) void *kmap_atomic_pte(struct page *page, enum km_type type)
108307 +{
108308 + unsigned long ret;
108309 + 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; });
108310 + return (void *)ret;
108311 +}
108312 +
108313 +
108314 +static inline __attribute__((always_inline)) void pte_update(struct mm_struct *mm, unsigned long addr,
108315 +         pte_t *ptep)
108316 +{
108317 + ({ 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" ); });
108318 +}
108319 +
108320 +static inline __attribute__((always_inline)) void pte_update_defer(struct mm_struct *mm, unsigned long addr,
108321 +        pte_t *ptep)
108322 +{
108323 + ({ 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" ); });
108324 +}
108325 +
108326 +static inline __attribute__((always_inline)) pte_t __pte(pteval_t val)
108327 +{
108328 + pteval_t ret;
108329 +
108330 + if (sizeof(pteval_t) > sizeof(long))
108331 +  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; });
108332 +
108333 +
108334 + else
108335 +  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; });
108336 +
108337 +
108338 +
108339 + return (pte_t) ({pte_t duh; duh.pte = ret;duh;});
108340 +}
108341 +
108342 +static inline __attribute__((always_inline)) pteval_t pte_val(pte_t pte)
108343 +{
108344 + pteval_t ret;
108345 +
108346 + if (sizeof(pteval_t) > sizeof(long))
108347 +  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; });
108348 +
108349 + else
108350 +  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; });
108351 +
108352 +
108353 + return ret;
108354 +}
108355 +
108356 +static inline __attribute__((always_inline)) pteval_t pte_flags(pte_t pte)
108357 +{
108358 + pteval_t ret;
108359 +
108360 + if (sizeof(pteval_t) > sizeof(long))
108361 +  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; });
108362 +
108363 + else
108364 +  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; });
108365 +
108366 +
108367 +
108368 +
108369 +
108370 + return ret;
108371 +}
108372 +
108373 +static inline __attribute__((always_inline)) pgd_t __pgd(pgdval_t val)
108374 +{
108375 + pgdval_t ret;
108376 +
108377 + if (sizeof(pgdval_t) > sizeof(long))
108378 +  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; });
108379 +
108380 + else
108381 +  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; });
108382 +
108383 +
108384 + return (pgd_t) { ret };
108385 +}
108386 +
108387 +static inline __attribute__((always_inline)) pgdval_t pgd_val(pgd_t pgd)
108388 +{
108389 + pgdval_t ret;
108390 +
108391 + if (sizeof(pgdval_t) > sizeof(long))
108392 +  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; });
108393 +
108394 + else
108395 +  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; });
108396 +
108397 +
108398 + return ret;
108399 +}
108400 +
108401 +
108402 +static inline __attribute__((always_inline)) pte_t ptep_modify_prot_start(struct mm_struct *mm, unsigned long addr,
108403 +        pte_t *ptep)
108404 +{
108405 + pteval_t ret;
108406 +
108407 + 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; });
108408 +
108409 +
108410 + return (pte_t) ({pte_t duh; duh.pte = ret;duh;});
108411 +}
108412 +
108413 +static inline __attribute__((always_inline)) void ptep_modify_prot_commit(struct mm_struct *mm, unsigned long addr,
108414 +        pte_t *ptep, pte_t pte)
108415 +{
108416 + if (sizeof(pteval_t) > sizeof(long))
108417 +
108418 +  pv_mmu_ops.ptep_modify_prot_commit(mm, addr, ptep, pte);
108419 + else
108420 +  ({ 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" ); });
108421 +
108422 +}
108423 +
108424 +static inline __attribute__((always_inline)) void set_pte(pte_t *ptep, pte_t pte)
108425 +{
108426 + if (sizeof(pteval_t) > sizeof(long))
108427 +  ({ 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" ); });
108428 +
108429 + else
108430 +  ({ 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" ); });
108431 +
108432 +}
108433 +
108434 +static inline __attribute__((always_inline)) void set_pte_at(struct mm_struct *mm, unsigned long addr,
108435 +         pte_t *ptep, pte_t pte)
108436 +{
108437 + if (sizeof(pteval_t) > sizeof(long))
108438 +
108439 +  pv_mmu_ops.set_pte_at(mm, addr, ptep, pte);
108440 + else
108441 +  ({ 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" ); });
108442 +}
108443 +
108444 +static inline __attribute__((always_inline)) void set_pmd(pmd_t *pmdp, pmd_t pmd)
108445 +{
108446 + pmdval_t val = native_pmd_val(pmd);
108447 +
108448 + if (sizeof(pmdval_t) > sizeof(long))
108449 +  ({ 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" ); });
108450 + else
108451 +  ({ 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" ); });
108452 +}
108453 +# 1300 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108454 +static inline __attribute__((always_inline)) void set_pte_atomic(pte_t *ptep, pte_t pte)
108455 +{
108456 + set_pte(ptep, pte);
108457 +}
108458 +
108459 +static inline __attribute__((always_inline)) void set_pte_present(struct mm_struct *mm, unsigned long addr,
108460 +       pte_t *ptep, pte_t pte)
108461 +{
108462 + set_pte(ptep, pte);
108463 +}
108464 +
108465 +static inline __attribute__((always_inline)) void pte_clear(struct mm_struct *mm, unsigned long addr,
108466 +        pte_t *ptep)
108467 +{
108468 + set_pte_at(mm, addr, ptep, __pte(0));
108469 +}
108470 +# 1326 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108471 +enum paravirt_lazy_mode {
108472 + PARAVIRT_LAZY_NONE,
108473 + PARAVIRT_LAZY_MMU,
108474 + PARAVIRT_LAZY_CPU,
108475 +};
108476 +
108477 +enum paravirt_lazy_mode paravirt_get_lazy_mode(void);
108478 +void paravirt_enter_lazy_cpu(void);
108479 +void paravirt_leave_lazy_cpu(void);
108480 +void paravirt_enter_lazy_mmu(void);
108481 +void paravirt_leave_lazy_mmu(void);
108482 +void paravirt_leave_lazy(enum paravirt_lazy_mode mode);
108483 +
108484 +
108485 +static inline __attribute__((always_inline)) void arch_enter_lazy_cpu_mode(void)
108486 +{
108487 + ({ 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" ); });
108488 +}
108489 +
108490 +static inline __attribute__((always_inline)) void arch_leave_lazy_cpu_mode(void)
108491 +{
108492 + ({ 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" ); });
108493 +}
108494 +
108495 +static inline __attribute__((always_inline)) void arch_flush_lazy_cpu_mode(void)
108496 +{
108497 + if (__builtin_expect(!!(paravirt_get_lazy_mode() == PARAVIRT_LAZY_CPU), 0)) {
108498 +  arch_leave_lazy_cpu_mode();
108499 +  arch_enter_lazy_cpu_mode();
108500 + }
108501 +}
108502 +
108503 +
108504 +
108505 +static inline __attribute__((always_inline)) void arch_enter_lazy_mmu_mode(void)
108506 +{
108507 + ({ 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" ); });
108508 +}
108509 +
108510 +static inline __attribute__((always_inline)) void arch_leave_lazy_mmu_mode(void)
108511 +{
108512 + ({ 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" ); });
108513 +}
108514 +
108515 +static inline __attribute__((always_inline)) void arch_flush_lazy_mmu_mode(void)
108516 +{
108517 + if (__builtin_expect(!!(paravirt_get_lazy_mode() == PARAVIRT_LAZY_MMU), 0)) {
108518 +  arch_leave_lazy_mmu_mode();
108519 +  arch_enter_lazy_mmu_mode();
108520 + }
108521 +}
108522 +
108523 +static inline __attribute__((always_inline)) void __set_fixmap(unsigned idx,
108524 +    unsigned long phys, pgprot_t flags)
108525 +{
108526 + pv_mmu_ops.set_fixmap(idx, phys, flags);
108527 +}
108528 +
108529 +void _paravirt_nop(void);
108530 +
108531 +
108532 +void paravirt_use_bytelocks(void);
108533 +
108534 +
108535 +
108536 +static inline __attribute__((always_inline)) int __raw_spin_is_locked(struct raw_spinlock *lock)
108537 +{
108538 + 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; });
108539 +}
108540 +
108541 +static inline __attribute__((always_inline)) int __raw_spin_is_contended(struct raw_spinlock *lock)
108542 +{
108543 + 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; });
108544 +}
108545 +
108546 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void __raw_spin_lock(struct raw_spinlock *lock)
108547 +{
108548 + ({ 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" ); });
108549 +}
108550 +
108551 +static inline __attribute__((always_inline)) __attribute__((always_inline)) int __raw_spin_trylock(struct raw_spinlock *lock)
108552 +{
108553 + 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; });
108554 +}
108555 +
108556 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void __raw_spin_unlock(struct raw_spinlock *lock)
108557 +{
108558 + ({ 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" ); });
108559 +}
108560 +
108561 +
108562 +
108563 +
108564 +struct paravirt_patch_site {
108565 + u8 *instr;
108566 + u8 instrtype;
108567 + u8 len;
108568 + u16 clobbers;
108569 +};
108570 +
108571 +extern struct paravirt_patch_site __parainstructions[],
108572 + __parainstructions_end[];
108573 +# 1445 "/d/kernels/linux-2.6.27.10-clickport/include/asm/paravirt.h"
108574 +static inline __attribute__((always_inline)) unsigned long __raw_local_save_flags(void)
108575 +{
108576 + unsigned long f;
108577 +
108578 + 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"
108579 +
108580 +
108581 +       : "=a"(f)
108582 +       : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.save_fl) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.save_fl),
108583 +         [paravirt_clobber] "i" ((1 << 0))
108584 +       : "memory", "cc" );
108585 + return f;
108586 +}
108587 +
108588 +static inline __attribute__((always_inline)) void raw_local_irq_restore(unsigned long f)
108589 +{
108590 + 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"
108591 +
108592 +
108593 +       : "=a"(f)
108594 +       : "0"(f),
108595 +         [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.restore_fl) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.restore_fl),
108596 +         [paravirt_clobber] "i" ((1 << 0))
108597 +       : "memory", "cc" );
108598 +}
108599 +
108600 +static inline __attribute__((always_inline)) void raw_local_irq_disable(void)
108601 +{
108602 + 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"
108603 +
108604 +
108605 +       :
108606 +       : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.irq_disable) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.irq_disable),
108607 +         [paravirt_clobber] "i" ((1 << 0))
108608 +       : "memory", "eax", "cc" );
108609 +}
108610 +
108611 +static inline __attribute__((always_inline)) void raw_local_irq_enable(void)
108612 +{
108613 + 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"
108614 +
108615 +
108616 +       :
108617 +       : [paravirt_typenum] "i" ((__builtin_offsetof(struct paravirt_patch_template,pv_irq_ops.irq_enable) / sizeof(void *))), [paravirt_opptr] "m" (pv_irq_ops.irq_enable),
108618 +         [paravirt_clobber] "i" ((1 << 0))
108619 +       : "memory", "eax", "cc" );
108620 +}
108621 +
108622 +static inline __attribute__((always_inline)) unsigned long __raw_local_irq_save(void)
108623 +{
108624 + unsigned long f;
108625 +
108626 + f = __raw_local_save_flags();
108627 + raw_local_irq_disable();
108628 + return f;
108629 +}
108630 +# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
108631 +# 196 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h"
108632 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/memory_model.h" 1
108633 +# 197 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
108634 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/page.h" 1
108635 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/page.h"
108636 +static __inline__ __attribute__((always_inline)) __attribute__((__const__)) int get_order(unsigned long size)
108637 +{
108638 + int order;
108639 +
108640 + size = (size - 1) >> (12 - 1);
108641 + order = -1;
108642 + do {
108643 +  size >>= 1;
108644 +  order++;
108645 + } while (size);
108646 + return order;
108647 +}
108648 +# 198 "/d/kernels/linux-2.6.27.10-clickport/include/asm/page.h" 2
108649 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 2
108650 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h"
108651 +struct task_struct;
108652 +struct exec_domain;
108653 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 1
108654 +
108655 +
108656 +
108657 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor-flags.h" 1
108658 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
108659 +
108660 +
108661 +struct task_struct;
108662 +struct mm_struct;
108663 +
108664 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" 1
108665 +# 62 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h"
108666 +struct vm86_regs {
108667 +
108668 +
108669 +
108670 + long ebx;
108671 + long ecx;
108672 + long edx;
108673 + long esi;
108674 + long edi;
108675 + long ebp;
108676 + long eax;
108677 + long __null_ds;
108678 + long __null_es;
108679 + long __null_fs;
108680 + long __null_gs;
108681 + long orig_eax;
108682 + long eip;
108683 + unsigned short cs, __csh;
108684 + long eflags;
108685 + long esp;
108686 + unsigned short ss, __ssh;
108687 +
108688 +
108689 +
108690 + unsigned short es, __esh;
108691 + unsigned short ds, __dsh;
108692 + unsigned short fs, __fsh;
108693 + unsigned short gs, __gsh;
108694 +};
108695 +
108696 +struct revectored_struct {
108697 + unsigned long __map[8];
108698 +};
108699 +
108700 +struct vm86_struct {
108701 + struct vm86_regs regs;
108702 + unsigned long flags;
108703 + unsigned long screen_bitmap;
108704 + unsigned long cpu_type;
108705 + struct revectored_struct int_revectored;
108706 + struct revectored_struct int21_revectored;
108707 +};
108708 +
108709 +
108710 +
108711 +
108712 +
108713 +
108714 +struct vm86plus_info_struct {
108715 + unsigned long force_return_for_pic:1;
108716 + unsigned long vm86dbg_active:1;
108717 + unsigned long vm86dbg_TFpendig:1;
108718 + unsigned long unused:28;
108719 + unsigned long is_vm86pus:1;
108720 + unsigned char vm86dbg_intxxtab[32];
108721 +};
108722 +struct vm86plus_struct {
108723 + struct vm86_regs regs;
108724 + unsigned long flags;
108725 + unsigned long screen_bitmap;
108726 + unsigned long cpu_type;
108727 + struct revectored_struct int_revectored;
108728 + struct revectored_struct int21_revectored;
108729 + struct vm86plus_info_struct vm86plus;
108730 +};
108731 +
108732 +
108733 +
108734 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 1
108735 +
108736 +
108737 +
108738 +
108739 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace-abi.h" 1
108740 +# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace-abi.h"
108741 +struct ptrace_bts_config {
108742 +
108743 + __u32 size;
108744 +
108745 + __u32 flags;
108746 +
108747 + __u32 signal;
108748 +
108749 + __u32 bts_size;
108750 +};
108751 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2
108752 +
108753 +
108754 +
108755 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h" 1
108756 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h"
108757 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/init.h" 1
108758 +# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/init.h"
108759 +typedef int (*initcall_t)(void);
108760 +typedef void (*exitcall_t)(void);
108761 +
108762 +extern initcall_t __con_initcall_start[], __con_initcall_end[];
108763 +extern initcall_t __security_initcall_start[], __security_initcall_end[];
108764 +
108765 +
108766 +extern int do_one_initcall(initcall_t fn);
108767 +extern char __attribute__ ((__section__(".init.data"))) boot_command_line[];
108768 +extern char *saved_command_line;
108769 +extern unsigned int reset_devices;
108770 +
108771 +
108772 +void setup_arch(char **);
108773 +void prepare_namespace(void);
108774 +
108775 +extern void (*late_time_init)(void);
108776 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ds.h" 2
108777 +
108778 +struct cpuinfo_x86;
108779 +
108780 +
108781 +
108782 +
108783 +
108784 +
108785 +
108786 +enum bts_qualifier {
108787 + BTS_INVALID = 0,
108788 + BTS_BRANCH,
108789 + BTS_TASK_ARRIVES,
108790 + BTS_TASK_DEPARTS
108791 +};
108792 +
108793 +struct bts_struct {
108794 + u64 qualifier;
108795 + union {
108796 +
108797 +  struct {
108798 +   u64 from_ip;
108799 +   u64 to_ip;
108800 +  } lbr;
108801 +
108802 +
108803 +  u64 jiffies;
108804 + } variant;
108805 +};
108806 +
108807 +
108808 +
108809 +
108810 +
108811 +extern int ds_allocate(void **, size_t);
108812 +extern int ds_free(void **);
108813 +extern int ds_get_bts_size(void *);
108814 +extern int ds_get_bts_end(void *);
108815 +extern int ds_get_bts_index(void *);
108816 +extern int ds_set_overflow(void *, int);
108817 +extern int ds_get_overflow(void *);
108818 +extern int ds_clear(void *);
108819 +extern int ds_read_bts(void *, int, struct bts_struct *);
108820 +extern int ds_write_bts(void *, const struct bts_struct *);
108821 +extern unsigned long ds_debugctl_mask(void);
108822 +extern void __attribute__ ((__section__(".cpuinit.text"))) ds_init_intel(struct cpuinfo_x86 *c);
108823 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2
108824 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/segment.h" 1
108825 +# 211 "/d/kernels/linux-2.6.27.10-clickport/include/asm/segment.h"
108826 +extern const char early_idt_handlers[32][10];
108827 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h" 2
108828 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h"
108829 +struct pt_regs {
108830 + unsigned long bx;
108831 + unsigned long cx;
108832 + unsigned long dx;
108833 + unsigned long si;
108834 + unsigned long di;
108835 + unsigned long bp;
108836 + unsigned long ax;
108837 + unsigned long ds;
108838 + unsigned long es;
108839 + unsigned long fs;
108840 +
108841 + unsigned long orig_ax;
108842 + unsigned long ip;
108843 + unsigned long cs;
108844 + unsigned long flags;
108845 + unsigned long sp;
108846 + unsigned long ss;
108847 +};
108848 +# 135 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h"
108849 +struct task_struct;
108850 +
108851 +extern void ptrace_bts_take_timestamp(struct task_struct *, enum bts_qualifier);
108852 +
108853 +extern unsigned long profile_pc(struct pt_regs *regs);
108854 +
108855 +extern unsigned long
108856 +convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs);
108857 +
108858 +
108859 +extern void send_sigtrap(struct task_struct *tsk, struct pt_regs *regs,
108860 +    int error_code);
108861 +
108862 +
108863 +
108864 +
108865 +static inline __attribute__((always_inline)) unsigned long regs_return_value(struct pt_regs *regs)
108866 +{
108867 + return regs->ax;
108868 +}
108869 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ptrace.h"
108870 +static inline __attribute__((always_inline)) int user_mode(struct pt_regs *regs)
108871 +{
108872 +
108873 + return (regs->cs & 0x3) == 0x3;
108874 +
108875 +
108876 +
108877 +}
108878 +
108879 +static inline __attribute__((always_inline)) int user_mode_vm(struct pt_regs *regs)
108880 +{
108881 +
108882 + return ((regs->cs & 0x3) | (regs->flags & 0x00020000)) >=
108883 +  0x3;
108884 +
108885 +
108886 +
108887 +}
108888 +
108889 +static inline __attribute__((always_inline)) int v8086_mode(struct pt_regs *regs)
108890 +{
108891 +
108892 + return (regs->flags & 0x00020000);
108893 +
108894 +
108895 +
108896 +}
108897 +
108898 +
108899 +
108900 +
108901 +
108902 +
108903 +
108904 +static inline __attribute__((always_inline)) unsigned long kernel_trap_sp(struct pt_regs *regs)
108905 +{
108906 +
108907 + return (unsigned long)regs;
108908 +
108909 +
108910 +
108911 +}
108912 +
108913 +static inline __attribute__((always_inline)) unsigned long instruction_pointer(struct pt_regs *regs)
108914 +{
108915 + return regs->ip;
108916 +}
108917 +
108918 +static inline __attribute__((always_inline)) unsigned long frame_pointer(struct pt_regs *regs)
108919 +{
108920 + return regs->bp;
108921 +}
108922 +
108923 +
108924 +
108925 +
108926 +
108927 +extern void user_enable_single_step(struct task_struct *);
108928 +extern void user_disable_single_step(struct task_struct *);
108929 +
108930 +extern void user_enable_block_step(struct task_struct *);
108931 +
108932 +
108933 +
108934 +
108935 +
108936 +
108937 +struct user_desc;
108938 +extern int do_get_thread_area(struct task_struct *p, int idx,
108939 +         struct user_desc *info);
108940 +extern int do_set_thread_area(struct task_struct *p, int idx,
108941 +         struct user_desc *info, int can_allocate);
108942 +# 131 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h" 2
108943 +# 141 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h"
108944 +struct kernel_vm86_regs {
108945 +
108946 +
108947 +
108948 + struct pt_regs pt;
108949 +
108950 +
108951 +
108952 + unsigned short es, __esh;
108953 + unsigned short ds, __dsh;
108954 + unsigned short fs, __fsh;
108955 + unsigned short gs, __gsh;
108956 +};
108957 +
108958 +struct kernel_vm86_struct {
108959 + struct kernel_vm86_regs regs;
108960 +# 166 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h"
108961 + unsigned long flags;
108962 + unsigned long screen_bitmap;
108963 + unsigned long cpu_type;
108964 + struct revectored_struct int_revectored;
108965 + struct revectored_struct int21_revectored;
108966 + struct vm86plus_info_struct vm86plus;
108967 + struct pt_regs *regs32;
108968 +# 183 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vm86.h"
108969 +};
108970 +
108971 +
108972 +
108973 +void handle_vm86_fault(struct kernel_vm86_regs *, long);
108974 +int handle_vm86_trap(struct kernel_vm86_regs *, long, int);
108975 +struct pt_regs *save_v86_state(struct kernel_vm86_regs *);
108976 +
108977 +struct task_struct;
108978 +void release_vm86_irqs(struct task_struct *);
108979 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
108980 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/math_emu.h" 1
108981 +
108982 +
108983 +
108984 +
108985 +
108986 +
108987 +
108988 +struct info {
108989 + long ___orig_eip;
108990 + long ___ebx;
108991 + long ___ecx;
108992 + long ___edx;
108993 + long ___esi;
108994 + long ___edi;
108995 + long ___ebp;
108996 + long ___eax;
108997 + long ___ds;
108998 + long ___es;
108999 + long ___fs;
109000 + long ___orig_eax;
109001 + long ___eip;
109002 + long ___cs;
109003 + long ___eflags;
109004 + long ___esp;
109005 + long ___ss;
109006 + long ___vm86_es;
109007 + long ___vm86_ds;
109008 + long ___vm86_fs;
109009 + long ___vm86_gs;
109010 +};
109011 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109012 +
109013 +
109014 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sigcontext.h" 1
109015 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sigcontext.h"
109016 +struct _fpreg {
109017 + unsigned short significand[4];
109018 + unsigned short exponent;
109019 +};
109020 +
109021 +struct _fpxreg {
109022 + unsigned short significand[4];
109023 + unsigned short exponent;
109024 + unsigned short padding[3];
109025 +};
109026 +
109027 +struct _xmmreg {
109028 + unsigned long element[4];
109029 +};
109030 +
109031 +struct _fpstate {
109032 +
109033 + unsigned long cw;
109034 + unsigned long sw;
109035 + unsigned long tag;
109036 + unsigned long ipoff;
109037 + unsigned long cssel;
109038 + unsigned long dataoff;
109039 + unsigned long datasel;
109040 + struct _fpreg _st[8];
109041 + unsigned short status;
109042 + unsigned short magic;
109043 +
109044 +
109045 + unsigned long _fxsr_env[6];
109046 + unsigned long mxcsr;
109047 + unsigned long reserved;
109048 + struct _fpxreg _fxsr_st[8];
109049 + struct _xmmreg _xmm[8];
109050 + unsigned long padding[56];
109051 +};
109052 +
109053 +
109054 +
109055 +
109056 +struct sigcontext {
109057 + unsigned short gs, __gsh;
109058 + unsigned short fs, __fsh;
109059 + unsigned short es, __esh;
109060 + unsigned short ds, __dsh;
109061 + unsigned long di;
109062 + unsigned long si;
109063 + unsigned long bp;
109064 + unsigned long sp;
109065 + unsigned long bx;
109066 + unsigned long dx;
109067 + unsigned long cx;
109068 + unsigned long ax;
109069 + unsigned long trapno;
109070 + unsigned long err;
109071 + unsigned long ip;
109072 + unsigned short cs, __csh;
109073 + unsigned long flags;
109074 + unsigned long sp_at_signal;
109075 + unsigned short ss, __ssh;
109076 + struct _fpstate *fpstate;
109077 + unsigned long oldmask;
109078 + unsigned long cr2;
109079 +};
109080 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109081 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/current.h" 1
109082 +
109083 +
109084 +
109085 +
109086 +
109087 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h" 1
109088 +# 105 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h"
109089 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h" 1
109090 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h"
109091 +extern unsigned long __per_cpu_offset[32];
109092 +# 65 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/percpu.h"
109093 +extern void setup_per_cpu_areas(void);
109094 +# 106 "/d/kernels/linux-2.6.27.10-clickport/include/asm/percpu.h" 2
109095 +
109096 +
109097 +extern __typeof__(unsigned long) per_cpu__this_cpu_off;
109098 +
109099 +
109100 +
109101 +extern void __bad_percpu_size(void);
109102 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/current.h" 2
109103 +
109104 +struct task_struct;
109105 +
109106 +extern __typeof__(struct task_struct *) per_cpu__current_task;
109107 +static inline __attribute__((always_inline)) __attribute__((always_inline)) struct task_struct *get_current(void)
109108 +{
109109 + 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__; });
109110 +}
109111 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109112 +
109113 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 1
109114 +
109115 +
109116 +
109117 +
109118 +
109119 +
109120 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 1
109121 +
109122 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h" 1
109123 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h"
109124 +struct __xchg_dummy {
109125 + unsigned long a[100];
109126 +};
109127 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h"
109128 +static inline __attribute__((always_inline)) void __set_64bit(unsigned long long *ptr,
109129 +          unsigned int low, unsigned int high)
109130 +{
109131 + asm volatile("\n1:\t"
109132 +       "movl (%0), %%eax\n\t"
109133 +       "movl 4(%0), %%edx\n\t"
109134 +       "lock ; " "cmpxchg8b (%0)\n\t"
109135 +       "jnz 1b"
109136 +       :
109137 +       : "D"(ptr),
109138 +         "b"(low),
109139 +         "c"(high)
109140 +       : "ax", "dx", "memory");
109141 +}
109142 +
109143 +static inline __attribute__((always_inline)) void __set_64bit_constant(unsigned long long *ptr,
109144 +     unsigned long long value)
109145 +{
109146 + __set_64bit(ptr, (unsigned int)value, (unsigned int)(value >> 32));
109147 +}
109148 +
109149 +
109150 +
109151 +
109152 +static inline __attribute__((always_inline)) void __set_64bit_var(unsigned long long *ptr,
109153 +       unsigned long long value)
109154 +{
109155 + __set_64bit(ptr, *(((unsigned int *)&(value)) + 0), *(((unsigned int *)&(value)) + 1));
109156 +}
109157 +# 79 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h"
109158 +static inline __attribute__((always_inline)) unsigned long __xchg(unsigned long x, volatile void *ptr,
109159 +       int size)
109160 +{
109161 + switch (size) {
109162 + case 1:
109163 +  asm volatile("xchgb %b0,%1"
109164 +        : "=q" (x)
109165 +        : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
109166 +        : "memory");
109167 +  break;
109168 + case 2:
109169 +  asm volatile("xchgw %w0,%1"
109170 +        : "=r" (x)
109171 +        : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
109172 +        : "memory");
109173 +  break;
109174 + case 4:
109175 +  asm volatile("xchgl %0,%1"
109176 +        : "=r" (x)
109177 +        : "m" (*((struct __xchg_dummy *)(ptr))), "0" (x)
109178 +        : "memory");
109179 +  break;
109180 + }
109181 + return x;
109182 +}
109183 +# 136 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h"
109184 +static inline __attribute__((always_inline)) unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
109185 +          unsigned long xxx_new, int size)
109186 +{
109187 + unsigned long prev;
109188 + switch (size) {
109189 + case 1:
109190 +  asm volatile("lock ; " "cmpxchgb %b1,%2"
109191 +        : "=a"(prev)
109192 +        : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109193 +        : "memory");
109194 +  return prev;
109195 + case 2:
109196 +  asm volatile("lock ; " "cmpxchgw %w1,%2"
109197 +        : "=a"(prev)
109198 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109199 +        : "memory");
109200 +  return prev;
109201 + case 4:
109202 +  asm volatile("lock ; " "cmpxchgl %1,%2"
109203 +        : "=a"(prev)
109204 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109205 +        : "memory");
109206 +  return prev;
109207 + }
109208 + return old;
109209 +}
109210 +
109211 +
109212 +
109213 +
109214 +
109215 +
109216 +static inline __attribute__((always_inline)) unsigned long __sync_cmpxchg(volatile void *ptr,
109217 +        unsigned long old,
109218 +        unsigned long xxx_new, int size)
109219 +{
109220 + unsigned long prev;
109221 + switch (size) {
109222 + case 1:
109223 +  asm volatile("lock; cmpxchgb %b1,%2"
109224 +        : "=a"(prev)
109225 +        : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109226 +        : "memory");
109227 +  return prev;
109228 + case 2:
109229 +  asm volatile("lock; cmpxchgw %w1,%2"
109230 +        : "=a"(prev)
109231 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109232 +        : "memory");
109233 +  return prev;
109234 + case 4:
109235 +  asm volatile("lock; cmpxchgl %1,%2"
109236 +        : "=a"(prev)
109237 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109238 +        : "memory");
109239 +  return prev;
109240 + }
109241 + return old;
109242 +}
109243 +
109244 +static inline __attribute__((always_inline)) unsigned long __cmpxchg_local(volatile void *ptr,
109245 +         unsigned long old,
109246 +         unsigned long xxx_new, int size)
109247 +{
109248 + unsigned long prev;
109249 + switch (size) {
109250 + case 1:
109251 +  asm volatile("cmpxchgb %b1,%2"
109252 +        : "=a"(prev)
109253 +        : "q"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109254 +        : "memory");
109255 +  return prev;
109256 + case 2:
109257 +  asm volatile("cmpxchgw %w1,%2"
109258 +        : "=a"(prev)
109259 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109260 +        : "memory");
109261 +  return prev;
109262 + case 4:
109263 +  asm volatile("cmpxchgl %1,%2"
109264 +        : "=a"(prev)
109265 +        : "r"(xxx_new), "m"(*((struct __xchg_dummy *)(ptr))), "0"(old)
109266 +        : "memory");
109267 +  return prev;
109268 + }
109269 + return old;
109270 +}
109271 +
109272 +static inline __attribute__((always_inline)) unsigned long long __cmpxchg64(volatile void *ptr,
109273 +          unsigned long long old,
109274 +          unsigned long long xxx_new)
109275 +{
109276 + unsigned long long prev;
109277 + asm volatile("lock ; " "cmpxchg8b %3"
109278 +       : "=A"(prev)
109279 +       : "b"((unsigned long)xxx_new),
109280 +         "c"((unsigned long)(xxx_new >> 32)),
109281 +         "m"(*((struct __xchg_dummy *)(ptr))),
109282 +         "0"(old)
109283 +       : "memory");
109284 + return prev;
109285 +}
109286 +
109287 +static inline __attribute__((always_inline)) unsigned long long __cmpxchg64_local(volatile void *ptr,
109288 +         unsigned long long old,
109289 +         unsigned long long xxx_new)
109290 +{
109291 + unsigned long long prev;
109292 + asm volatile("cmpxchg8b %3"
109293 +       : "=A"(prev)
109294 +       : "b"((unsigned long)xxx_new),
109295 +         "c"((unsigned long)(xxx_new >> 32)),
109296 +         "m"(*((struct __xchg_dummy *)(ptr))),
109297 +         "0"(old)
109298 +       : "memory");
109299 + return prev;
109300 +}
109301 +# 313 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg_32.h"
109302 +extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64);
109303 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 2
109304 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2
109305 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/nops.h" 1
109306 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2
109307 +
109308 +
109309 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h" 1
109310 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h"
109311 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h" 1
109312 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h"
109313 +static inline __attribute__((always_inline)) unsigned long native_save_fl(void)
109314 +{
109315 + unsigned long flags;
109316 +
109317 + asm volatile("# __raw_save_flags\n\t"
109318 +       "pushf ; pop %0"
109319 +       : "=g" (flags)
109320 +       :
109321 +       : "memory");
109322 +
109323 + return flags;
109324 +}
109325 +
109326 +static inline __attribute__((always_inline)) void native_restore_fl(unsigned long flags)
109327 +{
109328 + asm volatile("push %0 ; popf"
109329 +       :
109330 +       :"g" (flags)
109331 +       :"memory", "cc");
109332 +}
109333 +
109334 +static inline __attribute__((always_inline)) void native_irq_disable(void)
109335 +{
109336 + asm volatile("cli": : :"memory");
109337 +}
109338 +
109339 +static inline __attribute__((always_inline)) void native_irq_enable(void)
109340 +{
109341 + asm volatile("sti": : :"memory");
109342 +}
109343 +
109344 +static inline __attribute__((always_inline)) void native_safe_halt(void)
109345 +{
109346 + asm volatile("sti; hlt": : :"memory");
109347 +}
109348 +
109349 +static inline __attribute__((always_inline)) void native_halt(void)
109350 +{
109351 + asm volatile("hlt": : :"memory");
109352 +}
109353 +# 157 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irqflags.h"
109354 +static inline __attribute__((always_inline)) int raw_irqs_disabled_flags(unsigned long flags)
109355 +{
109356 + return !(flags & 0x00000200);
109357 +}
109358 +
109359 +static inline __attribute__((always_inline)) int raw_irqs_disabled(void)
109360 +{
109361 + unsigned long flags = __raw_local_save_flags();
109362 +
109363 + return raw_irqs_disabled_flags(flags);
109364 +}
109365 +
109366 +
109367 +
109368 +
109369 +
109370 +
109371 +
109372 +static inline __attribute__((always_inline)) void trace_hardirqs_fixup_flags(unsigned long flags)
109373 +{
109374 + if (raw_irqs_disabled_flags(flags))
109375 +  do { } while (0);
109376 + else
109377 +  do { } while (0);
109378 +}
109379 +
109380 +static inline __attribute__((always_inline)) void trace_hardirqs_fixup(void)
109381 +{
109382 + unsigned long flags = __raw_local_save_flags();
109383 +
109384 + trace_hardirqs_fixup_flags(flags);
109385 +}
109386 +# 58 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqflags.h" 2
109387 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h" 2
109388 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109389 +struct task_struct;
109390 +struct task_struct *__switch_to(struct task_struct *prev,
109391 +    struct task_struct *next);
109392 +# 139 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109393 +extern void native_load_gs_index(unsigned);
109394 +# 165 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109395 +static inline __attribute__((always_inline)) unsigned long get_limit(unsigned long segment)
109396 +{
109397 + unsigned long __limit;
109398 + asm("lsll %1,%0" : "=r" (__limit) : "r" (segment));
109399 + return __limit + 1;
109400 +}
109401 +
109402 +static inline __attribute__((always_inline)) void native_clts(void)
109403 +{
109404 + asm volatile("clts");
109405 +}
109406 +# 184 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109407 +static unsigned long __force_order;
109408 +
109409 +static inline __attribute__((always_inline)) unsigned long native_read_cr0(void)
109410 +{
109411 + unsigned long val;
109412 + asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order));
109413 + return val;
109414 +}
109415 +
109416 +static inline __attribute__((always_inline)) void native_write_cr0(unsigned long val)
109417 +{
109418 + asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order));
109419 +}
109420 +
109421 +static inline __attribute__((always_inline)) unsigned long native_read_cr2(void)
109422 +{
109423 + unsigned long val;
109424 + asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order));
109425 + return val;
109426 +}
109427 +
109428 +static inline __attribute__((always_inline)) void native_write_cr2(unsigned long val)
109429 +{
109430 + asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order));
109431 +}
109432 +
109433 +static inline __attribute__((always_inline)) unsigned long native_read_cr3(void)
109434 +{
109435 + unsigned long val;
109436 + asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order));
109437 + return val;
109438 +}
109439 +
109440 +static inline __attribute__((always_inline)) void native_write_cr3(unsigned long val)
109441 +{
109442 + asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order));
109443 +}
109444 +
109445 +static inline __attribute__((always_inline)) unsigned long native_read_cr4(void)
109446 +{
109447 + unsigned long val;
109448 + asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order));
109449 + return val;
109450 +}
109451 +
109452 +static inline __attribute__((always_inline)) unsigned long native_read_cr4_safe(void)
109453 +{
109454 + unsigned long val;
109455 +
109456 +
109457 +
109458 + asm volatile("1: mov %%cr4, %0\n"
109459 +       "2:\n"
109460 +       " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "1b" "," "2b" "\n" " .previous\n"
109461 +       : "=r" (val), "=m" (__force_order) : "0" (0));
109462 +
109463 +
109464 +
109465 + return val;
109466 +}
109467 +
109468 +static inline __attribute__((always_inline)) void native_write_cr4(unsigned long val)
109469 +{
109470 + asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order));
109471 +}
109472 +# 264 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109473 +static inline __attribute__((always_inline)) void native_wbinvd(void)
109474 +{
109475 + asm volatile("wbinvd": : :"memory");
109476 +}
109477 +# 297 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109478 +static inline __attribute__((always_inline)) void clflush(volatile void *__p)
109479 +{
109480 + asm volatile("clflush %0" : "+m" (*(volatile char *)__p));
109481 +}
109482 +
109483 +
109484 +
109485 +void disable_hlt(void);
109486 +void enable_hlt(void);
109487 +
109488 +void cpu_idle_wait(void);
109489 +
109490 +extern unsigned long arch_align_stack(unsigned long sp);
109491 +extern void free_init_pages(char *what, unsigned long begin, unsigned long end);
109492 +
109493 +void default_idle(void);
109494 +# 416 "/d/kernels/linux-2.6.27.10-clickport/include/asm/system.h"
109495 +static inline __attribute__((always_inline)) void rdtsc_barrier(void)
109496 +{
109497 + 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");
109498 + 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");
109499 +}
109500 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109501 +
109502 +
109503 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 1
109504 +
109505 +
109506 +
109507 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr-index.h" 1
109508 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 2
109509 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h"
109510 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1
109511 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno.h" 1
109512 +
109513 +
109514 +
109515 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno-base.h" 1
109516 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/errno.h" 2
109517 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 2
109518 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h" 2
109519 +
109520 +static inline __attribute__((always_inline)) unsigned long long native_read_tscp(unsigned int *aux)
109521 +{
109522 + unsigned long low, high;
109523 + asm volatile(".byte 0x0f,0x01,0xf9"
109524 +       : "=a" (low), "=d" (high), "=c" (*aux));
109525 + return low | ((u64)high << 32);
109526 +}
109527 +# 42 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h"
109528 +static inline __attribute__((always_inline)) unsigned long long native_read_msr(unsigned int msr)
109529 +{
109530 + unsigned long long val;
109531 +
109532 + asm volatile("rdmsr" : "=A" (val) : "c" (msr));
109533 + return (val);
109534 +}
109535 +
109536 +static inline __attribute__((always_inline)) unsigned long long native_read_msr_safe(unsigned int msr,
109537 +            int *err)
109538 +{
109539 + unsigned long long val;
109540 +
109541 + asm volatile("2: rdmsr ; xor %[err],%[err]\n"
109542 +       "1:\n\t"
109543 +       ".section .fixup,\"ax\"\n\t"
109544 +       "3:  mov %[fault],%[err] ; jmp 1b\n\t"
109545 +       ".previous\n\t"
109546 +       " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "3b" "\n" " .previous\n"
109547 +       : [err] "=r" (*err), "=A" (val)
109548 +       : "c" (msr), [fault] "i" (-14));
109549 + return (val);
109550 +}
109551 +
109552 +static inline __attribute__((always_inline)) void native_write_msr(unsigned int msr,
109553 +        unsigned low, unsigned high)
109554 +{
109555 + asm volatile("wrmsr" : : "c" (msr), "a"(low), "d" (high) : "memory");
109556 +}
109557 +
109558 +static inline __attribute__((always_inline)) int native_write_msr_safe(unsigned int msr,
109559 +     unsigned low, unsigned high)
109560 +{
109561 + int err;
109562 + asm volatile("2: wrmsr ; xor %[err],%[err]\n"
109563 +       "1:\n\t"
109564 +       ".section .fixup,\"ax\"\n\t"
109565 +       "3:  mov %[fault],%[err] ; jmp 1b\n\t"
109566 +       ".previous\n\t"
109567 +       " .section __ex_table,\"a\"\n" " " ".balign 4" " " "\n" " " ".long" " " "2b" "," "3b" "\n" " .previous\n"
109568 +       : [err] "=a" (err)
109569 +       : "c" (msr), "0" (low), "d" (high),
109570 +         [fault] "i" (-14)
109571 +       : "memory");
109572 + return err;
109573 +}
109574 +
109575 +extern unsigned long long native_read_tsc(void);
109576 +
109577 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long long __native_read_tsc(void)
109578 +{
109579 + unsigned long long val;
109580 +
109581 + rdtsc_barrier();
109582 + asm volatile("rdtsc" : "=A" (val));
109583 + rdtsc_barrier();
109584 +
109585 + return (val);
109586 +}
109587 +
109588 +static inline __attribute__((always_inline)) unsigned long long native_read_pmc(int counter)
109589 +{
109590 + unsigned long long val;
109591 +
109592 + asm volatile("rdpmc" : "=A" (val) : "c" (counter));
109593 + return (val);
109594 +}
109595 +# 195 "/d/kernels/linux-2.6.27.10-clickport/include/asm/msr.h"
109596 +int rdmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
109597 +int wrmsr_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
109598 +int rdmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 *l, u32 *h);
109599 +int wrmsr_safe_on_cpu(unsigned int cpu, u32 msr_no, u32 l, u32 h);
109600 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109601 +
109602 +
109603 +
109604 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h" 1
109605 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h"
109606 +struct exec_domain;
109607 +struct pt_regs;
109608 +
109609 +extern int register_exec_domain(struct exec_domain *);
109610 +extern int unregister_exec_domain(struct exec_domain *);
109611 +extern int __set_personality(unsigned long);
109612 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h"
109613 +enum {
109614 + ADDR_NO_RANDOMIZE = 0x0040000,
109615 + FDPIC_FUNCPTRS = 0x0080000,
109616 +
109617 +
109618 + MMAP_PAGE_ZERO = 0x0100000,
109619 + ADDR_COMPAT_LAYOUT = 0x0200000,
109620 + READ_IMPLIES_EXEC = 0x0400000,
109621 + ADDR_LIMIT_32BIT = 0x0800000,
109622 + SHORT_INODE = 0x1000000,
109623 + WHOLE_SECONDS = 0x2000000,
109624 + STICKY_TIMEOUTS = 0x4000000,
109625 + ADDR_LIMIT_3GB = 0x8000000,
109626 +};
109627 +# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h"
109628 +enum {
109629 + PER_LINUX = 0x0000,
109630 + PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
109631 + PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
109632 + PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
109633 + PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
109634 + PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS |
109635 +      WHOLE_SECONDS | SHORT_INODE,
109636 + PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
109637 + PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
109638 + PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
109639 + PER_BSD = 0x0006,
109640 + PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
109641 + PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
109642 + PER_LINUX32 = 0x0008,
109643 + PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
109644 + PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
109645 + PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
109646 + PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
109647 + PER_RISCOS = 0x000c,
109648 + PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
109649 + PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
109650 + PER_OSF4 = 0x000f,
109651 + PER_HPUX = 0x0010,
109652 + PER_MASK = 0x00ff,
109653 +};
109654 +# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/personality.h"
109655 +typedef void (*handler_t)(int, struct pt_regs *);
109656 +
109657 +struct exec_domain {
109658 + const char *name;
109659 + handler_t handler;
109660 + unsigned char pers_low;
109661 + unsigned char pers_high;
109662 + unsigned long *signal_map;
109663 + unsigned long *signal_invmap;
109664 + struct map_segment *err_map;
109665 + struct map_segment *socktype_map;
109666 + struct map_segment *sockopt_map;
109667 + struct map_segment *af_map;
109668 + struct module *module;
109669 + struct exec_domain *next;
109670 +};
109671 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h" 2
109672 +# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
109673 +static inline __attribute__((always_inline)) void *current_text_addr(void)
109674 +{
109675 + void *pc;
109676 +
109677 + asm volatile("mov $1f, %0; 1:":"=r" (pc));
109678 +
109679 + return pc;
109680 +}
109681 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
109682 +struct cpuinfo_x86 {
109683 + __u8 x86;
109684 + __u8 x86_vendor;
109685 + __u8 x86_model;
109686 + __u8 x86_mask;
109687 +
109688 + char wp_works_ok;
109689 +
109690 +
109691 + char hlt_works_ok;
109692 + char hard_math;
109693 + char rfu;
109694 + char fdiv_bug;
109695 + char f00f_bug;
109696 + char coma_bug;
109697 + char pad0;
109698 +# 84 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
109699 + int cpuid_level;
109700 + __u32 x86_capability[8];
109701 + char x86_vendor_id[16];
109702 + char x86_model_id[64];
109703 +
109704 + int x86_cache_size;
109705 + int x86_cache_alignment;
109706 + int x86_power;
109707 + unsigned long loops_per_jiffy;
109708 +
109709 +
109710 + cpumask_t llc_shared_map;
109711 +
109712 +
109713 + u16 x86_max_cores;
109714 + u16 apicid;
109715 + u16 initial_apicid;
109716 + u16 x86_clflush_size;
109717 +
109718 +
109719 + u16 booted_cores;
109720 +
109721 + u16 phys_proc_id;
109722 +
109723 + u16 cpu_core_id;
109724 +
109725 + u16 cpu_index;
109726 +
109727 +} __attribute__((__aligned__((1 << (7)))));
109728 +# 128 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
109729 +extern struct cpuinfo_x86 boot_cpu_data;
109730 +extern struct cpuinfo_x86 new_cpu_data;
109731 +
109732 +extern struct tss_struct doublefault_tss;
109733 +extern __u32 cleared_cpu_caps[8];
109734 +
109735 +
109736 +extern __typeof__(struct cpuinfo_x86) per_cpu__cpu_info;
109737 +
109738 +
109739 +
109740 +
109741 +
109742 +
109743 +
109744 +static inline __attribute__((always_inline)) int hlt_works(int cpu)
109745 +{
109746 +
109747 + 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;
109748 +
109749 +
109750 +
109751 +}
109752 +
109753 +
109754 +
109755 +extern void cpu_detect(struct cpuinfo_x86 *c);
109756 +
109757 +extern void early_cpu_init(void);
109758 +extern void identify_boot_cpu(void);
109759 +extern void identify_secondary_cpu(struct cpuinfo_x86 *);
109760 +extern void print_cpu_info(struct cpuinfo_x86 *);
109761 +extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c);
109762 +extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c);
109763 +extern unsigned short num_cache_leaves;
109764 +
109765 +
109766 +extern void detect_ht(struct cpuinfo_x86 *c);
109767 +
109768 +
109769 +
109770 +
109771 +static inline __attribute__((always_inline)) void native_cpuid(unsigned int *eax, unsigned int *ebx,
109772 +    unsigned int *ecx, unsigned int *edx)
109773 +{
109774 +
109775 + asm("cpuid"
109776 +     : "=a" (*eax),
109777 +       "=b" (*ebx),
109778 +       "=c" (*ecx),
109779 +       "=d" (*edx)
109780 +     : "0" (*eax), "2" (*ecx));
109781 +}
109782 +
109783 +static inline __attribute__((always_inline)) void load_cr3(pgd_t *pgdir)
109784 +{
109785 + write_cr3((((unsigned long)(pgdir)) - ((unsigned long)(0xC0000000UL))));
109786 +}
109787 +
109788 +
109789 +
109790 +struct x86_hw_tss {
109791 + unsigned short back_link, __blh;
109792 + unsigned long sp0;
109793 + unsigned short ss0, __ss0h;
109794 + unsigned long sp1;
109795 +
109796 + unsigned short ss1, __ss1h;
109797 + unsigned long sp2;
109798 + unsigned short ss2, __ss2h;
109799 + unsigned long __cr3;
109800 + unsigned long ip;
109801 + unsigned long flags;
109802 + unsigned long ax;
109803 + unsigned long cx;
109804 + unsigned long dx;
109805 + unsigned long bx;
109806 + unsigned long sp;
109807 + unsigned long bp;
109808 + unsigned long si;
109809 + unsigned long di;
109810 + unsigned short es, __esh;
109811 + unsigned short cs, __csh;
109812 + unsigned short ss, __ssh;
109813 + unsigned short ds, __dsh;
109814 + unsigned short fs, __fsh;
109815 + unsigned short gs, __gsh;
109816 + unsigned short ldt, __ldth;
109817 + unsigned short trace;
109818 + unsigned short io_bitmap_base;
109819 +
109820 +} __attribute__((packed));
109821 +# 246 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
109822 +struct tss_struct {
109823 +
109824 +
109825 +
109826 + struct x86_hw_tss x86_tss;
109827 +
109828 +
109829 +
109830 +
109831 +
109832 +
109833 +
109834 + unsigned long io_bitmap[((65536/8)/sizeof(long)) + 1];
109835 +
109836 +
109837 +
109838 + unsigned long io_bitmap_max;
109839 + struct thread_struct *io_bitmap_owner;
109840 +
109841 +
109842 +
109843 +
109844 + unsigned long stack[64];
109845 +
109846 +} __attribute__((__aligned__((1 << (7)))));
109847 +
109848 +extern __typeof__(struct tss_struct) per_cpu__init_tss;
109849 +
109850 +
109851 +
109852 +
109853 +struct orig_ist {
109854 + unsigned long ist[7];
109855 +};
109856 +
109857 +
109858 +
109859 +struct i387_fsave_struct {
109860 + u32 cwd;
109861 + u32 swd;
109862 + u32 twd;
109863 + u32 fip;
109864 + u32 fcs;
109865 + u32 foo;
109866 + u32 fos;
109867 +
109868 +
109869 + u32 st_space[20];
109870 +
109871 +
109872 + u32 status;
109873 +};
109874 +
109875 +struct i387_fxsave_struct {
109876 + u16 cwd;
109877 + u16 swd;
109878 + u16 twd;
109879 + u16 fop;
109880 + union {
109881 +  struct {
109882 +   u64 rip;
109883 +   u64 rdp;
109884 +  };
109885 +  struct {
109886 +   u32 fip;
109887 +   u32 fcs;
109888 +   u32 foo;
109889 +   u32 fos;
109890 +  };
109891 + };
109892 + u32 mxcsr;
109893 + u32 mxcsr_mask;
109894 +
109895 +
109896 + u32 st_space[32];
109897 +
109898 +
109899 + u32 xmm_space[64];
109900 +
109901 + u32 padding[24];
109902 +
109903 +} __attribute__((aligned(16)));
109904 +
109905 +struct i387_soft_struct {
109906 + u32 cwd;
109907 + u32 swd;
109908 + u32 twd;
109909 + u32 fip;
109910 + u32 fcs;
109911 + u32 foo;
109912 + u32 fos;
109913 +
109914 + u32 st_space[20];
109915 + u8 ftop;
109916 + u8 changed;
109917 + u8 lookahead;
109918 + u8 no_update;
109919 + u8 rm;
109920 + u8 alimit;
109921 + struct info *info;
109922 + u32 entry_eip;
109923 +};
109924 +
109925 +union thread_xstate {
109926 + struct i387_fsave_struct fsave;
109927 + struct i387_fxsave_struct fxsave;
109928 + struct i387_soft_struct soft;
109929 +};
109930 +
109931 +
109932 +
109933 +
109934 +
109935 +extern void print_cpu_info(struct cpuinfo_x86 *);
109936 +extern unsigned int xstate_size;
109937 +extern void free_thread_xstate(struct task_struct *);
109938 +extern struct kmem_cache *task_xstate_cachep;
109939 +extern void init_scattered_cpuid_features(struct cpuinfo_x86 *c);
109940 +extern unsigned int init_intel_cacheinfo(struct cpuinfo_x86 *c);
109941 +extern unsigned short num_cache_leaves;
109942 +
109943 +struct thread_struct {
109944 +
109945 + struct desc_struct tls_array[3];
109946 + unsigned long sp0;
109947 + unsigned long sp;
109948 +
109949 + unsigned long sysenter_cs;
109950 +
109951 +
109952 +
109953 +
109954 +
109955 +
109956 +
109957 + unsigned long ip;
109958 + unsigned long fs;
109959 + unsigned long gs;
109960 +
109961 + unsigned long debugreg0;
109962 + unsigned long debugreg1;
109963 + unsigned long debugreg2;
109964 + unsigned long debugreg3;
109965 + unsigned long debugreg6;
109966 + unsigned long debugreg7;
109967 +
109968 + unsigned long cr2;
109969 + unsigned long trap_no;
109970 + unsigned long error_code;
109971 +
109972 + union thread_xstate *xstate;
109973 +
109974 +
109975 + struct vm86_struct *vm86_info;
109976 + unsigned long screen_bitmap;
109977 + unsigned long v86flags;
109978 + unsigned long v86mask;
109979 + unsigned long saved_sp0;
109980 + unsigned int saved_fs;
109981 + unsigned int saved_gs;
109982 +
109983 +
109984 + unsigned long *io_bitmap_ptr;
109985 + unsigned long iopl;
109986 +
109987 + unsigned io_bitmap_max;
109988 +
109989 + unsigned long debugctlmsr;
109990 +
109991 +
109992 + unsigned long ds_area_msr;
109993 +};
109994 +
109995 +static inline __attribute__((always_inline)) unsigned long native_get_debugreg(int regno)
109996 +{
109997 + unsigned long val = 0;
109998 +
109999 + switch (regno) {
110000 + case 0:
110001 +  asm("mov %%db0, %0" :"=r" (val));
110002 +  break;
110003 + case 1:
110004 +  asm("mov %%db1, %0" :"=r" (val));
110005 +  break;
110006 + case 2:
110007 +  asm("mov %%db2, %0" :"=r" (val));
110008 +  break;
110009 + case 3:
110010 +  asm("mov %%db3, %0" :"=r" (val));
110011 +  break;
110012 + case 6:
110013 +  asm("mov %%db6, %0" :"=r" (val));
110014 +  break;
110015 + case 7:
110016 +  asm("mov %%db7, %0" :"=r" (val));
110017 +  break;
110018 + default:
110019 +  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);
110020 + }
110021 + return val;
110022 +}
110023 +
110024 +static inline __attribute__((always_inline)) void native_set_debugreg(int regno, unsigned long value)
110025 +{
110026 + switch (regno) {
110027 + case 0:
110028 +  asm("mov %0, %%db0" ::"r" (value));
110029 +  break;
110030 + case 1:
110031 +  asm("mov %0, %%db1" ::"r" (value));
110032 +  break;
110033 + case 2:
110034 +  asm("mov %0, %%db2" ::"r" (value));
110035 +  break;
110036 + case 3:
110037 +  asm("mov %0, %%db3" ::"r" (value));
110038 +  break;
110039 + case 6:
110040 +  asm("mov %0, %%db6" ::"r" (value));
110041 +  break;
110042 + case 7:
110043 +  asm("mov %0, %%db7" ::"r" (value));
110044 +  break;
110045 + default:
110046 +  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);
110047 + }
110048 +}
110049 +
110050 +
110051 +
110052 +
110053 +static inline __attribute__((always_inline)) void native_set_iopl_mask(unsigned mask)
110054 +{
110055 +
110056 + unsigned int reg;
110057 +
110058 + asm volatile ("pushfl;"
110059 +        "popl %0;"
110060 +        "andl %1, %0;"
110061 +        "orl %2, %0;"
110062 +        "pushl %0;"
110063 +        "popfl"
110064 +        : "=&r" (reg)
110065 +        : "i" (~0x00003000), "r" (mask));
110066 +
110067 +}
110068 +
110069 +static inline __attribute__((always_inline)) void
110070 +native_load_sp0(struct tss_struct *tss, struct thread_struct *thread)
110071 +{
110072 + tss->x86_tss.sp0 = thread->sp0;
110073 +
110074 +
110075 + if (__builtin_expect(!!(tss->x86_tss.ss1 != thread->sysenter_cs), 0)) {
110076 +  tss->x86_tss.ss1 = thread->sysenter_cs;
110077 +  do { paravirt_write_msr(0x00000174, thread->sysenter_cs, 0); } while (0);
110078 + }
110079 +
110080 +}
110081 +
110082 +static inline __attribute__((always_inline)) void native_swapgs(void)
110083 +{
110084 +
110085 +
110086 +
110087 +}
110088 +# 542 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110089 +extern unsigned long mmu_cr4_features;
110090 +
110091 +static inline __attribute__((always_inline)) void set_in_cr4(unsigned long mask)
110092 +{
110093 + unsigned cr4;
110094 +
110095 + mmu_cr4_features |= mask;
110096 + cr4 = read_cr4();
110097 + cr4 |= mask;
110098 + write_cr4(cr4);
110099 +}
110100 +
110101 +static inline __attribute__((always_inline)) void clear_in_cr4(unsigned long mask)
110102 +{
110103 + unsigned cr4;
110104 +
110105 + mmu_cr4_features &= ~mask;
110106 + cr4 = read_cr4();
110107 + cr4 &= ~mask;
110108 + write_cr4(cr4);
110109 +}
110110 +
110111 +struct microcode_header {
110112 + unsigned int hdrver;
110113 + unsigned int rev;
110114 + unsigned int date;
110115 + unsigned int sig;
110116 + unsigned int cksum;
110117 + unsigned int ldrver;
110118 + unsigned int pf;
110119 + unsigned int datasize;
110120 + unsigned int totalsize;
110121 + unsigned int reserved[3];
110122 +};
110123 +
110124 +struct microcode {
110125 + struct microcode_header hdr;
110126 + unsigned int bits[0];
110127 +};
110128 +
110129 +typedef struct microcode microcode_t;
110130 +typedef struct microcode_header microcode_header_t;
110131 +
110132 +
110133 +struct extended_signature {
110134 + unsigned int sig;
110135 + unsigned int pf;
110136 + unsigned int cksum;
110137 +};
110138 +
110139 +struct extended_sigtable {
110140 + unsigned int count;
110141 + unsigned int cksum;
110142 + unsigned int reserved[3];
110143 + struct extended_signature sigs[0];
110144 +};
110145 +
110146 +typedef struct {
110147 + unsigned long seg;
110148 +} mm_segment_t;
110149 +
110150 +
110151 +
110152 +
110153 +
110154 +extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
110155 +
110156 +
110157 +extern void release_thread(struct task_struct *);
110158 +
110159 +
110160 +extern void prepare_to_copy(struct task_struct *tsk);
110161 +
110162 +unsigned long get_wchan(struct task_struct *p);
110163 +
110164 +
110165 +
110166 +
110167 +
110168 +
110169 +static inline __attribute__((always_inline)) void cpuid(unsigned int op,
110170 +    unsigned int *eax, unsigned int *ebx,
110171 +    unsigned int *ecx, unsigned int *edx)
110172 +{
110173 + *eax = op;
110174 + *ecx = 0;
110175 + __cpuid(eax, ebx, ecx, edx);
110176 +}
110177 +
110178 +
110179 +static inline __attribute__((always_inline)) void cpuid_count(unsigned int op, int count,
110180 +          unsigned int *eax, unsigned int *ebx,
110181 +          unsigned int *ecx, unsigned int *edx)
110182 +{
110183 + *eax = op;
110184 + *ecx = count;
110185 + __cpuid(eax, ebx, ecx, edx);
110186 +}
110187 +
110188 +
110189 +
110190 +
110191 +static inline __attribute__((always_inline)) unsigned int cpuid_eax(unsigned int op)
110192 +{
110193 + unsigned int eax, ebx, ecx, edx;
110194 +
110195 + cpuid(op, &eax, &ebx, &ecx, &edx);
110196 +
110197 + return eax;
110198 +}
110199 +
110200 +static inline __attribute__((always_inline)) unsigned int cpuid_ebx(unsigned int op)
110201 +{
110202 + unsigned int eax, ebx, ecx, edx;
110203 +
110204 + cpuid(op, &eax, &ebx, &ecx, &edx);
110205 +
110206 + return ebx;
110207 +}
110208 +
110209 +static inline __attribute__((always_inline)) unsigned int cpuid_ecx(unsigned int op)
110210 +{
110211 + unsigned int eax, ebx, ecx, edx;
110212 +
110213 + cpuid(op, &eax, &ebx, &ecx, &edx);
110214 +
110215 + return ecx;
110216 +}
110217 +
110218 +static inline __attribute__((always_inline)) unsigned int cpuid_edx(unsigned int op)
110219 +{
110220 + unsigned int eax, ebx, ecx, edx;
110221 +
110222 + cpuid(op, &eax, &ebx, &ecx, &edx);
110223 +
110224 + return edx;
110225 +}
110226 +
110227 +
110228 +static inline __attribute__((always_inline)) void rep_nop(void)
110229 +{
110230 + asm volatile("rep; nop" ::: "memory");
110231 +}
110232 +
110233 +static inline __attribute__((always_inline)) void cpu_relax(void)
110234 +{
110235 + rep_nop();
110236 +}
110237 +
110238 +
110239 +static inline __attribute__((always_inline)) void sync_core(void)
110240 +{
110241 + int tmp;
110242 +
110243 + asm volatile("cpuid" : "=a" (tmp) : "0" (1)
110244 +       : "ebx", "ecx", "edx", "memory");
110245 +}
110246 +
110247 +static inline __attribute__((always_inline)) void __monitor(const void *eax, unsigned long ecx,
110248 +        unsigned long edx)
110249 +{
110250 +
110251 + asm volatile(".byte 0x0f, 0x01, 0xc8;"
110252 +       :: "a" (eax), "c" (ecx), "d"(edx));
110253 +}
110254 +
110255 +static inline __attribute__((always_inline)) void __mwait(unsigned long eax, unsigned long ecx)
110256 +{
110257 +
110258 + asm volatile(".byte 0x0f, 0x01, 0xc9;"
110259 +       :: "a" (eax), "c" (ecx));
110260 +}
110261 +
110262 +static inline __attribute__((always_inline)) void __sti_mwait(unsigned long eax, unsigned long ecx)
110263 +{
110264 + do { } while (0);
110265 +
110266 + asm volatile("sti; .byte 0x0f, 0x01, 0xc9;"
110267 +       :: "a" (eax), "c" (ecx));
110268 +}
110269 +
110270 +extern void mwait_idle_with_hints(unsigned long eax, unsigned long ecx);
110271 +
110272 +extern void select_idle_routine(const struct cpuinfo_x86 *c);
110273 +
110274 +extern unsigned long boot_option_idle_override;
110275 +extern unsigned long idle_halt;
110276 +extern unsigned long idle_nomwait;
110277 +# 743 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110278 +static inline __attribute__((always_inline)) void wbinvd_halt(void)
110279 +{
110280 + 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");
110281 +
110282 + 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))))))
110283 +  asm volatile("cli; wbinvd; 1: hlt; jmp 1b" : : : "memory");
110284 + else
110285 +  while (1)
110286 +   halt();
110287 +}
110288 +
110289 +extern void enable_sep_cpu(void);
110290 +extern int sysenter_setup(void);
110291 +
110292 +
110293 +extern struct desc_ptr early_gdt_descr;
110294 +
110295 +extern void cpu_set_gdt(int);
110296 +extern void switch_to_new_gdt(void);
110297 +extern void cpu_init(void);
110298 +extern void init_gdt(int cpu);
110299 +
110300 +static inline __attribute__((always_inline)) void update_debugctlmsr(unsigned long debugctlmsr)
110301 +{
110302 +
110303 +
110304 +
110305 +
110306 + do { paravirt_write_msr(0x000001d9, (u32)((u64)(debugctlmsr)), ((u64)(debugctlmsr))>>32); } while (0);
110307 +}
110308 +
110309 +
110310 +
110311 +
110312 +
110313 +extern unsigned int machine_id;
110314 +extern unsigned int machine_submodel_id;
110315 +extern unsigned int BIOS_revision;
110316 +
110317 +
110318 +extern int bootloader_type;
110319 +
110320 +extern char ignore_fpu_irq;
110321 +# 804 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110322 +static inline __attribute__((always_inline)) void prefetch(const void *x)
110323 +{
110324 + 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));
110325 +
110326 +
110327 +
110328 +}
110329 +
110330 +
110331 +
110332 +
110333 +
110334 +
110335 +static inline __attribute__((always_inline)) void prefetchw(const void *x)
110336 +{
110337 + 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));
110338 +
110339 +
110340 +
110341 +}
110342 +
110343 +static inline __attribute__((always_inline)) void spin_lock_prefetch(const void *x)
110344 +{
110345 + prefetchw(x);
110346 +}
110347 +# 862 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110348 +extern unsigned long thread_saved_pc(struct task_struct *tsk);
110349 +# 928 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110350 +extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
110351 +            unsigned long new_sp);
110352 +# 943 "/d/kernels/linux-2.6.27.10-clickport/include/asm/processor.h"
110353 +extern int get_tsc_mode(unsigned long adr);
110354 +extern int set_tsc_mode(unsigned int val);
110355 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h" 2
110356 +
110357 +struct thread_info {
110358 + struct task_struct *task;
110359 + struct exec_domain *exec_domain;
110360 + unsigned long flags;
110361 + __u32 status;
110362 + __u32 cpu;
110363 + int preempt_count;
110364 +
110365 + mm_segment_t addr_limit;
110366 + struct restart_block restart_block;
110367 + void *sysenter_return;
110368 +
110369 + unsigned long previous_esp;
110370 +
110371 +
110372 + __u8 supervisor_stack[0];
110373 +
110374 +};
110375 +# 172 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h"
110376 +register unsigned long current_stack_pointer asm("esp") __attribute__((__used__));
110377 +
110378 +
110379 +static inline __attribute__((always_inline)) struct thread_info *current_thread_info(void)
110380 +{
110381 + return (struct thread_info *)
110382 +  (current_stack_pointer & ~((((1UL) << 12) << 0) - 1));
110383 +}
110384 +# 247 "/d/kernels/linux-2.6.27.10-clickport/include/asm/thread_info.h"
110385 +static inline __attribute__((always_inline)) void set_restore_sigmask(void)
110386 +{
110387 + struct thread_info *ti = current_thread_info();
110388 + ti->status |= 0x0008;
110389 + set_bit(2, (unsigned long *)&ti->flags);
110390 +}
110391 +
110392 +
110393 +
110394 +extern void arch_task_cache_init(void);
110395 +extern void free_thread_info(struct thread_info *ti);
110396 +extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
110397 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h" 2
110398 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/thread_info.h"
110399 +static inline __attribute__((always_inline)) void set_ti_thread_flag(struct thread_info *ti, int flag)
110400 +{
110401 + set_bit(flag, (unsigned long *)&ti->flags);
110402 +}
110403 +
110404 +static inline __attribute__((always_inline)) void clear_ti_thread_flag(struct thread_info *ti, int flag)
110405 +{
110406 + clear_bit(flag, (unsigned long *)&ti->flags);
110407 +}
110408 +
110409 +static inline __attribute__((always_inline)) int test_and_set_ti_thread_flag(struct thread_info *ti, int flag)
110410 +{
110411 + return test_and_set_bit(flag, (unsigned long *)&ti->flags);
110412 +}
110413 +
110414 +static inline __attribute__((always_inline)) int test_and_clear_ti_thread_flag(struct thread_info *ti, int flag)
110415 +{
110416 + return test_and_clear_bit(flag, (unsigned long *)&ti->flags);
110417 +}
110418 +
110419 +static inline __attribute__((always_inline)) int test_ti_thread_flag(struct thread_info *ti, int flag)
110420 +{
110421 + return (__builtin_constant_p((flag)) ? constant_test_bit((flag), ((unsigned long *)&ti->flags)) : variable_test_bit((flag), ((unsigned long *)&ti->flags)));
110422 +}
110423 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 2
110424 +
110425 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 1
110426 +
110427 +
110428 +
110429 +
110430 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/poison.h" 1
110431 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 2
110432 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prefetch.h" 1
110433 +# 53 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prefetch.h"
110434 +static inline __attribute__((always_inline)) void prefetch_range(void *addr, size_t len)
110435 +{
110436 +
110437 + char *cp;
110438 + char *end = (char*)(addr) + len;
110439 +
110440 + for (cp = (char*)(addr); cp < end; cp += (4*(1 << (7))))
110441 +  prefetch(cp);
110442 +
110443 +}
110444 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h" 2
110445 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110446 +struct list_head {
110447 + struct list_head *next, *prev;
110448 +};
110449 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110450 +static inline __attribute__((always_inline)) void INIT_LIST_HEAD(struct list_head *list)
110451 +{
110452 + list->next = list;
110453 + list->prev = list;
110454 +}
110455 +# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110456 +extern void __list_add(struct list_head *xxx_new,
110457 +         struct list_head *prev,
110458 +         struct list_head *next);
110459 +# 68 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110460 +static inline __attribute__((always_inline)) void list_add(struct list_head *xxx_new, struct list_head *head)
110461 +{
110462 + __list_add(xxx_new, head, head->next);
110463 +}
110464 +# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110465 +static inline __attribute__((always_inline)) void list_add_tail(struct list_head *xxx_new, struct list_head *head)
110466 +{
110467 + __list_add(xxx_new, head->prev, head);
110468 +}
110469 +# 94 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110470 +static inline __attribute__((always_inline)) void __list_del(struct list_head * prev, struct list_head * next)
110471 +{
110472 + next->prev = prev;
110473 + prev->next = next;
110474 +}
110475 +# 114 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110476 +extern void list_del(struct list_head *entry);
110477 +# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110478 +static inline __attribute__((always_inline)) void list_replace(struct list_head *old,
110479 +    struct list_head *xxx_new)
110480 +{
110481 + xxx_new->next = old->next;
110482 + xxx_new->next->prev = xxx_new;
110483 + xxx_new->prev = old->prev;
110484 + xxx_new->prev->next = xxx_new;
110485 +}
110486 +
110487 +static inline __attribute__((always_inline)) void list_replace_init(struct list_head *old,
110488 +     struct list_head *xxx_new)
110489 +{
110490 + list_replace(old, xxx_new);
110491 + INIT_LIST_HEAD(old);
110492 +}
110493 +
110494 +
110495 +
110496 +
110497 +
110498 +static inline __attribute__((always_inline)) void list_del_init(struct list_head *entry)
110499 +{
110500 + __list_del(entry->prev, entry->next);
110501 + INIT_LIST_HEAD(entry);
110502 +}
110503 +
110504 +
110505 +
110506 +
110507 +
110508 +
110509 +static inline __attribute__((always_inline)) void list_move(struct list_head *list, struct list_head *head)
110510 +{
110511 + __list_del(list->prev, list->next);
110512 + list_add(list, head);
110513 +}
110514 +
110515 +
110516 +
110517 +
110518 +
110519 +
110520 +static inline __attribute__((always_inline)) void list_move_tail(struct list_head *list,
110521 +      struct list_head *head)
110522 +{
110523 + __list_del(list->prev, list->next);
110524 + list_add_tail(list, head);
110525 +}
110526 +
110527 +
110528 +
110529 +
110530 +
110531 +
110532 +static inline __attribute__((always_inline)) int list_is_last(const struct list_head *list,
110533 +    const struct list_head *head)
110534 +{
110535 + return list->next == head;
110536 +}
110537 +
110538 +
110539 +
110540 +
110541 +
110542 +static inline __attribute__((always_inline)) int list_empty(const struct list_head *head)
110543 +{
110544 + return head->next == head;
110545 +}
110546 +# 206 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110547 +static inline __attribute__((always_inline)) int list_empty_careful(const struct list_head *head)
110548 +{
110549 + struct list_head *next = head->next;
110550 + return (next == head) && (next == head->prev);
110551 +}
110552 +
110553 +
110554 +
110555 +
110556 +
110557 +static inline __attribute__((always_inline)) int list_is_singular(const struct list_head *head)
110558 +{
110559 + return !list_empty(head) && (head->next == head->prev);
110560 +}
110561 +
110562 +static inline __attribute__((always_inline)) void __list_cut_position(struct list_head *list,
110563 +  struct list_head *head, struct list_head *entry)
110564 +{
110565 + struct list_head *new_first = entry->next;
110566 + list->next = head->next;
110567 + list->next->prev = list;
110568 + list->prev = entry;
110569 + entry->next = list;
110570 + head->next = new_first;
110571 + new_first->prev = head;
110572 +}
110573 +# 247 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110574 +static inline __attribute__((always_inline)) void list_cut_position(struct list_head *list,
110575 +  struct list_head *head, struct list_head *entry)
110576 +{
110577 + if (list_empty(head))
110578 +  return;
110579 + if (list_is_singular(head) &&
110580 +  (head->next != entry && head != entry))
110581 +  return;
110582 + if (entry == head)
110583 +  INIT_LIST_HEAD(list);
110584 + else
110585 +  __list_cut_position(list, head, entry);
110586 +}
110587 +
110588 +static inline __attribute__((always_inline)) void __list_splice(const struct list_head *list,
110589 +     struct list_head *prev,
110590 +     struct list_head *next)
110591 +{
110592 + struct list_head *first = list->next;
110593 + struct list_head *last = list->prev;
110594 +
110595 + first->prev = prev;
110596 + prev->next = first;
110597 +
110598 + last->next = next;
110599 + next->prev = last;
110600 +}
110601 +
110602 +
110603 +
110604 +
110605 +
110606 +
110607 +static inline __attribute__((always_inline)) void list_splice(const struct list_head *list,
110608 +    struct list_head *head)
110609 +{
110610 + if (!list_empty(list))
110611 +  __list_splice(list, head, head->next);
110612 +}
110613 +
110614 +
110615 +
110616 +
110617 +
110618 +
110619 +static inline __attribute__((always_inline)) void list_splice_tail(struct list_head *list,
110620 +    struct list_head *head)
110621 +{
110622 + if (!list_empty(list))
110623 +  __list_splice(list, head->prev, head);
110624 +}
110625 +# 306 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110626 +static inline __attribute__((always_inline)) void list_splice_init(struct list_head *list,
110627 +        struct list_head *head)
110628 +{
110629 + if (!list_empty(list)) {
110630 +  __list_splice(list, head, head->next);
110631 +  INIT_LIST_HEAD(list);
110632 + }
110633 +}
110634 +# 323 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110635 +static inline __attribute__((always_inline)) void list_splice_tail_init(struct list_head *list,
110636 +      struct list_head *head)
110637 +{
110638 + if (!list_empty(list)) {
110639 +  __list_splice(list, head->prev, head);
110640 +  INIT_LIST_HEAD(list);
110641 + }
110642 +}
110643 +# 544 "/d/kernels/linux-2.6.27.10-clickport/include/linux/list.h"
110644 +struct hlist_head {
110645 + struct hlist_node *first;
110646 +};
110647 +
110648 +struct hlist_node {
110649 + struct hlist_node *next, **pprev;
110650 +};
110651 +
110652 +
110653 +
110654 +
110655 +static inline __attribute__((always_inline)) void INIT_HLIST_NODE(struct hlist_node *h)
110656 +{
110657 + h->next = 0;
110658 + h->pprev = 0;
110659 +}
110660 +
110661 +static inline __attribute__((always_inline)) int hlist_unhashed(const struct hlist_node *h)
110662 +{
110663 + return !h->pprev;
110664 +}
110665 +
110666 +static inline __attribute__((always_inline)) int hlist_empty(const struct hlist_head *h)
110667 +{
110668 + return !h->first;
110669 +}
110670 +
110671 +static inline __attribute__((always_inline)) void __hlist_del(struct hlist_node *n)
110672 +{
110673 + struct hlist_node *next = n->next;
110674 + struct hlist_node **pprev = n->pprev;
110675 + *pprev = next;
110676 + if (next)
110677 +  next->pprev = pprev;
110678 +}
110679 +
110680 +static inline __attribute__((always_inline)) void hlist_del(struct hlist_node *n)
110681 +{
110682 + __hlist_del(n);
110683 + n->next = (struct hlist_node*)(((void *) 0x00100100));
110684 + n->pprev = (struct hlist_node**)(((void *) 0x00200200));
110685 +}
110686 +
110687 +static inline __attribute__((always_inline)) void hlist_del_init(struct hlist_node *n)
110688 +{
110689 + if (!hlist_unhashed(n)) {
110690 +  __hlist_del(n);
110691 +  INIT_HLIST_NODE(n);
110692 + }
110693 +}
110694 +
110695 +static inline __attribute__((always_inline)) void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
110696 +{
110697 + struct hlist_node *first = h->first;
110698 + n->next = first;
110699 + if (first)
110700 +  first->pprev = &n->next;
110701 + h->first = n;
110702 + n->pprev = &h->first;
110703 +}
110704 +
110705 +
110706 +static inline __attribute__((always_inline)) void hlist_add_before(struct hlist_node *n,
110707 +     struct hlist_node *next)
110708 +{
110709 + n->pprev = next->pprev;
110710 + n->next = next;
110711 + next->pprev = &n->next;
110712 + *(n->pprev) = n;
110713 +}
110714 +
110715 +static inline __attribute__((always_inline)) void hlist_add_after(struct hlist_node *n,
110716 +     struct hlist_node *next)
110717 +{
110718 + next->next = n->next;
110719 + n->next = next;
110720 + next->pprev = &n->next;
110721 +
110722 + if(next->next)
110723 +  next->next->pprev = &next->next;
110724 +}
110725 +
110726 +
110727 +
110728 +
110729 +
110730 +static inline __attribute__((always_inline)) void hlist_move_list(struct hlist_head *old,
110731 +       struct hlist_head *xxx_new)
110732 +{
110733 + xxx_new->first = old->first;
110734 + if (xxx_new->first)
110735 +  xxx_new->first->pprev = &xxx_new->first;
110736 + old->first = 0;
110737 +}
110738 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h" 2
110739 +# 98 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h"
110740 +struct preempt_notifier;
110741 +# 109 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h"
110742 +struct preempt_ops {
110743 + void (*sched_in)(struct preempt_notifier *notifier, int cpu);
110744 + void (*sched_out)(struct preempt_notifier *notifier,
110745 +     struct task_struct *next);
110746 +};
110747 +# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/preempt.h"
110748 +struct preempt_notifier {
110749 + struct hlist_node link;
110750 + struct preempt_ops *ops;
110751 +};
110752 +
110753 +void preempt_notifier_register(struct preempt_notifier *notifier);
110754 +void preempt_notifier_unregister(struct preempt_notifier *notifier);
110755 +
110756 +static inline __attribute__((always_inline)) void preempt_notifier_init(struct preempt_notifier *notifier,
110757 +         struct preempt_ops *ops)
110758 +{
110759 + INIT_HLIST_NODE(&notifier->link);
110760 + notifier->ops = ops;
110761 +}
110762 +# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
110763 +
110764 +
110765 +
110766 +
110767 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stringify.h" 1
110768 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
110769 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bottom_half.h" 1
110770 +
110771 +
110772 +
110773 +extern void local_bh_disable(void);
110774 +extern void __local_bh_enable(void);
110775 +extern void _local_bh_enable(void);
110776 +extern void local_bh_enable(void);
110777 +extern void local_bh_enable_ip(unsigned long ip);
110778 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
110779 +# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h"
110780 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 1
110781 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h"
110782 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock_types.h" 1
110783 +
110784 +
110785 +
110786 +
110787 +
110788 +
110789 +
110790 +typedef struct raw_spinlock {
110791 + unsigned int slock;
110792 +} raw_spinlock_t;
110793 +
110794 +
110795 +
110796 +
110797 +
110798 +
110799 +
110800 +typedef struct {
110801 + unsigned int lock;
110802 +} raw_rwlock_t;
110803 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 2
110804 +
110805 +
110806 +
110807 +
110808 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h" 1
110809 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h"
110810 +struct task_struct;
110811 +struct lockdep_map;
110812 +# 321 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h"
110813 +static inline __attribute__((always_inline)) void lockdep_off(void)
110814 +{
110815 +}
110816 +
110817 +static inline __attribute__((always_inline)) void lockdep_on(void)
110818 +{
110819 +}
110820 +# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h"
110821 +struct lock_class_key { };
110822 +# 382 "/d/kernels/linux-2.6.27.10-clickport/include/linux/lockdep.h"
110823 +static inline __attribute__((always_inline)) void early_init_irq_lock_class(void)
110824 +{
110825 +}
110826 +
110827 +
110828 +
110829 +
110830 +
110831 +
110832 +
110833 +static inline __attribute__((always_inline)) void early_boot_irqs_off(void)
110834 +{
110835 +}
110836 +static inline __attribute__((always_inline)) void early_boot_irqs_on(void)
110837 +{
110838 +}
110839 +static inline __attribute__((always_inline)) void print_irqtrace_events(struct task_struct *curr)
110840 +{
110841 +}
110842 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h" 2
110843 +
110844 +typedef struct {
110845 + raw_spinlock_t raw_lock;
110846 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h"
110847 +} spinlock_t;
110848 +
110849 +
110850 +
110851 +typedef struct {
110852 + raw_rwlock_t raw_lock;
110853 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_types.h"
110854 +} rwlock_t;
110855 +# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
110856 +
110857 +extern int __attribute__((section(".spinlock.text"))) generic__raw_read_trylock(raw_rwlock_t *lock);
110858 +
110859 +
110860 +
110861 +
110862 +
110863 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 1
110864 +
110865 +
110866 +
110867 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
110868 +
110869 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 1
110870 +
110871 +
110872 +
110873 +
110874 +
110875 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cmpxchg.h" 1
110876 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 2
110877 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110878 +typedef struct {
110879 + int counter;
110880 +} atomic_t;
110881 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110882 +static inline __attribute__((always_inline)) void atomic_add(int i, atomic_t *v)
110883 +{
110884 + asm volatile("lock ; " "addl %1,%0"
110885 +       : "+m" (v->counter)
110886 +       : "ir" (i));
110887 +}
110888 +# 62 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110889 +static inline __attribute__((always_inline)) void atomic_sub(int i, atomic_t *v)
110890 +{
110891 + asm volatile("lock ; " "subl %1,%0"
110892 +       : "+m" (v->counter)
110893 +       : "ir" (i));
110894 +}
110895 +# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110896 +static inline __attribute__((always_inline)) int atomic_sub_and_test(int i, atomic_t *v)
110897 +{
110898 + unsigned char c;
110899 +
110900 + asm volatile("lock ; " "subl %2,%0; sete %1"
110901 +       : "+m" (v->counter), "=qm" (c)
110902 +       : "ir" (i) : "memory");
110903 + return c;
110904 +}
110905 +
110906 +
110907 +
110908 +
110909 +
110910 +
110911 +
110912 +static inline __attribute__((always_inline)) void atomic_inc(atomic_t *v)
110913 +{
110914 + asm volatile("lock ; " "incl %0"
110915 +       : "+m" (v->counter));
110916 +}
110917 +
110918 +
110919 +
110920 +
110921 +
110922 +
110923 +
110924 +static inline __attribute__((always_inline)) void atomic_dec(atomic_t *v)
110925 +{
110926 + asm volatile("lock ; " "decl %0"
110927 +       : "+m" (v->counter));
110928 +}
110929 +# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110930 +static inline __attribute__((always_inline)) int atomic_dec_and_test(atomic_t *v)
110931 +{
110932 + unsigned char c;
110933 +
110934 + asm volatile("lock ; " "decl %0; sete %1"
110935 +       : "+m" (v->counter), "=qm" (c)
110936 +       : : "memory");
110937 + return c != 0;
110938 +}
110939 +# 138 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110940 +static inline __attribute__((always_inline)) int atomic_inc_and_test(atomic_t *v)
110941 +{
110942 + unsigned char c;
110943 +
110944 + asm volatile("lock ; " "incl %0; sete %1"
110945 +       : "+m" (v->counter), "=qm" (c)
110946 +       : : "memory");
110947 + return c != 0;
110948 +}
110949 +# 157 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110950 +static inline __attribute__((always_inline)) int atomic_add_negative(int i, atomic_t *v)
110951 +{
110952 + unsigned char c;
110953 +
110954 + asm volatile("lock ; " "addl %2,%0; sets %1"
110955 +       : "+m" (v->counter), "=qm" (c)
110956 +       : "ir" (i) : "memory");
110957 + return c;
110958 +}
110959 +# 174 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110960 +static inline __attribute__((always_inline)) int atomic_add_return(int i, atomic_t *v)
110961 +{
110962 + int __i;
110963 +
110964 +
110965 +
110966 +
110967 +
110968 +
110969 + __i = i;
110970 + asm volatile("lock ; " "xaddl %0, %1"
110971 +       : "+r" (i), "+m" (v->counter)
110972 +       : : "memory");
110973 + return i + __i;
110974 +# 197 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110975 +}
110976 +# 206 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110977 +static inline __attribute__((always_inline)) int atomic_sub_return(int i, atomic_t *v)
110978 +{
110979 + return atomic_add_return(-i, v);
110980 +}
110981 +# 223 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110982 +static inline __attribute__((always_inline)) int atomic_add_unless(atomic_t *v, int a, int u)
110983 +{
110984 + int c, old;
110985 + c = ((v)->counter);
110986 + for (;;) {
110987 +  if (__builtin_expect(!!(c == (u)), 0))
110988 +   break;
110989 +  old = (((__typeof__(*(&(((v))->counter))))__cmpxchg((&(((v))->counter)), (unsigned long)((c)), (unsigned long)((c + (a))), sizeof(*(&(((v))->counter))))));
110990 +  if (__builtin_expect(!!(old == c), 1))
110991 +   break;
110992 +  c = old;
110993 + }
110994 + return c != (u);
110995 +}
110996 +# 258 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h"
110997 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/atomic.h" 1
110998 +# 141 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/atomic.h"
110999 +typedef atomic_t atomic_long_t;
111000 +
111001 +
111002 +static inline __attribute__((always_inline)) long atomic_long_read(atomic_long_t *l)
111003 +{
111004 + atomic_t *v = (atomic_t *)l;
111005 +
111006 + return (long)((v)->counter);
111007 +}
111008 +
111009 +static inline __attribute__((always_inline)) void atomic_long_set(atomic_long_t *l, long i)
111010 +{
111011 + atomic_t *v = (atomic_t *)l;
111012 +
111013 + (((v)->counter) = (i));
111014 +}
111015 +
111016 +static inline __attribute__((always_inline)) void atomic_long_inc(atomic_long_t *l)
111017 +{
111018 + atomic_t *v = (atomic_t *)l;
111019 +
111020 + atomic_inc(v);
111021 +}
111022 +
111023 +static inline __attribute__((always_inline)) void atomic_long_dec(atomic_long_t *l)
111024 +{
111025 + atomic_t *v = (atomic_t *)l;
111026 +
111027 + atomic_dec(v);
111028 +}
111029 +
111030 +static inline __attribute__((always_inline)) void atomic_long_add(long i, atomic_long_t *l)
111031 +{
111032 + atomic_t *v = (atomic_t *)l;
111033 +
111034 + atomic_add(i, v);
111035 +}
111036 +
111037 +static inline __attribute__((always_inline)) void atomic_long_sub(long i, atomic_long_t *l)
111038 +{
111039 + atomic_t *v = (atomic_t *)l;
111040 +
111041 + atomic_sub(i, v);
111042 +}
111043 +
111044 +static inline __attribute__((always_inline)) int atomic_long_sub_and_test(long i, atomic_long_t *l)
111045 +{
111046 + atomic_t *v = (atomic_t *)l;
111047 +
111048 + return atomic_sub_and_test(i, v);
111049 +}
111050 +
111051 +static inline __attribute__((always_inline)) int atomic_long_dec_and_test(atomic_long_t *l)
111052 +{
111053 + atomic_t *v = (atomic_t *)l;
111054 +
111055 + return atomic_dec_and_test(v);
111056 +}
111057 +
111058 +static inline __attribute__((always_inline)) int atomic_long_inc_and_test(atomic_long_t *l)
111059 +{
111060 + atomic_t *v = (atomic_t *)l;
111061 +
111062 + return atomic_inc_and_test(v);
111063 +}
111064 +
111065 +static inline __attribute__((always_inline)) int atomic_long_add_negative(long i, atomic_long_t *l)
111066 +{
111067 + atomic_t *v = (atomic_t *)l;
111068 +
111069 + return atomic_add_negative(i, v);
111070 +}
111071 +
111072 +static inline __attribute__((always_inline)) long atomic_long_add_return(long i, atomic_long_t *l)
111073 +{
111074 + atomic_t *v = (atomic_t *)l;
111075 +
111076 + return (long)atomic_add_return(i, v);
111077 +}
111078 +
111079 +static inline __attribute__((always_inline)) long atomic_long_sub_return(long i, atomic_long_t *l)
111080 +{
111081 + atomic_t *v = (atomic_t *)l;
111082 +
111083 + return (long)atomic_sub_return(i, v);
111084 +}
111085 +
111086 +static inline __attribute__((always_inline)) long atomic_long_inc_return(atomic_long_t *l)
111087 +{
111088 + atomic_t *v = (atomic_t *)l;
111089 +
111090 + return (long)(atomic_add_return(1, v));
111091 +}
111092 +
111093 +static inline __attribute__((always_inline)) long atomic_long_dec_return(atomic_long_t *l)
111094 +{
111095 + atomic_t *v = (atomic_t *)l;
111096 +
111097 + return (long)(atomic_sub_return(1, v));
111098 +}
111099 +
111100 +static inline __attribute__((always_inline)) long atomic_long_add_unless(atomic_long_t *l, long a, long u)
111101 +{
111102 + atomic_t *v = (atomic_t *)l;
111103 +
111104 + return (long)atomic_add_unless(v, a, u);
111105 +}
111106 +# 259 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic_32.h" 2
111107 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 2
111108 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 2
111109 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwlock.h" 1
111110 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h" 2
111111 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h"
111112 +static inline __attribute__((always_inline)) int __ticket_spin_is_locked(raw_spinlock_t *lock)
111113 +{
111114 + int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock));
111115 +
111116 + return (((tmp >> 8) & 0xff) != (tmp & 0xff));
111117 +}
111118 +
111119 +static inline __attribute__((always_inline)) int __ticket_spin_is_contended(raw_spinlock_t *lock)
111120 +{
111121 + int tmp = (*(volatile typeof(lock->slock) *)&(lock->slock));
111122 +
111123 + return (((tmp >> 8) - tmp) & 0xff) > 1;
111124 +}
111125 +
111126 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void __ticket_spin_lock(raw_spinlock_t *lock)
111127 +{
111128 + short inc = 0x0100;
111129 +
111130 + asm volatile (
111131 +  "lock ; " "xaddw %w0, %1\n"
111132 +  "1:\t"
111133 +  "cmpb %h0, %b0\n\t"
111134 +  "je 2f\n\t"
111135 +  "rep ; nop\n\t"
111136 +  "movb %1, %b0\n\t"
111137 +
111138 +  "jmp 1b\n"
111139 +  "2:"
111140 +  : "+Q" (inc), "+m" (lock->slock)
111141 +  :
111142 +  : "memory", "cc");
111143 +}
111144 +
111145 +static inline __attribute__((always_inline)) __attribute__((always_inline)) int __ticket_spin_trylock(raw_spinlock_t *lock)
111146 +{
111147 + int tmp;
111148 + short xxx_new;
111149 +
111150 + asm volatile("movw %2,%w0\n\t"
111151 +       "cmpb %h0,%b0\n\t"
111152 +       "jne 1f\n\t"
111153 +       "movw %w0,%w1\n\t"
111154 +       "incb %h1\n\t"
111155 +       "lock ; cmpxchgw %w1,%2\n\t"
111156 +       "1:"
111157 +       "sete %b1\n\t"
111158 +       "movzbl %b1,%0\n\t"
111159 +       : "=&a" (tmp), "=Q" (xxx_new), "+m" (lock->slock)
111160 +       :
111161 +       : "memory", "cc");
111162 +
111163 + return tmp;
111164 +}
111165 +
111166 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void __ticket_spin_unlock(raw_spinlock_t *lock)
111167 +{
111168 + asm volatile("lock ; " "incb %0"
111169 +       : "+m" (lock->slock)
111170 +       :
111171 +       : "memory", "cc");
111172 +}
111173 +# 198 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h"
111174 +struct __byte_spinlock {
111175 + s8 lock;
111176 + s8 spinners;
111177 +};
111178 +
111179 +static inline __attribute__((always_inline)) int __byte_spin_is_locked(raw_spinlock_t *lock)
111180 +{
111181 + struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
111182 + return bl->lock != 0;
111183 +}
111184 +
111185 +static inline __attribute__((always_inline)) int __byte_spin_is_contended(raw_spinlock_t *lock)
111186 +{
111187 + struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
111188 + return bl->spinners != 0;
111189 +}
111190 +
111191 +static inline __attribute__((always_inline)) void __byte_spin_lock(raw_spinlock_t *lock)
111192 +{
111193 + struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
111194 + s8 val = 1;
111195 +
111196 + asm("1: xchgb %1, %0\n"
111197 +     "   test %1,%1\n"
111198 +     "   jz 3f\n"
111199 +     "   " "lock ; " "incb %2\n"
111200 +     "2: rep;nop\n"
111201 +     "   cmpb $1, %0\n"
111202 +     "   je 2b\n"
111203 +     "   " "lock ; " "decb %2\n"
111204 +     "   jmp 1b\n"
111205 +     "3:"
111206 +     : "+m" (bl->lock), "+q" (val), "+m" (bl->spinners): : "memory");
111207 +}
111208 +
111209 +static inline __attribute__((always_inline)) int __byte_spin_trylock(raw_spinlock_t *lock)
111210 +{
111211 + struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
111212 + u8 old = 1;
111213 +
111214 + asm("xchgb %1,%0"
111215 +     : "+m" (bl->lock), "+q" (old) : : "memory");
111216 +
111217 + return old == 0;
111218 +}
111219 +
111220 +static inline __attribute__((always_inline)) void __byte_spin_unlock(raw_spinlock_t *lock)
111221 +{
111222 + struct __byte_spinlock *bl = (struct __byte_spinlock *)lock;
111223 + __asm__ __volatile__("": : :"memory");
111224 + bl->lock = 0;
111225 +}
111226 +# 277 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h"
111227 +static inline __attribute__((always_inline)) void __raw_spin_unlock_wait(raw_spinlock_t *lock)
111228 +{
111229 + while (__raw_spin_is_locked(lock))
111230 +  cpu_relax();
111231 +}
111232 +# 301 "/d/kernels/linux-2.6.27.10-clickport/include/asm/spinlock.h"
111233 +static inline __attribute__((always_inline)) int __raw_read_can_lock(raw_rwlock_t *lock)
111234 +{
111235 + return (int)(lock)->lock > 0;
111236 +}
111237 +
111238 +
111239 +
111240 +
111241 +
111242 +static inline __attribute__((always_inline)) int __raw_write_can_lock(raw_rwlock_t *lock)
111243 +{
111244 + return (lock)->lock == 0x01000000;
111245 +}
111246 +
111247 +static inline __attribute__((always_inline)) void __raw_read_lock(raw_rwlock_t *rw)
111248 +{
111249 + asm volatile("lock ; " " subl $1,(%0)\n\t"
111250 +       "jns 1f\n"
111251 +       "call __read_lock_failed\n\t"
111252 +       "1:\n"
111253 +       ::"a" (rw) : "memory");
111254 +}
111255 +
111256 +static inline __attribute__((always_inline)) void __raw_write_lock(raw_rwlock_t *rw)
111257 +{
111258 + asm volatile("lock ; " " subl %1,(%0)\n\t"
111259 +       "jz 1f\n"
111260 +       "call __write_lock_failed\n\t"
111261 +       "1:\n"
111262 +       ::"a" (rw), "i" (0x01000000) : "memory");
111263 +}
111264 +
111265 +static inline __attribute__((always_inline)) int __raw_read_trylock(raw_rwlock_t *lock)
111266 +{
111267 + atomic_t *count = (atomic_t *)lock;
111268 +
111269 + atomic_dec(count);
111270 + if (((count)->counter) >= 0)
111271 +  return 1;
111272 + atomic_inc(count);
111273 + return 0;
111274 +}
111275 +
111276 +static inline __attribute__((always_inline)) int __raw_write_trylock(raw_rwlock_t *lock)
111277 +{
111278 + atomic_t *count = (atomic_t *)lock;
111279 +
111280 + if (atomic_sub_and_test(0x01000000, count))
111281 +  return 1;
111282 + atomic_add(0x01000000, count);
111283 + return 0;
111284 +}
111285 +
111286 +static inline __attribute__((always_inline)) void __raw_read_unlock(raw_rwlock_t *rw)
111287 +{
111288 + asm volatile("lock ; " "incl %0" :"+m" (rw->lock) : : "memory");
111289 +}
111290 +
111291 +static inline __attribute__((always_inline)) void __raw_write_unlock(raw_rwlock_t *rw)
111292 +{
111293 + asm volatile("lock ; " "addl %1, %0"
111294 +       : "+m" (rw->lock) : "i" (0x01000000) : "memory");
111295 +}
111296 +# 90 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
111297 +# 141 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h"
111298 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_api_smp.h" 1
111299 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock_api_smp.h"
111300 +int in_lock_functions(unsigned long addr);
111301 +
111302 +
111303 +
111304 +void __attribute__((section(".spinlock.text"))) _spin_lock(spinlock_t *lock) ;
111305 +void __attribute__((section(".spinlock.text"))) _spin_lock_nested(spinlock_t *lock, int subclass)
111306 +       ;
111307 +void __attribute__((section(".spinlock.text"))) _spin_lock_nest_lock(spinlock_t *lock, struct lockdep_map *map)
111308 +       ;
111309 +void __attribute__((section(".spinlock.text"))) _read_lock(rwlock_t *lock) ;
111310 +void __attribute__((section(".spinlock.text"))) _write_lock(rwlock_t *lock) ;
111311 +void __attribute__((section(".spinlock.text"))) _spin_lock_bh(spinlock_t *lock) ;
111312 +void __attribute__((section(".spinlock.text"))) _read_lock_bh(rwlock_t *lock) ;
111313 +void __attribute__((section(".spinlock.text"))) _write_lock_bh(rwlock_t *lock) ;
111314 +void __attribute__((section(".spinlock.text"))) _spin_lock_irq(spinlock_t *lock) ;
111315 +void __attribute__((section(".spinlock.text"))) _read_lock_irq(rwlock_t *lock) ;
111316 +void __attribute__((section(".spinlock.text"))) _write_lock_irq(rwlock_t *lock) ;
111317 +unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave(spinlock_t *lock)
111318 +       ;
111319 +unsigned long __attribute__((section(".spinlock.text"))) _spin_lock_irqsave_nested(spinlock_t *lock, int subclass)
111320 +       ;
111321 +unsigned long __attribute__((section(".spinlock.text"))) _read_lock_irqsave(rwlock_t *lock)
111322 +       ;
111323 +unsigned long __attribute__((section(".spinlock.text"))) _write_lock_irqsave(rwlock_t *lock)
111324 +       ;
111325 +int __attribute__((section(".spinlock.text"))) _spin_trylock(spinlock_t *lock);
111326 +int __attribute__((section(".spinlock.text"))) _read_trylock(rwlock_t *lock);
111327 +int __attribute__((section(".spinlock.text"))) _write_trylock(rwlock_t *lock);
111328 +int __attribute__((section(".spinlock.text"))) _spin_trylock_bh(spinlock_t *lock);
111329 +void __attribute__((section(".spinlock.text"))) _spin_unlock(spinlock_t *lock) ;
111330 +void __attribute__((section(".spinlock.text"))) _read_unlock(rwlock_t *lock) ;
111331 +void __attribute__((section(".spinlock.text"))) _write_unlock(rwlock_t *lock) ;
111332 +void __attribute__((section(".spinlock.text"))) _spin_unlock_bh(spinlock_t *lock) ;
111333 +void __attribute__((section(".spinlock.text"))) _read_unlock_bh(rwlock_t *lock) ;
111334 +void __attribute__((section(".spinlock.text"))) _write_unlock_bh(rwlock_t *lock) ;
111335 +void __attribute__((section(".spinlock.text"))) _spin_unlock_irq(spinlock_t *lock) ;
111336 +void __attribute__((section(".spinlock.text"))) _read_unlock_irq(rwlock_t *lock) ;
111337 +void __attribute__((section(".spinlock.text"))) _write_unlock_irq(rwlock_t *lock) ;
111338 +void __attribute__((section(".spinlock.text"))) _spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
111339 +       ;
111340 +void __attribute__((section(".spinlock.text"))) _read_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
111341 +       ;
111342 +void __attribute__((section(".spinlock.text"))) _write_unlock_irqrestore(rwlock_t *lock, unsigned long flags)
111343 +       ;
111344 +# 142 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
111345 +# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h"
111346 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
111347 +# 350 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h" 2
111348 +# 358 "/d/kernels/linux-2.6.27.10-clickport/include/linux/spinlock.h"
111349 +extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock);
111350 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h" 2
111351 +
111352 +
111353 +typedef struct {
111354 + unsigned sequence;
111355 + spinlock_t lock;
111356 +} seqlock_t;
111357 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h"
111358 +static inline __attribute__((always_inline)) void write_seqlock(seqlock_t *sl)
111359 +{
111360 + _spin_lock(&sl->lock);
111361 + ++sl->sequence;
111362 + __asm__ __volatile__("": : :"memory");
111363 +}
111364 +
111365 +static inline __attribute__((always_inline)) void write_sequnlock(seqlock_t *sl)
111366 +{
111367 + __asm__ __volatile__("": : :"memory");
111368 + sl->sequence++;
111369 + do {__raw_spin_unlock(&(&sl->lock)->raw_lock); (void)0; } while (0);
111370 +}
111371 +
111372 +static inline __attribute__((always_inline)) int write_tryseqlock(seqlock_t *sl)
111373 +{
111374 + int ret = (_spin_trylock(&sl->lock));
111375 +
111376 + if (ret) {
111377 +  ++sl->sequence;
111378 +  __asm__ __volatile__("": : :"memory");
111379 + }
111380 + return ret;
111381 +}
111382 +
111383 +
111384 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned read_seqbegin(const seqlock_t *sl)
111385 +{
111386 + unsigned ret;
111387 +
111388 +repeat:
111389 + ret = sl->sequence;
111390 + 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");
111391 + if (__builtin_expect(!!(ret & 1), 0)) {
111392 +  cpu_relax();
111393 +  goto repeat;
111394 + }
111395 +
111396 + return ret;
111397 +}
111398 +
111399 +
111400 +
111401 +
111402 +
111403 +
111404 +static inline __attribute__((always_inline)) __attribute__((always_inline)) int read_seqretry(const seqlock_t *sl, unsigned start)
111405 +{
111406 + 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");
111407 +
111408 + return (sl->sequence != start);
111409 +}
111410 +# 121 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seqlock.h"
111411 +typedef struct seqcount {
111412 + unsigned sequence;
111413 +} seqcount_t;
111414 +
111415 +
111416 +
111417 +
111418 +
111419 +static inline __attribute__((always_inline)) unsigned read_seqcount_begin(const seqcount_t *s)
111420 +{
111421 + unsigned ret;
111422 +
111423 +repeat:
111424 + ret = s->sequence;
111425 + 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");
111426 + if (__builtin_expect(!!(ret & 1), 0)) {
111427 +  cpu_relax();
111428 +  goto repeat;
111429 + }
111430 + return ret;
111431 +}
111432 +
111433 +
111434 +
111435 +
111436 +static inline __attribute__((always_inline)) int read_seqcount_retry(const seqcount_t *s, unsigned start)
111437 +{
111438 + 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");
111439 +
111440 + return s->sequence != start;
111441 +}
111442 +
111443 +
111444 +
111445 +
111446 +
111447 +
111448 +static inline __attribute__((always_inline)) void write_seqcount_begin(seqcount_t *s)
111449 +{
111450 + s->sequence++;
111451 + __asm__ __volatile__("": : :"memory");
111452 +}
111453 +
111454 +static inline __attribute__((always_inline)) void write_seqcount_end(seqcount_t *s)
111455 +{
111456 + __asm__ __volatile__("": : :"memory");
111457 + s->sequence++;
111458 +}
111459 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2
111460 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h" 1
111461 +# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h"
111462 +extern s64 div_s64_rem(s64 dividend, s32 divisor, s32 *remainder);
111463 +
111464 +
111465 +
111466 +extern u64 div64_u64(u64 dividend, u64 divisor);
111467 +# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/math64.h"
111468 +static inline __attribute__((always_inline)) u64 div_u64(u64 dividend, u32 divisor)
111469 +{
111470 + u32 remainder;
111471 + return div_u64_rem(dividend, divisor, &remainder);
111472 +}
111473 +
111474 +
111475 +
111476 +
111477 +
111478 +
111479 +static inline __attribute__((always_inline)) s64 div_s64(s64 dividend, s32 divisor)
111480 +{
111481 + s32 remainder;
111482 + return div_s64_rem(dividend, divisor, &remainder);
111483 +}
111484 +
111485 +
111486 +u32 iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder);
111487 +
111488 +static inline __attribute__((always_inline)) __attribute__((always_inline)) u32
111489 +__iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder)
111490 +{
111491 + u32 ret = 0;
111492 +
111493 + while (dividend >= divisor) {
111494 +
111495 +
111496 +  asm("" : "+rm"(dividend));
111497 +
111498 +  dividend -= divisor;
111499 +  ret++;
111500 + }
111501 +
111502 + *remainder = dividend;
111503 +
111504 + return ret;
111505 +}
111506 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2
111507 +
111508 +
111509 +
111510 +
111511 +struct timespec {
111512 + time_t tv_sec;
111513 + long tv_nsec;
111514 +};
111515 +
111516 +
111517 +struct timeval {
111518 + time_t tv_sec;
111519 + suseconds_t tv_usec;
111520 +};
111521 +
111522 +struct timezone {
111523 + int tz_minuteswest;
111524 + int tz_dsttime;
111525 +};
111526 +# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h"
111527 +static inline __attribute__((always_inline)) int timespec_equal(const struct timespec *a,
111528 +                                 const struct timespec *b)
111529 +{
111530 + return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec);
111531 +}
111532 +
111533 +
111534 +
111535 +
111536 +
111537 +
111538 +static inline __attribute__((always_inline)) int timespec_compare(const struct timespec *lhs, const struct timespec *rhs)
111539 +{
111540 + if (lhs->tv_sec < rhs->tv_sec)
111541 +  return -1;
111542 + if (lhs->tv_sec > rhs->tv_sec)
111543 +  return 1;
111544 + return lhs->tv_nsec - rhs->tv_nsec;
111545 +}
111546 +
111547 +static inline __attribute__((always_inline)) int timeval_compare(const struct timeval *lhs, const struct timeval *rhs)
111548 +{
111549 + if (lhs->tv_sec < rhs->tv_sec)
111550 +  return -1;
111551 + if (lhs->tv_sec > rhs->tv_sec)
111552 +  return 1;
111553 + return lhs->tv_usec - rhs->tv_usec;
111554 +}
111555 +
111556 +extern unsigned long mktime(const unsigned int year, const unsigned int mon,
111557 +       const unsigned int day, const unsigned int hour,
111558 +       const unsigned int min, const unsigned int sec);
111559 +
111560 +extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec);
111561 +
111562 +
111563 +
111564 +
111565 +static inline __attribute__((always_inline)) struct timespec timespec_sub(struct timespec lhs,
111566 +      struct timespec rhs)
111567 +{
111568 + struct timespec ts_delta;
111569 + set_normalized_timespec(&ts_delta, lhs.tv_sec - rhs.tv_sec,
111570 +    lhs.tv_nsec - rhs.tv_nsec);
111571 + return ts_delta;
111572 +}
111573 +
111574 +
111575 +
111576 +
111577 +
111578 +
111579 +
111580 +extern struct timespec xtime;
111581 +extern struct timespec wall_to_monotonic;
111582 +extern seqlock_t xtime_lock;
111583 +
111584 +extern unsigned long read_persistent_clock(void);
111585 +extern int update_persistent_clock(struct timespec now);
111586 +extern int no_sync_cmos_clock __attribute__((__section__(".data.read_mostly")));
111587 +void timekeeping_init(void);
111588 +
111589 +unsigned long get_seconds(void);
111590 +struct timespec current_kernel_time(void);
111591 +
111592 +
111593 +
111594 +
111595 +extern void do_gettimeofday(struct timeval *tv);
111596 +extern int do_settimeofday(struct timespec *tv);
111597 +extern int do_sys_settimeofday(struct timespec *tv, struct timezone *tz);
111598 +
111599 +extern long do_utimes(int dfd, char *filename, struct timespec *times, int flags);
111600 +struct itimerval;
111601 +extern int do_setitimer(int which, struct itimerval *value,
111602 +   struct itimerval *ovalue);
111603 +extern unsigned int alarm_setitimer(unsigned int seconds);
111604 +extern int do_getitimer(int which, struct itimerval *value);
111605 +extern void getnstimeofday(struct timespec *tv);
111606 +extern void getboottime(struct timespec *ts);
111607 +extern void monotonic_to_bootbased(struct timespec *ts);
111608 +
111609 +extern struct timespec timespec_trunc(struct timespec t, unsigned gran);
111610 +extern int timekeeping_valid_for_hres(void);
111611 +extern void update_wall_time(void);
111612 +extern void update_xtime_cache(u64 nsec);
111613 +# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h"
111614 +static inline __attribute__((always_inline)) s64 timespec_to_ns(const struct timespec *ts)
111615 +{
111616 + return ((s64) ts->tv_sec * 1000000000L) + ts->tv_nsec;
111617 +}
111618 +# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h"
111619 +static inline __attribute__((always_inline)) s64 timeval_to_ns(const struct timeval *tv)
111620 +{
111621 + return ((s64) tv->tv_sec * 1000000000L) +
111622 +  tv->tv_usec * 1000L;
111623 +}
111624 +
111625 +
111626 +
111627 +
111628 +
111629 +
111630 +
111631 +extern struct timespec ns_to_timespec(const s64 nsec);
111632 +
111633 +
111634 +
111635 +
111636 +
111637 +
111638 +
111639 +extern struct timeval ns_to_timeval(const s64 nsec);
111640 +# 177 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h"
111641 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void timespec_add_ns(struct timespec *a, u64 ns)
111642 +{
111643 + a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, 1000000000L, &ns);
111644 + a->tv_nsec = ns;
111645 +}
111646 +
111647 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vs_time.h" 1
111648 +# 184 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h" 2
111649 +# 203 "/d/kernels/linux-2.6.27.10-clickport/include/linux/time.h"
111650 +struct itimerspec {
111651 + struct timespec it_interval;
111652 + struct timespec it_value;
111653 +};
111654 +
111655 +struct itimerval {
111656 + struct timeval it_interval;
111657 + struct timeval it_value;
111658 +};
111659 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
111660 +
111661 +
111662 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
111663 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
111664 +
111665 +
111666 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 1
111667 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
111668 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 1
111669 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h"
111670 +struct __kernel_sockaddr_storage {
111671 + unsigned short ss_family;
111672 +
111673 + char __data[128 - sizeof(unsigned short)];
111674 +
111675 +
111676 +} __attribute__ ((aligned((__alignof__ (struct sockaddr *)))));
111677 +
111678 +
111679 +
111680 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/socket.h" 1
111681 +
111682 +
111683 +
111684 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sockios.h" 1
111685 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/socket.h" 2
111686 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2
111687 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sockios.h" 1
111688 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2
111689 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h" 1
111690 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h"
111691 +struct iovec
111692 +{
111693 + void *iov_base;
111694 + __kernel_size_t iov_len;
111695 +};
111696 +
111697 +
111698 +
111699 +struct kvec {
111700 + void *iov_base;
111701 + size_t iov_len;
111702 +};
111703 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/uio.h"
111704 +static inline __attribute__((always_inline)) size_t iov_length(const struct iovec *iov, unsigned long nr_segs)
111705 +{
111706 + unsigned long seg;
111707 + size_t ret = 0;
111708 +
111709 + for (seg = 0; seg < nr_segs; seg++)
111710 +  ret += iov[seg].iov_len;
111711 + return ret;
111712 +}
111713 +
111714 +unsigned long iov_shorten(struct iovec *iov, unsigned long nr_segs, size_t to);
111715 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h" 2
111716 +
111717 +
111718 +
111719 +
111720 +struct seq_file;
111721 +extern void socket_seq_show(struct seq_file *seq);
111722 +
111723 +
111724 +typedef unsigned short sa_family_t;
111725 +
111726 +
111727 +
111728 +
111729 +
111730 +struct sockaddr {
111731 + sa_family_t sa_family;
111732 + char sa_data[14];
111733 +};
111734 +
111735 +struct linger {
111736 + int l_onoff;
111737 + int l_linger;
111738 +};
111739 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h"
111740 +struct msghdr {
111741 + void * msg_name;
111742 + int msg_namelen;
111743 + struct iovec * msg_iov;
111744 + __kernel_size_t msg_iovlen;
111745 + void * msg_control;
111746 + __kernel_size_t msg_controllen;
111747 + unsigned msg_flags;
111748 +};
111749 +
111750 +
111751 +
111752 +
111753 +
111754 +
111755 +
111756 +struct cmsghdr {
111757 + __kernel_size_t cmsg_len;
111758 +        int cmsg_level;
111759 +        int cmsg_type;
111760 +};
111761 +# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h"
111762 +static inline __attribute__((always_inline)) struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
111763 +            struct cmsghdr *__cmsg)
111764 +{
111765 + struct cmsghdr * __ptr;
111766 +
111767 + __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + ( ((__cmsg->cmsg_len)+sizeof(long)-1) & ~(sizeof(long)-1) ));
111768 + if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)
111769 +  return (struct cmsghdr *)0;
111770 +
111771 + return __ptr;
111772 +}
111773 +
111774 +static inline __attribute__((always_inline)) struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)
111775 +{
111776 + return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
111777 +}
111778 +
111779 +
111780 +
111781 +
111782 +
111783 +
111784 +
111785 +struct ucred {
111786 + __u32 pid;
111787 + __u32 uid;
111788 + __u32 gid;
111789 +};
111790 +# 303 "/d/kernels/linux-2.6.27.10-clickport/include/linux/socket.h"
111791 +extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
111792 +extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov,
111793 +    int offset, int len);
111794 +extern int csum_partial_copy_fromiovecend(unsigned char *kdata,
111795 +       struct iovec *iov,
111796 +       int offset,
111797 +       unsigned int len, __wsum *csump);
111798 +
111799 +extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode);
111800 +extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
111801 +extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void *uaddr, int *ulen);
111802 +extern int move_addr_to_kernel(void *uaddr, int ulen, struct sockaddr *kaddr);
111803 +extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data);
111804 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2
111805 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
111806 +typedef enum {
111807 + SS_FREE = 0,
111808 + SS_UNCONNECTED,
111809 + SS_CONNECTING,
111810 + SS_CONNECTED,
111811 + SS_DISCONNECTING
111812 +} socket_state;
111813 +
111814 +
111815 +
111816 +
111817 +
111818 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" 1
111819 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h"
111820 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioctl.h" 1
111821 +
111822 +
111823 +
111824 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ioctl.h" 1
111825 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/ioctl.h" 1
111826 +# 73 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/ioctl.h"
111827 +extern unsigned int __invalid_size_argument_for_IOC;
111828 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ioctl.h" 2
111829 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioctl.h" 2
111830 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h" 2
111831 +# 35 "/d/kernels/linux-2.6.27.10-clickport/include/linux/random.h"
111832 +struct rand_pool_info {
111833 + int entropy_count;
111834 + int buf_size;
111835 + __u32 buf[0];
111836 +};
111837 +
111838 +
111839 +
111840 +
111841 +
111842 +extern void rand_initialize_irq(int irq);
111843 +
111844 +extern void add_input_randomness(unsigned int type, unsigned int code,
111845 +     unsigned int value);
111846 +extern void add_interrupt_randomness(int irq);
111847 +
111848 +extern void get_random_bytes(void *buf, int nbytes);
111849 +void generate_random_uuid(unsigned char uuid_out[16]);
111850 +
111851 +extern __u32 secure_ip_id(__be32 daddr);
111852 +extern u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
111853 +extern u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
111854 +          __be16 dport);
111855 +extern __u32 secure_tcp_sequence_number(__be32 saddr, __be32 daddr,
111856 +     __be16 sport, __be16 dport);
111857 +extern __u32 secure_tcpv6_sequence_number(__be32 *saddr, __be32 *daddr,
111858 +       __be16 sport, __be16 dport);
111859 +extern u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
111860 +           __be16 sport, __be16 dport);
111861 +
111862 +
111863 +
111864 +
111865 +
111866 +unsigned int get_random_int(void);
111867 +unsigned long randomize_range(unsigned long start, unsigned long end, unsigned long len);
111868 +
111869 +u32 random32(void);
111870 +void srandom32(u32 seed);
111871 +# 58 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2
111872 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h" 1
111873 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111874 +typedef struct __wait_queue wait_queue_t;
111875 +typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key);
111876 +int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
111877 +
111878 +struct __wait_queue {
111879 + unsigned int flags;
111880 +
111881 + void *xxx_private;
111882 + wait_queue_func_t func;
111883 + struct list_head task_list;
111884 +};
111885 +
111886 +struct wait_bit_key {
111887 + void *flags;
111888 + int bit_nr;
111889 +};
111890 +
111891 +struct wait_bit_queue {
111892 + struct wait_bit_key key;
111893 + wait_queue_t wait;
111894 +};
111895 +
111896 +struct __wait_queue_head {
111897 + spinlock_t lock;
111898 + struct list_head task_list;
111899 +};
111900 +typedef struct __wait_queue_head wait_queue_head_t;
111901 +
111902 +struct task_struct;
111903 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111904 +extern void init_waitqueue_head(wait_queue_head_t *q);
111905 +# 91 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111906 +static inline __attribute__((always_inline)) void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p)
111907 +{
111908 + q->flags = 0;
111909 + q->xxx_private = p;
111910 + q->func = default_wake_function;
111911 +}
111912 +
111913 +static inline __attribute__((always_inline)) void init_waitqueue_func_entry(wait_queue_t *q,
111914 +     wait_queue_func_t func)
111915 +{
111916 + q->flags = 0;
111917 + q->xxx_private = 0;
111918 + q->func = func;
111919 +}
111920 +
111921 +static inline __attribute__((always_inline)) int waitqueue_active(wait_queue_head_t *q)
111922 +{
111923 + return !list_empty(&q->task_list);
111924 +}
111925 +# 120 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111926 +extern void add_wait_queue(wait_queue_head_t *q, wait_queue_t *wait);
111927 +extern void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t *wait);
111928 +extern void remove_wait_queue(wait_queue_head_t *q, wait_queue_t *wait);
111929 +
111930 +static inline __attribute__((always_inline)) void __add_wait_queue(wait_queue_head_t *head, wait_queue_t *xxx_new)
111931 +{
111932 + list_add(&xxx_new->task_list, &head->task_list);
111933 +}
111934 +
111935 +
111936 +
111937 +
111938 +static inline __attribute__((always_inline)) void __add_wait_queue_tail(wait_queue_head_t *head,
111939 +      wait_queue_t *xxx_new)
111940 +{
111941 + list_add_tail(&xxx_new->task_list, &head->task_list);
111942 +}
111943 +
111944 +static inline __attribute__((always_inline)) void __remove_wait_queue(wait_queue_head_t *head,
111945 +       wait_queue_t *old)
111946 +{
111947 + list_del(&old->task_list);
111948 +}
111949 +
111950 +void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr, void *key);
111951 +extern void __wake_up_locked(wait_queue_head_t *q, unsigned int mode);
111952 +extern void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr);
111953 +void __wake_up_bit(wait_queue_head_t *, void *, int);
111954 +int __wait_on_bit(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned);
111955 +int __wait_on_bit_lock(wait_queue_head_t *, struct wait_bit_queue *, int (*)(void *), unsigned);
111956 +void wake_up_bit(void *, int);
111957 +int out_of_line_wait_on_bit(void *, int, int (*)(void *), unsigned);
111958 +int out_of_line_wait_on_bit_lock(void *, int, int (*)(void *), unsigned);
111959 +wait_queue_head_t *bit_waitqueue(void *, int);
111960 +# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111961 +static inline __attribute__((always_inline)) void add_wait_queue_exclusive_locked(wait_queue_head_t *q,
111962 +         wait_queue_t * wait)
111963 +{
111964 + wait->flags |= 0x01;
111965 + __add_wait_queue_tail(q, wait);
111966 +}
111967 +
111968 +
111969 +
111970 +
111971 +static inline __attribute__((always_inline)) void remove_wait_queue_locked(wait_queue_head_t *q,
111972 +         wait_queue_t * wait)
111973 +{
111974 + __remove_wait_queue(q, wait);
111975 +}
111976 +
111977 +
111978 +
111979 +
111980 +
111981 +
111982 +extern void sleep_on(wait_queue_head_t *q);
111983 +extern long sleep_on_timeout(wait_queue_head_t *q,
111984 +          signed long timeout);
111985 +extern void interruptible_sleep_on(wait_queue_head_t *q);
111986 +extern long interruptible_sleep_on_timeout(wait_queue_head_t *q,
111987 +        signed long timeout);
111988 +
111989 +
111990 +
111991 +
111992 +void prepare_to_wait(wait_queue_head_t *q, wait_queue_t *wait, int state);
111993 +void prepare_to_wait_exclusive(wait_queue_head_t *q, wait_queue_t *wait, int state);
111994 +void finish_wait(wait_queue_head_t *q, wait_queue_t *wait);
111995 +int autoremove_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
111996 +int wake_bit_function(wait_queue_t *wait, unsigned mode, int sync, void *key);
111997 +# 485 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
111998 +static inline __attribute__((always_inline)) int wait_on_bit(void *word, int bit,
111999 +    int (*action)(void *), unsigned mode)
112000 +{
112001 + if (!(__builtin_constant_p((bit)) ? constant_test_bit((bit), ((volatile unsigned long *) word)) : variable_test_bit((bit), ((volatile unsigned long *) word))))
112002 +  return 0;
112003 + return out_of_line_wait_on_bit(word, bit, action, mode);
112004 +}
112005 +# 509 "/d/kernels/linux-2.6.27.10-clickport/include/linux/wait.h"
112006 +static inline __attribute__((always_inline)) int wait_on_bit_lock(void *word, int bit,
112007 +    int (*action)(void *), unsigned mode)
112008 +{
112009 + if (!test_and_set_bit(bit, (volatile unsigned long *) word))
112010 +  return 0;
112011 + return out_of_line_wait_on_bit_lock(word, bit, action, mode);
112012 +}
112013 +# 59 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2
112014 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fcntl.h" 1
112015 +
112016 +
112017 +
112018 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fcntl.h" 1
112019 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h" 1
112020 +# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h"
112021 +struct flock {
112022 + short l_type;
112023 + short l_whence;
112024 + off_t l_start;
112025 + off_t l_len;
112026 + pid_t l_pid;
112027 +
112028 +};
112029 +# 140 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/fcntl.h"
112030 +struct flock64 {
112031 + short l_type;
112032 + short l_whence;
112033 + loff_t l_start;
112034 + loff_t l_len;
112035 + pid_t l_pid;
112036 +
112037 +};
112038 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fcntl.h" 2
112039 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fcntl.h" 2
112040 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2
112041 +
112042 +struct poll_table_struct;
112043 +struct pipe_inode_info;
112044 +struct inode;
112045 +struct net;
112046 +# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
112047 +enum sock_type {
112048 + SOCK_STREAM = 1,
112049 + SOCK_DGRAM = 2,
112050 + SOCK_RAW = 3,
112051 + SOCK_RDM = 4,
112052 + SOCK_SEQPACKET = 5,
112053 + SOCK_DCCP = 6,
112054 + SOCK_PACKET = 10,
112055 +};
112056 +# 112 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
112057 +enum sock_shutdown_cmd {
112058 + SHUT_RD = 0,
112059 + SHUT_WR = 1,
112060 + SHUT_RDWR = 2,
112061 +};
112062 +# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
112063 +struct socket {
112064 + socket_state state;
112065 + short type;
112066 + unsigned long flags;
112067 + const struct proto_ops *ops;
112068 + struct fasync_struct *fasync_list;
112069 + struct file *file;
112070 + struct sock *sk;
112071 + wait_queue_head_t wait;
112072 +};
112073 +
112074 +struct vm_area_struct;
112075 +struct page;
112076 +struct kiocb;
112077 +struct sockaddr;
112078 +struct msghdr;
112079 +struct module;
112080 +
112081 +struct proto_ops {
112082 + int family;
112083 + struct module *owner;
112084 + int (*release) (struct socket *sock);
112085 + int (*bind) (struct socket *sock,
112086 +          struct sockaddr *myaddr,
112087 +          int sockaddr_len);
112088 + int (*connect) (struct socket *sock,
112089 +          struct sockaddr *vaddr,
112090 +          int sockaddr_len, int flags);
112091 + int (*socketpair)(struct socket *sock1,
112092 +          struct socket *sock2);
112093 + int (*accept) (struct socket *sock,
112094 +          struct socket *newsock, int flags);
112095 + int (*getname) (struct socket *sock,
112096 +          struct sockaddr *addr,
112097 +          int *sockaddr_len, int peer);
112098 + unsigned int (*poll) (struct file *file, struct socket *sock,
112099 +          struct poll_table_struct *wait);
112100 + int (*ioctl) (struct socket *sock, unsigned int cmd,
112101 +          unsigned long arg);
112102 + int (*compat_ioctl) (struct socket *sock, unsigned int cmd,
112103 +          unsigned long arg);
112104 + int (*listen) (struct socket *sock, int len);
112105 + int (*shutdown) (struct socket *sock, int flags);
112106 + int (*setsockopt)(struct socket *sock, int level,
112107 +          int optname, char *optval, int optlen);
112108 + int (*getsockopt)(struct socket *sock, int level,
112109 +          int optname, char *optval, int *optlen);
112110 + int (*compat_setsockopt)(struct socket *sock, int level,
112111 +          int optname, char *optval, int optlen);
112112 + int (*compat_getsockopt)(struct socket *sock, int level,
112113 +          int optname, char *optval, int *optlen);
112114 + int (*sendmsg) (struct kiocb *iocb, struct socket *sock,
112115 +          struct msghdr *m, size_t total_len);
112116 + int (*recvmsg) (struct kiocb *iocb, struct socket *sock,
112117 +          struct msghdr *m, size_t total_len,
112118 +          int flags);
112119 + int (*mmap) (struct file *file, struct socket *sock,
112120 +          struct vm_area_struct * vma);
112121 + ssize_t (*sendpage) (struct socket *sock, struct page *page,
112122 +          int offset, size_t size, int flags);
112123 + ssize_t (*splice_read)(struct socket *sock, loff_t *ppos,
112124 +           struct pipe_inode_info *pipe, size_t len, unsigned int flags);
112125 +};
112126 +
112127 +struct net_proto_family {
112128 + int family;
112129 + int (*create)(struct net *net, struct socket *sock, int protocol);
112130 + struct module *owner;
112131 +};
112132 +
112133 +struct iovec;
112134 +struct kvec;
112135 +
112136 +enum {
112137 + SOCK_WAKE_IO,
112138 + SOCK_WAKE_WAITD,
112139 + SOCK_WAKE_SPACE,
112140 + SOCK_WAKE_URG,
112141 +};
112142 +
112143 +extern int sock_wake_async(struct socket *sk, int how, int band);
112144 +extern int sock_register(const struct net_proto_family *fam);
112145 +extern void sock_unregister(int family);
112146 +extern int sock_create(int family, int type, int proto,
112147 +     struct socket **res);
112148 +extern int sock_create_kern(int family, int type, int proto,
112149 +          struct socket **res);
112150 +extern int sock_create_lite(int family, int type, int proto,
112151 +          struct socket **res);
112152 +extern void sock_release(struct socket *sock);
112153 +extern int sock_sendmsg(struct socket *sock, struct msghdr *msg,
112154 +      size_t len);
112155 +extern int sock_recvmsg(struct socket *sock, struct msghdr *msg,
112156 +      size_t size, int flags);
112157 +extern int sock_map_fd(struct socket *sock, int flags);
112158 +extern struct socket *sockfd_lookup(int fd, int *err);
112159 +
112160 +extern int net_ratelimit(void);
112161 +extern long do_accept(int fd, struct sockaddr *upeer_sockaddr,
112162 +          int *upeer_addrlen, int flags);
112163 +
112164 +
112165 +
112166 +
112167 +extern int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
112168 +        struct kvec *vec, size_t num, size_t len);
112169 +extern int kernel_recvmsg(struct socket *sock, struct msghdr *msg,
112170 +        struct kvec *vec, size_t num,
112171 +        size_t len, int flags);
112172 +
112173 +extern int kernel_bind(struct socket *sock, struct sockaddr *addr,
112174 +         int addrlen);
112175 +extern int kernel_listen(struct socket *sock, int backlog);
112176 +extern int kernel_accept(struct socket *sock, struct socket **newsock,
112177 +    int flags);
112178 +extern int kernel_connect(struct socket *sock, struct sockaddr *addr,
112179 +     int addrlen, int flags);
112180 +extern int kernel_getsockname(struct socket *sock, struct sockaddr *addr,
112181 +         int *addrlen);
112182 +extern int kernel_getpeername(struct socket *sock, struct sockaddr *addr,
112183 +         int *addrlen);
112184 +extern int kernel_getsockopt(struct socket *sock, int level, int optname,
112185 +        char *optval, int *optlen);
112186 +extern int kernel_setsockopt(struct socket *sock, int level, int optname,
112187 +        char *optval, int optlen);
112188 +extern int kernel_sendpage(struct socket *sock, struct page *page, int offset,
112189 +      size_t size, int flags);
112190 +extern int kernel_sock_ioctl(struct socket *sock, int cmd, unsigned long arg);
112191 +extern int kernel_sock_shutdown(struct socket *sock,
112192 +    enum sock_shutdown_cmd how);
112193 +# 354 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h"
112194 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h" 1
112195 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h"
112196 +struct file;
112197 +struct completion;
112198 +
112199 +
112200 +
112201 +
112202 +
112203 +
112204 +struct __sysctl_args {
112205 + int *name;
112206 + int nlen;
112207 + void *oldval;
112208 + size_t *oldlenp;
112209 + void *newval;
112210 + size_t newlen;
112211 + unsigned long __unused[4];
112212 +};
112213 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h"
112214 +enum
112215 +{
112216 + CTL_KERN=1,
112217 + CTL_VM=2,
112218 + CTL_NET=3,
112219 + CTL_PROC=4,
112220 + CTL_FS=5,
112221 + CTL_DEBUG=6,
112222 + CTL_DEV=7,
112223 + CTL_BUS=8,
112224 + CTL_ABI=9,
112225 + CTL_CPU=10,
112226 + CTL_ARLAN=254,
112227 + CTL_VSERVER=4242,
112228 + CTL_S390DBF=5677,
112229 + CTL_SUNRPC=7249,
112230 + CTL_PM=9899,
112231 + CTL_FRV=9898,
112232 +};
112233 +
112234 +
112235 +enum
112236 +{
112237 + CTL_BUS_ISA=1
112238 +};
112239 +
112240 +
112241 +enum
112242 +{
112243 + INOTIFY_MAX_USER_INSTANCES=1,
112244 + INOTIFY_MAX_USER_WATCHES=2,
112245 + INOTIFY_MAX_QUEUED_EVENTS=3
112246 +};
112247 +
112248 +
112249 +enum
112250 +{
112251 + KERN_OSTYPE=1,
112252 + KERN_OSRELEASE=2,
112253 + KERN_OSREV=3,
112254 + KERN_VERSION=4,
112255 + KERN_SECUREMASK=5,
112256 + KERN_PROF=6,
112257 + KERN_NODENAME=7,
112258 + KERN_DOMAINNAME=8,
112259 +
112260 + KERN_PANIC=15,
112261 + KERN_REALROOTDEV=16,
112262 + KERN_VSHELPER=17,
112263 +
112264 + KERN_SPARC_REBOOT=21,
112265 + KERN_CTLALTDEL=22,
112266 + KERN_PRINTK=23,
112267 + KERN_NAMETRANS=24,
112268 + KERN_PPC_HTABRECLAIM=25,
112269 + KERN_PPC_ZEROPAGED=26,
112270 + KERN_PPC_POWERSAVE_NAP=27,
112271 + KERN_MODPROBE=28,
112272 + KERN_SG_BIG_BUFF=29,
112273 + KERN_ACCT=30,
112274 + KERN_PPC_L2CR=31,
112275 +
112276 + KERN_RTSIGNR=32,
112277 + KERN_RTSIGMAX=33,
112278 +
112279 + KERN_SHMMAX=34,
112280 + KERN_MSGMAX=35,
112281 + KERN_MSGMNB=36,
112282 + KERN_MSGPOOL=37,
112283 + KERN_SYSRQ=38,
112284 + KERN_MAX_THREADS=39,
112285 +  KERN_RANDOM=40,
112286 +  KERN_SHMALL=41,
112287 +  KERN_MSGMNI=42,
112288 +  KERN_SEM=43,
112289 +  KERN_SPARC_STOP_A=44,
112290 +  KERN_SHMMNI=45,
112291 + KERN_OVERFLOWUID=46,
112292 + KERN_OVERFLOWGID=47,
112293 + KERN_SHMPATH=48,
112294 + KERN_HOTPLUG=49,
112295 + KERN_IEEE_EMULATION_WARNINGS=50,
112296 + KERN_S390_USER_DEBUG_LOGGING=51,
112297 + KERN_CORE_USES_PID=52,
112298 + KERN_TAINTED=53,
112299 + KERN_CADPID=54,
112300 + KERN_PIDMAX=55,
112301 +   KERN_CORE_PATTERN=56,
112302 + KERN_PANIC_ON_OOPS=57,
112303 + KERN_HPPA_PWRSW=58,
112304 + KERN_HPPA_UNALIGNED=59,
112305 + KERN_PRINTK_RATELIMIT=60,
112306 + KERN_PRINTK_RATELIMIT_BURST=61,
112307 + KERN_PTY=62,
112308 + KERN_NGROUPS_MAX=63,
112309 + KERN_SPARC_SCONS_PWROFF=64,
112310 + KERN_HZ_TIMER=65,
112311 + KERN_UNKNOWN_NMI_PANIC=66,
112312 + KERN_BOOTLOADER_TYPE=67,
112313 + KERN_RANDOMIZE=68,
112314 + KERN_SETUID_DUMPABLE=69,
112315 + KERN_SPIN_RETRY=70,
112316 + KERN_ACPI_VIDEO_FLAGS=71,
112317 + KERN_IA64_UNALIGNED=72,
112318 + KERN_COMPAT_LOG=73,
112319 + KERN_MAX_LOCK_DEPTH=74,
112320 + KERN_NMI_WATCHDOG=75,
112321 + KERN_PANIC_ON_NMI=76,
112322 +};
112323 +
112324 +
112325 +
112326 +
112327 +enum
112328 +{
112329 + VM_UNUSED1=1,
112330 + VM_UNUSED2=2,
112331 + VM_UNUSED3=3,
112332 + VM_UNUSED4=4,
112333 + VM_OVERCOMMIT_MEMORY=5,
112334 + VM_UNUSED5=6,
112335 + VM_UNUSED7=7,
112336 + VM_UNUSED8=8,
112337 + VM_UNUSED9=9,
112338 + VM_PAGE_CLUSTER=10,
112339 + VM_DIRTY_BACKGROUND=11,
112340 + VM_DIRTY_RATIO=12,
112341 + VM_DIRTY_WB_CS=13,
112342 + VM_DIRTY_EXPIRE_CS=14,
112343 + VM_NR_PDFLUSH_THREADS=15,
112344 + VM_OVERCOMMIT_RATIO=16,
112345 + VM_PAGEBUF=17,
112346 + VM_HUGETLB_PAGES=18,
112347 + VM_SWAPPINESS=19,
112348 + VM_LOWMEM_RESERVE_RATIO=20,
112349 + VM_MIN_FREE_KBYTES=21,
112350 + VM_MAX_MAP_COUNT=22,
112351 + VM_LAPTOP_MODE=23,
112352 + VM_BLOCK_DUMP=24,
112353 + VM_HUGETLB_GROUP=25,
112354 + VM_VFS_CACHE_PRESSURE=26,
112355 + VM_LEGACY_VA_LAYOUT=27,
112356 + VM_SWAP_TOKEN_TIMEOUT=28,
112357 + VM_DROP_PAGECACHE=29,
112358 + VM_PERCPU_PAGELIST_FRACTION=30,
112359 + VM_ZONE_RECLAIM_MODE=31,
112360 + VM_MIN_UNMAPPED=32,
112361 + VM_PANIC_ON_OOM=33,
112362 + VM_VDSO_ENABLED=34,
112363 + VM_MIN_SLAB=35,
112364 +};
112365 +
112366 +
112367 +
112368 +enum
112369 +{
112370 + NET_CORE=1,
112371 + NET_ETHER=2,
112372 + NET_802=3,
112373 + NET_UNIX=4,
112374 + NET_IPV4=5,
112375 + NET_IPX=6,
112376 + NET_ATALK=7,
112377 + NET_NETROM=8,
112378 + NET_AX25=9,
112379 + NET_BRIDGE=10,
112380 + NET_ROSE=11,
112381 + NET_IPV6=12,
112382 + NET_X25=13,
112383 + NET_TR=14,
112384 + NET_DECNET=15,
112385 + NET_ECONET=16,
112386 + NET_SCTP=17,
112387 + NET_LLC=18,
112388 + NET_NETFILTER=19,
112389 + NET_DCCP=20,
112390 + NET_IRDA=412,
112391 +};
112392 +
112393 +
112394 +enum
112395 +{
112396 + RANDOM_POOLSIZE=1,
112397 + RANDOM_ENTROPY_COUNT=2,
112398 + RANDOM_READ_THRESH=3,
112399 + RANDOM_WRITE_THRESH=4,
112400 + RANDOM_BOOT_ID=5,
112401 + RANDOM_UUID=6
112402 +};
112403 +
112404 +
112405 +enum
112406 +{
112407 + PTY_MAX=1,
112408 + PTY_NR=2
112409 +};
112410 +
112411 +
112412 +enum
112413 +{
112414 + BUS_ISA_MEM_BASE=1,
112415 + BUS_ISA_PORT_BASE=2,
112416 + BUS_ISA_PORT_SHIFT=3
112417 +};
112418 +
112419 +
112420 +enum
112421 +{
112422 + NET_CORE_WMEM_MAX=1,
112423 + NET_CORE_RMEM_MAX=2,
112424 + NET_CORE_WMEM_DEFAULT=3,
112425 + NET_CORE_RMEM_DEFAULT=4,
112426 +
112427 + NET_CORE_MAX_BACKLOG=6,
112428 + NET_CORE_FASTROUTE=7,
112429 + NET_CORE_MSG_COST=8,
112430 + NET_CORE_MSG_BURST=9,
112431 + NET_CORE_OPTMEM_MAX=10,
112432 + NET_CORE_HOT_LIST_LENGTH=11,
112433 + NET_CORE_DIVERT_VERSION=12,
112434 + NET_CORE_NO_CONG_THRESH=13,
112435 + NET_CORE_NO_CONG=14,
112436 + NET_CORE_LO_CONG=15,
112437 + NET_CORE_MOD_CONG=16,
112438 + NET_CORE_DEV_WEIGHT=17,
112439 + NET_CORE_SOMAXCONN=18,
112440 + NET_CORE_BUDGET=19,
112441 + NET_CORE_AEVENT_ETIME=20,
112442 + NET_CORE_AEVENT_RSEQTH=21,
112443 + NET_CORE_WARNINGS=22,
112444 +};
112445 +
112446 +
112447 +
112448 +
112449 +
112450 +
112451 +
112452 +enum
112453 +{
112454 + NET_UNIX_DESTROY_DELAY=1,
112455 + NET_UNIX_DELETE_DELAY=2,
112456 + NET_UNIX_MAX_DGRAM_QLEN=3,
112457 +};
112458 +
112459 +
112460 +enum
112461 +{
112462 + NET_NF_CONNTRACK_MAX=1,
112463 + NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
112464 + NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
112465 + NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
112466 + NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
112467 + NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
112468 + NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
112469 + NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
112470 + NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
112471 + NET_NF_CONNTRACK_UDP_TIMEOUT=10,
112472 + NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
112473 + NET_NF_CONNTRACK_ICMP_TIMEOUT=12,
112474 + NET_NF_CONNTRACK_GENERIC_TIMEOUT=13,
112475 + NET_NF_CONNTRACK_BUCKETS=14,
112476 + NET_NF_CONNTRACK_LOG_INVALID=15,
112477 + NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
112478 + NET_NF_CONNTRACK_TCP_LOOSE=17,
112479 + NET_NF_CONNTRACK_TCP_BE_LIBERAL=18,
112480 + NET_NF_CONNTRACK_TCP_MAX_RETRANS=19,
112481 + NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
112482 + NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
112483 + NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
112484 + NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
112485 + NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
112486 + NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
112487 + NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
112488 + NET_NF_CONNTRACK_COUNT=27,
112489 + NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28,
112490 + NET_NF_CONNTRACK_FRAG6_TIMEOUT=29,
112491 + NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30,
112492 + NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31,
112493 + NET_NF_CONNTRACK_CHECKSUM=32,
112494 +};
112495 +
112496 +
112497 +enum
112498 +{
112499 +
112500 + NET_IPV4_FORWARD=8,
112501 + NET_IPV4_DYNADDR=9,
112502 +
112503 + NET_IPV4_CONF=16,
112504 + NET_IPV4_NEIGH=17,
112505 + NET_IPV4_ROUTE=18,
112506 + NET_IPV4_FIB_HASH=19,
112507 + NET_IPV4_NETFILTER=20,
112508 +
112509 + NET_IPV4_TCP_TIMESTAMPS=33,
112510 + NET_IPV4_TCP_WINDOW_SCALING=34,
112511 + NET_IPV4_TCP_SACK=35,
112512 + NET_IPV4_TCP_RETRANS_COLLAPSE=36,
112513 + NET_IPV4_DEFAULT_TTL=37,
112514 + NET_IPV4_AUTOCONFIG=38,
112515 + NET_IPV4_NO_PMTU_DISC=39,
112516 + NET_IPV4_TCP_SYN_RETRIES=40,
112517 + NET_IPV4_IPFRAG_HIGH_THRESH=41,
112518 + NET_IPV4_IPFRAG_LOW_THRESH=42,
112519 + NET_IPV4_IPFRAG_TIME=43,
112520 + NET_IPV4_TCP_MAX_KA_PROBES=44,
112521 + NET_IPV4_TCP_KEEPALIVE_TIME=45,
112522 + NET_IPV4_TCP_KEEPALIVE_PROBES=46,
112523 + NET_IPV4_TCP_RETRIES1=47,
112524 + NET_IPV4_TCP_RETRIES2=48,
112525 + NET_IPV4_TCP_FIN_TIMEOUT=49,
112526 + NET_IPV4_IP_MASQ_DEBUG=50,
112527 + NET_TCP_SYNCOOKIES=51,
112528 + NET_TCP_STDURG=52,
112529 + NET_TCP_RFC1337=53,
112530 + NET_TCP_SYN_TAILDROP=54,
112531 + NET_TCP_MAX_SYN_BACKLOG=55,
112532 + NET_IPV4_LOCAL_PORT_RANGE=56,
112533 + NET_IPV4_ICMP_ECHO_IGNORE_ALL=57,
112534 + NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58,
112535 + NET_IPV4_ICMP_SOURCEQUENCH_RATE=59,
112536 + NET_IPV4_ICMP_DESTUNREACH_RATE=60,
112537 + NET_IPV4_ICMP_TIMEEXCEED_RATE=61,
112538 + NET_IPV4_ICMP_PARAMPROB_RATE=62,
112539 + NET_IPV4_ICMP_ECHOREPLY_RATE=63,
112540 + NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64,
112541 + NET_IPV4_IGMP_MAX_MEMBERSHIPS=65,
112542 + NET_TCP_TW_RECYCLE=66,
112543 + NET_IPV4_ALWAYS_DEFRAG=67,
112544 + NET_IPV4_TCP_KEEPALIVE_INTVL=68,
112545 + NET_IPV4_INET_PEER_THRESHOLD=69,
112546 + NET_IPV4_INET_PEER_MINTTL=70,
112547 + NET_IPV4_INET_PEER_MAXTTL=71,
112548 + NET_IPV4_INET_PEER_GC_MINTIME=72,
112549 + NET_IPV4_INET_PEER_GC_MAXTIME=73,
112550 + NET_TCP_ORPHAN_RETRIES=74,
112551 + NET_TCP_ABORT_ON_OVERFLOW=75,
112552 + NET_TCP_SYNACK_RETRIES=76,
112553 + NET_TCP_MAX_ORPHANS=77,
112554 + NET_TCP_MAX_TW_BUCKETS=78,
112555 + NET_TCP_FACK=79,
112556 + NET_TCP_REORDERING=80,
112557 + NET_TCP_ECN=81,
112558 + NET_TCP_DSACK=82,
112559 + NET_TCP_MEM=83,
112560 + NET_TCP_WMEM=84,
112561 + NET_TCP_RMEM=85,
112562 + NET_TCP_APP_WIN=86,
112563 + NET_TCP_ADV_WIN_SCALE=87,
112564 + NET_IPV4_NONLOCAL_BIND=88,
112565 + NET_IPV4_ICMP_RATELIMIT=89,
112566 + NET_IPV4_ICMP_RATEMASK=90,
112567 + NET_TCP_TW_REUSE=91,
112568 + NET_TCP_FRTO=92,
112569 + NET_TCP_LOW_LATENCY=93,
112570 + NET_IPV4_IPFRAG_SECRET_INTERVAL=94,
112571 + NET_IPV4_IGMP_MAX_MSF=96,
112572 + NET_TCP_NO_METRICS_SAVE=97,
112573 + NET_TCP_DEFAULT_WIN_SCALE=105,
112574 + NET_TCP_MODERATE_RCVBUF=106,
112575 + NET_TCP_TSO_WIN_DIVISOR=107,
112576 + NET_TCP_BIC_BETA=108,
112577 + NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,
112578 + NET_TCP_CONG_CONTROL=110,
112579 + NET_TCP_ABC=111,
112580 + NET_IPV4_IPFRAG_MAX_DIST=112,
112581 +  NET_TCP_MTU_PROBING=113,
112582 + NET_TCP_BASE_MSS=114,
112583 + NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115,
112584 + NET_TCP_DMA_COPYBREAK=116,
112585 + NET_TCP_SLOW_START_AFTER_IDLE=117,
112586 + NET_CIPSOV4_CACHE_ENABLE=118,
112587 + NET_CIPSOV4_CACHE_BUCKET_SIZE=119,
112588 + NET_CIPSOV4_RBM_OPTFMT=120,
112589 + NET_CIPSOV4_RBM_STRICTVALID=121,
112590 + NET_TCP_AVAIL_CONG_CONTROL=122,
112591 + NET_TCP_ALLOWED_CONG_CONTROL=123,
112592 + NET_TCP_MAX_SSTHRESH=124,
112593 + NET_TCP_FRTO_RESPONSE=125,
112594 +};
112595 +
112596 +enum {
112597 + NET_IPV4_ROUTE_FLUSH=1,
112598 + NET_IPV4_ROUTE_MIN_DELAY=2,
112599 + NET_IPV4_ROUTE_MAX_DELAY=3,
112600 + NET_IPV4_ROUTE_GC_THRESH=4,
112601 + NET_IPV4_ROUTE_MAX_SIZE=5,
112602 + NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
112603 + NET_IPV4_ROUTE_GC_TIMEOUT=7,
112604 + NET_IPV4_ROUTE_GC_INTERVAL=8,
112605 + NET_IPV4_ROUTE_REDIRECT_LOAD=9,
112606 + NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
112607 + NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
112608 + NET_IPV4_ROUTE_ERROR_COST=12,
112609 + NET_IPV4_ROUTE_ERROR_BURST=13,
112610 + NET_IPV4_ROUTE_GC_ELASTICITY=14,
112611 + NET_IPV4_ROUTE_MTU_EXPIRES=15,
112612 + NET_IPV4_ROUTE_MIN_PMTU=16,
112613 + NET_IPV4_ROUTE_MIN_ADVMSS=17,
112614 + NET_IPV4_ROUTE_SECRET_INTERVAL=18,
112615 + NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19,
112616 +};
112617 +
112618 +enum
112619 +{
112620 + NET_PROTO_CONF_ALL=-2,
112621 + NET_PROTO_CONF_DEFAULT=-3
112622 +
112623 +
112624 +};
112625 +
112626 +enum
112627 +{
112628 + NET_IPV4_CONF_FORWARDING=1,
112629 + NET_IPV4_CONF_MC_FORWARDING=2,
112630 + NET_IPV4_CONF_PROXY_ARP=3,
112631 + NET_IPV4_CONF_ACCEPT_REDIRECTS=4,
112632 + NET_IPV4_CONF_SECURE_REDIRECTS=5,
112633 + NET_IPV4_CONF_SEND_REDIRECTS=6,
112634 + NET_IPV4_CONF_SHARED_MEDIA=7,
112635 + NET_IPV4_CONF_RP_FILTER=8,
112636 + NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
112637 + NET_IPV4_CONF_BOOTP_RELAY=10,
112638 + NET_IPV4_CONF_LOG_MARTIANS=11,
112639 + NET_IPV4_CONF_TAG=12,
112640 + NET_IPV4_CONF_ARPFILTER=13,
112641 + NET_IPV4_CONF_MEDIUM_ID=14,
112642 + NET_IPV4_CONF_NOXFRM=15,
112643 + NET_IPV4_CONF_NOPOLICY=16,
112644 + NET_IPV4_CONF_FORCE_IGMP_VERSION=17,
112645 + NET_IPV4_CONF_ARP_ANNOUNCE=18,
112646 + NET_IPV4_CONF_ARP_IGNORE=19,
112647 + NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
112648 + NET_IPV4_CONF_ARP_ACCEPT=21,
112649 + __NET_IPV4_CONF_MAX
112650 +};
112651 +
112652 +
112653 +enum
112654 +{
112655 + NET_IPV4_NF_CONNTRACK_MAX=1,
112656 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
112657 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
112658 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
112659 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
112660 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
112661 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
112662 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
112663 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
112664 + NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10,
112665 + NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
112666 + NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12,
112667 + NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13,
112668 + NET_IPV4_NF_CONNTRACK_BUCKETS=14,
112669 + NET_IPV4_NF_CONNTRACK_LOG_INVALID=15,
112670 + NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
112671 + NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17,
112672 + NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18,
112673 + NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19,
112674 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
112675 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
112676 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
112677 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
112678 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
112679 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
112680 +  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
112681 + NET_IPV4_NF_CONNTRACK_COUNT=27,
112682 + NET_IPV4_NF_CONNTRACK_CHECKSUM=28,
112683 +};
112684 +
112685 +
112686 +enum {
112687 + NET_IPV6_CONF=16,
112688 + NET_IPV6_NEIGH=17,
112689 + NET_IPV6_ROUTE=18,
112690 + NET_IPV6_ICMP=19,
112691 + NET_IPV6_BINDV6ONLY=20,
112692 + NET_IPV6_IP6FRAG_HIGH_THRESH=21,
112693 + NET_IPV6_IP6FRAG_LOW_THRESH=22,
112694 + NET_IPV6_IP6FRAG_TIME=23,
112695 + NET_IPV6_IP6FRAG_SECRET_INTERVAL=24,
112696 + NET_IPV6_MLD_MAX_MSF=25,
112697 +};
112698 +
112699 +enum {
112700 + NET_IPV6_ROUTE_FLUSH=1,
112701 + NET_IPV6_ROUTE_GC_THRESH=2,
112702 + NET_IPV6_ROUTE_MAX_SIZE=3,
112703 + NET_IPV6_ROUTE_GC_MIN_INTERVAL=4,
112704 + NET_IPV6_ROUTE_GC_TIMEOUT=5,
112705 + NET_IPV6_ROUTE_GC_INTERVAL=6,
112706 + NET_IPV6_ROUTE_GC_ELASTICITY=7,
112707 + NET_IPV6_ROUTE_MTU_EXPIRES=8,
112708 + NET_IPV6_ROUTE_MIN_ADVMSS=9,
112709 + NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10
112710 +};
112711 +
112712 +enum {
112713 + NET_IPV6_FORWARDING=1,
112714 + NET_IPV6_HOP_LIMIT=2,
112715 + NET_IPV6_MTU=3,
112716 + NET_IPV6_ACCEPT_RA=4,
112717 + NET_IPV6_ACCEPT_REDIRECTS=5,
112718 + NET_IPV6_AUTOCONF=6,
112719 + NET_IPV6_DAD_TRANSMITS=7,
112720 + NET_IPV6_RTR_SOLICITS=8,
112721 + NET_IPV6_RTR_SOLICIT_INTERVAL=9,
112722 + NET_IPV6_RTR_SOLICIT_DELAY=10,
112723 + NET_IPV6_USE_TEMPADDR=11,
112724 + NET_IPV6_TEMP_VALID_LFT=12,
112725 + NET_IPV6_TEMP_PREFERED_LFT=13,
112726 + NET_IPV6_REGEN_MAX_RETRY=14,
112727 + NET_IPV6_MAX_DESYNC_FACTOR=15,
112728 + NET_IPV6_MAX_ADDRESSES=16,
112729 + NET_IPV6_FORCE_MLD_VERSION=17,
112730 + NET_IPV6_ACCEPT_RA_DEFRTR=18,
112731 + NET_IPV6_ACCEPT_RA_PINFO=19,
112732 + NET_IPV6_ACCEPT_RA_RTR_PREF=20,
112733 + NET_IPV6_RTR_PROBE_INTERVAL=21,
112734 + NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22,
112735 + NET_IPV6_PROXY_NDP=23,
112736 + NET_IPV6_ACCEPT_SOURCE_ROUTE=25,
112737 + __NET_IPV6_MAX
112738 +};
112739 +
112740 +
112741 +enum {
112742 + NET_IPV6_ICMP_RATELIMIT=1
112743 +};
112744 +
112745 +
112746 +enum {
112747 + NET_NEIGH_MCAST_SOLICIT=1,
112748 + NET_NEIGH_UCAST_SOLICIT=2,
112749 + NET_NEIGH_APP_SOLICIT=3,
112750 + NET_NEIGH_RETRANS_TIME=4,
112751 + NET_NEIGH_REACHABLE_TIME=5,
112752 + NET_NEIGH_DELAY_PROBE_TIME=6,
112753 + NET_NEIGH_GC_STALE_TIME=7,
112754 + NET_NEIGH_UNRES_QLEN=8,
112755 + NET_NEIGH_PROXY_QLEN=9,
112756 + NET_NEIGH_ANYCAST_DELAY=10,
112757 + NET_NEIGH_PROXY_DELAY=11,
112758 + NET_NEIGH_LOCKTIME=12,
112759 + NET_NEIGH_GC_INTERVAL=13,
112760 + NET_NEIGH_GC_THRESH1=14,
112761 + NET_NEIGH_GC_THRESH2=15,
112762 + NET_NEIGH_GC_THRESH3=16,
112763 + NET_NEIGH_RETRANS_TIME_MS=17,
112764 + NET_NEIGH_REACHABLE_TIME_MS=18,
112765 + __NET_NEIGH_MAX
112766 +};
112767 +
112768 +
112769 +enum {
112770 + NET_DCCP_DEFAULT=1,
112771 +};
112772 +
112773 +
112774 +enum {
112775 + NET_IPX_PPROP_BROADCASTING=1,
112776 + NET_IPX_FORWARDING=2
112777 +};
112778 +
112779 +
112780 +enum {
112781 + NET_LLC2=1,
112782 + NET_LLC_STATION=2,
112783 +};
112784 +
112785 +
112786 +enum {
112787 + NET_LLC2_TIMEOUT=1,
112788 +};
112789 +
112790 +
112791 +enum {
112792 + NET_LLC_STATION_ACK_TIMEOUT=1,
112793 +};
112794 +
112795 +
112796 +enum {
112797 + NET_LLC2_ACK_TIMEOUT=1,
112798 + NET_LLC2_P_TIMEOUT=2,
112799 + NET_LLC2_REJ_TIMEOUT=3,
112800 + NET_LLC2_BUSY_TIMEOUT=4,
112801 +};
112802 +
112803 +
112804 +enum {
112805 + NET_ATALK_AARP_EXPIRY_TIME=1,
112806 + NET_ATALK_AARP_TICK_TIME=2,
112807 + NET_ATALK_AARP_RETRANSMIT_LIMIT=3,
112808 + NET_ATALK_AARP_RESOLVE_TIME=4
112809 +};
112810 +
112811 +
112812 +
112813 +enum {
112814 + NET_NETROM_DEFAULT_PATH_QUALITY=1,
112815 + NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2,
112816 + NET_NETROM_NETWORK_TTL_INITIALISER=3,
112817 + NET_NETROM_TRANSPORT_TIMEOUT=4,
112818 + NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5,
112819 + NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6,
112820 + NET_NETROM_TRANSPORT_BUSY_DELAY=7,
112821 + NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
112822 + NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
112823 + NET_NETROM_ROUTING_CONTROL=10,
112824 + NET_NETROM_LINK_FAILS_COUNT=11,
112825 + NET_NETROM_RESET=12
112826 +};
112827 +
112828 +
112829 +enum {
112830 + NET_AX25_IP_DEFAULT_MODE=1,
112831 + NET_AX25_DEFAULT_MODE=2,
112832 + NET_AX25_BACKOFF_TYPE=3,
112833 + NET_AX25_CONNECT_MODE=4,
112834 + NET_AX25_STANDARD_WINDOW=5,
112835 + NET_AX25_EXTENDED_WINDOW=6,
112836 + NET_AX25_T1_TIMEOUT=7,
112837 + NET_AX25_T2_TIMEOUT=8,
112838 + NET_AX25_T3_TIMEOUT=9,
112839 + NET_AX25_IDLE_TIMEOUT=10,
112840 + NET_AX25_N2=11,
112841 + NET_AX25_PACLEN=12,
112842 + NET_AX25_PROTOCOL=13,
112843 + NET_AX25_DAMA_SLAVE_TIMEOUT=14
112844 +};
112845 +
112846 +
112847 +enum {
112848 + NET_ROSE_RESTART_REQUEST_TIMEOUT=1,
112849 + NET_ROSE_CALL_REQUEST_TIMEOUT=2,
112850 + NET_ROSE_RESET_REQUEST_TIMEOUT=3,
112851 + NET_ROSE_CLEAR_REQUEST_TIMEOUT=4,
112852 + NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5,
112853 + NET_ROSE_ROUTING_CONTROL=6,
112854 + NET_ROSE_LINK_FAIL_TIMEOUT=7,
112855 + NET_ROSE_MAX_VCS=8,
112856 + NET_ROSE_WINDOW_SIZE=9,
112857 + NET_ROSE_NO_ACTIVITY_TIMEOUT=10
112858 +};
112859 +
112860 +
112861 +enum {
112862 + NET_X25_RESTART_REQUEST_TIMEOUT=1,
112863 + NET_X25_CALL_REQUEST_TIMEOUT=2,
112864 + NET_X25_RESET_REQUEST_TIMEOUT=3,
112865 + NET_X25_CLEAR_REQUEST_TIMEOUT=4,
112866 + NET_X25_ACK_HOLD_BACK_TIMEOUT=5,
112867 + NET_X25_FORWARD=6
112868 +};
112869 +
112870 +
112871 +enum
112872 +{
112873 + NET_TR_RIF_TIMEOUT=1
112874 +};
112875 +
112876 +
112877 +enum {
112878 + NET_DECNET_NODE_TYPE = 1,
112879 + NET_DECNET_NODE_ADDRESS = 2,
112880 + NET_DECNET_NODE_NAME = 3,
112881 + NET_DECNET_DEFAULT_DEVICE = 4,
112882 + NET_DECNET_TIME_WAIT = 5,
112883 + NET_DECNET_DN_COUNT = 6,
112884 + NET_DECNET_DI_COUNT = 7,
112885 + NET_DECNET_DR_COUNT = 8,
112886 + NET_DECNET_DST_GC_INTERVAL = 9,
112887 + NET_DECNET_CONF = 10,
112888 + NET_DECNET_NO_FC_MAX_CWND = 11,
112889 + NET_DECNET_MEM = 12,
112890 + NET_DECNET_RMEM = 13,
112891 + NET_DECNET_WMEM = 14,
112892 + NET_DECNET_DEBUG_LEVEL = 255
112893 +};
112894 +
112895 +
112896 +enum {
112897 + NET_DECNET_CONF_LOOPBACK = -2,
112898 + NET_DECNET_CONF_DDCMP = -3,
112899 + NET_DECNET_CONF_PPP = -4,
112900 + NET_DECNET_CONF_X25 = -5,
112901 + NET_DECNET_CONF_GRE = -6,
112902 + NET_DECNET_CONF_ETHER = -7
112903 +
112904 +
112905 +};
112906 +
112907 +
112908 +enum {
112909 + NET_DECNET_CONF_DEV_PRIORITY = 1,
112910 + NET_DECNET_CONF_DEV_T1 = 2,
112911 + NET_DECNET_CONF_DEV_T2 = 3,
112912 + NET_DECNET_CONF_DEV_T3 = 4,
112913 + NET_DECNET_CONF_DEV_FORWARDING = 5,
112914 + NET_DECNET_CONF_DEV_BLKSIZE = 6,
112915 + NET_DECNET_CONF_DEV_STATE = 7
112916 +};
112917 +
112918 +
112919 +enum {
112920 + NET_SCTP_RTO_INITIAL = 1,
112921 + NET_SCTP_RTO_MIN = 2,
112922 + NET_SCTP_RTO_MAX = 3,
112923 + NET_SCTP_RTO_ALPHA = 4,
112924 + NET_SCTP_RTO_BETA = 5,
112925 + NET_SCTP_VALID_COOKIE_LIFE = 6,
112926 + NET_SCTP_ASSOCIATION_MAX_RETRANS = 7,
112927 + NET_SCTP_PATH_MAX_RETRANS = 8,
112928 + NET_SCTP_MAX_INIT_RETRANSMITS = 9,
112929 + NET_SCTP_HB_INTERVAL = 10,
112930 + NET_SCTP_PRESERVE_ENABLE = 11,
112931 + NET_SCTP_MAX_BURST = 12,
112932 + NET_SCTP_ADDIP_ENABLE = 13,
112933 + NET_SCTP_PRSCTP_ENABLE = 14,
112934 + NET_SCTP_SNDBUF_POLICY = 15,
112935 + NET_SCTP_SACK_TIMEOUT = 16,
112936 + NET_SCTP_RCVBUF_POLICY = 17,
112937 +};
112938 +
112939 +
112940 +enum {
112941 + NET_BRIDGE_NF_CALL_ARPTABLES = 1,
112942 + NET_BRIDGE_NF_CALL_IPTABLES = 2,
112943 + NET_BRIDGE_NF_CALL_IP6TABLES = 3,
112944 + NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
112945 + NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5,
112946 +};
112947 +
112948 +
112949 +enum {
112950 + NET_IRDA_DISCOVERY=1,
112951 + NET_IRDA_DEVNAME=2,
112952 + NET_IRDA_DEBUG=3,
112953 + NET_IRDA_FAST_POLL=4,
112954 + NET_IRDA_DISCOVERY_SLOTS=5,
112955 + NET_IRDA_DISCOVERY_TIMEOUT=6,
112956 + NET_IRDA_SLOT_TIMEOUT=7,
112957 + NET_IRDA_MAX_BAUD_RATE=8,
112958 + NET_IRDA_MIN_TX_TURN_TIME=9,
112959 + NET_IRDA_MAX_TX_DATA_SIZE=10,
112960 + NET_IRDA_MAX_TX_WINDOW=11,
112961 + NET_IRDA_MAX_NOREPLY_TIME=12,
112962 + NET_IRDA_WARN_NOREPLY_TIME=13,
112963 + NET_IRDA_LAP_KEEPALIVE_TIME=14,
112964 +};
112965 +
112966 +
112967 +
112968 +enum
112969 +{
112970 + FS_NRINODE=1,
112971 + FS_STATINODE=2,
112972 + FS_MAXINODE=3,
112973 + FS_NRDQUOT=4,
112974 + FS_MAXDQUOT=5,
112975 + FS_NRFILE=6,
112976 + FS_MAXFILE=7,
112977 + FS_DENTRY=8,
112978 + FS_NRSUPER=9,
112979 + FS_MAXSUPER=10,
112980 + FS_OVERFLOWUID=11,
112981 + FS_OVERFLOWGID=12,
112982 + FS_LEASES=13,
112983 + FS_DIR_NOTIFY=14,
112984 + FS_LEASE_TIME=15,
112985 + FS_DQSTATS=16,
112986 + FS_XFS=17,
112987 + FS_AIO_NR=18,
112988 + FS_AIO_MAX_NR=19,
112989 + FS_INOTIFY=20,
112990 + FS_OCFS2=988,
112991 +};
112992 +
112993 +
112994 +enum {
112995 + FS_DQ_LOOKUPS = 1,
112996 + FS_DQ_DROPS = 2,
112997 + FS_DQ_READS = 3,
112998 + FS_DQ_WRITES = 4,
112999 + FS_DQ_CACHE_HITS = 5,
113000 + FS_DQ_ALLOCATED = 6,
113001 + FS_DQ_FREE = 7,
113002 + FS_DQ_SYNCS = 8,
113003 + FS_DQ_WARNINGS = 9,
113004 +};
113005 +
113006 +
113007 +
113008 +
113009 +enum {
113010 + DEV_CDROM=1,
113011 + DEV_HWMON=2,
113012 + DEV_PARPORT=3,
113013 + DEV_RAID=4,
113014 + DEV_MAC_HID=5,
113015 + DEV_SCSI=6,
113016 + DEV_IPMI=7,
113017 +};
113018 +
113019 +
113020 +enum {
113021 + DEV_CDROM_INFO=1,
113022 + DEV_CDROM_AUTOCLOSE=2,
113023 + DEV_CDROM_AUTOEJECT=3,
113024 + DEV_CDROM_DEBUG=4,
113025 + DEV_CDROM_LOCK=5,
113026 + DEV_CDROM_CHECK_MEDIA=6
113027 +};
113028 +
113029 +
113030 +enum {
113031 + DEV_PARPORT_DEFAULT=-3
113032 +};
113033 +
113034 +
113035 +enum {
113036 + DEV_RAID_SPEED_LIMIT_MIN=1,
113037 + DEV_RAID_SPEED_LIMIT_MAX=2
113038 +};
113039 +
113040 +
113041 +enum {
113042 + DEV_PARPORT_DEFAULT_TIMESLICE=1,
113043 + DEV_PARPORT_DEFAULT_SPINTIME=2
113044 +};
113045 +
113046 +
113047 +enum {
113048 + DEV_PARPORT_SPINTIME=1,
113049 + DEV_PARPORT_BASE_ADDR=2,
113050 + DEV_PARPORT_IRQ=3,
113051 + DEV_PARPORT_DMA=4,
113052 + DEV_PARPORT_MODES=5,
113053 + DEV_PARPORT_DEVICES=6,
113054 + DEV_PARPORT_AUTOPROBE=16
113055 +};
113056 +
113057 +
113058 +enum {
113059 + DEV_PARPORT_DEVICES_ACTIVE=-3,
113060 +};
113061 +
113062 +
113063 +enum {
113064 + DEV_PARPORT_DEVICE_TIMESLICE=1,
113065 +};
113066 +
113067 +
113068 +enum {
113069 + DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1,
113070 + DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2,
113071 + DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3,
113072 + DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
113073 + DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
113074 + DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
113075 +};
113076 +
113077 +
113078 +enum {
113079 + DEV_SCSI_LOGGING_LEVEL=1,
113080 +};
113081 +
113082 +
113083 +enum {
113084 + DEV_IPMI_POWEROFF_POWERCYCLE=1,
113085 +};
113086 +
113087 +
113088 +enum
113089 +{
113090 + ABI_DEFHANDLER_COFF=1,
113091 + ABI_DEFHANDLER_ELF=2,
113092 + ABI_DEFHANDLER_LCALL7=3,
113093 + ABI_DEFHANDLER_LIBCSO=4,
113094 + ABI_TRACE=5,
113095 + ABI_FAKE_UTSNAME=6,
113096 +};
113097 +
113098 +
113099 +
113100 +
113101 +
113102 +struct ctl_table;
113103 +struct nsproxy;
113104 +struct ctl_table_root;
113105 +
113106 +struct ctl_table_set {
113107 + struct list_head list;
113108 + struct ctl_table_set *parent;
113109 + int (*is_seen)(struct ctl_table_set *);
113110 +};
113111 +
113112 +extern void setup_sysctl_set(struct ctl_table_set *p,
113113 + struct ctl_table_set *parent,
113114 + int (*is_seen)(struct ctl_table_set *));
113115 +
113116 +struct ctl_table_header;
113117 +
113118 +extern void sysctl_head_get(struct ctl_table_header *);
113119 +extern void sysctl_head_put(struct ctl_table_header *);
113120 +extern int sysctl_is_seen(struct ctl_table_header *);
113121 +extern struct ctl_table_header *sysctl_head_grab(struct ctl_table_header *);
113122 +extern struct ctl_table_header *sysctl_head_next(struct ctl_table_header *prev);
113123 +extern struct ctl_table_header *__sysctl_head_next(struct nsproxy *namespaces,
113124 +      struct ctl_table_header *prev);
113125 +extern void sysctl_head_finish(struct ctl_table_header *prev);
113126 +extern int sysctl_perm(struct ctl_table_root *root,
113127 +  struct ctl_table *table, int op);
113128 +
113129 +typedef struct ctl_table ctl_table;
113130 +
113131 +typedef int ctl_handler (struct ctl_table *table, int *name, int nlen,
113132 +    void *oldval, size_t *oldlenp,
113133 +    void *newval, size_t newlen);
113134 +
113135 +typedef int proc_handler_t (struct ctl_table *ctl, int write, struct file * filp,
113136 +     void *buffer, size_t *lenp, loff_t *ppos);
113137 +
113138 +extern int proc_dostring(struct ctl_table *, int, struct file *,
113139 +    void *, size_t *, loff_t *);
113140 +extern int proc_dointvec(struct ctl_table *, int, struct file *,
113141 +    void *, size_t *, loff_t *);
113142 +extern int proc_dointvec_minmax(struct ctl_table *, int, struct file *,
113143 +    void *, size_t *, loff_t *);
113144 +extern int proc_dointvec_jiffies(struct ctl_table *, int, struct file *,
113145 +     void *, size_t *, loff_t *);
113146 +extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int, struct file *,
113147 +     void *, size_t *, loff_t *);
113148 +extern int proc_dointvec_ms_jiffies(struct ctl_table *, int, struct file *,
113149 +        void *, size_t *, loff_t *);
113150 +extern int proc_doulongvec_minmax(struct ctl_table *, int, struct file *,
113151 +      void *, size_t *, loff_t *);
113152 +extern int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int,
113153 +          struct file *, void *, size_t *, loff_t *);
113154 +
113155 +extern int do_sysctl (int *name, int nlen,
113156 +        void *oldval, size_t *oldlenp,
113157 +        void *newval, size_t newlen);
113158 +
113159 +extern ctl_handler sysctl_data;
113160 +extern ctl_handler sysctl_string;
113161 +extern ctl_handler sysctl_intvec;
113162 +extern ctl_handler sysctl_jiffies;
113163 +extern ctl_handler sysctl_ms_jiffies;
113164 +# 1053 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysctl.h"
113165 +struct ctl_table
113166 +{
113167 + int ctl_name;
113168 + const char *procname;
113169 + void *data;
113170 + int maxlen;
113171 + mode_t mode;
113172 + struct ctl_table *child;
113173 + struct ctl_table *parent;
113174 + proc_handler_t *proc_handler;
113175 + ctl_handler *strategy;
113176 + void *extra1;
113177 + void *extra2;
113178 +};
113179 +
113180 +struct ctl_table_root {
113181 + struct list_head root_list;
113182 + struct ctl_table_set default_set;
113183 + struct ctl_table_set *(*lookup)(struct ctl_table_root *root,
113184 +        struct nsproxy *namespaces);
113185 + int (*permissions)(struct ctl_table_root *root,
113186 +   struct nsproxy *namespaces, struct ctl_table *table);
113187 +};
113188 +
113189 +
113190 +
113191 +struct ctl_table_header
113192 +{
113193 + struct ctl_table *ctl_table;
113194 + struct list_head ctl_entry;
113195 + int used;
113196 + int count;
113197 + struct completion *unregistering;
113198 + struct ctl_table *ctl_table_arg;
113199 + struct ctl_table_root *root;
113200 + struct ctl_table_set *set;
113201 + struct ctl_table *attached_by;
113202 + struct ctl_table *attached_to;
113203 + struct ctl_table_header *parent;
113204 +};
113205 +
113206 +
113207 +struct ctl_path {
113208 + const char *procname;
113209 + int ctl_name;
113210 +};
113211 +
113212 +void register_sysctl_root(struct ctl_table_root *root);
113213 +struct ctl_table_header *__register_sysctl_paths(
113214 + struct ctl_table_root *root, struct nsproxy *namespaces,
113215 + const struct ctl_path *path, struct ctl_table *table);
113216 +struct ctl_table_header *register_sysctl_table(struct ctl_table * table);
113217 +struct ctl_table_header *register_sysctl_paths(const struct ctl_path *path,
113218 +      struct ctl_table *table);
113219 +
113220 +void unregister_sysctl_table(struct ctl_table_header * table);
113221 +int sysctl_check_table(struct nsproxy *namespaces, struct ctl_table *table);
113222 +# 355 "/d/kernels/linux-2.6.27.10-clickport/include/linux/net.h" 2
113223 +extern struct ratelimit_state net_ratelimit_state;
113224 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
113225 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 1
113226 +
113227 +
113228 +
113229 +
113230 +
113231 +
113232 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 1
113233 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
113234 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h" 1
113235 +
113236 +
113237 +
113238 +
113239 +
113240 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/stat.h" 1
113241 +
113242 +
113243 +
113244 +
113245 +
113246 +
113247 +struct stat {
113248 + unsigned long st_dev;
113249 + unsigned long st_ino;
113250 + unsigned short st_mode;
113251 + unsigned short st_nlink;
113252 + unsigned short st_uid;
113253 + unsigned short st_gid;
113254 + unsigned long st_rdev;
113255 + unsigned long st_size;
113256 + unsigned long st_blksize;
113257 + unsigned long st_blocks;
113258 + unsigned long st_atime;
113259 + unsigned long st_atime_nsec;
113260 + unsigned long st_mtime;
113261 + unsigned long st_mtime_nsec;
113262 + unsigned long st_ctime;
113263 + unsigned long st_ctime_nsec;
113264 + unsigned long __unused4;
113265 + unsigned long __unused5;
113266 +};
113267 +
113268 +
113269 +
113270 +
113271 +
113272 +
113273 +struct stat64 {
113274 + unsigned long long st_dev;
113275 + unsigned char __pad0[4];
113276 +
113277 + unsigned long __st_ino;
113278 +
113279 + unsigned int st_mode;
113280 + unsigned int st_nlink;
113281 +
113282 + unsigned long st_uid;
113283 + unsigned long st_gid;
113284 +
113285 + unsigned long long st_rdev;
113286 + unsigned char __pad3[4];
113287 +
113288 + long long st_size;
113289 + unsigned long st_blksize;
113290 +
113291 +
113292 + unsigned long long st_blocks;
113293 +
113294 + unsigned long st_atime;
113295 + unsigned long st_atime_nsec;
113296 +
113297 + unsigned long st_mtime;
113298 + unsigned int st_mtime_nsec;
113299 +
113300 + unsigned long st_ctime;
113301 + unsigned long st_ctime_nsec;
113302 +
113303 + unsigned long long st_ino;
113304 +};
113305 +# 93 "/d/kernels/linux-2.6.27.10-clickport/include/asm/stat.h"
113306 +struct __old_kernel_stat {
113307 + unsigned short st_dev;
113308 + unsigned short st_ino;
113309 + unsigned short st_mode;
113310 + unsigned short st_nlink;
113311 + unsigned short st_uid;
113312 + unsigned short st_gid;
113313 + unsigned short st_rdev;
113314 +
113315 + unsigned long st_size;
113316 + unsigned long st_atime;
113317 + unsigned long st_mtime;
113318 + unsigned long st_ctime;
113319 +
113320 +
113321 +
113322 +
113323 +
113324 +
113325 +};
113326 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h" 2
113327 +# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/stat.h"
113328 +struct kstat {
113329 + u64 ino;
113330 + dev_t dev;
113331 + umode_t mode;
113332 + unsigned int nlink;
113333 + uid_t uid;
113334 + gid_t gid;
113335 + tag_t tag;
113336 + dev_t rdev;
113337 + loff_t size;
113338 + struct timespec atime;
113339 + struct timespec mtime;
113340 + struct timespec ctime;
113341 + unsigned long blksize;
113342 + unsigned long long blocks;
113343 +};
113344 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
113345 +
113346 +
113347 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" 1
113348 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h"
113349 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" 1
113350 +
113351 +
113352 +
113353 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 1
113354 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113355 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/numa.h" 1
113356 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
113357 +
113358 +
113359 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h" 1
113360 +# 92 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h"
113361 +typedef struct { unsigned long bits[((((1 << 0)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } nodemask_t;
113362 +extern nodemask_t _unused_nodemask_arg_;
113363 +
113364 +
113365 +static inline __attribute__((always_inline)) void __node_set(int node, volatile nodemask_t *dstp)
113366 +{
113367 + set_bit(node, dstp->bits);
113368 +}
113369 +
113370 +
113371 +static inline __attribute__((always_inline)) void __node_clear(int node, volatile nodemask_t *dstp)
113372 +{
113373 + clear_bit(node, dstp->bits);
113374 +}
113375 +
113376 +
113377 +static inline __attribute__((always_inline)) void __nodes_setall(nodemask_t *dstp, int nbits)
113378 +{
113379 + bitmap_fill(dstp->bits, nbits);
113380 +}
113381 +
113382 +
113383 +static inline __attribute__((always_inline)) void __nodes_clear(nodemask_t *dstp, int nbits)
113384 +{
113385 + bitmap_zero(dstp->bits, nbits);
113386 +}
113387 +
113388 +
113389 +
113390 +
113391 +
113392 +
113393 +static inline __attribute__((always_inline)) int __node_test_and_set(int node, nodemask_t *addr)
113394 +{
113395 + return test_and_set_bit(node, addr->bits);
113396 +}
113397 +
113398 +
113399 +
113400 +static inline __attribute__((always_inline)) void __nodes_and(nodemask_t *dstp, const nodemask_t *src1p,
113401 +     const nodemask_t *src2p, int nbits)
113402 +{
113403 + bitmap_and(dstp->bits, src1p->bits, src2p->bits, nbits);
113404 +}
113405 +
113406 +
113407 +
113408 +static inline __attribute__((always_inline)) void __nodes_or(nodemask_t *dstp, const nodemask_t *src1p,
113409 +     const nodemask_t *src2p, int nbits)
113410 +{
113411 + bitmap_or(dstp->bits, src1p->bits, src2p->bits, nbits);
113412 +}
113413 +
113414 +
113415 +
113416 +static inline __attribute__((always_inline)) void __nodes_xor(nodemask_t *dstp, const nodemask_t *src1p,
113417 +     const nodemask_t *src2p, int nbits)
113418 +{
113419 + bitmap_xor(dstp->bits, src1p->bits, src2p->bits, nbits);
113420 +}
113421 +
113422 +
113423 +
113424 +static inline __attribute__((always_inline)) void __nodes_andnot(nodemask_t *dstp, const nodemask_t *src1p,
113425 +     const nodemask_t *src2p, int nbits)
113426 +{
113427 + bitmap_andnot(dstp->bits, src1p->bits, src2p->bits, nbits);
113428 +}
113429 +
113430 +
113431 +
113432 +static inline __attribute__((always_inline)) void __nodes_complement(nodemask_t *dstp,
113433 +     const nodemask_t *srcp, int nbits)
113434 +{
113435 + bitmap_complement(dstp->bits, srcp->bits, nbits);
113436 +}
113437 +
113438 +
113439 +
113440 +static inline __attribute__((always_inline)) int __nodes_equal(const nodemask_t *src1p,
113441 +     const nodemask_t *src2p, int nbits)
113442 +{
113443 + return bitmap_equal(src1p->bits, src2p->bits, nbits);
113444 +}
113445 +
113446 +
113447 +
113448 +static inline __attribute__((always_inline)) int __nodes_intersects(const nodemask_t *src1p,
113449 +     const nodemask_t *src2p, int nbits)
113450 +{
113451 + return bitmap_intersects(src1p->bits, src2p->bits, nbits);
113452 +}
113453 +
113454 +
113455 +
113456 +static inline __attribute__((always_inline)) int __nodes_subset(const nodemask_t *src1p,
113457 +     const nodemask_t *src2p, int nbits)
113458 +{
113459 + return bitmap_subset(src1p->bits, src2p->bits, nbits);
113460 +}
113461 +
113462 +
113463 +static inline __attribute__((always_inline)) int __nodes_empty(const nodemask_t *srcp, int nbits)
113464 +{
113465 + return bitmap_empty(srcp->bits, nbits);
113466 +}
113467 +
113468 +
113469 +static inline __attribute__((always_inline)) int __nodes_full(const nodemask_t *srcp, int nbits)
113470 +{
113471 + return bitmap_full(srcp->bits, nbits);
113472 +}
113473 +
113474 +
113475 +static inline __attribute__((always_inline)) int __nodes_weight(const nodemask_t *srcp, int nbits)
113476 +{
113477 + return bitmap_weight(srcp->bits, nbits);
113478 +}
113479 +
113480 +
113481 +
113482 +static inline __attribute__((always_inline)) void __nodes_shift_right(nodemask_t *dstp,
113483 +     const nodemask_t *srcp, int n, int nbits)
113484 +{
113485 + bitmap_shift_right(dstp->bits, srcp->bits, n, nbits);
113486 +}
113487 +
113488 +
113489 +
113490 +static inline __attribute__((always_inline)) void __nodes_shift_left(nodemask_t *dstp,
113491 +     const nodemask_t *srcp, int n, int nbits)
113492 +{
113493 + bitmap_shift_left(dstp->bits, srcp->bits, n, nbits);
113494 +}
113495 +
113496 +
113497 +
113498 +
113499 +
113500 +static inline __attribute__((always_inline)) int __first_node(const nodemask_t *srcp)
113501 +{
113502 + return ({ int __min1 = ((1 << 0)); int __min2 = (find_first_bit(srcp->bits, (1 << 0))); __min1 < __min2 ? __min1: __min2; });
113503 +}
113504 +
113505 +
113506 +static inline __attribute__((always_inline)) int __next_node(int n, const nodemask_t *srcp)
113507 +{
113508 + return ({ int __min1 = ((1 << 0)); int __min2 = (find_next_bit(srcp->bits, (1 << 0), n+1)); __min1 < __min2 ? __min1: __min2; });
113509 +}
113510 +# 255 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h"
113511 +static inline __attribute__((always_inline)) int __first_unset_node(const nodemask_t *maskp)
113512 +{
113513 + return ({ int __min1 = ((1 << 0)); int __min2 = (find_first_zero_bit(maskp->bits, (1 << 0))); __min1 < __min2 ? __min1: __min2; });
113514 +
113515 +}
113516 +# 289 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h"
113517 +static inline __attribute__((always_inline)) int __nodemask_scnprintf(char *buf, int len,
113518 +     const nodemask_t *srcp, int nbits)
113519 +{
113520 + return bitmap_scnprintf(buf, len, srcp->bits, nbits);
113521 +}
113522 +
113523 +
113524 +
113525 +static inline __attribute__((always_inline)) int __nodemask_parse_user(const char *buf, int len,
113526 +     nodemask_t *dstp, int nbits)
113527 +{
113528 + return bitmap_parse_user(buf, len, dstp->bits, nbits);
113529 +}
113530 +
113531 +
113532 +
113533 +static inline __attribute__((always_inline)) int __nodelist_scnprintf(char *buf, int len,
113534 +     const nodemask_t *srcp, int nbits)
113535 +{
113536 + return bitmap_scnlistprintf(buf, len, srcp->bits, nbits);
113537 +}
113538 +
113539 +
113540 +static inline __attribute__((always_inline)) int __nodelist_parse(const char *buf, nodemask_t *dstp, int nbits)
113541 +{
113542 + return bitmap_parselist(buf, dstp->bits, nbits);
113543 +}
113544 +
113545 +
113546 +
113547 +static inline __attribute__((always_inline)) int __node_remap(int oldbit,
113548 +  const nodemask_t *oldp, const nodemask_t *newp, int nbits)
113549 +{
113550 + return bitmap_bitremap(oldbit, oldp->bits, newp->bits, nbits);
113551 +}
113552 +
113553 +
113554 +
113555 +static inline __attribute__((always_inline)) void __nodes_remap(nodemask_t *dstp, const nodemask_t *srcp,
113556 +  const nodemask_t *oldp, const nodemask_t *newp, int nbits)
113557 +{
113558 + bitmap_remap(dstp->bits, srcp->bits, oldp->bits, newp->bits, nbits);
113559 +}
113560 +
113561 +
113562 +
113563 +static inline __attribute__((always_inline)) void __nodes_onto(nodemask_t *dstp, const nodemask_t *origp,
113564 +  const nodemask_t *relmapp, int nbits)
113565 +{
113566 + bitmap_onto(dstp->bits, origp->bits, relmapp->bits, nbits);
113567 +}
113568 +
113569 +
113570 +
113571 +static inline __attribute__((always_inline)) void __nodes_fold(nodemask_t *dstp, const nodemask_t *origp,
113572 +  int sz, int nbits)
113573 +{
113574 + bitmap_fold(dstp->bits, origp->bits, sz, nbits);
113575 +}
113576 +# 363 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h"
113577 +enum node_states {
113578 + N_POSSIBLE,
113579 + N_ONLINE,
113580 + N_NORMAL_MEMORY,
113581 +
113582 + N_HIGH_MEMORY,
113583 +
113584 +
113585 +
113586 + N_CPU,
113587 + NR_NODE_STATES
113588 +};
113589 +
113590 +
113591 +
113592 +
113593 +
113594 +
113595 +extern nodemask_t node_states[NR_NODE_STATES];
113596 +# 413 "/d/kernels/linux-2.6.27.10-clickport/include/linux/nodemask.h"
113597 +static inline __attribute__((always_inline)) int node_state(int node, enum node_states state)
113598 +{
113599 + return node == 0;
113600 +}
113601 +
113602 +static inline __attribute__((always_inline)) void node_set_state(int node, enum node_states state)
113603 +{
113604 +}
113605 +
113606 +static inline __attribute__((always_inline)) void node_clear_state(int node, enum node_states state)
113607 +{
113608 +}
113609 +
113610 +static inline __attribute__((always_inline)) int num_node_state(enum node_states state)
113611 +{
113612 + return 1;
113613 +}
113614 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
113615 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h" 1
113616 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h"
113617 +enum pageblock_bits {
113618 + PB_migrate,
113619 + PB_migrate_end = PB_migrate + 3 - 1,
113620 +
113621 + NR_PAGEBLOCK_BITS
113622 +};
113623 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pageblock-flags.h"
113624 +struct page;
113625 +
113626 +
113627 +unsigned long get_pageblock_flags_group(struct page *page,
113628 +     int start_bitidx, int end_bitidx);
113629 +void set_pageblock_flags_group(struct page *page, unsigned long flags,
113630 +     int start_bitidx, int end_bitidx);
113631 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
113632 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/bounds.h" 1
113633 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
113634 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
113635 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
113636 +# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113637 +extern int page_group_by_mobility_disabled;
113638 +
113639 +static inline __attribute__((always_inline)) int get_pageblock_migratetype(struct page *page)
113640 +{
113641 + if (__builtin_expect(!!(page_group_by_mobility_disabled), 0))
113642 +  return 0;
113643 +
113644 + return get_pageblock_flags_group(page, PB_migrate, PB_migrate_end);
113645 +}
113646 +
113647 +struct free_area {
113648 + struct list_head free_list[5];
113649 + unsigned long nr_free;
113650 +};
113651 +
113652 +struct pglist_data;
113653 +# 73 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113654 +struct zone_padding {
113655 + char x[0];
113656 +} __attribute__((__aligned__(1 << ((7)))));
113657 +
113658 +
113659 +
113660 +
113661 +
113662 +enum zone_stat_item {
113663 +
113664 + NR_FREE_PAGES,
113665 + NR_INACTIVE,
113666 + NR_ACTIVE,
113667 + NR_ANON_PAGES,
113668 + NR_FILE_MAPPED,
113669 +
113670 + NR_FILE_PAGES,
113671 + NR_FILE_DIRTY,
113672 + NR_WRITEBACK,
113673 +
113674 + NR_SLAB_RECLAIMABLE,
113675 + NR_SLAB_UNRECLAIMABLE,
113676 + NR_PAGETABLE,
113677 + NR_UNSTABLE_NFS,
113678 + NR_BOUNCE,
113679 + NR_VMSCAN_WRITE,
113680 + NR_WRITEBACK_TEMP,
113681 +# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113682 + NR_VM_ZONE_STAT_ITEMS };
113683 +
113684 +struct per_cpu_pages {
113685 + int count;
113686 + int high;
113687 + int batch;
113688 + struct list_head list;
113689 +};
113690 +
113691 +struct per_cpu_pageset {
113692 + struct per_cpu_pages pcp;
113693 +
113694 +
113695 +
113696 +
113697 + s8 stat_threshold;
113698 + s8 vm_stat_diff[NR_VM_ZONE_STAT_ITEMS];
113699 +
113700 +} __attribute__((__aligned__((1 << (7)))));
113701 +# 136 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113702 +enum zone_type {
113703 +# 156 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113704 + ZONE_DMA,
113705 +# 171 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113706 + ZONE_NORMAL,
113707 +# 181 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113708 + ZONE_HIGHMEM,
113709 +
113710 + ZONE_MOVABLE,
113711 + __MAX_NR_ZONES
113712 +};
113713 +# 207 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113714 +struct zone {
113715 +
113716 + unsigned long pages_min, pages_low, pages_high;
113717 +# 218 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113718 + unsigned long lowmem_reserve[4];
113719 +# 229 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113720 + struct per_cpu_pageset pageset[32];
113721 +
113722 +
113723 +
113724 +
113725 + spinlock_t lock;
113726 +
113727 +
113728 +
113729 +
113730 + struct free_area free_area[11];
113731 +
113732 +
113733 +
113734 +
113735 +
113736 +
113737 + unsigned long *pageblock_flags;
113738 +
113739 +
113740 +
113741 + struct zone_padding _pad1_;
113742 +
113743 +
113744 + spinlock_t lru_lock;
113745 + struct list_head active_list;
113746 + struct list_head inactive_list;
113747 + unsigned long nr_scan_active;
113748 + unsigned long nr_scan_inactive;
113749 + unsigned long pages_scanned;
113750 + unsigned long flags;
113751 +
113752 +
113753 + atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
113754 +# 277 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113755 + int prev_priority;
113756 +
113757 +
113758 + struct zone_padding _pad2_;
113759 +# 307 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113760 + wait_queue_head_t * wait_table;
113761 + unsigned long wait_table_hash_nr_entries;
113762 + unsigned long wait_table_bits;
113763 +
113764 +
113765 +
113766 +
113767 + struct pglist_data *zone_pgdat;
113768 +
113769 + unsigned long zone_start_pfn;
113770 +# 328 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113771 + unsigned long spanned_pages;
113772 + unsigned long present_pages;
113773 +
113774 +
113775 +
113776 +
113777 + const char *name;
113778 +} __attribute__((__aligned__(1 << ((7)))));
113779 +
113780 +typedef enum {
113781 + ZONE_ALL_UNRECLAIMABLE,
113782 + ZONE_RECLAIM_LOCKED,
113783 + ZONE_OOM_LOCKED,
113784 +} zone_flags_t;
113785 +
113786 +static inline __attribute__((always_inline)) void zone_set_flag(struct zone *zone, zone_flags_t flag)
113787 +{
113788 + set_bit(flag, &zone->flags);
113789 +}
113790 +
113791 +static inline __attribute__((always_inline)) int zone_test_and_set_flag(struct zone *zone, zone_flags_t flag)
113792 +{
113793 + return test_and_set_bit(flag, &zone->flags);
113794 +}
113795 +
113796 +static inline __attribute__((always_inline)) void zone_clear_flag(struct zone *zone, zone_flags_t flag)
113797 +{
113798 + clear_bit(flag, &zone->flags);
113799 +}
113800 +
113801 +static inline __attribute__((always_inline)) int zone_is_all_unreclaimable(const struct zone *zone)
113802 +{
113803 + return (__builtin_constant_p((ZONE_ALL_UNRECLAIMABLE)) ? constant_test_bit((ZONE_ALL_UNRECLAIMABLE), (&zone->flags)) : variable_test_bit((ZONE_ALL_UNRECLAIMABLE), (&zone->flags)));
113804 +}
113805 +
113806 +static inline __attribute__((always_inline)) int zone_is_reclaim_locked(const struct zone *zone)
113807 +{
113808 + return (__builtin_constant_p((ZONE_RECLAIM_LOCKED)) ? constant_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_RECLAIM_LOCKED), (&zone->flags)));
113809 +}
113810 +
113811 +static inline __attribute__((always_inline)) int zone_is_oom_locked(const struct zone *zone)
113812 +{
113813 + return (__builtin_constant_p((ZONE_OOM_LOCKED)) ? constant_test_bit((ZONE_OOM_LOCKED), (&zone->flags)) : variable_test_bit((ZONE_OOM_LOCKED), (&zone->flags)));
113814 +}
113815 +# 461 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113816 +struct zonelist_cache;
113817 +
113818 +
113819 +
113820 +
113821 +
113822 +
113823 +struct zoneref {
113824 + struct zone *zone;
113825 + int zone_idx;
113826 +};
113827 +# 490 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113828 +struct zonelist {
113829 + struct zonelist_cache *zlcache_ptr;
113830 + struct zoneref _zonerefs[((1 << 0) * 4) + 1];
113831 +
113832 +
113833 +
113834 +};
113835 +
113836 +
113837 +struct node_active_region {
113838 + unsigned long start_pfn;
113839 + unsigned long end_pfn;
113840 + int nid;
113841 +};
113842 +
113843 +
113844 +
113845 +
113846 +extern struct page *mem_map;
113847 +# 522 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113848 +struct bootmem_data;
113849 +typedef struct pglist_data {
113850 + struct zone node_zones[4];
113851 + struct zonelist node_zonelists[1];
113852 + int nr_zones;
113853 +
113854 + struct page *node_mem_map;
113855 +
113856 + struct bootmem_data *bdata;
113857 +# 541 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113858 + unsigned long node_start_pfn;
113859 + unsigned long node_present_pages;
113860 + unsigned long node_spanned_pages;
113861 +
113862 + int node_id;
113863 + wait_queue_head_t kswapd_wait;
113864 + struct task_struct *kswapd;
113865 + int kswapd_max_order;
113866 +} pg_data_t;
113867 +# 560 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
113868 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 1
113869 +
113870 +
113871 +
113872 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 1
113873 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 2
113874 +
113875 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 1
113876 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
113877 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/errno.h" 1
113878 +
113879 +
113880 +
113881 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1
113882 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/errno.h" 2
113883 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2
113884 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" 1
113885 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113886 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
113887 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h" 2
113888 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113889 +struct mutex {
113890 +
113891 + atomic_t count;
113892 + spinlock_t wait_lock;
113893 + struct list_head wait_list;
113894 +# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113895 +};
113896 +
113897 +
113898 +
113899 +
113900 +
113901 +struct mutex_waiter {
113902 + struct list_head list;
113903 + struct task_struct *task;
113904 +
113905 +
113906 +
113907 +
113908 +};
113909 +# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113910 +extern void __mutex_init(struct mutex *lock, const char *name,
113911 +    struct lock_class_key *key);
113912 +
113913 +
113914 +
113915 +
113916 +
113917 +
113918 +
113919 +static inline __attribute__((always_inline)) int mutex_is_locked(struct mutex *lock)
113920 +{
113921 + return ((&lock->count)->counter) != 1;
113922 +}
113923 +# 135 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113924 +extern void mutex_lock(struct mutex *lock);
113925 +extern int __attribute__((warn_unused_result)) mutex_lock_interruptible(struct mutex *lock);
113926 +extern int __attribute__((warn_unused_result)) mutex_lock_killable(struct mutex *lock);
113927 +# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mutex.h"
113928 +extern int mutex_trylock(struct mutex *lock);
113929 +extern void mutex_unlock(struct mutex *lock);
113930 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2
113931 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 1
113932 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h"
113933 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
113934 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 2
113935 +
113936 +struct rw_semaphore;
113937 +
113938 +
113939 +
113940 +
113941 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h" 1
113942 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h"
113943 +struct rwsem_waiter;
113944 +
113945 +extern __attribute__((regparm(3))) struct rw_semaphore *
113946 + rwsem_down_read_failed(struct rw_semaphore *sem);
113947 +extern __attribute__((regparm(3))) struct rw_semaphore *
113948 + rwsem_down_write_failed(struct rw_semaphore *sem);
113949 +extern __attribute__((regparm(3))) struct rw_semaphore *
113950 + rwsem_wake(struct rw_semaphore *);
113951 +extern __attribute__((regparm(3))) struct rw_semaphore *
113952 + rwsem_downgrade_wake(struct rw_semaphore *sem);
113953 +# 67 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h"
113954 +struct rw_semaphore {
113955 + signed long count;
113956 + spinlock_t wait_lock;
113957 + struct list_head wait_list;
113958 +
113959 +
113960 +
113961 +};
113962 +# 92 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h"
113963 +extern void __init_rwsem(struct rw_semaphore *sem, const char *name,
113964 +    struct lock_class_key *key);
113965 +# 105 "/d/kernels/linux-2.6.27.10-clickport/include/asm/rwsem.h"
113966 +static inline __attribute__((always_inline)) void __down_read(struct rw_semaphore *sem)
113967 +{
113968 + asm volatile("# beginning down_read\n\t"
113969 +       "lock ; " "  incl      (%%eax)\n\t"
113970 +
113971 +       "  jns        1f\n"
113972 +       "  call call_rwsem_down_read_failed\n"
113973 +       "1:\n\t"
113974 +       "# ending down_read\n\t"
113975 +       : "+m" (sem->count)
113976 +       : "a" (sem)
113977 +       : "memory", "cc");
113978 +}
113979 +
113980 +
113981 +
113982 +
113983 +static inline __attribute__((always_inline)) int __down_read_trylock(struct rw_semaphore *sem)
113984 +{
113985 + __s32 result, tmp;
113986 + asm volatile("# beginning __down_read_trylock\n\t"
113987 +       "  movl      %0,%1\n\t"
113988 +       "1:\n\t"
113989 +       "  movl      %1,%2\n\t"
113990 +       "  addl      %3,%2\n\t"
113991 +       "  jle       2f\n\t"
113992 +       "lock ; " "  cmpxchgl  %2,%0\n\t"
113993 +       "  jnz       1b\n\t"
113994 +       "2:\n\t"
113995 +       "# ending __down_read_trylock\n\t"
113996 +       : "+m" (sem->count), "=&a" (result), "=&r" (tmp)
113997 +       : "i" (0x00000001)
113998 +       : "memory", "cc");
113999 + return result >= 0 ? 1 : 0;
114000 +}
114001 +
114002 +
114003 +
114004 +
114005 +static inline __attribute__((always_inline)) void __down_write_nested(struct rw_semaphore *sem, int subclass)
114006 +{
114007 + int tmp;
114008 +
114009 + tmp = ((-0x00010000) + 0x00000001);
114010 + asm volatile("# beginning down_write\n\t"
114011 +       "lock ; " "  xadd      %%edx,(%%eax)\n\t"
114012 +
114013 +       "  testl     %%edx,%%edx\n\t"
114014 +
114015 +       "  jz        1f\n"
114016 +       "  call call_rwsem_down_write_failed\n"
114017 +       "1:\n"
114018 +       "# ending down_write"
114019 +       : "+m" (sem->count), "=d" (tmp)
114020 +       : "a" (sem), "1" (tmp)
114021 +       : "memory", "cc");
114022 +}
114023 +
114024 +static inline __attribute__((always_inline)) void __down_write(struct rw_semaphore *sem)
114025 +{
114026 + __down_write_nested(sem, 0);
114027 +}
114028 +
114029 +
114030 +
114031 +
114032 +static inline __attribute__((always_inline)) int __down_write_trylock(struct rw_semaphore *sem)
114033 +{
114034 + signed long ret = ((__typeof__(*(&sem->count)))__cmpxchg((&sem->count), (unsigned long)(0x00000000), (unsigned long)(((-0x00010000) + 0x00000001)), sizeof(*(&sem->count))));
114035 +
114036 +
114037 + if (ret == 0x00000000)
114038 +  return 1;
114039 + return 0;
114040 +}
114041 +
114042 +
114043 +
114044 +
114045 +static inline __attribute__((always_inline)) void __up_read(struct rw_semaphore *sem)
114046 +{
114047 + __s32 tmp = -0x00000001;
114048 + asm volatile("# beginning __up_read\n\t"
114049 +       "lock ; " "  xadd      %%edx,(%%eax)\n\t"
114050 +
114051 +       "  jns        1f\n\t"
114052 +       "  call call_rwsem_wake\n"
114053 +       "1:\n"
114054 +       "# ending __up_read\n"
114055 +       : "+m" (sem->count), "=d" (tmp)
114056 +       : "a" (sem), "1" (tmp)
114057 +       : "memory", "cc");
114058 +}
114059 +
114060 +
114061 +
114062 +
114063 +static inline __attribute__((always_inline)) void __up_write(struct rw_semaphore *sem)
114064 +{
114065 + asm volatile("# beginning __up_write\n\t"
114066 +       "  movl      %2,%%edx\n\t"
114067 +       "lock ; " "  xaddl     %%edx,(%%eax)\n\t"
114068 +
114069 +
114070 +       "  jz       1f\n"
114071 +       "  call call_rwsem_wake\n"
114072 +       "1:\n\t"
114073 +       "# ending __up_write\n"
114074 +       : "+m" (sem->count)
114075 +       : "a" (sem), "i" (-((-0x00010000) + 0x00000001))
114076 +       : "memory", "cc", "edx");
114077 +}
114078 +
114079 +
114080 +
114081 +
114082 +static inline __attribute__((always_inline)) void __downgrade_write(struct rw_semaphore *sem)
114083 +{
114084 + asm volatile("# beginning __downgrade_write\n\t"
114085 +       "lock ; " "  addl      %2,(%%eax)\n\t"
114086 +
114087 +       "  jns       1f\n\t"
114088 +       "  call call_rwsem_downgrade_wake\n"
114089 +       "1:\n\t"
114090 +       "# ending __downgrade_write\n"
114091 +       : "+m" (sem->count)
114092 +       : "a" (sem), "i" (-(-0x00010000))
114093 +       : "memory", "cc");
114094 +}
114095 +
114096 +
114097 +
114098 +
114099 +static inline __attribute__((always_inline)) void rwsem_atomic_add(int delta, struct rw_semaphore *sem)
114100 +{
114101 + asm volatile("lock ; " "addl %1,%0"
114102 +       : "+m" (sem->count)
114103 +       : "ir" (delta));
114104 +}
114105 +
114106 +
114107 +
114108 +
114109 +static inline __attribute__((always_inline)) int rwsem_atomic_update(int delta, struct rw_semaphore *sem)
114110 +{
114111 + int tmp = delta;
114112 +
114113 + asm volatile("lock ; " "xadd %0,%1"
114114 +       : "+r" (tmp), "+m" (sem->count)
114115 +       : : "memory");
114116 +
114117 + return tmp + delta;
114118 +}
114119 +
114120 +static inline __attribute__((always_inline)) int rwsem_is_locked(struct rw_semaphore *sem)
114121 +{
114122 + return (sem->count != 0);
114123 +}
114124 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rwsem.h" 2
114125 +
114126 +
114127 +
114128 +
114129 +
114130 +extern void down_read(struct rw_semaphore *sem);
114131 +
114132 +
114133 +
114134 +
114135 +extern int down_read_trylock(struct rw_semaphore *sem);
114136 +
114137 +
114138 +
114139 +
114140 +extern void down_write(struct rw_semaphore *sem);
114141 +
114142 +
114143 +
114144 +
114145 +extern int down_write_trylock(struct rw_semaphore *sem);
114146 +
114147 +
114148 +
114149 +
114150 +extern void up_read(struct rw_semaphore *sem);
114151 +
114152 +
114153 +
114154 +
114155 +extern void up_write(struct rw_semaphore *sem);
114156 +
114157 +
114158 +
114159 +
114160 +extern void downgrade_write(struct rw_semaphore *sem);
114161 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2
114162 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/srcu.h" 1
114163 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/srcu.h"
114164 +struct srcu_struct_array {
114165 + int c[2];
114166 +};
114167 +
114168 +struct srcu_struct {
114169 + int completed;
114170 + struct srcu_struct_array *per_cpu_ref;
114171 + struct mutex mutex;
114172 +};
114173 +
114174 +
114175 +
114176 +
114177 +
114178 +
114179 +
114180 +int init_srcu_struct(struct srcu_struct *sp);
114181 +void cleanup_srcu_struct(struct srcu_struct *sp);
114182 +int srcu_read_lock(struct srcu_struct *sp) ;
114183 +void srcu_read_unlock(struct srcu_struct *sp, int idx) ;
114184 +void synchronize_srcu(struct srcu_struct *sp);
114185 +long srcu_batches_completed(struct srcu_struct *sp);
114186 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h" 2
114187 +# 50 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
114188 +struct notifier_block {
114189 + int (*notifier_call)(struct notifier_block *, unsigned long, void *);
114190 + struct notifier_block *next;
114191 + int priority;
114192 +};
114193 +
114194 +struct atomic_notifier_head {
114195 + spinlock_t lock;
114196 + struct notifier_block *head;
114197 +};
114198 +
114199 +struct blocking_notifier_head {
114200 + struct rw_semaphore rwsem;
114201 + struct notifier_block *head;
114202 +};
114203 +
114204 +struct raw_notifier_head {
114205 + struct notifier_block *head;
114206 +};
114207 +
114208 +struct srcu_notifier_head {
114209 + struct mutex mutex;
114210 + struct srcu_struct srcu;
114211 + struct notifier_block *head;
114212 +};
114213 +# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
114214 +extern void srcu_init_notifier_head(struct srcu_notifier_head *nh);
114215 +# 115 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
114216 +extern int atomic_notifier_chain_register(struct atomic_notifier_head *nh,
114217 +  struct notifier_block *nb);
114218 +extern int blocking_notifier_chain_register(struct blocking_notifier_head *nh,
114219 +  struct notifier_block *nb);
114220 +extern int raw_notifier_chain_register(struct raw_notifier_head *nh,
114221 +  struct notifier_block *nb);
114222 +extern int srcu_notifier_chain_register(struct srcu_notifier_head *nh,
114223 +  struct notifier_block *nb);
114224 +
114225 +extern int blocking_notifier_chain_cond_register(
114226 +  struct blocking_notifier_head *nh,
114227 +  struct notifier_block *nb);
114228 +
114229 +extern int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh,
114230 +  struct notifier_block *nb);
114231 +extern int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh,
114232 +  struct notifier_block *nb);
114233 +extern int raw_notifier_chain_unregister(struct raw_notifier_head *nh,
114234 +  struct notifier_block *nb);
114235 +extern int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh,
114236 +  struct notifier_block *nb);
114237 +
114238 +extern int atomic_notifier_call_chain(struct atomic_notifier_head *nh,
114239 +  unsigned long val, void *v);
114240 +extern int __atomic_notifier_call_chain(struct atomic_notifier_head *nh,
114241 + unsigned long val, void *v, int nr_to_call, int *nr_calls);
114242 +extern int blocking_notifier_call_chain(struct blocking_notifier_head *nh,
114243 +  unsigned long val, void *v);
114244 +extern int __blocking_notifier_call_chain(struct blocking_notifier_head *nh,
114245 + unsigned long val, void *v, int nr_to_call, int *nr_calls);
114246 +extern int raw_notifier_call_chain(struct raw_notifier_head *nh,
114247 +  unsigned long val, void *v);
114248 +extern int __raw_notifier_call_chain(struct raw_notifier_head *nh,
114249 + unsigned long val, void *v, int nr_to_call, int *nr_calls);
114250 +extern int srcu_notifier_call_chain(struct srcu_notifier_head *nh,
114251 +  unsigned long val, void *v);
114252 +extern int __srcu_notifier_call_chain(struct srcu_notifier_head *nh,
114253 + unsigned long val, void *v, int nr_to_call, int *nr_calls);
114254 +# 165 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
114255 +static inline __attribute__((always_inline)) int notifier_from_errno(int err)
114256 +{
114257 + return 0x8000 | (0x0001 - err);
114258 +}
114259 +
114260 +
114261 +static inline __attribute__((always_inline)) int notifier_to_errno(int ret)
114262 +{
114263 + ret &= ~0x8000;
114264 + return ret > 0x0001 ? 0x0001 - ret : 0;
114265 +}
114266 +# 250 "/d/kernels/linux-2.6.27.10-clickport/include/linux/notifier.h"
114267 +extern struct blocking_notifier_head reboot_notifier_list;
114268 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h" 2
114269 +
114270 +struct page;
114271 +struct zone;
114272 +struct pglist_data;
114273 +struct mem_section;
114274 +# 165 "/d/kernels/linux-2.6.27.10-clickport/include/linux/memory_hotplug.h"
114275 +static inline __attribute__((always_inline)) void pgdat_resize_lock(struct pglist_data *p, unsigned long *f) {}
114276 +static inline __attribute__((always_inline)) void pgdat_resize_unlock(struct pglist_data *p, unsigned long *f) {}
114277 +static inline __attribute__((always_inline)) void pgdat_resize_init(struct pglist_data *pgdat) {}
114278 +
114279 +static inline __attribute__((always_inline)) unsigned zone_span_seqbegin(struct zone *zone)
114280 +{
114281 + return 0;
114282 +}
114283 +static inline __attribute__((always_inline)) int zone_span_seqretry(struct zone *zone, unsigned iv)
114284 +{
114285 + return 0;
114286 +}
114287 +static inline __attribute__((always_inline)) void zone_span_writelock(struct zone *zone) {}
114288 +static inline __attribute__((always_inline)) void zone_span_writeunlock(struct zone *zone) {}
114289 +static inline __attribute__((always_inline)) void zone_seqlock_init(struct zone *zone) {}
114290 +
114291 +static inline __attribute__((always_inline)) int mhp_notimplemented(const char *func)
114292 +{
114293 + printk("<4>" "%s() called, with CONFIG_MEMORY_HOTPLUG disabled\n", func);
114294 + dump_stack();
114295 + return -38;
114296 +}
114297 +
114298 +static inline __attribute__((always_inline)) void register_page_bootmem_info_node(struct pglist_data *pgdat)
114299 +{
114300 +}
114301 +
114302 +
114303 +
114304 +
114305 +
114306 +
114307 +
114308 +extern int walk_memory_resource(unsigned long start_pfn,
114309 +   unsigned long nr_pages, void *arg,
114310 +   int (*func)(unsigned long, unsigned long, void *));
114311 +
114312 +
114313 +
114314 +
114315 +
114316 +
114317 +static inline __attribute__((always_inline)) int is_mem_section_removable(unsigned long pfn,
114318 +     unsigned long nr_pages)
114319 +{
114320 + return 0;
114321 +}
114322 +
114323 +
114324 +extern int add_memory(int nid, u64 start, u64 size);
114325 +extern int arch_add_memory(int nid, u64 start, u64 size);
114326 +extern int remove_memory(u64 start, u64 size);
114327 +extern int sparse_add_one_section(struct zone *zone, unsigned long start_pfn,
114328 +        int nr_pages);
114329 +extern void sparse_remove_one_section(struct zone *zone, struct mem_section *ms);
114330 +extern struct page *sparse_decode_mem_map(unsigned long coded_mem_map,
114331 +       unsigned long pnum);
114332 +# 561 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
114333 +
114334 +void get_zone_counts(unsigned long *active, unsigned long *inactive,
114335 +   unsigned long *free);
114336 +void build_all_zonelists(void);
114337 +void wakeup_kswapd(struct zone *zone, int order);
114338 +int zone_watermark_ok(struct zone *z, int order, unsigned long mark,
114339 +  int classzone_idx, int alloc_flags);
114340 +enum memmap_context {
114341 + MEMMAP_EARLY,
114342 + MEMMAP_HOTPLUG,
114343 +};
114344 +extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn,
114345 +         unsigned long size,
114346 +         enum memmap_context context);
114347 +
114348 +
114349 +
114350 +
114351 +static inline __attribute__((always_inline)) void memory_present(int nid, unsigned long start, unsigned long end) {}
114352 +# 591 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
114353 +static inline __attribute__((always_inline)) int populated_zone(struct zone *zone)
114354 +{
114355 + return (!!zone->present_pages);
114356 +}
114357 +
114358 +extern int movable_zone;
114359 +
114360 +static inline __attribute__((always_inline)) int zone_movable_is_highmem(void)
114361 +{
114362 +
114363 + return movable_zone == ZONE_HIGHMEM;
114364 +
114365 +
114366 +
114367 +}
114368 +
114369 +static inline __attribute__((always_inline)) int is_highmem_idx(enum zone_type idx)
114370 +{
114371 +
114372 + return (idx == ZONE_HIGHMEM ||
114373 +  (idx == ZONE_MOVABLE && zone_movable_is_highmem()));
114374 +
114375 +
114376 +
114377 +}
114378 +
114379 +static inline __attribute__((always_inline)) int is_normal_idx(enum zone_type idx)
114380 +{
114381 + return (idx == ZONE_NORMAL);
114382 +}
114383 +
114384 +
114385 +
114386 +
114387 +
114388 +
114389 +
114390 +static inline __attribute__((always_inline)) int is_highmem(struct zone *zone)
114391 +{
114392 +
114393 + int zone_off = (char *)zone - (char *)zone->zone_pgdat->node_zones;
114394 + return zone_off == ZONE_HIGHMEM * sizeof(*zone) ||
114395 +        (zone_off == ZONE_MOVABLE * sizeof(*zone) &&
114396 +  zone_movable_is_highmem());
114397 +
114398 +
114399 +
114400 +}
114401 +
114402 +static inline __attribute__((always_inline)) int is_normal(struct zone *zone)
114403 +{
114404 + return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL;
114405 +}
114406 +
114407 +static inline __attribute__((always_inline)) int is_dma32(struct zone *zone)
114408 +{
114409 +
114410 +
114411 +
114412 + return 0;
114413 +
114414 +}
114415 +
114416 +static inline __attribute__((always_inline)) int is_dma(struct zone *zone)
114417 +{
114418 +
114419 + return zone == zone->zone_pgdat->node_zones + ZONE_DMA;
114420 +
114421 +
114422 +
114423 +}
114424 +
114425 +
114426 +struct ctl_table;
114427 +struct file;
114428 +int min_free_kbytes_sysctl_handler(struct ctl_table *, int, struct file *,
114429 +     void *, size_t *, loff_t *);
114430 +extern int sysctl_lowmem_reserve_ratio[4 -1];
114431 +int lowmem_reserve_ratio_sysctl_handler(struct ctl_table *, int, struct file *,
114432 +     void *, size_t *, loff_t *);
114433 +int percpu_pagelist_fraction_sysctl_handler(struct ctl_table *, int, struct file *,
114434 +     void *, size_t *, loff_t *);
114435 +int sysctl_min_unmapped_ratio_sysctl_handler(struct ctl_table *, int,
114436 +   struct file *, void *, size_t *, loff_t *);
114437 +int sysctl_min_slab_ratio_sysctl_handler(struct ctl_table *, int,
114438 +   struct file *, void *, size_t *, loff_t *);
114439 +
114440 +extern int numa_zonelist_order_handler(struct ctl_table *, int,
114441 +   struct file *, void *, size_t *, loff_t *);
114442 +extern char numa_zonelist_order[];
114443 +
114444 +
114445 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 1
114446 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h"
114447 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" 1
114448 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h"
114449 +extern void cpu_idle(void);
114450 +
114451 +struct call_single_data {
114452 + struct list_head list;
114453 + void (*func) (void *info);
114454 + void *info;
114455 + unsigned int flags;
114456 +};
114457 +
114458 +
114459 +
114460 +
114461 +
114462 +
114463 +
114464 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 1
114465 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h"
114466 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 1
114467 +
114468 +
114469 +
114470 +
114471 +
114472 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h" 1
114473 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h"
114474 +struct intel_mp_floating {
114475 + char mpf_signature[4];
114476 + unsigned int mpf_physptr;
114477 + unsigned char mpf_length;
114478 + unsigned char mpf_specification;
114479 + unsigned char mpf_checksum;
114480 + unsigned char mpf_feature1;
114481 + unsigned char mpf_feature2;
114482 + unsigned char mpf_feature3;
114483 + unsigned char mpf_feature4;
114484 + unsigned char mpf_feature5;
114485 +};
114486 +
114487 +
114488 +
114489 +struct mp_config_table {
114490 + char mpc_signature[4];
114491 + unsigned short mpc_length;
114492 + char mpc_spec;
114493 + char mpc_checksum;
114494 + char mpc_oem[8];
114495 + char mpc_productid[12];
114496 + unsigned int mpc_oemptr;
114497 + unsigned short mpc_oemsize;
114498 + unsigned short mpc_oemcount;
114499 + unsigned int mpc_lapic;
114500 + unsigned int reserved;
114501 +};
114502 +# 73 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h"
114503 +struct mpc_config_processor {
114504 + unsigned char mpc_type;
114505 + unsigned char mpc_apicid;
114506 + unsigned char mpc_apicver;
114507 + unsigned char mpc_cpuflag;
114508 + unsigned int mpc_cpufeature;
114509 + unsigned int mpc_featureflag;
114510 + unsigned int mpc_reserved[2];
114511 +};
114512 +
114513 +struct mpc_config_bus {
114514 + unsigned char mpc_type;
114515 + unsigned char mpc_busid;
114516 + unsigned char mpc_bustype[6];
114517 +};
114518 +# 111 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h"
114519 +struct mpc_config_ioapic {
114520 + unsigned char mpc_type;
114521 + unsigned char mpc_apicid;
114522 + unsigned char mpc_apicver;
114523 + unsigned char mpc_flags;
114524 + unsigned int mpc_apicaddr;
114525 +};
114526 +
114527 +struct mpc_config_intsrc {
114528 + unsigned char mpc_type;
114529 + unsigned char mpc_irqtype;
114530 + unsigned short mpc_irqflag;
114531 + unsigned char mpc_srcbus;
114532 + unsigned char mpc_srcbusirq;
114533 + unsigned char mpc_dstapic;
114534 + unsigned char mpc_dstirq;
114535 +};
114536 +
114537 +enum mp_irq_source_types {
114538 + mp_INT = 0,
114539 + mp_NMI = 1,
114540 + mp_SMI = 2,
114541 + mp_ExtINT = 3
114542 +};
114543 +
114544 +
114545 +
114546 +
114547 +
114548 +
114549 +
114550 +struct mpc_config_lintsrc {
114551 + unsigned char mpc_type;
114552 + unsigned char mpc_irqtype;
114553 + unsigned short mpc_irqflag;
114554 + unsigned char mpc_srcbusid;
114555 + unsigned char mpc_srcbusirq;
114556 + unsigned char mpc_destapic;
114557 + unsigned char mpc_destapiclint;
114558 +};
114559 +
114560 +
114561 +
114562 +struct mp_config_oemtable {
114563 + char oem_signature[4];
114564 + unsigned short oem_length;
114565 + char oem_rev;
114566 + char oem_checksum;
114567 + char mpc_oem[8];
114568 +};
114569 +# 174 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec_def.h"
114570 +enum mp_bustype {
114571 + MP_BUS_ISA = 1,
114572 + MP_BUS_EISA,
114573 + MP_BUS_PCI,
114574 + MP_BUS_MCA,
114575 +};
114576 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 2
114577 +
114578 +
114579 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_mpspec.h" 1
114580 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h" 2
114581 +
114582 +extern unsigned int def_to_bigsmp;
114583 +extern int apic_version[256];
114584 +extern u8 apicid_2_node[];
114585 +extern int pic_mode;
114586 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h"
114587 +extern void early_find_smp_config(void);
114588 +extern void early_get_smp_config(void);
114589 +
114590 +
114591 +
114592 +
114593 +
114594 +extern unsigned long mp_bus_not_pci[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))];
114595 +
114596 +extern unsigned int boot_cpu_physical_apicid;
114597 +extern unsigned int max_physical_apicid;
114598 +extern int smp_found_config;
114599 +extern int mpc_default_type;
114600 +extern unsigned long mp_lapic_addr;
114601 +
114602 +extern void find_smp_config(void);
114603 +extern void get_smp_config(void);
114604 +
114605 +extern void early_reserve_e820_mpc_new(void);
114606 +
114607 +
114608 +
114609 +
114610 +void __attribute__ ((__section__(".cpuinit.text"))) generic_processor_info(int apicid, int version);
114611 +
114612 +extern void mp_register_ioapic(int id, u32 address, u32 gsi_base);
114613 +extern void mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger,
114614 +       u32 gsi);
114615 +extern void mp_config_acpi_legacy_irqs(void);
114616 +extern int mp_register_gsi(u32 gsi, int edge_level, int active_high_low);
114617 +
114618 +extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
114619 +    u32 gsi, int triggering, int polarity);
114620 +# 77 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h"
114621 +struct physid_mask {
114622 + unsigned long mask[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))];
114623 +};
114624 +
114625 +typedef struct physid_mask physid_mask_t;
114626 +# 133 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mpspec.h"
114627 +static inline __attribute__((always_inline)) void physid_set_mask_of_physid(int physid, physid_mask_t *map)
114628 +{
114629 + bitmap_zero((*map).mask, 256);
114630 + set_bit(physid, (*map).mask);
114631 +}
114632 +
114633 +
114634 +
114635 +
114636 +extern physid_mask_t phys_cpu_present_map;
114637 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2
114638 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 1
114639 +
114640 +
114641 +
114642 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h" 1
114643 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114644 +extern void (*pm_idle)(void);
114645 +extern void (*pm_power_off)(void);
114646 +extern void (*pm_power_off_prepare)(void);
114647 +
114648 +
114649 +
114650 +
114651 +
114652 +struct device;
114653 +
114654 +typedef struct pm_message {
114655 + int event;
114656 +} pm_message_t;
114657 +# 145 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114658 +struct pm_ops {
114659 + int (*prepare)(struct device *dev);
114660 + void (*complete)(struct device *dev);
114661 + int (*suspend)(struct device *dev);
114662 + int (*resume)(struct device *dev);
114663 + int (*freeze)(struct device *dev);
114664 + int (*thaw)(struct device *dev);
114665 + int (*poweroff)(struct device *dev);
114666 + int (*restore)(struct device *dev);
114667 +};
114668 +# 203 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114669 +struct pm_ext_ops {
114670 + struct pm_ops base;
114671 + int (*suspend_noirq)(struct device *dev);
114672 + int (*resume_noirq)(struct device *dev);
114673 + int (*freeze_noirq)(struct device *dev);
114674 + int (*thaw_noirq)(struct device *dev);
114675 + int (*poweroff_noirq)(struct device *dev);
114676 + int (*restore_noirq)(struct device *dev);
114677 +};
114678 +# 334 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114679 +enum dpm_state {
114680 + DPM_INVALID,
114681 + DPM_ON,
114682 + DPM_PREPARING,
114683 + DPM_RESUMING,
114684 + DPM_SUSPENDING,
114685 + DPM_OFF,
114686 + DPM_OFF_IRQ,
114687 +};
114688 +
114689 +struct dev_pm_info {
114690 + pm_message_t power_state;
114691 + unsigned can_wakeup:1;
114692 + unsigned should_wakeup:1;
114693 + enum dpm_state status;
114694 +
114695 + struct list_head entry;
114696 +
114697 +};
114698 +# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114699 +extern void device_pm_lock(void);
114700 +extern void device_power_up(pm_message_t state);
114701 +extern void device_resume(pm_message_t state);
114702 +
114703 +extern void device_pm_unlock(void);
114704 +extern int device_power_down(pm_message_t state);
114705 +extern int device_suspend(pm_message_t state);
114706 +extern int device_prepare_suspend(pm_message_t state);
114707 +
114708 +extern void __suspend_report_result(const char *function, void *fn, int ret);
114709 +# 440 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm.h"
114710 +extern unsigned int pm_flags;
114711 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2
114712 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" 1
114713 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h"
114714 +extern unsigned long loops_per_jiffy;
114715 +
114716 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h" 1
114717 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h"
114718 +extern void __bad_udelay(void);
114719 +extern void __bad_ndelay(void);
114720 +
114721 +extern void __udelay(unsigned long usecs);
114722 +extern void __ndelay(unsigned long nsecs);
114723 +extern void __const_udelay(unsigned long xloops);
114724 +extern void __delay(unsigned long loops);
114725 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/delay.h"
114726 +void use_tsc_delay(void);
114727 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h" 2
114728 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/delay.h"
114729 +extern unsigned long lpj_fine;
114730 +void calibrate_delay(void);
114731 +void msleep(unsigned int msecs);
114732 +unsigned long msleep_interruptible(unsigned int msecs);
114733 +
114734 +static inline __attribute__((always_inline)) void ssleep(unsigned int seconds)
114735 +{
114736 + msleep(seconds * 1000);
114737 +}
114738 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2
114739 +
114740 +
114741 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" 1
114742 +
114743 +
114744 +
114745 +
114746 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 1
114747 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h"
114748 +extern unsigned long __FIXADDR_TOP;
114749 +
114750 +
114751 +
114752 +
114753 +
114754 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 1
114755 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h"
114756 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/acpi/pdc_intel.h" 1
114757 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2
114758 +
114759 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa.h" 1
114760 +
114761 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa_32.h" 1
114762 +
114763 +
114764 +
114765 +extern int pxm_to_nid(int pxm);
114766 +extern void numa_remove_cpu(int cpu);
114767 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/numa.h" 2
114768 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2
114769 +
114770 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mmu.h" 1
114771 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mmu.h"
114772 +typedef struct {
114773 + void *ldt;
114774 +
114775 +
114776 +
114777 + int size;
114778 + struct mutex lock;
114779 + void *vdso;
114780 +} mm_context_t;
114781 +
114782 +
114783 +void leave_mm(int cpu);
114784 +# 31 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h" 2
114785 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h"
114786 +int __acpi_acquire_global_lock(unsigned int *lock);
114787 +int __acpi_release_global_lock(unsigned int *lock);
114788 +# 83 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h"
114789 +extern int acpi_lapic;
114790 +extern int acpi_ioapic;
114791 +extern int acpi_noirq;
114792 +extern int acpi_strict;
114793 +extern int acpi_disabled;
114794 +extern int acpi_ht;
114795 +extern int acpi_pci_disabled;
114796 +extern int acpi_skip_timer_override;
114797 +extern int acpi_use_timer_override;
114798 +
114799 +extern u8 acpi_sci_flags;
114800 +extern int acpi_sci_override_gsi;
114801 +void acpi_pic_sci_set_trigger(unsigned int, u16);
114802 +
114803 +static inline __attribute__((always_inline)) void disable_acpi(void)
114804 +{
114805 + acpi_disabled = 1;
114806 + acpi_ht = 0;
114807 + acpi_pci_disabled = 1;
114808 + acpi_noirq = 1;
114809 +}
114810 +
114811 +
114812 +
114813 +
114814 +extern int acpi_gsi_to_irq(u32 gsi, unsigned int *irq);
114815 +
114816 +static inline __attribute__((always_inline)) void acpi_noirq_set(void) { acpi_noirq = 1; }
114817 +static inline __attribute__((always_inline)) void acpi_disable_pci(void)
114818 +{
114819 + acpi_pci_disabled = 1;
114820 + acpi_noirq_set();
114821 +}
114822 +extern int acpi_irq_balance_set(char *str);
114823 +
114824 +
114825 +extern int acpi_save_state_mem(void);
114826 +extern void acpi_restore_state_mem(void);
114827 +
114828 +extern unsigned long acpi_wakeup_address;
114829 +
114830 +
114831 +extern void acpi_reserve_bootmem(void);
114832 +
114833 +
114834 +
114835 +
114836 +static inline __attribute__((always_inline)) unsigned int acpi_processor_cstate_check(unsigned int max_cstate)
114837 +{
114838 +
114839 +
114840 +
114841 +
114842 +
114843 +
114844 + if (boot_cpu_data.x86 == 0x0F &&
114845 +     boot_cpu_data.x86_vendor == 2 &&
114846 +     boot_cpu_data.x86_model <= 0x05 &&
114847 +     boot_cpu_data.x86_mask < 0x0A)
114848 +  return 1;
114849 + 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))))))
114850 +  return 1;
114851 + else
114852 +  return max_cstate;
114853 +}
114854 +# 161 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h"
114855 +struct bootnode;
114856 +# 170 "/d/kernels/linux-2.6.27.10-clickport/include/asm/acpi.h"
114857 +static inline __attribute__((always_inline)) void acpi_fake_nodes(const struct bootnode *fake_nodes,
114858 +       int num_nodes)
114859 +{
114860 +}
114861 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 2
114862 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apicdef.h" 1
114863 +# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apicdef.h"
114864 +struct local_apic {
114865 +
114866 +        struct { unsigned int __reserved[4]; } __reserved_01;
114867 +
114868 +        struct { unsigned int __reserved[4]; } __reserved_02;
114869 +
114870 +        struct {
114871 +  unsigned int __reserved_1 : 24,
114872 +   phys_apic_id : 4,
114873 +   __reserved_2 : 4;
114874 +  unsigned int __reserved[3];
114875 + } id;
114876 +
114877 +        const
114878 + struct {
114879 +  unsigned int version : 8,
114880 +   __reserved_1 : 8,
114881 +   max_lvt : 8,
114882 +   __reserved_2 : 8;
114883 +  unsigned int __reserved[3];
114884 + } version;
114885 +
114886 +        struct { unsigned int __reserved[4]; } __reserved_03;
114887 +
114888 +        struct { unsigned int __reserved[4]; } __reserved_04;
114889 +
114890 +        struct { unsigned int __reserved[4]; } __reserved_05;
114891 +
114892 +        struct { unsigned int __reserved[4]; } __reserved_06;
114893 +
114894 +        struct {
114895 +  unsigned int priority : 8,
114896 +   __reserved_1 : 24;
114897 +  unsigned int __reserved_2[3];
114898 + } tpr;
114899 +
114900 +        const
114901 + struct {
114902 +  unsigned int priority : 8,
114903 +   __reserved_1 : 24;
114904 +  unsigned int __reserved_2[3];
114905 + } apr;
114906 +
114907 +        const
114908 + struct {
114909 +  unsigned int priority : 8,
114910 +   __reserved_1 : 24;
114911 +  unsigned int __reserved_2[3];
114912 + } ppr;
114913 +
114914 +        struct {
114915 +  unsigned int eoi;
114916 +  unsigned int __reserved[3];
114917 + } eoi;
114918 +
114919 +        struct { unsigned int __reserved[4]; } __reserved_07;
114920 +
114921 +        struct {
114922 +  unsigned int __reserved_1 : 24,
114923 +   logical_dest : 8;
114924 +  unsigned int __reserved_2[3];
114925 + } ldr;
114926 +
114927 +        struct {
114928 +  unsigned int __reserved_1 : 28,
114929 +   model : 4;
114930 +  unsigned int __reserved_2[3];
114931 + } dfr;
114932 +
114933 +        struct {
114934 +  unsigned int spurious_vector : 8,
114935 +   apic_enabled : 1,
114936 +   focus_cpu : 1,
114937 +   __reserved_2 : 22;
114938 +  unsigned int __reserved_3[3];
114939 + } svr;
114940 +
114941 +        struct {
114942 +         unsigned int bitfield;
114943 +  unsigned int __reserved[3];
114944 + } isr [8];
114945 +
114946 +        struct {
114947 +         unsigned int bitfield;
114948 +  unsigned int __reserved[3];
114949 + } tmr [8];
114950 +
114951 +        struct {
114952 +         unsigned int bitfield;
114953 +  unsigned int __reserved[3];
114954 + } irr [8];
114955 +
114956 +        union {
114957 +  struct {
114958 +   unsigned int send_cs_error : 1,
114959 +    receive_cs_error : 1,
114960 +    send_accept_error : 1,
114961 +    receive_accept_error : 1,
114962 +    __reserved_1 : 1,
114963 +    send_illegal_vector : 1,
114964 +    receive_illegal_vector : 1,
114965 +    illegal_register_address : 1,
114966 +    __reserved_2 : 24;
114967 +   unsigned int __reserved_3[3];
114968 +  } error_bits;
114969 +  struct {
114970 +   unsigned int errors;
114971 +   unsigned int __reserved_3[3];
114972 +  } all_errors;
114973 + } esr;
114974 +
114975 +        struct { unsigned int __reserved[4]; } __reserved_08;
114976 +
114977 +        struct { unsigned int __reserved[4]; } __reserved_09;
114978 +
114979 +        struct { unsigned int __reserved[4]; } __reserved_10;
114980 +
114981 +        struct { unsigned int __reserved[4]; } __reserved_11;
114982 +
114983 +        struct { unsigned int __reserved[4]; } __reserved_12;
114984 +
114985 +        struct { unsigned int __reserved[4]; } __reserved_13;
114986 +
114987 +        struct { unsigned int __reserved[4]; } __reserved_14;
114988 +
114989 +        struct {
114990 +  unsigned int vector : 8,
114991 +   delivery_mode : 3,
114992 +   destination_mode : 1,
114993 +   delivery_status : 1,
114994 +   __reserved_1 : 1,
114995 +   level : 1,
114996 +   trigger : 1,
114997 +   __reserved_2 : 2,
114998 +   shorthand : 2,
114999 +   __reserved_3 : 12;
115000 +  unsigned int __reserved_4[3];
115001 + } icr1;
115002 +
115003 +        struct {
115004 +  union {
115005 +   unsigned int __reserved_1 : 24,
115006 +    phys_dest : 4,
115007 +    __reserved_2 : 4;
115008 +   unsigned int __reserved_3 : 24,
115009 +    logical_dest : 8;
115010 +  } dest;
115011 +  unsigned int __reserved_4[3];
115012 + } icr2;
115013 +
115014 +        struct {
115015 +  unsigned int vector : 8,
115016 +   __reserved_1 : 4,
115017 +   delivery_status : 1,
115018 +   __reserved_2 : 3,
115019 +   mask : 1,
115020 +   timer_mode : 1,
115021 +   __reserved_3 : 14;
115022 +  unsigned int __reserved_4[3];
115023 + } lvt_timer;
115024 +
115025 +        struct {
115026 +  unsigned int vector : 8,
115027 +   delivery_mode : 3,
115028 +   __reserved_1 : 1,
115029 +   delivery_status : 1,
115030 +   __reserved_2 : 3,
115031 +   mask : 1,
115032 +   __reserved_3 : 15;
115033 +  unsigned int __reserved_4[3];
115034 + } lvt_thermal;
115035 +
115036 +        struct {
115037 +  unsigned int vector : 8,
115038 +   delivery_mode : 3,
115039 +   __reserved_1 : 1,
115040 +   delivery_status : 1,
115041 +   __reserved_2 : 3,
115042 +   mask : 1,
115043 +   __reserved_3 : 15;
115044 +  unsigned int __reserved_4[3];
115045 + } lvt_pc;
115046 +
115047 +        struct {
115048 +  unsigned int vector : 8,
115049 +   delivery_mode : 3,
115050 +   __reserved_1 : 1,
115051 +   delivery_status : 1,
115052 +   polarity : 1,
115053 +   remote_irr : 1,
115054 +   trigger : 1,
115055 +   mask : 1,
115056 +   __reserved_2 : 15;
115057 +  unsigned int __reserved_3[3];
115058 + } lvt_lint0;
115059 +
115060 +        struct {
115061 +  unsigned int vector : 8,
115062 +   delivery_mode : 3,
115063 +   __reserved_1 : 1,
115064 +   delivery_status : 1,
115065 +   polarity : 1,
115066 +   remote_irr : 1,
115067 +   trigger : 1,
115068 +   mask : 1,
115069 +   __reserved_2 : 15;
115070 +  unsigned int __reserved_3[3];
115071 + } lvt_lint1;
115072 +
115073 +        struct {
115074 +  unsigned int vector : 8,
115075 +   __reserved_1 : 4,
115076 +   delivery_status : 1,
115077 +   __reserved_2 : 3,
115078 +   mask : 1,
115079 +   __reserved_3 : 15;
115080 +  unsigned int __reserved_4[3];
115081 + } lvt_error;
115082 +
115083 +        struct {
115084 +  unsigned int initial_count;
115085 +  unsigned int __reserved_2[3];
115086 + } timer_icr;
115087 +
115088 +        const
115089 + struct {
115090 +  unsigned int curr_count;
115091 +  unsigned int __reserved_2[3];
115092 + } timer_ccr;
115093 +
115094 +        struct { unsigned int __reserved[4]; } __reserved_16;
115095 +
115096 +        struct { unsigned int __reserved[4]; } __reserved_17;
115097 +
115098 +        struct { unsigned int __reserved[4]; } __reserved_18;
115099 +
115100 +        struct { unsigned int __reserved[4]; } __reserved_19;
115101 +
115102 +        struct {
115103 +  unsigned int divisor : 4,
115104 +   __reserved_1 : 28;
115105 +  unsigned int __reserved_2[3];
115106 + } timer_dcr;
115107 +
115108 +        struct { unsigned int __reserved[4]; } __reserved_20;
115109 +
115110 +} __attribute__ ((packed));
115111 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h" 2
115112 +# 54 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h"
115113 +enum fixed_addresses {
115114 + FIX_HOLE,
115115 + FIX_VDSO,
115116 + FIX_DBGP_BASE,
115117 + FIX_EARLYCON_MEM_BASE,
115118 +
115119 + FIX_APIC_BASE,
115120 +
115121 +
115122 + FIX_IO_APIC_BASE_0,
115123 + FIX_IO_APIC_BASE_END = FIX_IO_APIC_BASE_0 + 64 -1,
115124 +# 76 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h"
115125 + FIX_CYCLONE_TIMER,
115126 +
115127 +
115128 + FIX_KMAP_BEGIN,
115129 + FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*32)-1,
115130 +
115131 +
115132 + FIX_PCIE_MCFG,
115133 +
115134 +
115135 + FIX_PARAVIRT_BOOTMAP,
115136 +
115137 + __end_of_permanent_fixed_addresses,
115138 +# 98 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap_32.h"
115139 + FIX_BTMAP_END = __end_of_permanent_fixed_addresses + 256 -
115140 +   (__end_of_permanent_fixed_addresses & 255),
115141 + FIX_BTMAP_BEGIN = FIX_BTMAP_END + 64*4 - 1,
115142 + FIX_WP_TEST,
115143 +
115144 + FIX_ACPI_BEGIN,
115145 + FIX_ACPI_END = FIX_ACPI_BEGIN + 4 - 1,
115146 +
115147 +
115148 +
115149 +
115150 + __end_of_fixed_addresses
115151 +};
115152 +
115153 +extern void reserve_top_address(unsigned long reserve);
115154 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h" 2
115155 +
115156 +
115157 +
115158 +
115159 +extern int fixmaps_set;
115160 +
115161 +void __native_set_fixmap(enum fixed_addresses idx, pte_t pte);
115162 +void native_set_fixmap(enum fixed_addresses idx,
115163 +         unsigned long phys, pgprot_t flags);
115164 +# 39 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h"
115165 +extern void __this_fixmap_does_not_exist(void);
115166 +
115167 +
115168 +
115169 +
115170 +
115171 +
115172 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long fix_to_virt(const unsigned int idx)
115173 +{
115174 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/asm/fixmap.h"
115175 + if (idx >= __end_of_fixed_addresses)
115176 +  __this_fixmap_does_not_exist();
115177 +
115178 + return (((unsigned long)__FIXADDR_TOP) - ((idx) << 12));
115179 +}
115180 +
115181 +static inline __attribute__((always_inline)) unsigned long virt_to_fix(const unsigned long vaddr)
115182 +{
115183 + 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);
115184 + return ((((unsigned long)__FIXADDR_TOP) - ((vaddr)&(~(((1UL) << 12)-1)))) >> 12);
115185 +}
115186 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h" 2
115187 +# 34 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h"
115188 +extern void generic_apic_probe(void);
115189 +
115190 +
115191 +
115192 +extern unsigned int apic_verbosity;
115193 +extern int local_apic_timer_c2_ok;
115194 +
115195 +extern int ioapic_force;
115196 +
115197 +extern int disable_apic;
115198 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h"
115199 +extern int is_vsmp_box(void);
115200 +
115201 +static inline __attribute__((always_inline)) void native_apic_write(unsigned long reg, u32 v)
115202 +{
115203 + volatile u32 *addr = (volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg);
115204 +
115205 + 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));
115206 +
115207 +
115208 +}
115209 +
115210 +static inline __attribute__((always_inline)) u32 native_apic_read(unsigned long reg)
115211 +{
115212 + return *((volatile u32 *)((fix_to_virt(FIX_APIC_BASE)) + reg));
115213 +}
115214 +
115215 +extern void apic_wait_icr_idle(void);
115216 +extern u32 safe_apic_wait_icr_idle(void);
115217 +extern int get_physical_broadcast(void);
115218 +
115219 +static inline __attribute__((always_inline)) void ack_APIC_irq(void)
115220 +{
115221 +# 86 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h"
115222 + apic_write(0xB0, 0);
115223 +}
115224 +
115225 +extern int lapic_get_maxlvt(void);
115226 +extern void clear_local_APIC(void);
115227 +extern void connect_bsp_APIC(void);
115228 +extern void disconnect_bsp_APIC(int virt_wire_setup);
115229 +extern void disable_local_APIC(void);
115230 +extern void lapic_shutdown(void);
115231 +extern int verify_local_APIC(void);
115232 +extern void cache_APIC_registers(void);
115233 +extern void sync_Arb_IDs(void);
115234 +extern void init_bsp_APIC(void);
115235 +extern void setup_local_APIC(void);
115236 +extern void end_local_APIC_setup(void);
115237 +extern void init_apic_mappings(void);
115238 +extern void setup_boot_APIC_clock(void);
115239 +extern void setup_secondary_APIC_clock(void);
115240 +extern int APIC_init_uniprocessor(void);
115241 +extern void enable_NMI_through_LVT0(void);
115242 +# 114 "/d/kernels/linux-2.6.27.10-clickport/include/asm/apic.h"
115243 +static inline __attribute__((always_inline)) int apic_is_clustered_box(void)
115244 +{
115245 + return 0;
115246 +}
115247 +
115248 +
115249 +extern u8 setup_APIC_eilvt_mce(u8 vector, u8 msg_type, u8 mask);
115250 +extern u8 setup_APIC_eilvt_ibs(u8 vector, u8 msg_type, u8 mask);
115251 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2
115252 +
115253 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h" 1
115254 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h"
115255 +union IO_APIC_reg_00 {
115256 + u32 raw;
115257 + struct {
115258 +  u32 __reserved_2 : 14,
115259 +   LTS : 1,
115260 +   delivery_type : 1,
115261 +   __reserved_1 : 8,
115262 +   ID : 8;
115263 + } __attribute__ ((packed)) bits;
115264 +};
115265 +
115266 +union IO_APIC_reg_01 {
115267 + u32 raw;
115268 + struct {
115269 +  u32 version : 8,
115270 +   __reserved_2 : 7,
115271 +   PRQ : 1,
115272 +   entries : 8,
115273 +   __reserved_1 : 8;
115274 + } __attribute__ ((packed)) bits;
115275 +};
115276 +
115277 +union IO_APIC_reg_02 {
115278 + u32 raw;
115279 + struct {
115280 +  u32 __reserved_2 : 24,
115281 +   arbitration : 4,
115282 +   __reserved_1 : 4;
115283 + } __attribute__ ((packed)) bits;
115284 +};
115285 +
115286 +union IO_APIC_reg_03 {
115287 + u32 raw;
115288 + struct {
115289 +  u32 boot_DT : 1,
115290 +   __reserved_1 : 31;
115291 + } __attribute__ ((packed)) bits;
115292 +};
115293 +
115294 +enum ioapic_irq_destination_types {
115295 + dest_Fixed = 0,
115296 + dest_LowestPrio = 1,
115297 + dest_SMI = 2,
115298 + dest__reserved_1 = 3,
115299 + dest_NMI = 4,
115300 + dest_INIT = 5,
115301 + dest__reserved_2 = 6,
115302 + dest_ExtINT = 7
115303 +};
115304 +
115305 +struct IO_APIC_route_entry {
115306 + __u32 vector : 8,
115307 +  delivery_mode : 3,
115308 +
115309 +
115310 +
115311 +  dest_mode : 1,
115312 +  delivery_status : 1,
115313 +  polarity : 1,
115314 +  irr : 1,
115315 +  trigger : 1,
115316 +  mask : 1,
115317 +  __reserved_2 : 15;
115318 +
115319 +
115320 + union {
115321 +  struct {
115322 +   __u32 __reserved_1 : 24,
115323 +    physical_dest : 4,
115324 +    __reserved_2 : 4;
115325 +  } physical;
115326 +
115327 +  struct {
115328 +   __u32 __reserved_1 : 24,
115329 +    logical_dest : 8;
115330 +  } logical;
115331 + } dest;
115332 +
115333 +
115334 +
115335 +
115336 +
115337 +} __attribute__ ((packed));
115338 +
115339 +
115340 +
115341 +
115342 +
115343 +
115344 +extern int nr_ioapics;
115345 +extern int nr_ioapic_registers[64];
115346 +
115347 +
115348 +
115349 +
115350 +
115351 +
115352 +
115353 +struct mp_config_ioapic {
115354 + unsigned long mp_apicaddr;
115355 + unsigned int mp_apicid;
115356 + unsigned char mp_type;
115357 + unsigned char mp_apicver;
115358 + unsigned char mp_flags;
115359 +};
115360 +
115361 +struct mp_config_intsrc {
115362 + unsigned int mp_dstapic;
115363 + unsigned char mp_type;
115364 + unsigned char mp_irqtype;
115365 + unsigned short mp_irqflag;
115366 + unsigned char mp_srcbus;
115367 + unsigned char mp_srcbusirq;
115368 + unsigned char mp_dstirq;
115369 +};
115370 +
115371 +
115372 +extern struct mp_config_ioapic mp_ioapics[64];
115373 +
115374 +
115375 +extern int mp_irq_entries;
115376 +
115377 +
115378 +extern struct mp_config_intsrc mp_irqs[256];
115379 +
115380 +
115381 +extern int mpc_default_type;
115382 +
115383 +
115384 +extern int sis_apic_bug;
115385 +
115386 +
115387 +extern int skip_ioapic_setup;
115388 +
115389 +
115390 +extern int timer_through_8259;
115391 +
115392 +static inline __attribute__((always_inline)) void disable_ioapic_setup(void)
115393 +{
115394 + skip_ioapic_setup = 1;
115395 +}
115396 +# 176 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_apic.h"
115397 +extern int io_apic_get_unique_id(int ioapic, int apic_id);
115398 +extern int io_apic_get_version(int ioapic);
115399 +extern int io_apic_get_redir_entries(int ioapic);
115400 +extern int io_apic_set_pci_routing(int ioapic, int pin, int irq,
115401 +       int edge_level, int active_high_low);
115402 +
115403 +
115404 +extern int (*ioapic_renumber_irq)(int ioapic, int irq);
115405 +extern void ioapic_init_mappings(void);
115406 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2
115407 +
115408 +
115409 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pda.h" 1
115410 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pda.h"
115411 +struct x8664_pda {
115412 + struct task_struct *pcurrent;
115413 + unsigned long data_offset;
115414 +
115415 + unsigned long kernelstack;
115416 + unsigned long oldrsp;
115417 + int irqcount;
115418 + unsigned int cpunumber;
115419 +
115420 +
115421 +
115422 +
115423 +
115424 + char *irqstackptr;
115425 + short nodenumber;
115426 + short in_bootmem;
115427 + unsigned int __softirq_pending;
115428 + unsigned int __nmi_count;
115429 + short mmu_state;
115430 + short isidle;
115431 + struct mm_struct *active_mm;
115432 + unsigned apic_timer_irqs;
115433 + unsigned irq0_irqs;
115434 + unsigned irq_resched_count;
115435 + unsigned irq_call_count;
115436 + unsigned irq_tlb_count;
115437 + unsigned irq_thermal_count;
115438 + unsigned irq_threshold_count;
115439 + unsigned irq_spurious_count;
115440 +} __attribute__((__aligned__((1 << (7)))));
115441 +
115442 +extern struct x8664_pda **_cpu_pda;
115443 +extern void pda_init(int);
115444 +
115445 +
115446 +
115447 +
115448 +
115449 +
115450 +
115451 +extern void __bad_pda_field(void) __attribute__((noreturn));
115452 +
115453 +
115454 +
115455 +
115456 +
115457 +extern struct x8664_pda _proxy_pda;
115458 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2
115459 +
115460 +
115461 +extern cpumask_t cpu_callout_map;
115462 +extern cpumask_t cpu_initialized;
115463 +extern cpumask_t cpu_callin_map;
115464 +
115465 +extern void (*mtrr_hook)(void);
115466 +extern void zap_low_mappings(void);
115467 +
115468 +extern int __attribute__ ((__section__(".cpuinit.text"))) get_local_pda(int cpu);
115469 +
115470 +extern int smp_num_siblings;
115471 +extern unsigned int num_processors;
115472 +extern cpumask_t cpu_initialized;
115473 +
115474 +extern __typeof__(cpumask_t) per_cpu__cpu_sibling_map;
115475 +extern __typeof__(cpumask_t) per_cpu__cpu_core_map;
115476 +extern __typeof__(u16) per_cpu__cpu_llc_id;
115477 +
115478 +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[];
115479 +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[];
115480 +
115481 +
115482 +extern struct {
115483 + void *sp;
115484 + unsigned short ss;
115485 +} stack_start;
115486 +
115487 +struct smp_ops {
115488 + void (*smp_prepare_boot_cpu)(void);
115489 + void (*smp_prepare_cpus)(unsigned max_cpus);
115490 + int (*cpu_up)(unsigned cpu);
115491 + void (*smp_cpus_done)(unsigned max_cpus);
115492 +
115493 + void (*smp_send_stop)(void);
115494 + void (*smp_send_reschedule)(int cpu);
115495 +
115496 + void (*send_call_func_ipi)(cpumask_t mask);
115497 + void (*send_call_func_single_ipi)(int cpu);
115498 +};
115499 +
115500 +
115501 +extern void set_cpu_sibling_map(int cpu);
115502 +
115503 +
115504 +
115505 +
115506 +
115507 +extern struct smp_ops smp_ops;
115508 +
115509 +static inline __attribute__((always_inline)) void smp_send_stop(void)
115510 +{
115511 + smp_ops.smp_send_stop();
115512 +}
115513 +
115514 +static inline __attribute__((always_inline)) void smp_prepare_boot_cpu(void)
115515 +{
115516 + smp_ops.smp_prepare_boot_cpu();
115517 +}
115518 +
115519 +static inline __attribute__((always_inline)) void smp_prepare_cpus(unsigned int max_cpus)
115520 +{
115521 + smp_ops.smp_prepare_cpus(max_cpus);
115522 +}
115523 +
115524 +static inline __attribute__((always_inline)) void smp_cpus_done(unsigned int max_cpus)
115525 +{
115526 + smp_ops.smp_cpus_done(max_cpus);
115527 +}
115528 +
115529 +static inline __attribute__((always_inline)) int __cpu_up(unsigned int cpu)
115530 +{
115531 + return smp_ops.cpu_up(cpu);
115532 +}
115533 +
115534 +static inline __attribute__((always_inline)) void smp_send_reschedule(int cpu)
115535 +{
115536 + smp_ops.smp_send_reschedule(cpu);
115537 +}
115538 +
115539 +static inline __attribute__((always_inline)) void arch_send_call_function_single_ipi(int cpu)
115540 +{
115541 + smp_ops.send_call_func_single_ipi(cpu);
115542 +}
115543 +
115544 +static inline __attribute__((always_inline)) void arch_send_call_function_ipi(cpumask_t mask)
115545 +{
115546 + smp_ops.send_call_func_ipi(mask);
115547 +}
115548 +
115549 +void native_smp_prepare_boot_cpu(void);
115550 +void native_smp_prepare_cpus(unsigned int max_cpus);
115551 +void native_smp_cpus_done(unsigned int max_cpus);
115552 +int native_cpu_up(unsigned int cpunum);
115553 +void native_send_call_func_ipi(cpumask_t mask);
115554 +void native_send_call_func_single_ipi(int cpu);
115555 +
115556 +extern int __cpu_disable(void);
115557 +extern void __cpu_die(unsigned int cpu);
115558 +
115559 +void smp_store_cpu_info(int id);
115560 +
115561 +
115562 +
115563 +static inline __attribute__((always_inline)) int num_booting_cpus(void)
115564 +{
115565 + return __cpus_weight(&(cpu_callout_map), 32);
115566 +}
115567 +
115568 +
115569 +
115570 +extern void prefill_possible_map(void);
115571 +
115572 +
115573 +
115574 +
115575 +
115576 +
115577 +extern unsigned disabled_cpus __attribute__ ((__section__(".cpuinit.data")));
115578 +
115579 +
115580 +
115581 +
115582 +
115583 +
115584 +
115585 +extern __typeof__(int) per_cpu__cpu_number;
115586 +
115587 +extern int safe_smp_processor_id(void);
115588 +# 168 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h"
115589 +static inline __attribute__((always_inline)) int logical_smp_processor_id(void)
115590 +{
115591 +
115592 + return (((*(u32 *)((fix_to_virt(FIX_APIC_BASE)) + 0xD0)) >> 24) & 0xFFu);
115593 +}
115594 +
115595 +
115596 +static inline __attribute__((always_inline)) unsigned int read_apic_id(void)
115597 +{
115598 + return *(u32 *)((fix_to_virt(FIX_APIC_BASE)) + 0x20);
115599 +}
115600 +# 187 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h"
115601 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_apicdef.h" 1
115602 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/mach-default/mach_apicdef.h"
115603 +static inline __attribute__((always_inline)) unsigned get_apic_id(unsigned long x)
115604 +{
115605 + unsigned int ver = ((apic_read(0x30)) & 0xFFu);
115606 + if (((ver) >= 0x14))
115607 +  return (((x)>>24)&0xFF);
115608 + else
115609 +  return (((x)>>24)&0xF);
115610 +}
115611 +# 188 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h" 2
115612 +static inline __attribute__((always_inline)) int hard_smp_processor_id(void)
115613 +{
115614 +
115615 + return get_apic_id(read_apic_id());
115616 +}
115617 +# 204 "/d/kernels/linux-2.6.27.10-clickport/include/asm/smp.h"
115618 +extern void cpu_uninit(void);
115619 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h" 2
115620 +# 38 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h"
115621 +extern void smp_send_stop(void);
115622 +
115623 +
115624 +
115625 +
115626 +extern void smp_send_reschedule(int cpu);
115627 +
115628 +
115629 +
115630 +
115631 +
115632 +extern void smp_prepare_cpus(unsigned int max_cpus);
115633 +
115634 +
115635 +
115636 +
115637 +extern int __cpu_up(unsigned int cpunum);
115638 +
115639 +
115640 +
115641 +
115642 +extern void smp_cpus_done(unsigned int max_cpus);
115643 +
115644 +
115645 +
115646 +
115647 +int smp_call_function(void(*func)(void *info), void *info, int wait);
115648 +int smp_call_function_mask(cpumask_t mask, void(*func)(void *info), void *info,
115649 +    int wait);
115650 +int smp_call_function_single(int cpuid, void (*func) (void *info), void *info,
115651 +    int wait);
115652 +void __smp_call_function_single(int cpuid, struct call_single_data *data);
115653 +
115654 +
115655 +
115656 +
115657 +
115658 +void generic_smp_call_function_single_interrupt(void);
115659 +void generic_smp_call_function_interrupt(void);
115660 +void ipi_call_lock(void);
115661 +void ipi_call_unlock(void);
115662 +void ipi_call_lock_irq(void);
115663 +void ipi_call_unlock_irq(void);
115664 +
115665 +
115666 +
115667 +
115668 +
115669 +int on_each_cpu(void (*func) (void *info), void *info, int wait);
115670 +# 102 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h"
115671 +void smp_prepare_boot_cpu(void);
115672 +
115673 +extern unsigned int setup_max_cpus;
115674 +# 169 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp.h"
115675 +void smp_setup_processor_id(void);
115676 +# 34 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 2
115677 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" 1
115678 +# 189 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h"
115679 +static inline __attribute__((always_inline)) const cpumask_t *_node_to_cpumask_ptr(int node)
115680 +{
115681 + return &cpu_online_map;
115682 +}
115683 +static inline __attribute__((always_inline)) cpumask_t node_to_cpumask(int node)
115684 +{
115685 + return cpu_online_map;
115686 +}
115687 +static inline __attribute__((always_inline)) int node_to_first_cpu(int node)
115688 +{
115689 + return __first_cpu(&(cpu_online_map));
115690 +}
115691 +# 210 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h"
115692 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/topology.h" 1
115693 +# 211 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h" 2
115694 +# 221 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h"
115695 +extern cpumask_t cpu_coregroup_map(int cpu);
115696 +# 233 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h"
115697 +static inline __attribute__((always_inline)) void arch_fix_phys_package_id(int num, u32 slot)
115698 +{
115699 +}
115700 +
115701 +struct pci_bus;
115702 +void set_pci_bus_resources_arch_default(struct pci_bus *b);
115703 +# 249 "/d/kernels/linux-2.6.27.10-clickport/include/asm/topology.h"
115704 +static inline __attribute__((always_inline)) int get_mp_bus_to_node(int busnum)
115705 +{
115706 + return 0;
115707 +}
115708 +static inline __attribute__((always_inline)) void set_mp_bus_to_node(int busnum, int node)
115709 +{
115710 +}
115711 +# 35 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h" 2
115712 +# 52 "/d/kernels/linux-2.6.27.10-clickport/include/linux/topology.h"
115713 +void arch_update_cpu_topology(void);
115714 +# 684 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h" 2
115715 +
115716 +
115717 +
115718 +
115719 +
115720 +
115721 +
115722 +extern struct pglist_data contig_page_data;
115723 +# 701 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
115724 +extern struct pglist_data *first_online_pgdat(void);
115725 +extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat);
115726 +extern struct zone *next_zone(struct zone *zone);
115727 +# 725 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
115728 +static inline __attribute__((always_inline)) struct zone *zonelist_zone(struct zoneref *zoneref)
115729 +{
115730 + return zoneref->zone;
115731 +}
115732 +
115733 +static inline __attribute__((always_inline)) int zonelist_zone_idx(struct zoneref *zoneref)
115734 +{
115735 + return zoneref->zone_idx;
115736 +}
115737 +
115738 +static inline __attribute__((always_inline)) int zonelist_node_idx(struct zoneref *zoneref)
115739 +{
115740 +
115741 +
115742 +
115743 +
115744 + return 0;
115745 +
115746 +}
115747 +# 758 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
115748 +struct zoneref *next_zones_zonelist(struct zoneref *z,
115749 +     enum zone_type highest_zoneidx,
115750 +     nodemask_t *nodes,
115751 +     struct zone **zone);
115752 +# 775 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
115753 +static inline __attribute__((always_inline)) struct zoneref *first_zones_zonelist(struct zonelist *zonelist,
115754 +     enum zone_type highest_zoneidx,
115755 +     nodemask_t *nodes,
115756 +     struct zone **zone)
115757 +{
115758 + return next_zones_zonelist(zonelist->_zonerefs, highest_zoneidx, nodes,
115759 +        zone);
115760 +}
115761 +# 990 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mmzone.h"
115762 +void memory_present(int nid, unsigned long start, unsigned long end);
115763 +unsigned long __attribute__ ((__section__(".init.text"))) node_memmap_size_bytes(int, unsigned long, unsigned long);
115764 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h" 2
115765 +
115766 +
115767 +
115768 +struct vm_area_struct;
115769 +# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h"
115770 +static inline __attribute__((always_inline)) int allocflags_to_migratetype(gfp_t gfp_flags)
115771 +{
115772 + ({ 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); });
115773 +
115774 + if (__builtin_expect(!!(page_group_by_mobility_disabled), 0))
115775 +  return 0;
115776 +
115777 +
115778 + return (((gfp_flags & (( gfp_t)0x100000u)) != 0) << 1) |
115779 +  ((gfp_flags & (( gfp_t)0x80000u)) != 0);
115780 +}
115781 +
115782 +static inline __attribute__((always_inline)) enum zone_type gfp_zone(gfp_t flags)
115783 +{
115784 +
115785 + if (flags & (( gfp_t)0x01u))
115786 +  return ZONE_DMA;
115787 +
115788 +
115789 +
115790 +
115791 +
115792 + if ((flags & ((( gfp_t)0x02u) | (( gfp_t)0x100000u))) ==
115793 +   ((( gfp_t)0x02u) | (( gfp_t)0x100000u)))
115794 +  return ZONE_MOVABLE;
115795 +
115796 + if (flags & (( gfp_t)0x02u))
115797 +  return ZONE_HIGHMEM;
115798 +
115799 + return ZONE_NORMAL;
115800 +}
115801 +# 147 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h"
115802 +static inline __attribute__((always_inline)) int gfp_zonelist(gfp_t flags)
115803 +{
115804 + if (0 && __builtin_expect(!!(flags & (( gfp_t)0x40000u)), 0))
115805 +  return 1;
115806 +
115807 + return 0;
115808 +}
115809 +# 164 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h"
115810 +static inline __attribute__((always_inline)) struct zonelist *node_zonelist(int nid, gfp_t flags)
115811 +{
115812 + return (&contig_page_data)->node_zonelists + gfp_zonelist(flags);
115813 +}
115814 +
115815 +
115816 +static inline __attribute__((always_inline)) void arch_free_page(struct page *page, int order) { }
115817 +
115818 +
115819 +static inline __attribute__((always_inline)) void arch_alloc_page(struct page *page, int order) { }
115820 +
115821 +
115822 +struct page *
115823 +__alloc_pages_internal(gfp_t gfp_mask, unsigned int order,
115824 +         struct zonelist *zonelist, nodemask_t *nodemask);
115825 +
115826 +static inline __attribute__((always_inline)) struct page *
115827 +__alloc_pages(gfp_t gfp_mask, unsigned int order,
115828 +  struct zonelist *zonelist)
115829 +{
115830 + return __alloc_pages_internal(gfp_mask, order, zonelist, 0);
115831 +}
115832 +
115833 +static inline __attribute__((always_inline)) struct page *
115834 +__alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
115835 +  struct zonelist *zonelist, nodemask_t *nodemask)
115836 +{
115837 + return __alloc_pages_internal(gfp_mask, order, zonelist, nodemask);
115838 +}
115839 +
115840 +
115841 +static inline __attribute__((always_inline)) struct page *alloc_pages_node(int nid, gfp_t gfp_mask,
115842 +      unsigned int order)
115843 +{
115844 + if (__builtin_expect(!!(order >= 11), 0))
115845 +  return 0;
115846 +
115847 +
115848 + if (nid < 0)
115849 +  nid = 0;
115850 +
115851 + return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask));
115852 +}
115853 +# 228 "/d/kernels/linux-2.6.27.10-clickport/include/linux/gfp.h"
115854 +extern unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order);
115855 +extern unsigned long get_zeroed_page(gfp_t gfp_mask);
115856 +
115857 +void *alloc_pages_exact(size_t size, gfp_t gfp_mask);
115858 +void free_pages_exact(void *virt, size_t size);
115859 +
115860 +
115861 +
115862 +
115863 +
115864 +
115865 +
115866 +extern void __free_pages(struct page *page, unsigned int order);
115867 +extern void free_pages(unsigned long addr, unsigned int order);
115868 +extern void free_hot_page(struct page *page);
115869 +extern void free_cold_page(struct page *page);
115870 +
115871 +
115872 +
115873 +
115874 +void page_alloc_init(void);
115875 +void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp);
115876 +void drain_all_pages(void);
115877 +void drain_local_pages(void *dummy);
115878 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h" 2
115879 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmod.h"
115880 +extern int request_module(const char * name, ...) __attribute__ ((format (printf, 1, 2)));
115881 +
115882 +
115883 +
115884 +
115885 +
115886 +
115887 +
115888 +struct key;
115889 +struct file;
115890 +struct subprocess_info;
115891 +
115892 +
115893 +struct subprocess_info *call_usermodehelper_setup(char *path, char **argv,
115894 +        char **envp, gfp_t gfp_mask);
115895 +
115896 +
115897 +void call_usermodehelper_setkeys(struct subprocess_info *info,
115898 +     struct key *session_keyring);
115899 +int call_usermodehelper_stdinpipe(struct subprocess_info *sub_info,
115900 +      struct file **filp);
115901 +void call_usermodehelper_setcleanup(struct subprocess_info *info,
115902 +        void (*cleanup)(char **argv, char **envp));
115903 +
115904 +enum umh_wait {
115905 + UMH_NO_WAIT = -1,
115906 + UMH_WAIT_EXEC = 0,
115907 + UMH_WAIT_PROC = 1,
115908 +};
115909 +
115910 +
115911 +int call_usermodehelper_exec(struct subprocess_info *info, enum umh_wait wait);
115912 +
115913 +
115914 +
115915 +void call_usermodehelper_freeinfo(struct subprocess_info *info);
115916 +
115917 +static inline __attribute__((always_inline)) int
115918 +call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait)
115919 +{
115920 + struct subprocess_info *info;
115921 + gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? ((( gfp_t)0x20u)) : ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u));
115922 +
115923 + info = call_usermodehelper_setup(path, argv, envp, gfp_mask);
115924 + if (info == 0)
115925 +  return -12;
115926 + return call_usermodehelper_exec(info, wait);
115927 +}
115928 +
115929 +static inline __attribute__((always_inline)) int
115930 +call_usermodehelper_keys(char *path, char **argv, char **envp,
115931 +    struct key *session_keyring, enum umh_wait wait)
115932 +{
115933 + struct subprocess_info *info;
115934 + gfp_t gfp_mask = (wait == UMH_NO_WAIT) ? ((( gfp_t)0x20u)) : ((( gfp_t)0x10u) | (( gfp_t)0x40u) | (( gfp_t)0x80u));
115935 +
115936 + info = call_usermodehelper_setup(path, argv, envp, gfp_mask);
115937 + if (info == 0)
115938 +  return -12;
115939 +
115940 + call_usermodehelper_setkeys(info, session_keyring);
115941 + return call_usermodehelper_exec(info, wait);
115942 +}
115943 +
115944 +extern void usermodehelper_init(void);
115945 +
115946 +struct file;
115947 +extern int call_usermodehelper_pipe(char *path, char *argv[], char *envp[],
115948 +        struct file **filp);
115949 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
115950 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 1
115951 +
115952 +
115953 +
115954 +
115955 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf-em.h" 1
115956 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 2
115957 +
115958 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 1
115959 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h"
115960 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user.h" 1
115961 +
115962 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user_32.h" 1
115963 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user_32.h"
115964 +struct user_i387_struct {
115965 + long cwd;
115966 + long swd;
115967 + long twd;
115968 + long fip;
115969 + long fcs;
115970 + long foo;
115971 + long fos;
115972 + long st_space[20];
115973 +};
115974 +
115975 +struct user_fxsr_struct {
115976 + unsigned short cwd;
115977 + unsigned short swd;
115978 + unsigned short twd;
115979 + unsigned short fop;
115980 + long fip;
115981 + long fcs;
115982 + long foo;
115983 + long fos;
115984 + long mxcsr;
115985 + long reserved;
115986 + long st_space[32];
115987 + long xmm_space[32];
115988 + long padding[56];
115989 +};
115990 +
115991 +
115992 +
115993 +
115994 +
115995 +
115996 +
115997 +struct user_regs_struct {
115998 + unsigned long bx;
115999 + unsigned long cx;
116000 + unsigned long dx;
116001 + unsigned long si;
116002 + unsigned long di;
116003 + unsigned long bp;
116004 + unsigned long ax;
116005 + unsigned long ds;
116006 + unsigned long es;
116007 + unsigned long fs;
116008 + unsigned long gs;
116009 + unsigned long orig_ax;
116010 + unsigned long ip;
116011 + unsigned long cs;
116012 + unsigned long flags;
116013 + unsigned long sp;
116014 + unsigned long ss;
116015 +};
116016 +
116017 +
116018 +
116019 +
116020 +struct user{
116021 +
116022 +
116023 +  struct user_regs_struct regs;
116024 +
116025 +  int u_fpvalid;
116026 +
116027 +  struct user_i387_struct i387;
116028 +
116029 +  unsigned long int u_tsize;
116030 +  unsigned long int u_dsize;
116031 +  unsigned long int u_ssize;
116032 +  unsigned long start_code;
116033 +  unsigned long start_stack;
116034 +
116035 +
116036 +
116037 +  long int signal;
116038 +  int reserved;
116039 +  unsigned long u_ar0;
116040 +
116041 +  struct user_i387_struct *u_fpstate;
116042 +  unsigned long magic;
116043 +  char u_comm[32];
116044 +  int u_debugreg[8];
116045 +};
116046 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/user.h" 2
116047 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2
116048 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/auxvec.h" 1
116049 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2
116050 +
116051 +typedef unsigned long elf_greg_t;
116052 +
116053 +
116054 +typedef elf_greg_t elf_gregset_t[(sizeof(struct user_regs_struct) / sizeof(elf_greg_t))];
116055 +
116056 +typedef struct user_i387_struct elf_fpregset_t;
116057 +
116058 +
116059 +
116060 +typedef struct user_fxsr_struct elf_fpxregset_t;
116061 +# 75 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h"
116062 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h" 1
116063 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h"
116064 +extern const char VDSO32_PRELINK[];
116065 +# 36 "/d/kernels/linux-2.6.27.10-clickport/include/asm/vdso.h"
116066 +extern void* __kernel_sigreturn;
116067 +extern void* __kernel_rt_sigreturn;
116068 +
116069 +
116070 +
116071 +
116072 +
116073 +extern const char vdso32_int80_start, vdso32_int80_end;
116074 +extern const char vdso32_syscall_start, vdso32_syscall_end;
116075 +extern const char vdso32_sysenter_start, vdso32_sysenter_end;
116076 +# 76 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2
116077 +
116078 +extern unsigned int vdso_enabled;
116079 +# 89 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h"
116080 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" 1
116081 +
116082 +
116083 +
116084 +
116085 +
116086 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ldt.h" 1
116087 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ldt.h"
116088 +struct user_desc {
116089 + unsigned int entry_number;
116090 + unsigned int base_addr;
116091 + unsigned int limit;
116092 + unsigned int seg_32bit:1;
116093 + unsigned int contents:2;
116094 + unsigned int read_exec_only:1;
116095 + unsigned int limit_in_pages:1;
116096 + unsigned int seg_not_present:1;
116097 + unsigned int useable:1;
116098 +
116099 +
116100 +
116101 +};
116102 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h" 2
116103 +
116104 +
116105 +
116106 +static inline __attribute__((always_inline)) void fill_ldt(struct desc_struct *desc,
116107 +       const struct user_desc *info)
116108 +{
116109 + desc->limit0 = info->limit & 0x0ffff;
116110 + desc->base0 = info->base_addr & 0x0000ffff;
116111 +
116112 + desc->base1 = (info->base_addr & 0x00ff0000) >> 16;
116113 + desc->type = (info->read_exec_only ^ 1) << 1;
116114 + desc->type |= info->contents << 2;
116115 + desc->s = 1;
116116 + desc->dpl = 0x3;
116117 + desc->p = info->seg_not_present ^ 1;
116118 + desc->limit = (info->limit & 0xf0000) >> 16;
116119 + desc->avl = info->useable;
116120 + desc->d = info->seg_32bit;
116121 + desc->g = info->limit_in_pages;
116122 + desc->base2 = (info->base_addr & 0xff000000) >> 24;
116123 +}
116124 +
116125 +extern struct desc_ptr idt_descr;
116126 +extern gate_desc idt_table[];
116127 +
116128 +struct gdt_page {
116129 + struct desc_struct gdt[32];
116130 +} __attribute__((aligned(((1UL) << 12))));
116131 +extern __typeof__(struct gdt_page) per_cpu__gdt_page;
116132 +
116133 +static inline __attribute__((always_inline)) struct desc_struct *get_cpu_gdt_table(unsigned int cpu)
116134 +{
116135 + return (*({ unsigned long __ptr; __asm__ ("" : "=r"(__ptr) : "0"((&per_cpu__gdt_page))); (typeof((&per_cpu__gdt_page))) (__ptr + (((__per_cpu_offset[cpu])))); })).gdt;
116136 +}
116137 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"
116138 +static inline __attribute__((always_inline)) void pack_gate(gate_desc *gate, unsigned char type,
116139 +        unsigned long base, unsigned dpl, unsigned flags,
116140 +        unsigned short seg)
116141 +{
116142 + gate->a = (seg << 16) | (base & 0xffff);
116143 + gate->b = (base & 0xffff0000) |
116144 +    (((0x80 | type | (dpl << 5)) & 0xff) << 8);
116145 +}
116146 +
116147 +
116148 +
116149 +static inline __attribute__((always_inline)) int desc_empty(const void *ptr)
116150 +{
116151 + const u32 *desc = (const u32 *) ptr;
116152 + return !(desc[0] | desc[1]);
116153 +}
116154 +# 102 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"
116155 +static inline __attribute__((always_inline)) void native_write_idt_entry(gate_desc *idt, int entry,
116156 +       const gate_desc *gate)
116157 +{
116158 + (__builtin_constant_p((sizeof(*gate))) ? __constant_memcpy((&idt[entry]), (gate), (sizeof(*gate))) : __memcpy((&idt[entry]), (gate), (sizeof(*gate))));
116159 +}
116160 +
116161 +static inline __attribute__((always_inline)) void native_write_ldt_entry(struct desc_struct *ldt, int entry,
116162 +       const void *desc)
116163 +{
116164 + (__builtin_constant_p((8)) ? __constant_memcpy((&ldt[entry]), (desc), (8)) : __memcpy((&ldt[entry]), (desc), (8)));
116165 +}
116166 +
116167 +static inline __attribute__((always_inline)) void native_write_gdt_entry(struct desc_struct *gdt, int entry,
116168 +       const void *desc, int type)
116169 +{
116170 + unsigned int size;
116171 + switch (type) {
116172 + case DESC_TSS:
116173 +  size = sizeof(tss_desc);
116174 +  break;
116175 + case DESC_LDT:
116176 +  size = sizeof(ldt_desc);
116177 +  break;
116178 + default:
116179 +  size = sizeof(struct desc_struct);
116180 +  break;
116181 + }
116182 + (__builtin_constant_p((size)) ? __constant_memcpy((&gdt[entry]), (desc), (size)) : __memcpy((&gdt[entry]), (desc), (size)));
116183 +}
116184 +
116185 +static inline __attribute__((always_inline)) void pack_descriptor(struct desc_struct *desc, unsigned long base,
116186 +       unsigned long limit, unsigned char type,
116187 +       unsigned char flags)
116188 +{
116189 + desc->a = ((base & 0xffff) << 16) | (limit & 0xffff);
116190 + desc->b = (base & 0xff000000) | ((base & 0xff0000) >> 16) |
116191 +  (limit & 0x000f0000) | ((type & 0xff) << 8) |
116192 +  ((flags & 0xf) << 20);
116193 + desc->p = 1;
116194 +}
116195 +
116196 +
116197 +static inline __attribute__((always_inline)) void set_tssldt_descriptor(void *d, unsigned long addr,
116198 +      unsigned type, unsigned size)
116199 +{
116200 +# 159 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"
116201 + pack_descriptor((struct desc_struct *)d, addr, size, 0x80 | type, 0);
116202 +
116203 +}
116204 +
116205 +static inline __attribute__((always_inline)) void __set_tss_desc(unsigned cpu, unsigned int entry, void *addr)
116206 +{
116207 + struct desc_struct *d = get_cpu_gdt_table(cpu);
116208 + tss_desc tss;
116209 +# 175 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"
116210 + set_tssldt_descriptor(&tss, (unsigned long)addr, DESC_TSS,
116211 +         __builtin_offsetof(struct tss_struct,io_bitmap) + (65536/8) +
116212 +         sizeof(unsigned long) - 1);
116213 + write_gdt_entry(d, entry, &tss, DESC_TSS);
116214 +}
116215 +
116216 +
116217 +
116218 +static inline __attribute__((always_inline)) void native_set_ldt(const void *addr, unsigned int entries)
116219 +{
116220 + if (__builtin_expect(!!(entries == 0), 1))
116221 +  asm volatile("lldt %w0"::"q" (0));
116222 + else {
116223 +  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__; }));
116224 +  ldt_desc ldt;
116225 +
116226 +  set_tssldt_descriptor(&ldt, (unsigned long)addr, DESC_LDT,
116227 +          entries * 8 - 1);
116228 +  write_gdt_entry(get_cpu_gdt_table(cpu), (12 + 5),
116229 +    &ldt, DESC_LDT);
116230 +  asm volatile("lldt %w0"::"q" ((12 + 5)*8));
116231 + }
116232 +}
116233 +
116234 +static inline __attribute__((always_inline)) void native_load_tr_desc(void)
116235 +{
116236 + asm volatile("ltr %w0"::"q" ((12 + 4)*8));
116237 +}
116238 +
116239 +static inline __attribute__((always_inline)) void native_load_gdt(const struct desc_ptr *dtr)
116240 +{
116241 + asm volatile("lgdt %0"::"m" (*dtr));
116242 +}
116243 +
116244 +static inline __attribute__((always_inline)) void native_load_idt(const struct desc_ptr *dtr)
116245 +{
116246 + asm volatile("lidt %0"::"m" (*dtr));
116247 +}
116248 +
116249 +static inline __attribute__((always_inline)) void native_store_gdt(struct desc_ptr *dtr)
116250 +{
116251 + asm volatile("sgdt %0":"=m" (*dtr));
116252 +}
116253 +
116254 +static inline __attribute__((always_inline)) void native_store_idt(struct desc_ptr *dtr)
116255 +{
116256 + asm volatile("sidt %0":"=m" (*dtr));
116257 +}
116258 +
116259 +static inline __attribute__((always_inline)) unsigned long native_store_tr(void)
116260 +{
116261 + unsigned long tr;
116262 + asm volatile("str %0":"=r" (tr));
116263 + return tr;
116264 +}
116265 +
116266 +static inline __attribute__((always_inline)) void native_load_tls(struct thread_struct *t, unsigned int cpu)
116267 +{
116268 + unsigned int i;
116269 + struct desc_struct *gdt = get_cpu_gdt_table(cpu);
116270 +
116271 + for (i = 0; i < 3; i++)
116272 +  gdt[6 + i] = t->tls_array[i];
116273 +}
116274 +# 256 "/d/kernels/linux-2.6.27.10-clickport/include/asm/desc.h"
116275 +static inline __attribute__((always_inline)) void clear_LDT(void)
116276 +{
116277 + set_ldt(0, 0);
116278 +}
116279 +
116280 +
116281 +
116282 +
116283 +static inline __attribute__((always_inline)) void load_LDT_nolock(mm_context_t *pc)
116284 +{
116285 + set_ldt(pc->ldt, pc->size);
116286 +}
116287 +
116288 +static inline __attribute__((always_inline)) void load_LDT(mm_context_t *pc)
116289 +{
116290 + do { } while (0);
116291 + load_LDT_nolock(pc);
116292 + do { } while (0);
116293 +}
116294 +
116295 +static inline __attribute__((always_inline)) unsigned long get_desc_base(const struct desc_struct *desc)
116296 +{
116297 + return desc->base0 | ((desc->base1) << 16) | ((desc->base2) << 24);
116298 +}
116299 +
116300 +static inline __attribute__((always_inline)) unsigned long get_desc_limit(const struct desc_struct *desc)
116301 +{
116302 + return desc->limit0 | (desc->limit << 16);
116303 +}
116304 +
116305 +static inline __attribute__((always_inline)) void _set_gate(int gate, unsigned type, void *addr,
116306 +        unsigned dpl, unsigned ist, unsigned seg)
116307 +{
116308 + gate_desc s;
116309 + pack_gate(&s, type, (unsigned long)addr, dpl, ist, seg);
116310 +
116311 +
116312 +
116313 +
116314 + write_idt_entry(idt_table, gate, &s);
116315 +}
116316 +
116317 +
116318 +
116319 +
116320 +
116321 +
116322 +
116323 +static inline __attribute__((always_inline)) void set_intr_gate(unsigned int n, void *addr)
116324 +{
116325 + 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);
116326 + _set_gate(n, GATE_INTERRUPT, addr, 0, 0, ((12 + 0) * 8));
116327 +}
116328 +
116329 +
116330 +
116331 +
116332 +extern int first_system_vector;
116333 +extern char system_vectors[];
116334 +
116335 +static inline __attribute__((always_inline)) void alloc_system_vector(int vector)
116336 +{
116337 + if (system_vectors[vector] == 0) {
116338 +  system_vectors[vector] = 1;
116339 +  if (first_system_vector > vector)
116340 +   first_system_vector = vector;
116341 + } else
116342 +  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);
116343 +}
116344 +
116345 +static inline __attribute__((always_inline)) void alloc_intr_gate(unsigned int n, void *addr)
116346 +{
116347 + alloc_system_vector(n);
116348 + set_intr_gate(n, addr);
116349 +}
116350 +
116351 +
116352 +
116353 +
116354 +static inline __attribute__((always_inline)) void set_system_intr_gate(unsigned int n, void *addr)
116355 +{
116356 + 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);
116357 + _set_gate(n, GATE_INTERRUPT, addr, 0x3, 0, ((12 + 0) * 8));
116358 +}
116359 +
116360 +static inline __attribute__((always_inline)) void set_trap_gate(unsigned int n, void *addr)
116361 +{
116362 + 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);
116363 + _set_gate(n, GATE_TRAP, addr, 0, 0, ((12 + 0) * 8));
116364 +}
116365 +
116366 +static inline __attribute__((always_inline)) void set_system_gate(unsigned int n, void *addr)
116367 +{
116368 + 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);
116369 +
116370 + _set_gate(n, GATE_TRAP, addr, 0x3, 0, ((12 + 0) * 8));
116371 +
116372 +
116373 +
116374 +}
116375 +
116376 +static inline __attribute__((always_inline)) void set_task_gate(unsigned int n, unsigned int gdt_entry)
116377 +{
116378 + 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);
116379 + _set_gate(n, GATE_TASK, (void *)0, 0, 0, (gdt_entry<<3));
116380 +}
116381 +
116382 +static inline __attribute__((always_inline)) void set_intr_gate_ist(int n, void *addr, unsigned ist)
116383 +{
116384 + 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);
116385 + _set_gate(n, GATE_INTERRUPT, addr, 0, ist, ((12 + 0) * 8));
116386 +}
116387 +
116388 +static inline __attribute__((always_inline)) void set_system_gate_ist(int n, void *addr, unsigned ist)
116389 +{
116390 + 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);
116391 + _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, ((12 + 0) * 8));
116392 +}
116393 +# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h" 2
116394 +# 278 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h"
116395 +struct task_struct;
116396 +# 323 "/d/kernels/linux-2.6.27.10-clickport/include/asm/elf.h"
116397 +struct linux_binprm;
116398 +
116399 +
116400 +extern int arch_setup_additional_pages(struct linux_binprm *bprm,
116401 +           int executable_stack);
116402 +
116403 +extern int syscall32_setup_pages(struct linux_binprm *, int exstack);
116404 +
116405 +
116406 +extern unsigned long arch_randomize_brk(struct mm_struct *mm);
116407 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h" 2
116408 +
116409 +
116410 +struct file;
116411 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116412 +typedef __u32 Elf32_Addr;
116413 +typedef __u16 Elf32_Half;
116414 +typedef __u32 Elf32_Off;
116415 +typedef __s32 Elf32_Sword;
116416 +typedef __u32 Elf32_Word;
116417 +
116418 +
116419 +typedef __u64 Elf64_Addr;
116420 +typedef __u16 Elf64_Half;
116421 +typedef __s16 Elf64_SHalf;
116422 +typedef __u64 Elf64_Off;
116423 +typedef __s32 Elf64_Sword;
116424 +typedef __u32 Elf64_Word;
116425 +typedef __u64 Elf64_Xword;
116426 +typedef __s64 Elf64_Sxword;
116427 +# 127 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116428 +typedef struct dynamic{
116429 +  Elf32_Sword d_tag;
116430 +  union{
116431 +    Elf32_Sword d_val;
116432 +    Elf32_Addr d_ptr;
116433 +  } d_un;
116434 +} Elf32_Dyn;
116435 +
116436 +typedef struct {
116437 +  Elf64_Sxword d_tag;
116438 +  union {
116439 +    Elf64_Xword d_val;
116440 +    Elf64_Addr d_ptr;
116441 +  } d_un;
116442 +} Elf64_Dyn;
116443 +# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116444 +typedef struct elf32_rel {
116445 +  Elf32_Addr r_offset;
116446 +  Elf32_Word r_info;
116447 +} Elf32_Rel;
116448 +
116449 +typedef struct elf64_rel {
116450 +  Elf64_Addr r_offset;
116451 +  Elf64_Xword r_info;
116452 +} Elf64_Rel;
116453 +
116454 +typedef struct elf32_rela{
116455 +  Elf32_Addr r_offset;
116456 +  Elf32_Word r_info;
116457 +  Elf32_Sword r_addend;
116458 +} Elf32_Rela;
116459 +
116460 +typedef struct elf64_rela {
116461 +  Elf64_Addr r_offset;
116462 +  Elf64_Xword r_info;
116463 +  Elf64_Sxword r_addend;
116464 +} Elf64_Rela;
116465 +
116466 +typedef struct elf32_sym{
116467 +  Elf32_Word st_name;
116468 +  Elf32_Addr st_value;
116469 +  Elf32_Word st_size;
116470 +  unsigned char st_info;
116471 +  unsigned char st_other;
116472 +  Elf32_Half st_shndx;
116473 +} Elf32_Sym;
116474 +
116475 +typedef struct elf64_sym {
116476 +  Elf64_Word st_name;
116477 +  unsigned char st_info;
116478 +  unsigned char st_other;
116479 +  Elf64_Half st_shndx;
116480 +  Elf64_Addr st_value;
116481 +  Elf64_Xword st_size;
116482 +} Elf64_Sym;
116483 +
116484 +
116485 +
116486 +
116487 +typedef struct elf32_hdr{
116488 +  unsigned char e_ident[16];
116489 +  Elf32_Half e_type;
116490 +  Elf32_Half e_machine;
116491 +  Elf32_Word e_version;
116492 +  Elf32_Addr e_entry;
116493 +  Elf32_Off e_phoff;
116494 +  Elf32_Off e_shoff;
116495 +  Elf32_Word e_flags;
116496 +  Elf32_Half e_ehsize;
116497 +  Elf32_Half e_phentsize;
116498 +  Elf32_Half e_phnum;
116499 +  Elf32_Half e_shentsize;
116500 +  Elf32_Half e_shnum;
116501 +  Elf32_Half e_shstrndx;
116502 +} Elf32_Ehdr;
116503 +
116504 +typedef struct elf64_hdr {
116505 +  unsigned char e_ident[16];
116506 +  Elf64_Half e_type;
116507 +  Elf64_Half e_machine;
116508 +  Elf64_Word e_version;
116509 +  Elf64_Addr e_entry;
116510 +  Elf64_Off e_phoff;
116511 +  Elf64_Off e_shoff;
116512 +  Elf64_Word e_flags;
116513 +  Elf64_Half e_ehsize;
116514 +  Elf64_Half e_phentsize;
116515 +  Elf64_Half e_phnum;
116516 +  Elf64_Half e_shentsize;
116517 +  Elf64_Half e_shnum;
116518 +  Elf64_Half e_shstrndx;
116519 +} Elf64_Ehdr;
116520 +
116521 +
116522 +
116523 +
116524 +
116525 +
116526 +
116527 +typedef struct elf32_phdr{
116528 +  Elf32_Word p_type;
116529 +  Elf32_Off p_offset;
116530 +  Elf32_Addr p_vaddr;
116531 +  Elf32_Addr p_paddr;
116532 +  Elf32_Word p_filesz;
116533 +  Elf32_Word p_memsz;
116534 +  Elf32_Word p_flags;
116535 +  Elf32_Word p_align;
116536 +} Elf32_Phdr;
116537 +
116538 +typedef struct elf64_phdr {
116539 +  Elf64_Word p_type;
116540 +  Elf64_Word p_flags;
116541 +  Elf64_Off p_offset;
116542 +  Elf64_Addr p_vaddr;
116543 +  Elf64_Addr p_paddr;
116544 +  Elf64_Xword p_filesz;
116545 +  Elf64_Xword p_memsz;
116546 +  Elf64_Xword p_align;
116547 +} Elf64_Phdr;
116548 +# 289 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116549 +typedef struct {
116550 +  Elf32_Word sh_name;
116551 +  Elf32_Word sh_type;
116552 +  Elf32_Word sh_flags;
116553 +  Elf32_Addr sh_addr;
116554 +  Elf32_Off sh_offset;
116555 +  Elf32_Word sh_size;
116556 +  Elf32_Word sh_link;
116557 +  Elf32_Word sh_info;
116558 +  Elf32_Word sh_addralign;
116559 +  Elf32_Word sh_entsize;
116560 +} Elf32_Shdr;
116561 +
116562 +typedef struct elf64_shdr {
116563 +  Elf64_Word sh_name;
116564 +  Elf64_Word sh_type;
116565 +  Elf64_Xword sh_flags;
116566 +  Elf64_Addr sh_addr;
116567 +  Elf64_Off sh_offset;
116568 +  Elf64_Xword sh_size;
116569 +  Elf64_Word sh_link;
116570 +  Elf64_Word sh_info;
116571 +  Elf64_Xword sh_addralign;
116572 +  Elf64_Xword sh_entsize;
116573 +} Elf64_Shdr;
116574 +# 366 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116575 +typedef struct elf32_note {
116576 +  Elf32_Word n_namesz;
116577 +  Elf32_Word n_descsz;
116578 +  Elf32_Word n_type;
116579 +} Elf32_Nhdr;
116580 +
116581 +
116582 +typedef struct elf64_note {
116583 +  Elf64_Word n_namesz;
116584 +  Elf64_Word n_descsz;
116585 +  Elf64_Word n_type;
116586 +} Elf64_Nhdr;
116587 +
116588 +
116589 +
116590 +extern Elf32_Dyn _DYNAMIC [];
116591 +# 399 "/d/kernels/linux-2.6.27.10-clickport/include/linux/elf.h"
116592 +static inline __attribute__((always_inline)) int elf_coredump_extra_notes_size(void) { return 0; }
116593 +static inline __attribute__((always_inline)) int elf_coredump_extra_notes_write(struct file *file,
116594 +   loff_t *foffset) { return 0; }
116595 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
116596 +
116597 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 1
116598 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h"
116599 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" 1
116600 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h"
116601 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
116602 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h" 2
116603 +
116604 +
116605 +
116606 +struct kobject;
116607 +struct module;
116608 +
116609 +
116610 +
116611 +
116612 +
116613 +struct attribute {
116614 + const char *name;
116615 + struct module *owner;
116616 + mode_t mode;
116617 +};
116618 +
116619 +struct attribute_group {
116620 + const char *name;
116621 + mode_t (*is_visible)(struct kobject *,
116622 +           struct attribute *, int);
116623 + struct attribute **attrs;
116624 +};
116625 +# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sysfs.h"
116626 +struct vm_area_struct;
116627 +
116628 +struct bin_attribute {
116629 + struct attribute attr;
116630 + size_t size;
116631 + void *xxx_private;
116632 + ssize_t (*read)(struct kobject *, struct bin_attribute *,
116633 +   char *, loff_t, size_t);
116634 + ssize_t (*write)(struct kobject *, struct bin_attribute *,
116635 +    char *, loff_t, size_t);
116636 + int (*mmap)(struct kobject *, struct bin_attribute *attr,
116637 +      struct vm_area_struct *vma);
116638 +};
116639 +
116640 +struct sysfs_ops {
116641 + ssize_t (*show)(struct kobject *, struct attribute *,char *);
116642 + ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
116643 +};
116644 +
116645 +
116646 +
116647 +int sysfs_schedule_callback(struct kobject *kobj, void (*func)(void *),
116648 +       void *data, struct module *owner);
116649 +
116650 +int __attribute__((warn_unused_result)) sysfs_create_dir(struct kobject *kobj);
116651 +void sysfs_remove_dir(struct kobject *kobj);
116652 +int __attribute__((warn_unused_result)) sysfs_rename_dir(struct kobject *kobj, const char *new_name);
116653 +int __attribute__((warn_unused_result)) sysfs_move_dir(struct kobject *kobj,
116654 +    struct kobject *new_parent_kobj);
116655 +
116656 +int __attribute__((warn_unused_result)) sysfs_create_file(struct kobject *kobj,
116657 +       const struct attribute *attr);
116658 +int __attribute__((warn_unused_result)) sysfs_chmod_file(struct kobject *kobj, struct attribute *attr,
116659 +      mode_t mode);
116660 +void sysfs_remove_file(struct kobject *kobj, const struct attribute *attr);
116661 +
116662 +int __attribute__((warn_unused_result)) sysfs_create_bin_file(struct kobject *kobj,
116663 +           struct bin_attribute *attr);
116664 +void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
116665 +
116666 +int __attribute__((warn_unused_result)) sysfs_create_link(struct kobject *kobj, struct kobject *target,
116667 +       const char *name);
116668 +int __attribute__((warn_unused_result)) sysfs_create_link_nowarn(struct kobject *kobj,
116669 +       struct kobject *target,
116670 +       const char *name);
116671 +void sysfs_remove_link(struct kobject *kobj, const char *name);
116672 +
116673 +int __attribute__((warn_unused_result)) sysfs_create_group(struct kobject *kobj,
116674 +        const struct attribute_group *grp);
116675 +int sysfs_update_group(struct kobject *kobj,
116676 +         const struct attribute_group *grp);
116677 +void sysfs_remove_group(struct kobject *kobj,
116678 +   const struct attribute_group *grp);
116679 +int sysfs_add_file_to_group(struct kobject *kobj,
116680 +   const struct attribute *attr, const char *group);
116681 +void sysfs_remove_file_from_group(struct kobject *kobj,
116682 +   const struct attribute *attr, const char *group);
116683 +
116684 +void sysfs_notify(struct kobject *kobj, char *dir, char *attr);
116685 +
116686 +extern int __attribute__((warn_unused_result)) sysfs_init(void);
116687 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2
116688 +
116689 +
116690 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h" 1
116691 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h"
116692 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
116693 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kref.h" 2
116694 +
116695 +struct kref {
116696 + atomic_t refcount;
116697 +};
116698 +
116699 +void kref_set(struct kref *kref, int num);
116700 +void kref_init(struct kref *kref);
116701 +void kref_get(struct kref *kref);
116702 +int kref_put(struct kref *kref, void (*release) (struct kref *kref));
116703 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2
116704 +
116705 +
116706 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
116707 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h" 2
116708 +
116709 +
116710 +
116711 +
116712 +
116713 +
116714 +extern char uevent_helper[];
116715 +
116716 +
116717 +extern u64 uevent_seqnum;
116718 +# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h"
116719 +enum kobject_action {
116720 + KOBJ_ADD,
116721 + KOBJ_REMOVE,
116722 + KOBJ_CHANGE,
116723 + KOBJ_MOVE,
116724 + KOBJ_ONLINE,
116725 + KOBJ_OFFLINE,
116726 + KOBJ_MAX
116727 +};
116728 +
116729 +struct kobject {
116730 + const char *name;
116731 + struct list_head entry;
116732 + struct kobject *parent;
116733 + struct kset *kset;
116734 + struct kobj_type *ktype;
116735 + struct sysfs_dirent *sd;
116736 + struct kref kref;
116737 + unsigned int state_initialized:1;
116738 + unsigned int state_in_sysfs:1;
116739 + unsigned int state_add_uevent_sent:1;
116740 + unsigned int state_remove_uevent_sent:1;
116741 +};
116742 +
116743 +extern int kobject_set_name(struct kobject *kobj, const char *name, ...)
116744 +       __attribute__((format(printf, 2, 3)));
116745 +
116746 +static inline __attribute__((always_inline)) const char *kobject_name(const struct kobject *kobj)
116747 +{
116748 + return kobj->name;
116749 +}
116750 +
116751 +extern void kobject_init(struct kobject *kobj, struct kobj_type *ktype);
116752 +extern int __attribute__((warn_unused_result)) kobject_add(struct kobject *kobj,
116753 +        struct kobject *parent,
116754 +        const char *fmt, ...);
116755 +extern int __attribute__((warn_unused_result)) kobject_init_and_add(struct kobject *kobj,
116756 +          struct kobj_type *ktype,
116757 +          struct kobject *parent,
116758 +          const char *fmt, ...);
116759 +
116760 +extern void kobject_del(struct kobject *kobj);
116761 +
116762 +extern struct kobject * __attribute__((warn_unused_result)) kobject_create(void);
116763 +extern struct kobject * __attribute__((warn_unused_result)) kobject_create_and_add(const char *name,
116764 +      struct kobject *parent);
116765 +
116766 +extern int __attribute__((warn_unused_result)) kobject_rename(struct kobject *, const char *new_name);
116767 +extern int __attribute__((warn_unused_result)) kobject_move(struct kobject *, struct kobject *);
116768 +
116769 +extern struct kobject *kobject_get(struct kobject *kobj);
116770 +extern void kobject_put(struct kobject *kobj);
116771 +
116772 +extern char *kobject_get_path(struct kobject *kobj, gfp_t flag);
116773 +
116774 +struct kobj_type {
116775 + void (*release)(struct kobject *kobj);
116776 + struct sysfs_ops *sysfs_ops;
116777 + struct attribute **default_attrs;
116778 +};
116779 +
116780 +struct kobj_uevent_env {
116781 + char *envp[32];
116782 + int envp_idx;
116783 + char buf[2048];
116784 + int buflen;
116785 +};
116786 +
116787 +struct kset_uevent_ops {
116788 + int (*filter)(struct kset *kset, struct kobject *kobj);
116789 + const char *(*name)(struct kset *kset, struct kobject *kobj);
116790 + int (*uevent)(struct kset *kset, struct kobject *kobj,
116791 +        struct kobj_uevent_env *env);
116792 +};
116793 +
116794 +struct kobj_attribute {
116795 + struct attribute attr;
116796 + ssize_t (*show)(struct kobject *kobj, struct kobj_attribute *attr,
116797 +   char *buf);
116798 + ssize_t (*store)(struct kobject *kobj, struct kobj_attribute *attr,
116799 +    const char *buf, size_t count);
116800 +};
116801 +
116802 +extern struct sysfs_ops kobj_sysfs_ops;
116803 +# 151 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kobject.h"
116804 +struct kset {
116805 + struct list_head list;
116806 + spinlock_t list_lock;
116807 + struct kobject kobj;
116808 + struct kset_uevent_ops *uevent_ops;
116809 +};
116810 +
116811 +extern void kset_init(struct kset *kset);
116812 +extern int __attribute__((warn_unused_result)) kset_register(struct kset *kset);
116813 +extern void kset_unregister(struct kset *kset);
116814 +extern struct kset * __attribute__((warn_unused_result)) kset_create_and_add(const char *name,
116815 +      struct kset_uevent_ops *u,
116816 +      struct kobject *parent_kobj);
116817 +
116818 +static inline __attribute__((always_inline)) struct kset *to_kset(struct kobject *kobj)
116819 +{
116820 + return kobj ? ({ const typeof( ((struct kset *)0)->kobj ) *__mptr = (kobj); (struct kset *)( (char *)__mptr - __builtin_offsetof(struct kset,kobj) );}) : 0;
116821 +}
116822 +
116823 +static inline __attribute__((always_inline)) struct kset *kset_get(struct kset *k)
116824 +{
116825 + return k ? to_kset(kobject_get(&k->kobj)) : 0;
116826 +}
116827 +
116828 +static inline __attribute__((always_inline)) void kset_put(struct kset *k)
116829 +{
116830 + kobject_put(&k->kobj);
116831 +}
116832 +
116833 +static inline __attribute__((always_inline)) struct kobj_type *get_ktype(struct kobject *kobj)
116834 +{
116835 + return kobj->ktype;
116836 +}
116837 +
116838 +extern struct kobject *kset_find_obj(struct kset *, const char *);
116839 +
116840 +
116841 +extern struct kobject *kernel_kobj;
116842 +
116843 +extern struct kobject *mm_kobj;
116844 +
116845 +extern struct kobject *hypervisor_kobj;
116846 +
116847 +extern struct kobject *power_kobj;
116848 +
116849 +extern struct kobject *firmware_kobj;
116850 +
116851 +
116852 +int kobject_uevent(struct kobject *kobj, enum kobject_action action);
116853 +int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
116854 +   char *envp[]);
116855 +
116856 +int add_uevent_var(struct kobj_uevent_env *env, const char *format, ...)
116857 + __attribute__((format (printf, 2, 3)));
116858 +
116859 +int kobject_action_type(const char *buf, size_t count,
116860 +   enum kobject_action *type);
116861 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
116862 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h" 1
116863 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h"
116864 +struct kernel_param;
116865 +
116866 +
116867 +typedef int (*param_set_fn)(const char *val, struct kernel_param *kp);
116868 +
116869 +typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp);
116870 +
116871 +struct kernel_param {
116872 + const char *name;
116873 + unsigned int perm;
116874 + param_set_fn set;
116875 + param_get_fn get;
116876 + union {
116877 +  void *arg;
116878 +  const struct kparam_string *str;
116879 +  const struct kparam_array *arr;
116880 + };
116881 +};
116882 +
116883 +
116884 +struct kparam_string {
116885 + unsigned int maxlen;
116886 + char *string;
116887 +};
116888 +
116889 +
116890 +struct kparam_array
116891 +{
116892 + unsigned int max;
116893 + unsigned int *num;
116894 + param_set_fn set;
116895 + param_get_fn get;
116896 + unsigned int elemsize;
116897 + void *elem;
116898 +};
116899 +# 112 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h"
116900 +extern int parse_args(const char *name,
116901 +        char *args,
116902 +        struct kernel_param *params,
116903 +        unsigned num,
116904 +        int (*unknown)(char *param, char *val));
116905 +
116906 +
116907 +
116908 +
116909 +
116910 +
116911 +
116912 +extern int param_set_byte(const char *val, struct kernel_param *kp);
116913 +extern int param_get_byte(char *buffer, struct kernel_param *kp);
116914 +
116915 +
116916 +extern int param_set_short(const char *val, struct kernel_param *kp);
116917 +extern int param_get_short(char *buffer, struct kernel_param *kp);
116918 +
116919 +
116920 +extern int param_set_ushort(const char *val, struct kernel_param *kp);
116921 +extern int param_get_ushort(char *buffer, struct kernel_param *kp);
116922 +
116923 +
116924 +extern int param_set_int(const char *val, struct kernel_param *kp);
116925 +extern int param_get_int(char *buffer, struct kernel_param *kp);
116926 +
116927 +
116928 +extern int param_set_uint(const char *val, struct kernel_param *kp);
116929 +extern int param_get_uint(char *buffer, struct kernel_param *kp);
116930 +
116931 +
116932 +extern int param_set_long(const char *val, struct kernel_param *kp);
116933 +extern int param_get_long(char *buffer, struct kernel_param *kp);
116934 +
116935 +
116936 +extern int param_set_ulong(const char *val, struct kernel_param *kp);
116937 +extern int param_get_ulong(char *buffer, struct kernel_param *kp);
116938 +
116939 +
116940 +extern int param_set_charp(const char *val, struct kernel_param *kp);
116941 +extern int param_get_charp(char *buffer, struct kernel_param *kp);
116942 +
116943 +
116944 +extern int param_set_bool(const char *val, struct kernel_param *kp);
116945 +extern int param_get_bool(char *buffer, struct kernel_param *kp);
116946 +
116947 +
116948 +extern int param_set_invbool(const char *val, struct kernel_param *kp);
116949 +extern int param_get_invbool(char *buffer, struct kernel_param *kp);
116950 +# 176 "/d/kernels/linux-2.6.27.10-clickport/include/linux/moduleparam.h"
116951 +extern int param_array_set(const char *val, struct kernel_param *kp);
116952 +extern int param_array_get(char *buffer, struct kernel_param *kp);
116953 +
116954 +extern int param_set_copystring(const char *val, struct kernel_param *kp);
116955 +extern int param_get_string(char *buffer, struct kernel_param *kp);
116956 +
116957 +
116958 +
116959 +struct module;
116960 +
116961 +
116962 +extern int module_param_sysfs_setup(struct module *mod,
116963 +        struct kernel_param *kparam,
116964 +        unsigned int num_params);
116965 +
116966 +extern void module_param_sysfs_remove(struct module *mod);
116967 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
116968 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h" 1
116969 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h"
116970 +struct module;
116971 +struct marker;
116972 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h"
116973 +typedef void marker_probe_func(void *probe_private, void *call_private,
116974 +  const char *fmt, va_list *args);
116975 +
116976 +struct marker_probe_closure {
116977 + marker_probe_func *func;
116978 + void *probe_private;
116979 +};
116980 +
116981 +struct marker {
116982 + const char *name;
116983 + const char *format;
116984 +
116985 +
116986 + char state;
116987 + char ptype;
116988 +
116989 + void (*call)(const struct marker *mdata, void *call_private, ...);
116990 + struct marker_probe_closure single;
116991 + struct marker_probe_closure *multi;
116992 +} __attribute__((aligned(8)));
116993 +# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h"
116994 +static inline __attribute__((always_inline)) void marker_update_probe_range(struct marker *begin,
116995 + struct marker *end)
116996 +{ }
116997 +# 125 "/d/kernels/linux-2.6.27.10-clickport/include/linux/marker.h"
116998 +static inline __attribute__((always_inline)) void __attribute__((format(printf,1,2))) ___mark_check_format(const char *fmt, ...)
116999 +{
117000 +}
117001 +
117002 +
117003 +
117004 +
117005 +
117006 +
117007 +
117008 +extern marker_probe_func __mark_empty_function;
117009 +
117010 +extern void marker_probe_cb(const struct marker *mdata,
117011 + void *call_private, ...);
117012 +extern void marker_probe_cb_noarg(const struct marker *mdata,
117013 + void *call_private, ...);
117014 +
117015 +
117016 +
117017 +
117018 +
117019 +extern int marker_probe_register(const char *name, const char *format,
117020 +    marker_probe_func *probe, void *probe_private);
117021 +
117022 +
117023 +
117024 +
117025 +extern int marker_probe_unregister(const char *name,
117026 + marker_probe_func *probe, void *probe_private);
117027 +
117028 +
117029 +
117030 +extern int marker_probe_unregister_private_data(marker_probe_func *probe,
117031 + void *probe_private);
117032 +
117033 +extern void *marker_get_private_data(const char *name, marker_probe_func *probe,
117034 + int num);
117035 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
117036 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 1
117037 +
117038 +
117039 +
117040 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" 1
117041 +
117042 +
117043 +
117044 +
117045 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" 1
117046 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117047 +void __attribute__ ((__section__(".init.text"))) kmem_cache_init(void);
117048 +int slab_is_available(void);
117049 +
117050 +struct kmem_cache *kmem_cache_create(const char *, size_t, size_t,
117051 +   unsigned long,
117052 +   void (*)(void *));
117053 +void kmem_cache_destroy(struct kmem_cache *);
117054 +int kmem_cache_shrink(struct kmem_cache *);
117055 +void kmem_cache_free(struct kmem_cache *, void *);
117056 +unsigned int kmem_cache_size(struct kmem_cache *);
117057 +const char *kmem_cache_name(struct kmem_cache *);
117058 +int kmem_ptr_validate(struct kmem_cache *cachep, const void *ptr);
117059 +# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117060 +void * __attribute__((warn_unused_result)) __krealloc(const void *, size_t, gfp_t);
117061 +void * __attribute__((warn_unused_result)) krealloc(const void *, size_t, gfp_t);
117062 +void kfree(const void *);
117063 +size_t ksize(const void *);
117064 +# 128 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117065 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h" 1
117066 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h"
117067 +struct cache_sizes {
117068 + size_t cs_size;
117069 + struct kmem_cache *cs_cachep;
117070 +
117071 + struct kmem_cache *cs_dmacachep;
117072 +
117073 +};
117074 +extern struct cache_sizes malloc_sizes[];
117075 +
117076 +void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
117077 +void *__kmalloc(size_t size, gfp_t flags);
117078 +
117079 +static inline __attribute__((always_inline)) void *kmalloc(size_t size, gfp_t flags)
117080 +{
117081 + if (__builtin_constant_p(size)) {
117082 +  int i = 0;
117083 +
117084 +  if (!size)
117085 +   return ((void *)16);
117086 +
117087 +
117088 +
117089 +
117090 +
117091 +
117092 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/kmalloc_sizes.h" 1
117093 +
117094 + if (size <= 32) goto found; else i++;
117095 +
117096 + if (size <= 64) goto found; else i++;
117097 +
117098 +
117099 +
117100 + if (size <= 128) goto found; else i++;
117101 +
117102 +
117103 +
117104 + if (size <= 256) goto found; else i++;
117105 + if (size <= 512) goto found; else i++;
117106 + if (size <= 1024) goto found; else i++;
117107 + if (size <= 2048) goto found; else i++;
117108 + if (size <= 4096) goto found; else i++;
117109 + if (size <= 8192) goto found; else i++;
117110 + if (size <= 16384) goto found; else i++;
117111 + if (size <= 32768) goto found; else i++;
117112 + if (size <= 65536) goto found; else i++;
117113 + if (size <= 131072) goto found; else i++;
117114 +
117115 + if (size <= 262144) goto found; else i++;
117116 +
117117 +
117118 + if (size <= 524288) goto found; else i++;
117119 +
117120 +
117121 + if (size <= 1048576) goto found; else i++;
117122 +
117123 +
117124 + if (size <= 2097152) goto found; else i++;
117125 +
117126 +
117127 + if (size <= 4194304) goto found; else i++;
117128 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab_def.h" 2
117129 +
117130 +  {
117131 +   extern void __you_cannot_kmalloc_that_much(void);
117132 +   __you_cannot_kmalloc_that_much();
117133 +  }
117134 +found:
117135 +
117136 +  if (flags & (( gfp_t)0x01u))
117137 +   return kmem_cache_alloc(malloc_sizes[i].cs_dmacachep,
117138 +      flags);
117139 +
117140 +  return kmem_cache_alloc(malloc_sizes[i].cs_cachep, flags);
117141 + }
117142 + return __kmalloc(size, flags);
117143 +}
117144 +# 129 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h" 2
117145 +# 182 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117146 +static inline __attribute__((always_inline)) void *kcalloc(size_t n, size_t size, gfp_t flags)
117147 +{
117148 + if (size != 0 && n > (~0UL) / size)
117149 +  return 0;
117150 + return __kmalloc(n * size, flags | (( gfp_t)0x8000u));
117151 +}
117152 +# 200 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117153 +static inline __attribute__((always_inline)) void *kmalloc_node(size_t size, gfp_t flags, int node)
117154 +{
117155 + return kmalloc(size, flags);
117156 +}
117157 +
117158 +static inline __attribute__((always_inline)) void *__kmalloc_node(size_t size, gfp_t flags, int node)
117159 +{
117160 + return __kmalloc(size, flags);
117161 +}
117162 +
117163 +void *kmem_cache_alloc(struct kmem_cache *, gfp_t);
117164 +
117165 +static inline __attribute__((always_inline)) void *kmem_cache_alloc_node(struct kmem_cache *cachep,
117166 +     gfp_t flags, int node)
117167 +{
117168 + return kmem_cache_alloc(cachep, flags);
117169 +}
117170 +# 265 "/d/kernels/linux-2.6.27.10-clickport/include/linux/slab.h"
117171 +static inline __attribute__((always_inline)) void *kmem_cache_zalloc(struct kmem_cache *k, gfp_t flags)
117172 +{
117173 + return kmem_cache_alloc(k, flags | (( gfp_t)0x8000u));
117174 +}
117175 +
117176 +
117177 +
117178 +
117179 +
117180 +
117181 +static inline __attribute__((always_inline)) void *kzalloc(size_t size, gfp_t flags)
117182 +{
117183 + return kmalloc(size, flags | (( gfp_t)0x8000u));
117184 +}
117185 +
117186 +
117187 +
117188 +
117189 +
117190 +
117191 +
117192 +static inline __attribute__((always_inline)) void *kzalloc_node(size_t size, gfp_t flags, int node)
117193 +{
117194 + return kmalloc_node(size, flags | (( gfp_t)0x8000u), node);
117195 +}
117196 +
117197 +
117198 +extern const struct seq_operations slabinfo_op;
117199 +ssize_t slabinfo_write(struct file *, const char *, size_t, loff_t *);
117200 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h" 2
117201 +# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h"
117202 +struct percpu_data {
117203 + void *ptrs[1];
117204 +};
117205 +# 77 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu.h"
117206 +extern void *__percpu_alloc_mask(size_t size, gfp_t gfp, cpumask_t *mask);
117207 +extern void percpu_free(void *__pdata);
117208 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 2
117209 +
117210 +
117211 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
117212 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h" 2
117213 +
117214 +
117215 +typedef struct {
117216 + atomic_long_t a;
117217 +} local_t;
117218 +
117219 +
117220 +
117221 +
117222 +
117223 +
117224 +static inline __attribute__((always_inline)) void local_inc(local_t *l)
117225 +{
117226 + asm volatile(" " "incl" " " "%0"
117227 +       : "+m" (l->a.counter));
117228 +}
117229 +
117230 +static inline __attribute__((always_inline)) void local_dec(local_t *l)
117231 +{
117232 + asm volatile(" " "decl" " " "%0"
117233 +       : "+m" (l->a.counter));
117234 +}
117235 +
117236 +static inline __attribute__((always_inline)) void local_add(long i, local_t *l)
117237 +{
117238 + asm volatile(" " "addl" " " "%1,%0"
117239 +       : "+m" (l->a.counter)
117240 +       : "ir" (i));
117241 +}
117242 +
117243 +static inline __attribute__((always_inline)) void local_sub(long i, local_t *l)
117244 +{
117245 + asm volatile(" " "subl" " " "%1,%0"
117246 +       : "+m" (l->a.counter)
117247 +       : "ir" (i));
117248 +}
117249 +# 54 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117250 +static inline __attribute__((always_inline)) int local_sub_and_test(long i, local_t *l)
117251 +{
117252 + unsigned char c;
117253 +
117254 + asm volatile(" " "subl" " " "%2,%0; sete %1"
117255 +       : "+m" (l->a.counter), "=qm" (c)
117256 +       : "ir" (i) : "memory");
117257 + return c;
117258 +}
117259 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117260 +static inline __attribute__((always_inline)) int local_dec_and_test(local_t *l)
117261 +{
117262 + unsigned char c;
117263 +
117264 + asm volatile(" " "decl" " " "%0; sete %1"
117265 +       : "+m" (l->a.counter), "=qm" (c)
117266 +       : : "memory");
117267 + return c != 0;
117268 +}
117269 +# 90 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117270 +static inline __attribute__((always_inline)) int local_inc_and_test(local_t *l)
117271 +{
117272 + unsigned char c;
117273 +
117274 + asm volatile(" " "incl" " " "%0; sete %1"
117275 +       : "+m" (l->a.counter), "=qm" (c)
117276 +       : : "memory");
117277 + return c != 0;
117278 +}
117279 +# 109 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117280 +static inline __attribute__((always_inline)) int local_add_negative(long i, local_t *l)
117281 +{
117282 + unsigned char c;
117283 +
117284 + asm volatile(" " "addl" " " "%2,%0; sets %1"
117285 +       : "+m" (l->a.counter), "=qm" (c)
117286 +       : "ir" (i) : "memory");
117287 + return c;
117288 +}
117289 +# 126 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117290 +static inline __attribute__((always_inline)) long local_add_return(long i, local_t *l)
117291 +{
117292 + long __i;
117293 +
117294 +
117295 +
117296 +
117297 +
117298 +
117299 + __i = i;
117300 + asm volatile(" " "xaddl" " " "%0, %1;"
117301 +       : "+r" (i), "+m" (l->a.counter)
117302 +       : : "memory");
117303 + return i + __i;
117304 +# 149 "/d/kernels/linux-2.6.27.10-clickport/include/asm/local.h"
117305 +}
117306 +
117307 +static inline __attribute__((always_inline)) long local_sub_return(long i, local_t *l)
117308 +{
117309 + return local_add_return(-i, l);
117310 +}
117311 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
117312 +
117313 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/module.h" 1
117314 +
117315 +
117316 +
117317 +
117318 +struct mod_arch_specific {};
117319 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h" 2
117320 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117321 +struct kernel_symbol
117322 +{
117323 + unsigned long value;
117324 + const char *name;
117325 +};
117326 +
117327 +struct modversion_info
117328 +{
117329 + unsigned long crc;
117330 + char name[(64 - sizeof(unsigned long))];
117331 +};
117332 +
117333 +struct module;
117334 +
117335 +struct module_attribute {
117336 +        struct attribute attr;
117337 +        ssize_t (*show)(struct module_attribute *, struct module *, char *);
117338 +        ssize_t (*store)(struct module_attribute *, struct module *,
117339 +    const char *, size_t count);
117340 + void (*setup)(struct module *, const char *);
117341 + int (*test)(struct module *);
117342 + void (*free)(struct module *);
117343 +};
117344 +
117345 +struct module_kobject
117346 +{
117347 + struct kobject kobj;
117348 + struct module *mod;
117349 + struct kobject *drivers_dir;
117350 +};
117351 +
117352 +
117353 +extern int init_module(void);
117354 +extern void cleanup_module(void);
117355 +
117356 +
117357 +struct exception_table_entry;
117358 +
117359 +const struct exception_table_entry *
117360 +search_extable(const struct exception_table_entry *first,
117361 +        const struct exception_table_entry *last,
117362 +        unsigned long value);
117363 +void sort_extable(struct exception_table_entry *start,
117364 +    struct exception_table_entry *finish);
117365 +void sort_main_extable(void);
117366 +
117367 +
117368 +
117369 +
117370 +
117371 +
117372 +extern struct module __this_module;
117373 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117374 +const struct exception_table_entry *search_exception_tables(unsigned long add);
117375 +
117376 +struct notifier_block;
117377 +
117378 +
117379 +
117380 +
117381 +void *__symbol_get(const char *symbol);
117382 +void *__symbol_get_gpl(const char *symbol);
117383 +# 220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117384 +struct module_ref
117385 +{
117386 + local_t count;
117387 +} __attribute__((__aligned__((1 << (7)))));
117388 +
117389 +enum module_state
117390 +{
117391 + MODULE_STATE_LIVE,
117392 + MODULE_STATE_COMING,
117393 + MODULE_STATE_GOING,
117394 +};
117395 +
117396 +struct module
117397 +{
117398 + enum module_state state;
117399 +
117400 +
117401 + struct list_head list;
117402 +
117403 +
117404 + char name[(64 - sizeof(unsigned long))];
117405 +
117406 +
117407 + struct module_kobject mkobj;
117408 + struct module_param_attrs *param_attrs;
117409 + struct module_attribute *modinfo_attrs;
117410 + const char *version;
117411 + const char *srcversion;
117412 + struct kobject *holders_dir;
117413 +
117414 +
117415 + const struct kernel_symbol *syms;
117416 + const unsigned long *crcs;
117417 + unsigned int num_syms;
117418 +
117419 +
117420 + unsigned int num_gpl_syms;
117421 + const struct kernel_symbol *gpl_syms;
117422 + const unsigned long *gpl_crcs;
117423 +# 273 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117424 + const struct kernel_symbol *gpl_future_syms;
117425 + const unsigned long *gpl_future_crcs;
117426 + unsigned int num_gpl_future_syms;
117427 +
117428 +
117429 + unsigned int num_exentries;
117430 + const struct exception_table_entry *extable;
117431 +
117432 +
117433 + int (*init)(void);
117434 +
117435 +
117436 + void *module_init;
117437 +
117438 +
117439 + void *module_core;
117440 +
117441 +
117442 + unsigned int init_size, core_size;
117443 +
117444 +
117445 + unsigned int init_text_size, core_text_size;
117446 +
117447 +
117448 + void *unwind_info;
117449 +
117450 +
117451 + struct mod_arch_specific arch;
117452 +
117453 + unsigned int taints;
117454 +
117455 +
117456 +
117457 + unsigned num_bugs;
117458 + struct list_head bug_list;
117459 + struct bug_entry *bug_table;
117460 +
117461 +
117462 +
117463 +
117464 + Elf32_Sym *symtab;
117465 + unsigned int num_symtab;
117466 + char *strtab;
117467 +
117468 +
117469 + struct module_sect_attrs *sect_attrs;
117470 +
117471 +
117472 + struct module_notes_attrs *notes_attrs;
117473 +
117474 +
117475 +
117476 + void *percpu;
117477 +
117478 +
117479 +
117480 + char *args;
117481 +
117482 +
117483 +
117484 +
117485 +
117486 +
117487 +
117488 + struct list_head modules_which_use_me;
117489 +
117490 +
117491 + struct task_struct *waiter;
117492 +
117493 +
117494 + void (*exit)(void);
117495 +
117496 +
117497 + struct module_ref ref[32];
117498 +
117499 +
117500 +};
117501 +
117502 +
117503 +
117504 +
117505 +
117506 +
117507 +
117508 +static inline __attribute__((always_inline)) int module_is_live(struct module *mod)
117509 +{
117510 + return mod->state != MODULE_STATE_GOING;
117511 +}
117512 +
117513 +
117514 +struct module *module_text_address(unsigned long addr);
117515 +struct module *__module_text_address(unsigned long addr);
117516 +int is_module_address(unsigned long addr);
117517 +
117518 +
117519 +
117520 +int module_get_kallsym(unsigned int symnum, unsigned long *value, char *type,
117521 +   char *name, char *module_name, int *exported);
117522 +
117523 +
117524 +unsigned long module_kallsyms_lookup_name(const char *name);
117525 +
117526 +extern void __module_put_and_exit(struct module *mod, long code)
117527 + __attribute__((noreturn));
117528 +
117529 +
117530 +
117531 +unsigned int module_refcount(struct module *mod);
117532 +void __symbol_put(const char *symbol);
117533 +
117534 +void symbol_put_addr(void *addr);
117535 +
117536 +
117537 +
117538 +static inline __attribute__((always_inline)) void __module_get(struct module *module)
117539 +{
117540 + if (module) {
117541 +  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);
117542 +  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);
117543 +  do { } while (0);
117544 + }
117545 +}
117546 +
117547 +static inline __attribute__((always_inline)) int try_module_get(struct module *module)
117548 +{
117549 + int ret = 1;
117550 +
117551 + if (module) {
117552 +  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__; })); });
117553 +  if (__builtin_expect(!!(module_is_live(module)), 1))
117554 +   local_inc(&module->ref[cpu].count);
117555 +  else
117556 +   ret = 0;
117557 +  do { } while (0);
117558 + }
117559 + return ret;
117560 +}
117561 +
117562 +extern void module_put(struct module *module);
117563 +# 439 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117564 +const char *module_address_lookup(unsigned long addr,
117565 +       unsigned long *symbolsize,
117566 +       unsigned long *offset,
117567 +       char **modname,
117568 +       char *namebuf);
117569 +int lookup_module_symbol_name(unsigned long addr, char *symname);
117570 +int lookup_module_symbol_attrs(unsigned long addr, unsigned long *size, unsigned long *offset, char *modname, char *name);
117571 +
117572 +
117573 +const struct exception_table_entry *search_module_extables(unsigned long addr);
117574 +
117575 +int register_module_notifier(struct notifier_block * nb);
117576 +int unregister_module_notifier(struct notifier_block * nb);
117577 +
117578 +extern void print_modules(void);
117579 +
117580 +extern void module_update_markers(void);
117581 +# 563 "/d/kernels/linux-2.6.27.10-clickport/include/linux/module.h"
117582 +struct device_driver;
117583 +
117584 +struct module;
117585 +
117586 +extern struct kset *module_kset;
117587 +extern struct kobj_type module_ktype;
117588 +extern int module_sysfs_initialized;
117589 +
117590 +int mod_sysfs_init(struct module *mod);
117591 +int mod_sysfs_setup(struct module *mod,
117592 +      struct kernel_param *kparam,
117593 +      unsigned int num_params);
117594 +int module_add_modinfo_attrs(struct module *mod);
117595 +void module_remove_modinfo_attrs(struct module *mod);
117596 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 2
117597 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" 1
117598 +
117599 +
117600 +
117601 +
117602 +
117603 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1
117604 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h" 2
117605 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h"
117606 +static inline __attribute__((always_inline)) void *ERR_PTR(long error)
117607 +{
117608 + return (void *) error;
117609 +}
117610 +
117611 +static inline __attribute__((always_inline)) long PTR_ERR(const void *ptr)
117612 +{
117613 + return (long) ptr;
117614 +}
117615 +
117616 +static inline __attribute__((always_inline)) long IS_ERR(const void *ptr)
117617 +{
117618 + return __builtin_expect(!!(((unsigned long)ptr) >= (unsigned long)-4095), 0);
117619 +}
117620 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/err.h"
117621 +static inline __attribute__((always_inline)) void *ERR_CAST(const void *ptr)
117622 +{
117623 +
117624 + return (void *) ptr;
117625 +}
117626 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h" 2
117627 +
117628 +
117629 +struct ts_config;
117630 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117631 +struct ts_state
117632 +{
117633 + unsigned int offset;
117634 + char cb[40];
117635 +};
117636 +# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117637 +struct ts_ops
117638 +{
117639 + const char *name;
117640 + struct ts_config * (*init)(const void *, unsigned int, gfp_t, int);
117641 + unsigned int (*find)(struct ts_config *,
117642 +     struct ts_state *);
117643 + void (*destroy)(struct ts_config *);
117644 + void * (*get_pattern)(struct ts_config *);
117645 + unsigned int (*get_pattern_len)(struct ts_config *);
117646 + struct module *owner;
117647 + struct list_head list;
117648 +};
117649 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117650 +struct ts_config
117651 +{
117652 + struct ts_ops *ops;
117653 + int flags;
117654 +# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117655 + unsigned int (*get_next_block)(unsigned int consumed,
117656 +        const u8 **dst,
117657 +        struct ts_config *conf,
117658 +        struct ts_state *state);
117659 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117660 + void (*finish)(struct ts_config *conf,
117661 +       struct ts_state *state);
117662 +};
117663 +# 103 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117664 +static inline __attribute__((always_inline)) unsigned int textsearch_next(struct ts_config *conf,
117665 +        struct ts_state *state)
117666 +{
117667 + unsigned int ret = conf->ops->find(conf, state);
117668 +
117669 + if (conf->finish)
117670 +  conf->finish(conf, state);
117671 +
117672 + return ret;
117673 +}
117674 +# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/textsearch.h"
117675 +static inline __attribute__((always_inline)) unsigned int textsearch_find(struct ts_config *conf,
117676 +        struct ts_state *state)
117677 +{
117678 + state->offset = 0;
117679 + return textsearch_next(conf, state);
117680 +}
117681 +
117682 +
117683 +
117684 +
117685 +
117686 +static inline __attribute__((always_inline)) void *textsearch_get_pattern(struct ts_config *conf)
117687 +{
117688 + return conf->ops->get_pattern(conf);
117689 +}
117690 +
117691 +
117692 +
117693 +
117694 +
117695 +static inline __attribute__((always_inline)) unsigned int textsearch_get_pattern_len(struct ts_config *conf)
117696 +{
117697 + return conf->ops->get_pattern_len(conf);
117698 +}
117699 +
117700 +extern int textsearch_register(struct ts_ops *);
117701 +extern int textsearch_unregister(struct ts_ops *);
117702 +extern struct ts_config *textsearch_prepare(const char *, const void *,
117703 +         unsigned int, gfp_t, int);
117704 +extern void textsearch_destroy(struct ts_config *conf);
117705 +extern unsigned int textsearch_find_continuous(struct ts_config *,
117706 +            struct ts_state *,
117707 +            const void *, unsigned int);
117708 +
117709 +
117710 +
117711 +
117712 +
117713 +static inline __attribute__((always_inline)) struct ts_config *alloc_ts_config(size_t payload,
117714 +      gfp_t gfp_mask)
117715 +{
117716 + struct ts_config *conf;
117717 +
117718 + conf = (struct ts_config *) kzalloc((((sizeof(*conf)) + 8 -1) & ~(8 -1)) + payload, gfp_mask);
117719 + if (conf == 0)
117720 +  return (struct ts_config *) ERR_PTR(-12);
117721 +
117722 + return conf;
117723 +}
117724 +
117725 +static inline __attribute__((always_inline)) void *ts_config_priv(struct ts_config *conf)
117726 +{
117727 + return ((u8 *) conf + (((sizeof(struct ts_config)) + 8 -1) & ~(8 -1)));
117728 +}
117729 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
117730 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 1
117731 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h"
117732 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" 1
117733 +# 95 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h"
117734 +struct exception_table_entry {
117735 + unsigned long insn, fixup;
117736 +};
117737 +
117738 +extern int fixup_exception(struct pt_regs *regs);
117739 +# 116 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h"
117740 +extern int __get_user_1(void);
117741 +extern int __get_user_2(void);
117742 +extern int __get_user_4(void);
117743 +extern int __get_user_8(void);
117744 +extern int __get_user_bad(void);
117745 +# 210 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h"
117746 +extern void __put_user_bad(void);
117747 +
117748 +
117749 +
117750 +
117751 +
117752 +extern void __put_user_1(void);
117753 +extern void __put_user_2(void);
117754 +extern void __put_user_4(void);
117755 +extern void __put_user_8(void);
117756 +# 368 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h"
117757 +struct __large_struct { unsigned long buf[100]; };
117758 +# 439 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h"
117759 +extern struct movsl_mask {
117760 + int mask;
117761 +} __attribute__((__aligned__((1 << (7))))) movsl_mask;
117762 +
117763 +
117764 +
117765 +
117766 +
117767 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h" 1
117768 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h"
117769 +unsigned long __attribute__((warn_unused_result)) __copy_to_user_ll
117770 +  (void *to, const void *from, unsigned long n);
117771 +unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll
117772 +  (void *to, const void *from, unsigned long n);
117773 +unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nozero
117774 +  (void *to, const void *from, unsigned long n);
117775 +unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nocache
117776 +  (void *to, const void *from, unsigned long n);
117777 +unsigned long __attribute__((warn_unused_result)) __copy_from_user_ll_nocache_nozero
117778 +  (void *to, const void *from, unsigned long n);
117779 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h"
117780 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __attribute__((warn_unused_result))
117781 +__copy_to_user_inatomic(void *to, const void *from, unsigned long n)
117782 +{
117783 + if (__builtin_constant_p(n)) {
117784 +  unsigned long ret;
117785 +
117786 +  switch (n) {
117787 +  case 1:
117788 +   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);
117789 +
117790 +   return ret;
117791 +  case 2:
117792 +   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);
117793 +
117794 +   return ret;
117795 +  case 4:
117796 +   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);
117797 +
117798 +   return ret;
117799 +  }
117800 + }
117801 + return __copy_to_user_ll(to, from, n);
117802 +}
117803 +# 82 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h"
117804 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __attribute__((warn_unused_result))
117805 +__copy_to_user(void *to, const void *from, unsigned long n)
117806 +{
117807 +       do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 85); do { } while (0); } while (0);
117808 +       return __copy_to_user_inatomic(to, from, n);
117809 +}
117810 +
117811 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long
117812 +__copy_from_user_inatomic(void *to, const void *from, unsigned long n)
117813 +{
117814 +
117815 +
117816 +
117817 +
117818 +
117819 + if (__builtin_constant_p(n)) {
117820 +  unsigned long ret;
117821 +
117822 +  switch (n) {
117823 +  case 1:
117824 +   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);
117825 +   return ret;
117826 +  case 2:
117827 +   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);
117828 +   return ret;
117829 +  case 4:
117830 +   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);
117831 +   return ret;
117832 +  }
117833 + }
117834 + return __copy_from_user_ll_nozero(to, from, n);
117835 +}
117836 +# 137 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h"
117837 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long
117838 +__copy_from_user(void *to, const void *from, unsigned long n)
117839 +{
117840 + do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 140); do { } while (0); } while (0);
117841 + if (__builtin_constant_p(n)) {
117842 +  unsigned long ret;
117843 +
117844 +  switch (n) {
117845 +  case 1:
117846 +   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);
117847 +   return ret;
117848 +  case 2:
117849 +   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);
117850 +   return ret;
117851 +  case 4:
117852 +   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);
117853 +   return ret;
117854 +  }
117855 + }
117856 + return __copy_from_user_ll(to, from, n);
117857 +}
117858 +
117859 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long __copy_from_user_nocache(void *to,
117860 +    const void *from, unsigned long n)
117861 +{
117862 + do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h", 162); do { } while (0); } while (0);
117863 + if (__builtin_constant_p(n)) {
117864 +  unsigned long ret;
117865 +
117866 +  switch (n) {
117867 +  case 1:
117868 +   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);
117869 +   return ret;
117870 +  case 2:
117871 +   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);
117872 +   return ret;
117873 +  case 4:
117874 +   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);
117875 +   return ret;
117876 +  }
117877 + }
117878 + return __copy_from_user_ll_nocache(to, from, n);
117879 +}
117880 +
117881 +static inline __attribute__((always_inline)) __attribute__((always_inline)) unsigned long
117882 +__copy_from_user_inatomic_nocache(void *to, const void *from,
117883 +      unsigned long n)
117884 +{
117885 +       return __copy_from_user_ll_nocache_nozero(to, from, n);
117886 +}
117887 +
117888 +unsigned long __attribute__((warn_unused_result)) copy_to_user(void *to,
117889 +     const void *from, unsigned long n);
117890 +unsigned long __attribute__((warn_unused_result)) copy_from_user(void *to,
117891 +       const void *from,
117892 +       unsigned long n);
117893 +long __attribute__((warn_unused_result)) strncpy_from_user(char *dst, const char *src,
117894 +        long count);
117895 +long __attribute__((warn_unused_result)) __strncpy_from_user(char *dst,
117896 +          const char *src, long count);
117897 +# 214 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess_32.h"
117898 +long strnlen_user(const char *str, long n);
117899 +unsigned long __attribute__((warn_unused_result)) clear_user(void *mem, unsigned long len);
117900 +unsigned long __attribute__((warn_unused_result)) __clear_user(void *mem, unsigned long len);
117901 +# 448 "/d/kernels/linux-2.6.27.10-clickport/include/asm/uaccess.h" 2
117902 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 2
117903 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum.h" 1
117904 +
117905 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" 1
117906 +
117907 +
117908 +
117909 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/in6.h" 1
117910 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/in6.h"
117911 +struct in6_addr
117912 +{
117913 + union
117914 + {
117915 +  __u8 u6_addr8[16];
117916 +  __be16 u6_addr16[8];
117917 +  __be32 u6_addr32[4];
117918 + } in6_u;
117919 +
117920 +
117921 +
117922 +};
117923 +
117924 +
117925 +
117926 +
117927 +
117928 +extern const struct in6_addr in6addr_any;
117929 +
117930 +extern const struct in6_addr in6addr_loopback;
117931 +
117932 +
117933 +extern const struct in6_addr in6addr_linklocal_allnodes;
117934 +
117935 +
117936 +extern const struct in6_addr in6addr_linklocal_allrouters;
117937 +
117938 +
117939 +
117940 +
117941 +struct sockaddr_in6 {
117942 + unsigned short int sin6_family;
117943 + __be16 sin6_port;
117944 + __be32 sin6_flowinfo;
117945 + struct in6_addr sin6_addr;
117946 + __u32 sin6_scope_id;
117947 +};
117948 +
117949 +struct ipv6_mreq {
117950 +
117951 + struct in6_addr ipv6mr_multiaddr;
117952 +
117953 +
117954 + int ipv6mr_ifindex;
117955 +};
117956 +
117957 +
117958 +
117959 +struct in6_flowlabel_req
117960 +{
117961 + struct in6_addr flr_dst;
117962 + __be32 flr_label;
117963 + __u8 flr_action;
117964 + __u8 flr_share;
117965 + __u16 flr_flags;
117966 + __u16 flr_expires;
117967 + __u16 flr_linger;
117968 + __u32 __flr_pad;
117969 +
117970 +};
117971 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h" 2
117972 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h"
117973 +extern "C" __attribute__((regparm(0))) __wsum csum_partial(const void *buff, int len, __wsum sum);
117974 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h"
117975 +extern "C" __attribute__((regparm(0))) __wsum csum_partial_copy_generic(const void *src, void *dst,
117976 +         int len, __wsum sum,
117977 +         int *src_err_ptr, int *dst_err_ptr);
117978 +# 41 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h"
117979 +static inline __attribute__((always_inline)) __wsum csum_partial_copy_nocheck(const void *src, void *dst,
117980 +            int len, __wsum sum)
117981 +{
117982 + return csum_partial_copy_generic(src, dst, len, sum, 0, 0);
117983 +}
117984 +
117985 +static inline __attribute__((always_inline)) __wsum csum_partial_copy_from_user(const void *src,
117986 +       void *dst,
117987 +       int len, __wsum sum,
117988 +       int *err_ptr)
117989 +{
117990 + do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h", 52); do { } while (0); } while (0);
117991 + return csum_partial_copy_generic(( void *)src, dst,
117992 +      len, sum, err_ptr, 0);
117993 +}
117994 +# 64 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h"
117995 +static inline __attribute__((always_inline)) __sum16 ip_fast_csum(const void *iph, unsigned int ihl)
117996 +{
117997 + unsigned int sum;
117998 +
117999 + asm volatile("movl (%1), %0   ;\n"
118000 +       "subl $4, %2    ;\n"
118001 +       "jbe 2f         ;\n"
118002 +       "addl 4(%1), %0 ;\n"
118003 +       "adcl 8(%1), %0 ;\n"
118004 +       "adcl 12(%1), %0;\n"
118005 +       "1:     adcl 16(%1), %0 ;\n"
118006 +       "lea 4(%1), %1  ;\n"
118007 +       "decl %2        ;\n"
118008 +       "jne 1b         ;\n"
118009 +       "adcl $0, %0    ;\n"
118010 +       "movl %0, %2    ;\n"
118011 +       "shrl $16, %0   ;\n"
118012 +       "addw %w2, %w0  ;\n"
118013 +       "adcl $0, %0    ;\n"
118014 +       "notl %0        ;\n"
118015 +       "2:             ;\n"
118016 +
118017 +
118018 +
118019 +       : "=r" (sum), "=r" (iph), "=r" (ihl)
118020 +       : "1" (iph), "2" (ihl)
118021 +       : "memory");
118022 + return ( __sum16)sum;
118023 +}
118024 +
118025 +
118026 +
118027 +
118028 +
118029 +static inline __attribute__((always_inline)) __sum16 csum_fold(__wsum sum)
118030 +{
118031 + asm("addl %1, %0              ;\n"
118032 +     "adcl $0xffff, %0 ;\n"
118033 +     : "=r" (sum)
118034 +     : "r" (( u32)sum << 16),
118035 +       "0" (( u32)sum & 0xffff0000));
118036 + return ( __sum16)(~( u32)sum >> 16);
118037 +}
118038 +
118039 +static inline __attribute__((always_inline)) __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr,
118040 +     unsigned short len,
118041 +     unsigned short proto,
118042 +     __wsum sum)
118043 +{
118044 + asm("addl %1, %0      ;\n"
118045 +     "adcl %2, %0      ;\n"
118046 +     "adcl %3, %0      ;\n"
118047 +     "adcl $0, %0      ;\n"
118048 +     : "=r" (sum)
118049 +     : "g" (daddr), "g"(saddr),
118050 +       "g" ((len + proto) << 8), "0" (sum));
118051 + return sum;
118052 +}
118053 +
118054 +
118055 +
118056 +
118057 +
118058 +static inline __attribute__((always_inline)) __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr,
118059 +     unsigned short len,
118060 +     unsigned short proto,
118061 +     __wsum sum)
118062 +{
118063 + return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum));
118064 +}
118065 +
118066 +
118067 +
118068 +
118069 +
118070 +
118071 +static inline __attribute__((always_inline)) __sum16 ip_compute_csum(const void *buff, int len)
118072 +{
118073 +    return csum_fold(csum_partial(buff, len, 0));
118074 +}
118075 +
118076 +
118077 +static inline __attribute__((always_inline)) __sum16 csum_ipv6_magic(const struct in6_addr *saddr,
118078 +          const struct in6_addr *daddr,
118079 +          __u32 len, unsigned short proto,
118080 +          __wsum sum)
118081 +{
118082 + asm("addl 0(%1), %0   ;\n"
118083 +     "adcl 4(%1), %0   ;\n"
118084 +     "adcl 8(%1), %0   ;\n"
118085 +     "adcl 12(%1), %0  ;\n"
118086 +     "adcl 0(%2), %0   ;\n"
118087 +     "adcl 4(%2), %0   ;\n"
118088 +     "adcl 8(%2), %0   ;\n"
118089 +     "adcl 12(%2), %0  ;\n"
118090 +     "adcl %3, %0      ;\n"
118091 +     "adcl %4, %0      ;\n"
118092 +     "adcl $0, %0      ;\n"
118093 +     : "=&r" (sum)
118094 +     : "r" (saddr), "r" (daddr),
118095 +       "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));
118096 +
118097 + return csum_fold(sum);
118098 +}
118099 +
118100 +
118101 +
118102 +
118103 +
118104 +static inline __attribute__((always_inline)) __wsum csum_and_copy_to_user(const void *src,
118105 +        void *dst,
118106 +        int len, __wsum sum,
118107 +        int *err_ptr)
118108 +{
118109 + do { __might_sleep("/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum_32.h", 178); do { } while (0); } while (0);
118110 + 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)))
118111 +  return csum_partial_copy_generic(src, ( void *)dst,
118112 +       len, sum, 0, err_ptr);
118113 +
118114 + if (len)
118115 +  *err_ptr = -14;
118116 +
118117 + return ( __wsum)-1;
118118 +}
118119 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/checksum.h" 2
118120 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h" 2
118121 +
118122 +
118123 +static inline __attribute__((always_inline))
118124 +__wsum csum_and_copy_from_user (const void *src, void *dst,
118125 +          int len, __wsum sum, int *err_ptr)
118126 +{
118127 + 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)))
118128 +  return csum_partial_copy_from_user(src, dst, len, sum, err_ptr);
118129 +
118130 + if (len)
118131 +  *err_ptr = -14;
118132 +
118133 + return sum;
118134 +}
118135 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/net/checksum.h"
118136 +static inline __attribute__((always_inline)) __wsum csum_add(__wsum csum, __wsum addend)
118137 +{
118138 + u32 res = ( u32)csum;
118139 + res += ( u32)addend;
118140 + return ( __wsum)(res + (res < ( u32)addend));
118141 +}
118142 +
118143 +static inline __attribute__((always_inline)) __wsum csum_sub(__wsum csum, __wsum addend)
118144 +{
118145 + return csum_add(csum, ~addend);
118146 +}
118147 +
118148 +static inline __attribute__((always_inline)) __wsum
118149 +csum_block_add(__wsum csum, __wsum csum2, int offset)
118150 +{
118151 + u32 sum = ( u32)csum2;
118152 + if (offset&1)
118153 +  sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF);
118154 + return csum_add(csum, ( __wsum)sum);
118155 +}
118156 +
118157 +static inline __attribute__((always_inline)) __wsum
118158 +csum_block_sub(__wsum csum, __wsum csum2, int offset)
118159 +{
118160 + u32 sum = ( u32)csum2;
118161 + if (offset&1)
118162 +  sum = ((sum&0xFF00FF)<<8)+((sum>>8)&0xFF00FF);
118163 + return csum_sub(csum, ( __wsum)sum);
118164 +}
118165 +
118166 +static inline __attribute__((always_inline)) __wsum csum_unfold(__sum16 n)
118167 +{
118168 + return ( __wsum)n;
118169 +}
118170 +
118171 +
118172 +
118173 +static inline __attribute__((always_inline)) void csum_replace4(__sum16 *sum, __be32 from, __be32 to)
118174 +{
118175 + __be32 diff[] = { ~from, to };
118176 +
118177 + *sum = csum_fold(csum_partial((char *)diff, sizeof(diff), ~csum_unfold(*sum)));
118178 +}
118179 +
118180 +static inline __attribute__((always_inline)) void csum_replace2(__sum16 *sum, __be16 from, __be16 to)
118181 +{
118182 + csum_replace4(sum, ( __be32)from, ( __be32)to);
118183 +}
118184 +
118185 +struct sk_buff;
118186 +extern void inet_proto_csum_replace4(__sum16 *sum, struct sk_buff *skb,
118187 +         __be32 from, __be32 to, int pseudohdr);
118188 +
118189 +static inline __attribute__((always_inline)) void inet_proto_csum_replace2(__sum16 *sum, struct sk_buff *skb,
118190 +         __be16 from, __be16 to,
118191 +         int pseudohdr)
118192 +{
118193 + inet_proto_csum_replace4(sum, skb, ( __be32)from,
118194 +     ( __be32)to, pseudohdr);
118195 +}
118196 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
118197 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 1
118198 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h"
118199 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h" 1
118200 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h"
118201 +struct completion {
118202 + unsigned int done;
118203 + wait_queue_head_t wait;
118204 +};
118205 +# 39 "/d/kernels/linux-2.6.27.10-clickport/include/linux/completion.h"
118206 +static inline __attribute__((always_inline)) void init_completion(struct completion *x)
118207 +{
118208 + x->done = 0;
118209 + init_waitqueue_head(&x->wait);
118210 +}
118211 +
118212 +extern void wait_for_completion(struct completion *);
118213 +extern int wait_for_completion_interruptible(struct completion *x);
118214 +extern int wait_for_completion_killable(struct completion *x);
118215 +extern unsigned long wait_for_completion_timeout(struct completion *x,
118216 +         unsigned long timeout);
118217 +extern unsigned long wait_for_completion_interruptible_timeout(
118218 +   struct completion *x, unsigned long timeout);
118219 +extern bool try_wait_for_completion(struct completion *x);
118220 +extern bool completion_done(struct completion *x);
118221 +
118222 +extern void complete(struct completion *);
118223 +extern void complete_all(struct completion *);
118224 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 2
118225 +
118226 +
118227 +
118228 +
118229 +
118230 +
118231 +struct rcu_head {
118232 + struct rcu_head *next;
118233 + void (*func)(struct rcu_head *head);
118234 +};
118235 +
118236 +
118237 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h" 1
118238 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h"
118239 +struct rcu_ctrlblk {
118240 + long cur;
118241 + long completed;
118242 + int next_pending;
118243 +
118244 + int signaled;
118245 +
118246 + spinlock_t lock __attribute__((__aligned__(1 << ((7)))));
118247 + cpumask_t cpumask;
118248 +
118249 +} __attribute__((__aligned__(1 << ((7)))));
118250 +
118251 +
118252 +static inline __attribute__((always_inline)) int rcu_batch_before(long a, long b)
118253 +{
118254 + return (a - b) < 0;
118255 +}
118256 +
118257 +
118258 +static inline __attribute__((always_inline)) int rcu_batch_after(long a, long b)
118259 +{
118260 + return (a - b) > 0;
118261 +}
118262 +
118263 +
118264 +
118265 +
118266 +
118267 +
118268 +struct rcu_data {
118269 +
118270 + long quiescbatch;
118271 + int passed_quiesc;
118272 + int qs_pending;
118273 +
118274 +
118275 + long batch;
118276 + struct rcu_head *nxtlist;
118277 + struct rcu_head **nxttail;
118278 + long qlen;
118279 + struct rcu_head *curlist;
118280 + struct rcu_head **curtail;
118281 + struct rcu_head *donelist;
118282 + struct rcu_head **donetail;
118283 + long blimit;
118284 + int cpu;
118285 + struct rcu_head barrier;
118286 +};
118287 +
118288 +extern __typeof__(struct rcu_data) per_cpu__rcu_data;
118289 +extern __typeof__(struct rcu_data) per_cpu__rcu_bh_data;
118290 +
118291 +
118292 +
118293 +
118294 +
118295 +
118296 +
118297 +static inline __attribute__((always_inline)) void rcu_qsctr_inc(int cpu)
118298 +{
118299 + 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])))); }));
118300 + rdp->passed_quiesc = 1;
118301 +}
118302 +static inline __attribute__((always_inline)) void rcu_bh_qsctr_inc(int cpu)
118303 +{
118304 + 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])))); }));
118305 + rdp->passed_quiesc = 1;
118306 +}
118307 +
118308 +extern int rcu_pending(int cpu);
118309 +extern int rcu_needs_cpu(int cpu);
118310 +# 156 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcuclassic.h"
118311 +extern void __rcu_init(void);
118312 +
118313 +extern void rcu_check_callbacks(int cpu, int user);
118314 +extern void rcu_restart_cpu(int cpu);
118315 +
118316 +extern long rcu_batches_completed(void);
118317 +extern long rcu_batches_completed_bh(void);
118318 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h" 2
118319 +# 174 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h"
118320 +struct rcu_synchronize {
118321 + struct rcu_head head;
118322 + struct completion completion;
118323 +};
118324 +
118325 +extern void wakeme_after_rcu(struct rcu_head *head);
118326 +# 222 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h"
118327 +extern void call_rcu(struct rcu_head *head,
118328 +         void (*func)(struct rcu_head *head));
118329 +# 243 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rcupdate.h"
118330 +extern void call_rcu_bh(struct rcu_head *head,
118331 +   void (*func)(struct rcu_head *head));
118332 +
118333 +
118334 +extern void synchronize_rcu(void);
118335 +extern void rcu_barrier(void);
118336 +extern void rcu_barrier_bh(void);
118337 +extern void rcu_barrier_sched(void);
118338 +
118339 +
118340 +extern void rcu_init(void);
118341 +extern int rcu_needs_cpu(int cpu);
118342 +# 29 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
118343 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 1
118344 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
118345 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 1
118346 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h"
118347 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h" 1
118348 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h"
118349 +struct resource {
118350 + resource_size_t start;
118351 + resource_size_t end;
118352 + const char *name;
118353 + unsigned long flags;
118354 + struct resource *parent, *sibling, *child;
118355 +};
118356 +
118357 +struct resource_list {
118358 + struct resource_list *next;
118359 + struct resource *res;
118360 + struct pci_dev *dev;
118361 +};
118362 +# 106 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ioport.h"
118363 +extern struct resource ioport_resource;
118364 +extern struct resource iomem_resource;
118365 +
118366 +extern int request_resource(struct resource *root, struct resource *xxx_new);
118367 +extern int release_resource(struct resource *xxx_new);
118368 +extern int insert_resource(struct resource *parent, struct resource *xxx_new);
118369 +extern void insert_resource_expand_to_fit(struct resource *root, struct resource *xxx_new);
118370 +extern int allocate_resource(struct resource *root, struct resource *xxx_new,
118371 +        resource_size_t size, resource_size_t min,
118372 +        resource_size_t max, resource_size_t align,
118373 +        void (*alignf)(void *, struct resource *,
118374 +         resource_size_t, resource_size_t),
118375 +        void *alignf_data);
118376 +int adjust_resource(struct resource *res, resource_size_t start,
118377 +      resource_size_t size);
118378 +resource_size_t resource_alignment(struct resource *res);
118379 +static inline __attribute__((always_inline)) resource_size_t resource_size(struct resource *res)
118380 +{
118381 + return res->end - res->start + 1;
118382 +}
118383 +
118384 +
118385 +
118386 +
118387 +
118388 +
118389 +extern struct resource * __request_region(struct resource *,
118390 +     resource_size_t start,
118391 +     resource_size_t n, const char *name);
118392 +
118393 +
118394 +
118395 +
118396 +
118397 +
118398 +extern int __check_region(struct resource *, resource_size_t, resource_size_t);
118399 +extern void __release_region(struct resource *, resource_size_t,
118400 +    resource_size_t);
118401 +
118402 +static inline __attribute__((always_inline)) int __attribute__((deprecated)) check_region(resource_size_t s,
118403 +      resource_size_t n)
118404 +{
118405 + return __check_region(&ioport_resource, s, n);
118406 +}
118407 +
118408 +
118409 +struct device;
118410 +
118411 +
118412 +
118413 +
118414 +
118415 +extern struct resource * __devm_request_region(struct device *dev,
118416 +    struct resource *parent, resource_size_t start,
118417 +    resource_size_t n, const char *name);
118418 +
118419 +
118420 +
118421 +
118422 +
118423 +
118424 +extern void __devm_release_region(struct device *dev, struct resource *parent,
118425 +      resource_size_t start, resource_size_t n);
118426 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118427 +
118428 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h" 1
118429 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h"
118430 +struct klist_node;
118431 +struct klist {
118432 + spinlock_t k_lock;
118433 + struct list_head k_list;
118434 + void (*get)(struct klist_node *);
118435 + void (*put)(struct klist_node *);
118436 +};
118437 +# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/klist.h"
118438 +extern void klist_init(struct klist *k, void (*get)(struct klist_node *),
118439 +         void (*put)(struct klist_node *));
118440 +
118441 +struct klist_node {
118442 + struct klist *n_klist;
118443 + struct list_head n_node;
118444 + struct kref n_ref;
118445 + struct completion n_removed;
118446 +};
118447 +
118448 +extern void klist_add_tail(struct klist_node *n, struct klist *k);
118449 +extern void klist_add_head(struct klist_node *n, struct klist *k);
118450 +extern void klist_add_after(struct klist_node *n, struct klist_node *pos);
118451 +extern void klist_add_before(struct klist_node *n, struct klist_node *pos);
118452 +
118453 +extern void klist_del(struct klist_node *n);
118454 +extern void klist_remove(struct klist_node *n);
118455 +
118456 +extern int klist_node_attached(struct klist_node *n);
118457 +
118458 +
118459 +struct klist_iter {
118460 + struct klist *i_klist;
118461 + struct list_head *i_head;
118462 + struct klist_node *i_cur;
118463 +};
118464 +
118465 +
118466 +extern void klist_iter_init(struct klist *k, struct klist_iter *i);
118467 +extern void klist_iter_init_node(struct klist *k, struct klist_iter *i,
118468 +     struct klist_node *n);
118469 +extern void klist_iter_exit(struct klist_iter *i);
118470 +extern struct klist_node *klist_next(struct klist_iter *i);
118471 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118472 +
118473 +
118474 +
118475 +
118476 +
118477 +
118478 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h" 1
118479 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h"
118480 +struct semaphore {
118481 + spinlock_t lock;
118482 + unsigned int count;
118483 + struct list_head wait_list;
118484 +};
118485 +# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/semaphore.h"
118486 +static inline __attribute__((always_inline)) void sema_init(struct semaphore *sem, int val)
118487 +{
118488 + static struct lock_class_key __key;
118489 + *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;});
118490 + do { (void)(&__key); } while (0);
118491 +}
118492 +
118493 +
118494 +
118495 +
118496 +extern void down(struct semaphore *sem);
118497 +extern int __attribute__((warn_unused_result)) down_interruptible(struct semaphore *sem);
118498 +extern int __attribute__((warn_unused_result)) down_killable(struct semaphore *sem);
118499 +extern int __attribute__((warn_unused_result)) down_trylock(struct semaphore *sem);
118500 +extern int __attribute__((warn_unused_result)) down_timeout(struct semaphore *sem, long jiffies);
118501 +extern void up(struct semaphore *sem);
118502 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118503 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
118504 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118505 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/device.h" 1
118506 +
118507 +
118508 +
118509 +struct dev_archdata {
118510 +
118511 + void *acpi_handle;
118512 +
118513 +
118514 +
118515 +
118516 +
118517 +
118518 +
118519 +};
118520 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118521 +
118522 +
118523 +
118524 +struct device;
118525 +struct device_driver;
118526 +struct driver_private;
118527 +struct xxx_class;
118528 +struct class_private;
118529 +struct bus_type;
118530 +struct bus_type_private;
118531 +
118532 +struct bus_attribute {
118533 + struct attribute attr;
118534 + ssize_t (*show)(struct bus_type *bus, char *buf);
118535 + ssize_t (*store)(struct bus_type *bus, const char *buf, size_t count);
118536 +};
118537 +
118538 +
118539 +
118540 +
118541 +extern int __attribute__((warn_unused_result)) bus_create_file(struct bus_type *,
118542 +     struct bus_attribute *);
118543 +extern void bus_remove_file(struct bus_type *, struct bus_attribute *);
118544 +
118545 +struct bus_type {
118546 + const char *name;
118547 + struct bus_attribute *bus_attrs;
118548 + struct device_attribute *dev_attrs;
118549 + struct driver_attribute *drv_attrs;
118550 +
118551 + int (*match)(struct device *dev, struct device_driver *drv);
118552 + int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
118553 + int (*probe)(struct device *dev);
118554 + int (*remove)(struct device *dev);
118555 + void (*shutdown)(struct device *dev);
118556 +
118557 + int (*suspend)(struct device *dev, pm_message_t state);
118558 + int (*suspend_late)(struct device *dev, pm_message_t state);
118559 + int (*resume_early)(struct device *dev);
118560 + int (*resume)(struct device *dev);
118561 +
118562 + struct pm_ext_ops *pm;
118563 +
118564 + struct bus_type_private *p;
118565 +};
118566 +
118567 +extern int __attribute__((warn_unused_result)) bus_register(struct bus_type *bus);
118568 +extern void bus_unregister(struct bus_type *bus);
118569 +
118570 +extern int __attribute__((warn_unused_result)) bus_rescan_devices(struct bus_type *bus);
118571 +
118572 +
118573 +
118574 +int bus_for_each_dev(struct bus_type *bus, struct device *start, void *data,
118575 +       int (*fn)(struct device *dev, void *data));
118576 +struct device *bus_find_device(struct bus_type *bus, struct device *start,
118577 +          void *data,
118578 +          int (*match)(struct device *dev, void *data));
118579 +struct device *bus_find_device_by_name(struct bus_type *bus,
118580 +           struct device *start,
118581 +           const char *name);
118582 +
118583 +int __attribute__((warn_unused_result)) bus_for_each_drv(struct bus_type *bus,
118584 +      struct device_driver *start, void *data,
118585 +      int (*fn)(struct device_driver *, void *));
118586 +
118587 +
118588 +
118589 +
118590 +
118591 +
118592 +
118593 +struct notifier_block;
118594 +
118595 +extern int bus_register_notifier(struct bus_type *bus,
118596 +     struct notifier_block *nb);
118597 +extern int bus_unregister_notifier(struct bus_type *bus,
118598 +       struct notifier_block *nb);
118599 +# 116 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h"
118600 +extern struct kset *bus_get_kset(struct bus_type *bus);
118601 +extern struct klist *bus_get_device_klist(struct bus_type *bus);
118602 +
118603 +struct device_driver {
118604 + const char *name;
118605 + struct bus_type *bus;
118606 +
118607 + struct module *owner;
118608 + const char *mod_name;
118609 +
118610 + int (*probe) (struct device *dev);
118611 + int (*remove) (struct device *dev);
118612 + void (*shutdown) (struct device *dev);
118613 + int (*suspend) (struct device *dev, pm_message_t state);
118614 + int (*resume) (struct device *dev);
118615 + struct attribute_group **groups;
118616 +
118617 + struct pm_ops *pm;
118618 +
118619 + struct driver_private *p;
118620 +};
118621 +
118622 +
118623 +extern int __attribute__((warn_unused_result)) driver_register(struct device_driver *drv);
118624 +extern void driver_unregister(struct device_driver *drv);
118625 +
118626 +extern struct device_driver *get_driver(struct device_driver *drv);
118627 +extern void put_driver(struct device_driver *drv);
118628 +extern struct device_driver *driver_find(const char *name,
118629 +      struct bus_type *bus);
118630 +extern int driver_probe_done(void);
118631 +
118632 +
118633 +
118634 +struct driver_attribute {
118635 + struct attribute attr;
118636 + ssize_t (*show)(struct device_driver *driver, char *buf);
118637 + ssize_t (*store)(struct device_driver *driver, const char *buf,
118638 +    size_t count);
118639 +};
118640 +
118641 +
118642 +
118643 +
118644 +
118645 +extern int __attribute__((warn_unused_result)) driver_create_file(struct device_driver *driver,
118646 +        struct driver_attribute *attr);
118647 +extern void driver_remove_file(struct device_driver *driver,
118648 +          struct driver_attribute *attr);
118649 +
118650 +extern int __attribute__((warn_unused_result)) driver_add_kobj(struct device_driver *drv,
118651 +     struct kobject *kobj,
118652 +     const char *fmt, ...);
118653 +
118654 +extern int __attribute__((warn_unused_result)) driver_for_each_device(struct device_driver *drv,
118655 +            struct device *start,
118656 +            void *data,
118657 +            int (*fn)(struct device *dev,
118658 +        void *));
118659 +struct device *driver_find_device(struct device_driver *drv,
118660 +      struct device *start, void *data,
118661 +      int (*match)(struct device *dev, void *data));
118662 +
118663 +
118664 +
118665 +
118666 +struct xxx_class {
118667 + const char *name;
118668 + struct module *owner;
118669 +
118670 + struct class_attribute *class_attrs;
118671 + struct device_attribute *dev_attrs;
118672 + struct kobject *dev_kobj;
118673 +
118674 + int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env);
118675 +
118676 + void (*class_release)(struct xxx_class *xxx_class);
118677 + void (*dev_release)(struct device *dev);
118678 +
118679 + int (*suspend)(struct device *dev, pm_message_t state);
118680 + int (*resume)(struct device *dev);
118681 +
118682 + struct pm_ops *pm;
118683 + struct class_private *p;
118684 +};
118685 +
118686 +extern struct kobject *sysfs_dev_block_kobj;
118687 +extern struct kobject *sysfs_dev_char_kobj;
118688 +extern int __attribute__((warn_unused_result)) __class_register(struct xxx_class *xxx_class,
118689 +      struct lock_class_key *key);
118690 +extern void class_unregister(struct xxx_class *xxx_class);
118691 +# 216 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h"
118692 +extern int class_for_each_device(struct xxx_class *xxx_class, struct device *start,
118693 +     void *data,
118694 +     int (*fn)(struct device *dev, void *data));
118695 +extern struct device *class_find_device(struct xxx_class *xxx_class,
118696 +     struct device *start, void *data,
118697 +     int (*match)(struct device *, void *));
118698 +
118699 +struct class_attribute {
118700 + struct attribute attr;
118701 + ssize_t (*show)(struct xxx_class *xxx_class, char *buf);
118702 + ssize_t (*store)(struct xxx_class *xxx_class, const char *buf, size_t count);
118703 +};
118704 +
118705 +
118706 +
118707 +
118708 +extern int __attribute__((warn_unused_result)) class_create_file(struct xxx_class *xxx_class,
118709 +       const struct class_attribute *attr);
118710 +extern void class_remove_file(struct xxx_class *xxx_class,
118711 +         const struct class_attribute *attr);
118712 +
118713 +struct class_interface {
118714 + struct list_head node;
118715 + struct xxx_class *xxx_class;
118716 +
118717 + int (*add_dev) (struct device *, struct class_interface *);
118718 + void (*remove_dev) (struct device *, struct class_interface *);
118719 +};
118720 +
118721 +extern int __attribute__((warn_unused_result)) class_interface_register(struct class_interface *);
118722 +extern void class_interface_unregister(struct class_interface *);
118723 +
118724 +extern struct xxx_class * __attribute__((warn_unused_result)) __class_create(struct module *owner,
118725 +        const char *name,
118726 +        struct lock_class_key *key);
118727 +extern void class_destroy(struct xxx_class *cls);
118728 +# 270 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h"
118729 +struct device_type {
118730 + const char *name;
118731 + struct attribute_group **groups;
118732 + int (*uevent)(struct device *dev, struct kobj_uevent_env *env);
118733 + void (*release)(struct device *dev);
118734 +
118735 + int (*suspend)(struct device *dev, pm_message_t state);
118736 + int (*resume)(struct device *dev);
118737 +
118738 + struct pm_ops *pm;
118739 +};
118740 +
118741 +
118742 +struct device_attribute {
118743 + struct attribute attr;
118744 + ssize_t (*show)(struct device *dev, struct device_attribute *attr,
118745 +   char *buf);
118746 + ssize_t (*store)(struct device *dev, struct device_attribute *attr,
118747 +    const char *buf, size_t count);
118748 +};
118749 +
118750 +
118751 +
118752 +
118753 +extern int __attribute__((warn_unused_result)) device_create_file(struct device *device,
118754 +        struct device_attribute *entry);
118755 +extern void device_remove_file(struct device *dev,
118756 +          struct device_attribute *attr);
118757 +extern int __attribute__((warn_unused_result)) device_create_bin_file(struct device *dev,
118758 +            struct bin_attribute *attr);
118759 +extern void device_remove_bin_file(struct device *dev,
118760 +       struct bin_attribute *attr);
118761 +extern int device_schedule_callback_owner(struct device *dev,
118762 +  void (*func)(struct device *dev), struct module *owner);
118763 +
118764 +
118765 +
118766 +
118767 +
118768 +
118769 +typedef void (*dr_release_t)(struct device *dev, void *res);
118770 +typedef int (*dr_match_t)(struct device *dev, void *res, void *match_data);
118771 +
118772 +
118773 +extern void *__devres_alloc(dr_release_t release, size_t size, gfp_t gfp,
118774 +        const char *name);
118775 +
118776 +
118777 +
118778 +
118779 +
118780 +extern void devres_free(void *res);
118781 +extern void devres_add(struct device *dev, void *res);
118782 +extern void *devres_find(struct device *dev, dr_release_t release,
118783 +    dr_match_t match, void *match_data);
118784 +extern void *devres_get(struct device *dev, void *new_res,
118785 +   dr_match_t match, void *match_data);
118786 +extern void *devres_remove(struct device *dev, dr_release_t release,
118787 +      dr_match_t match, void *match_data);
118788 +extern int devres_destroy(struct device *dev, dr_release_t release,
118789 +     dr_match_t match, void *match_data);
118790 +
118791 +
118792 +extern void * __attribute__((warn_unused_result)) devres_open_group(struct device *dev, void *id,
118793 +          gfp_t gfp);
118794 +extern void devres_close_group(struct device *dev, void *id);
118795 +extern void devres_remove_group(struct device *dev, void *id);
118796 +extern int devres_release_group(struct device *dev, void *id);
118797 +
118798 +
118799 +extern void *devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);
118800 +extern void devm_kfree(struct device *dev, void *p);
118801 +
118802 +struct device_dma_parameters {
118803 +
118804 +
118805 +
118806 +
118807 + unsigned int max_segment_size;
118808 + unsigned long segment_boundary_mask;
118809 +};
118810 +
118811 +struct device {
118812 + struct klist klist_children;
118813 + struct klist_node knode_parent;
118814 + struct klist_node knode_driver;
118815 + struct klist_node knode_bus;
118816 + struct device *parent;
118817 +
118818 + struct kobject kobj;
118819 + char bus_id[20];
118820 + const char *init_name;
118821 + struct device_type *type;
118822 + unsigned uevent_suppress:1;
118823 +
118824 + struct semaphore sem;
118825 +
118826 +
118827 +
118828 + struct bus_type *bus;
118829 + struct device_driver *driver;
118830 +
118831 + void *driver_data;
118832 + void *platform_data;
118833 +
118834 + struct dev_pm_info power;
118835 +
118836 +
118837 +
118838 +
118839 + u64 *dma_mask;
118840 + u64 coherent_dma_mask;
118841 +
118842 +
118843 +
118844 +
118845 +
118846 + struct device_dma_parameters *dma_parms;
118847 +
118848 + struct list_head dma_pools;
118849 +
118850 + struct dma_coherent_mem *dma_mem;
118851 +
118852 +
118853 + struct dev_archdata archdata;
118854 +
118855 + spinlock_t devres_lock;
118856 + struct list_head devres_head;
118857 +
118858 + struct list_head node;
118859 + struct xxx_class *xxx_class;
118860 + dev_t devt;
118861 + struct attribute_group **groups;
118862 +
118863 + void (*release)(struct device *dev);
118864 +};
118865 +
118866 +
118867 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm_wakeup.h" 1
118868 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pm_wakeup.h"
118869 +static inline __attribute__((always_inline)) void device_init_wakeup(struct device *dev, int val)
118870 +{
118871 + dev->power.can_wakeup = dev->power.should_wakeup = !!val;
118872 +}
118873 +
118874 +static inline __attribute__((always_inline)) void device_set_wakeup_capable(struct device *dev, int val)
118875 +{
118876 + dev->power.can_wakeup = !!val;
118877 +}
118878 +
118879 +static inline __attribute__((always_inline)) int device_can_wakeup(struct device *dev)
118880 +{
118881 + return dev->power.can_wakeup;
118882 +}
118883 +
118884 +static inline __attribute__((always_inline)) void device_set_wakeup_enable(struct device *dev, int val)
118885 +{
118886 + dev->power.should_wakeup = !!val;
118887 +}
118888 +
118889 +static inline __attribute__((always_inline)) int device_may_wakeup(struct device *dev)
118890 +{
118891 + return dev->power.can_wakeup && dev->power.should_wakeup;
118892 +}
118893 +# 409 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h" 2
118894 +
118895 +static inline __attribute__((always_inline)) const char *dev_name(const struct device *dev)
118896 +{
118897 +
118898 + return dev->bus_id;
118899 +}
118900 +
118901 +extern int dev_set_name(struct device *dev, const char *name, ...)
118902 +   __attribute__((format(printf, 2, 3)));
118903 +# 429 "/d/kernels/linux-2.6.27.10-clickport/include/linux/device.h"
118904 +static inline __attribute__((always_inline)) int dev_to_node(struct device *dev)
118905 +{
118906 + return -1;
118907 +}
118908 +static inline __attribute__((always_inline)) void set_dev_node(struct device *dev, int node)
118909 +{
118910 +}
118911 +
118912 +
118913 +static inline __attribute__((always_inline)) void *dev_get_drvdata(struct device *dev)
118914 +{
118915 + return dev->driver_data;
118916 +}
118917 +
118918 +static inline __attribute__((always_inline)) void dev_set_drvdata(struct device *dev, void *data)
118919 +{
118920 + dev->driver_data = data;
118921 +}
118922 +
118923 +static inline __attribute__((always_inline)) int device_is_registered(struct device *dev)
118924 +{
118925 + return dev->kobj.state_in_sysfs;
118926 +}
118927 +
118928 +void driver_init(void);
118929 +
118930 +
118931 +
118932 +
118933 +extern int __attribute__((warn_unused_result)) device_register(struct device *dev);
118934 +extern void device_unregister(struct device *dev);
118935 +extern void device_initialize(struct device *dev);
118936 +extern int __attribute__((warn_unused_result)) device_add(struct device *dev);
118937 +extern void device_del(struct device *dev);
118938 +extern int device_for_each_child(struct device *dev, void *data,
118939 +       int (*fn)(struct device *dev, void *data));
118940 +extern struct device *device_find_child(struct device *dev, void *data,
118941 +    int (*match)(struct device *dev, void *data));
118942 +extern int device_rename(struct device *dev, char *new_name);
118943 +extern int device_move(struct device *dev, struct device *new_parent);
118944 +
118945 +
118946 +
118947 +
118948 +
118949 +extern int __attribute__((warn_unused_result)) device_bind_driver(struct device *dev);
118950 +extern void device_release_driver(struct device *dev);
118951 +extern int __attribute__((warn_unused_result)) device_attach(struct device *dev);
118952 +extern int __attribute__((warn_unused_result)) driver_attach(struct device_driver *drv);
118953 +extern int __attribute__((warn_unused_result)) device_reprobe(struct device *dev);
118954 +
118955 +
118956 +
118957 +
118958 +extern struct device *device_create_vargs(struct xxx_class *cls,
118959 +       struct device *parent,
118960 +       dev_t devt,
118961 +       void *drvdata,
118962 +       const char *fmt,
118963 +       va_list vargs);
118964 +extern struct device *device_create(struct xxx_class *cls, struct device *parent,
118965 +        dev_t devt, void *drvdata,
118966 +        const char *fmt, ...)
118967 +        __attribute__((format(printf, 5, 6)));
118968 +
118969 +extern void device_destroy(struct xxx_class *cls, dev_t devt);
118970 +
118971 +
118972 +
118973 +
118974 +
118975 +
118976 +
118977 +extern int (*platform_notify)(struct device *dev);
118978 +
118979 +extern int (*platform_notify_remove)(struct device *dev);
118980 +
118981 +
118982 +
118983 +
118984 +
118985 +
118986 +extern struct device *get_device(struct device *dev);
118987 +extern void put_device(struct device *dev);
118988 +
118989 +
118990 +
118991 +extern void device_shutdown(void);
118992 +
118993 +
118994 +extern void sysdev_shutdown(void);
118995 +
118996 +
118997 +extern const char *dev_driver_string(const struct device *dev);
118998 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 2
118999 +
119000 +
119001 +
119002 +
119003 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" 1
119004 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h"
119005 +enum dma_data_direction {
119006 + DMA_BIDIRECTIONAL = 0,
119007 + DMA_TO_DEVICE = 1,
119008 + DMA_FROM_DEVICE = 2,
119009 + DMA_NONE = 3,
119010 +};
119011 +# 39 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h"
119012 +static inline __attribute__((always_inline)) int valid_dma_direction(int dma_direction)
119013 +{
119014 + return ((dma_direction == DMA_BIDIRECTIONAL) ||
119015 +  (dma_direction == DMA_TO_DEVICE) ||
119016 +  (dma_direction == DMA_FROM_DEVICE));
119017 +}
119018 +
119019 +static inline __attribute__((always_inline)) int is_device_dma_capable(struct device *dev)
119020 +{
119021 + return dev->dma_mask != 0 && *dev->dma_mask != 0x0ULL;
119022 +}
119023 +
119024 +
119025 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 1
119026 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h"
119027 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 1
119028 +
119029 +
119030 +
119031 +
119032 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/scatterlist.h" 1
119033 +
119034 +
119035 +
119036 +
119037 +
119038 +struct scatterlist {
119039 +
119040 +
119041 +
119042 + unsigned long page_link;
119043 + unsigned int offset;
119044 + unsigned int length;
119045 + dma_addr_t dma_address;
119046 + unsigned int dma_length;
119047 +};
119048 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2
119049 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 1
119050 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119051 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h" 1
119052 +# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h"
119053 +struct rb_node
119054 +{
119055 + unsigned long rb_parent_color;
119056 +
119057 +
119058 + struct rb_node *rb_right;
119059 + struct rb_node *rb_left;
119060 +} __attribute__((aligned(sizeof(long))));
119061 +
119062 +
119063 +struct rb_root
119064 +{
119065 + struct rb_node *rb_node;
119066 +};
119067 +# 123 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h"
119068 +static inline __attribute__((always_inline)) void rb_set_parent(struct rb_node *rb, struct rb_node *p)
119069 +{
119070 + rb->rb_parent_color = (rb->rb_parent_color & 3) | (unsigned long)p;
119071 +}
119072 +static inline __attribute__((always_inline)) void rb_set_color(struct rb_node *rb, int color)
119073 +{
119074 + rb->rb_parent_color = (rb->rb_parent_color & ~1) | color;
119075 +}
119076 +# 139 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rbtree.h"
119077 +extern void rb_insert_color(struct rb_node *, struct rb_root *);
119078 +extern void rb_erase(struct rb_node *, struct rb_root *);
119079 +
119080 +
119081 +extern struct rb_node *rb_next(struct rb_node *);
119082 +extern struct rb_node *rb_prev(struct rb_node *);
119083 +extern struct rb_node *rb_first(struct rb_root *);
119084 +extern struct rb_node *rb_last(struct rb_root *);
119085 +
119086 +
119087 +extern void rb_replace_node(struct rb_node *victim, struct rb_node *xxx_new,
119088 +       struct rb_root *root);
119089 +
119090 +static inline __attribute__((always_inline)) void rb_link_node(struct rb_node * node, struct rb_node * parent,
119091 +    struct rb_node ** rb_link)
119092 +{
119093 + node->rb_parent_color = (unsigned long )parent;
119094 + node->rb_left = node->rb_right = 0;
119095 +
119096 + *rb_link = node;
119097 +}
119098 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119099 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h" 1
119100 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h"
119101 +struct raw_prio_tree_node {
119102 + struct prio_tree_node *left;
119103 + struct prio_tree_node *right;
119104 + struct prio_tree_node *parent;
119105 +};
119106 +
119107 +struct prio_tree_node {
119108 + struct prio_tree_node *left;
119109 + struct prio_tree_node *right;
119110 + struct prio_tree_node *parent;
119111 + unsigned long start;
119112 + unsigned long last;
119113 +};
119114 +
119115 +struct prio_tree_root {
119116 + struct prio_tree_node *prio_tree_node;
119117 + unsigned short index_bits;
119118 + unsigned short raw;
119119 +
119120 +
119121 +
119122 +
119123 +};
119124 +
119125 +struct prio_tree_iter {
119126 + struct prio_tree_node *cur;
119127 + unsigned long mask;
119128 + unsigned long value;
119129 + int size_level;
119130 +
119131 + struct prio_tree_root *root;
119132 + unsigned long r_index;
119133 + unsigned long h_index;
119134 +};
119135 +
119136 +static inline __attribute__((always_inline)) void prio_tree_iter_init(struct prio_tree_iter *iter,
119137 +  struct prio_tree_root *root, unsigned long r_index, unsigned long h_index)
119138 +{
119139 + iter->root = root;
119140 + iter->r_index = r_index;
119141 + iter->h_index = h_index;
119142 + iter->cur = 0;
119143 +}
119144 +# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/prio_tree.h"
119145 +static inline __attribute__((always_inline)) int prio_tree_empty(const struct prio_tree_root *root)
119146 +{
119147 + return root->prio_tree_node == 0;
119148 +}
119149 +
119150 +static inline __attribute__((always_inline)) int prio_tree_root(const struct prio_tree_node *node)
119151 +{
119152 + return node->parent == node;
119153 +}
119154 +
119155 +static inline __attribute__((always_inline)) int prio_tree_left_empty(const struct prio_tree_node *node)
119156 +{
119157 + return node->left == node;
119158 +}
119159 +
119160 +static inline __attribute__((always_inline)) int prio_tree_right_empty(const struct prio_tree_node *node)
119161 +{
119162 + return node->right == node;
119163 +}
119164 +
119165 +
119166 +struct prio_tree_node *prio_tree_replace(struct prio_tree_root *root,
119167 +                struct prio_tree_node *old, struct prio_tree_node *node);
119168 +struct prio_tree_node *prio_tree_insert(struct prio_tree_root *root,
119169 +                struct prio_tree_node *node);
119170 +void prio_tree_remove(struct prio_tree_root *root, struct prio_tree_node *node);
119171 +struct prio_tree_node *prio_tree_next(struct prio_tree_iter *iter);
119172 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119173 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h" 1
119174 +
119175 +
119176 +
119177 +
119178 +
119179 +struct task_struct;
119180 +
119181 +extern int debug_locks;
119182 +extern int debug_locks_silent;
119183 +
119184 +
119185 +
119186 +
119187 +extern int debug_locks_off(void);
119188 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h"
119189 +struct task_struct;
119190 +# 49 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debug_locks.h"
119191 +static inline __attribute__((always_inline)) void debug_show_all_locks(void)
119192 +{
119193 +}
119194 +
119195 +static inline __attribute__((always_inline)) void __debug_show_held_locks(struct task_struct *task)
119196 +{
119197 +}
119198 +
119199 +static inline __attribute__((always_inline)) void debug_show_held_locks(struct task_struct *task)
119200 +{
119201 +}
119202 +
119203 +static inline __attribute__((always_inline)) void
119204 +debug_check_no_locks_freed(const void *from, unsigned long len)
119205 +{
119206 +}
119207 +
119208 +static inline __attribute__((always_inline)) void
119209 +debug_check_no_locks_held(struct task_struct *task)
119210 +{
119211 +}
119212 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119213 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" 1
119214 +
119215 +
119216 +
119217 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/auxvec.h" 1
119218 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h" 2
119219 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h"
119220 +struct address_space;
119221 +
119222 +
119223 +typedef atomic_long_t mm_counter_t;
119224 +# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h"
119225 +struct page {
119226 + unsigned long flags;
119227 +
119228 + atomic_t _count;
119229 + union {
119230 +  atomic_t _mapcount;
119231 +
119232 +
119233 +
119234 +  struct {
119235 +   u16 inuse;
119236 +   u16 objects;
119237 +  };
119238 + };
119239 + union {
119240 +     struct {
119241 +  unsigned long xxx_private;
119242 +
119243 +
119244 +
119245 +
119246 +
119247 +
119248 +  struct address_space *mapping;
119249 +
119250 +
119251 +
119252 +
119253 +
119254 +
119255 +     };
119256 +
119257 +     spinlock_t ptl;
119258 +
119259 +     struct kmem_cache *slab;
119260 +     struct page *first_page;
119261 + };
119262 + union {
119263 +  unsigned long index;
119264 +  void *freelist;
119265 + };
119266 + struct list_head lru;
119267 +# 98 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h"
119268 +};
119269 +
119270 +
119271 +
119272 +
119273 +
119274 +
119275 +
119276 +struct vm_area_struct {
119277 + struct mm_struct * vm_mm;
119278 + unsigned long vm_start;
119279 + unsigned long vm_end;
119280 +
119281 +
119282 +
119283 + struct vm_area_struct *vm_next;
119284 +
119285 + pgprot_t vm_page_prot;
119286 + unsigned long vm_flags;
119287 +
119288 + struct rb_node vm_rb;
119289 +
119290 +
119291 +
119292 +
119293 +
119294 +
119295 +
119296 + union {
119297 +  struct {
119298 +   struct list_head list;
119299 +   void *parent;
119300 +   struct vm_area_struct *head;
119301 +  } vm_set;
119302 +
119303 +  struct raw_prio_tree_node prio_tree_node;
119304 + } shared;
119305 +
119306 +
119307 +
119308 +
119309 +
119310 +
119311 +
119312 + struct list_head anon_vma_node;
119313 + struct anon_vma *anon_vma;
119314 +
119315 +
119316 + struct vm_operations_struct * vm_ops;
119317 +
119318 +
119319 + unsigned long vm_pgoff;
119320 +
119321 + struct file * vm_file;
119322 + void * vm_private_data;
119323 + unsigned long vm_truncate_count;
119324 +
119325 +
119326 +
119327 +
119328 +
119329 +
119330 +
119331 +};
119332 +
119333 +struct core_thread {
119334 + struct task_struct *task;
119335 + struct core_thread *next;
119336 +};
119337 +
119338 +struct core_state {
119339 + atomic_t nr_threads;
119340 + struct core_thread dumper;
119341 + struct completion startup;
119342 +};
119343 +
119344 +struct mm_struct {
119345 + struct vm_area_struct * mmap;
119346 + struct rb_root mm_rb;
119347 + struct vm_area_struct * mmap_cache;
119348 + unsigned long (*get_unmapped_area) (struct file *filp,
119349 +    unsigned long addr, unsigned long len,
119350 +    unsigned long pgoff, unsigned long flags);
119351 + void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
119352 + unsigned long mmap_base;
119353 + unsigned long task_size;
119354 + unsigned long cached_hole_size;
119355 + unsigned long free_area_cache;
119356 + pgd_t * pgd;
119357 + atomic_t mm_users;
119358 + atomic_t mm_count;
119359 + int map_count;
119360 + struct rw_semaphore mmap_sem;
119361 + spinlock_t page_table_lock;
119362 +
119363 + struct list_head mmlist;
119364 +
119365 +
119366 +
119367 +
119368 +
119369 +
119370 +
119371 + mm_counter_t _file_rss;
119372 + mm_counter_t _anon_rss;
119373 +
119374 + unsigned long hiwater_rss;
119375 + unsigned long hiwater_vm;
119376 +
119377 + unsigned long total_vm, locked_vm, shared_vm, exec_vm;
119378 + unsigned long stack_vm, reserved_vm, def_flags, nr_ptes;
119379 + unsigned long start_code, end_code, start_data, end_data;
119380 + unsigned long start_brk, brk, start_stack;
119381 + unsigned long arg_start, arg_end, env_start, env_end;
119382 +
119383 + unsigned long saved_auxv[(2*(1 + 18 + 1))];
119384 +
119385 + cpumask_t cpu_vm_mask;
119386 +
119387 +
119388 + mm_context_t context;
119389 + struct vx_info *mm_vx_info;
119390 +# 228 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h"
119391 + unsigned int faultstamp;
119392 + unsigned int token_priority;
119393 + unsigned int last_interval;
119394 +
119395 + unsigned long flags;
119396 +
119397 + struct core_state *core_state;
119398 +
119399 +
119400 + rwlock_t ioctx_list_lock;
119401 + struct kioctx *ioctx_list;
119402 +# 255 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm_types.h"
119403 + struct file *exe_file;
119404 + unsigned long num_exe_file_vmas;
119405 +
119406 +
119407 + struct mmu_notifier_mm *mmu_notifier_mm;
119408 +
119409 +};
119410 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119411 +
119412 +struct mempolicy;
119413 +struct anon_vma;
119414 +struct file_ra_state;
119415 +struct user_struct;
119416 +struct writeback_control;
119417 +
119418 +
119419 +extern unsigned long max_mapnr;
119420 +
119421 +
119422 +extern unsigned long num_physpages;
119423 +extern void * high_memory;
119424 +extern int page_cluster;
119425 +
119426 +
119427 +extern int sysctl_legacy_va_layout;
119428 +
119429 +
119430 +
119431 +
119432 +extern unsigned long mmap_min_addr;
119433 +
119434 +
119435 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 1
119436 +# 139 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119437 +extern unsigned long empty_zero_page[((1UL) << 12) / sizeof(unsigned long)];
119438 +
119439 +
119440 +extern spinlock_t pgd_lock;
119441 +extern struct list_head pgd_list;
119442 +
119443 +
119444 +
119445 +
119446 +
119447 +static inline __attribute__((always_inline)) int pte_dirty(pte_t pte)
119448 +{
119449 + return pte_flags(pte) & (((pteval_t)(1)) << 6);
119450 +}
119451 +
119452 +static inline __attribute__((always_inline)) int pte_young(pte_t pte)
119453 +{
119454 + return pte_flags(pte) & (((pteval_t)(1)) << 5);
119455 +}
119456 +
119457 +static inline __attribute__((always_inline)) int pte_write(pte_t pte)
119458 +{
119459 + return pte_flags(pte) & (((pteval_t)(1)) << 1);
119460 +}
119461 +
119462 +static inline __attribute__((always_inline)) int pte_file(pte_t pte)
119463 +{
119464 + return pte_flags(pte) & (((pteval_t)(1)) << 6);
119465 +}
119466 +
119467 +static inline __attribute__((always_inline)) int pte_huge(pte_t pte)
119468 +{
119469 + return pte_flags(pte) & (((pteval_t)(1)) << 7);
119470 +}
119471 +
119472 +static inline __attribute__((always_inline)) int pte_global(pte_t pte)
119473 +{
119474 + return pte_flags(pte) & (((pteval_t)(1)) << 8);
119475 +}
119476 +
119477 +static inline __attribute__((always_inline)) int pte_exec(pte_t pte)
119478 +{
119479 + return !(pte_flags(pte) & (((pteval_t)(0))));
119480 +}
119481 +
119482 +static inline __attribute__((always_inline)) int pte_special(pte_t pte)
119483 +{
119484 + return pte_val(pte) & (((pteval_t)(1)) << 9);
119485 +}
119486 +
119487 +static inline __attribute__((always_inline)) int pmd_large(pmd_t pte)
119488 +{
119489 + return (((pgd_val(((pte).pud).pgd))) & ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0))) ==
119490 +  ((((pteval_t)(1)) << 7) | (((pteval_t)(1)) << 0));
119491 +}
119492 +
119493 +static inline __attribute__((always_inline)) pte_t pte_mkclean(pte_t pte)
119494 +{
119495 + return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 6));
119496 +}
119497 +
119498 +static inline __attribute__((always_inline)) pte_t pte_mkold(pte_t pte)
119499 +{
119500 + return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 5));
119501 +}
119502 +
119503 +static inline __attribute__((always_inline)) pte_t pte_wrprotect(pte_t pte)
119504 +{
119505 + return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 1));
119506 +}
119507 +
119508 +static inline __attribute__((always_inline)) pte_t pte_mkexec(pte_t pte)
119509 +{
119510 + return __pte(pte_val(pte) & ~(((pteval_t)(0))));
119511 +}
119512 +
119513 +static inline __attribute__((always_inline)) pte_t pte_mkdirty(pte_t pte)
119514 +{
119515 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 6));
119516 +}
119517 +
119518 +static inline __attribute__((always_inline)) pte_t pte_mkyoung(pte_t pte)
119519 +{
119520 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 5));
119521 +}
119522 +
119523 +static inline __attribute__((always_inline)) pte_t pte_mkwrite(pte_t pte)
119524 +{
119525 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 1));
119526 +}
119527 +
119528 +static inline __attribute__((always_inline)) pte_t pte_mkhuge(pte_t pte)
119529 +{
119530 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 7));
119531 +}
119532 +
119533 +static inline __attribute__((always_inline)) pte_t pte_clrhuge(pte_t pte)
119534 +{
119535 + return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 7));
119536 +}
119537 +
119538 +static inline __attribute__((always_inline)) pte_t pte_mkglobal(pte_t pte)
119539 +{
119540 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 8));
119541 +}
119542 +
119543 +static inline __attribute__((always_inline)) pte_t pte_clrglobal(pte_t pte)
119544 +{
119545 + return __pte(pte_val(pte) & ~(((pteval_t)(1)) << 8));
119546 +}
119547 +
119548 +static inline __attribute__((always_inline)) pte_t pte_mkspecial(pte_t pte)
119549 +{
119550 + return __pte(pte_val(pte) | (((pteval_t)(1)) << 9));
119551 +}
119552 +
119553 +extern pteval_t __supported_pte_mask;
119554 +
119555 +static inline __attribute__((always_inline)) pte_t pfn_pte(unsigned long page_nr, pgprot_t pgprot)
119556 +{
119557 + return __pte((((phys_addr_t)page_nr << 12) |
119558 +        ((pgprot).pgprot)) & __supported_pte_mask);
119559 +}
119560 +# 271 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119561 +static inline __attribute__((always_inline)) pte_t pte_modify(pte_t pte, pgprot_t newprot)
119562 +{
119563 + pteval_t val = pte_val(pte);
119564 +
119565 +
119566 +
119567 +
119568 +
119569 + 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));
119570 + 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;
119571 +
119572 + return __pte(val);
119573 +}
119574 +
119575 +
119576 +
119577 +static inline __attribute__((always_inline)) pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot)
119578 +{
119579 + 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));
119580 + pgprotval_t addbits = ((newprot).pgprot);
119581 + return ((pgprot_t) { (preservebits | addbits) } );
119582 +}
119583 +
119584 +
119585 +
119586 +
119587 +
119588 +
119589 +
119590 +struct file;
119591 +pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
119592 +                              unsigned long size, pgprot_t vma_prot);
119593 +int phys_mem_access_prot_allowed(struct file *file, unsigned long pfn,
119594 +                              unsigned long size, pgprot_t *vma_prot);
119595 +
119596 +
119597 +
119598 +void set_pte_vaddr(unsigned long vaddr, pte_t pte);
119599 +
119600 +
119601 +extern void native_pagetable_setup_start(pgd_t *base);
119602 +extern void native_pagetable_setup_done(pgd_t *base);
119603 +# 364 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119604 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 1
119605 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h"
119606 +struct mm_struct;
119607 +struct vm_area_struct;
119608 +
119609 +extern pgd_t swapper_pg_dir[1024];
119610 +
119611 +static inline __attribute__((always_inline)) void pgtable_cache_init(void) { }
119612 +static inline __attribute__((always_inline)) void check_pgt_cache(void) { }
119613 +void paging_init(void);
119614 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h"
119615 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level-defs.h" 1
119616 +# 46 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 2
119617 +# 84 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h"
119618 +extern unsigned long pg0[];
119619 +# 98 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h"
119620 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h" 1
119621 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h"
119622 +static inline __attribute__((always_inline)) void native_set_pte(pte_t *ptep , pte_t pte)
119623 +{
119624 + *ptep = pte;
119625 +}
119626 +
119627 +static inline __attribute__((always_inline)) void native_set_pmd(pmd_t *pmdp, pmd_t pmd)
119628 +{
119629 + *pmdp = pmd;
119630 +}
119631 +
119632 +static inline __attribute__((always_inline)) void native_set_pte_atomic(pte_t *ptep, pte_t pte)
119633 +{
119634 + native_set_pte(ptep, pte);
119635 +}
119636 +
119637 +static inline __attribute__((always_inline)) void native_set_pte_present(struct mm_struct *mm,
119638 +       unsigned long addr,
119639 +       pte_t *ptep, pte_t pte)
119640 +{
119641 + native_set_pte(ptep, pte);
119642 +}
119643 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable-2level.h"
119644 +static inline __attribute__((always_inline)) void native_pte_clear(struct mm_struct *mm,
119645 +        unsigned long addr, pte_t *xp)
119646 +{
119647 + *xp = native_make_pte(0);
119648 +}
119649 +
119650 +
119651 +static inline __attribute__((always_inline)) pte_t native_ptep_get_and_clear(pte_t *xp)
119652 +{
119653 + return __pte(((__typeof__(*(&xp->pte_low)))__xchg((unsigned long)(0), (&xp->pte_low), sizeof(*(&xp->pte_low)))));
119654 +}
119655 +# 99 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h" 2
119656 +# 117 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable_32.h"
119657 +static inline __attribute__((always_inline)) int pud_large(pud_t pud) { return 0; }
119658 +# 365 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 2
119659 +# 394 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119660 +enum {
119661 + PG_LEVEL_NONE,
119662 + PG_LEVEL_4K,
119663 + PG_LEVEL_2M,
119664 + PG_LEVEL_1G,
119665 + PG_LEVEL_NUM
119666 +};
119667 +
119668 +
119669 +extern void update_page_count(int level, unsigned long pages);
119670 +# 414 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119671 +extern pte_t *lookup_address(unsigned long address, unsigned int *level);
119672 +
119673 +
119674 +static inline __attribute__((always_inline)) pte_t native_local_ptep_get_and_clear(pte_t *ptep)
119675 +{
119676 + pte_t res = *ptep;
119677 +
119678 +
119679 + native_pte_clear(0, 0, ptep);
119680 + return res;
119681 +}
119682 +
119683 +static inline __attribute__((always_inline)) void native_set_pte_at(struct mm_struct *mm, unsigned long addr,
119684 +         pte_t *ptep , pte_t pte)
119685 +{
119686 + native_set_pte(ptep, pte);
119687 +}
119688 +# 457 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119689 +struct vm_area_struct;
119690 +
119691 +
119692 +extern int ptep_set_access_flags(struct vm_area_struct *vma,
119693 +     unsigned long address, pte_t *ptep,
119694 +     pte_t entry, int dirty);
119695 +
119696 +
119697 +extern int ptep_test_and_clear_young(struct vm_area_struct *vma,
119698 +         unsigned long addr, pte_t *ptep);
119699 +
119700 +
119701 +extern int ptep_clear_flush_young(struct vm_area_struct *vma,
119702 +      unsigned long address, pte_t *ptep);
119703 +
119704 +
119705 +static inline __attribute__((always_inline)) pte_t ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
119706 +           pte_t *ptep)
119707 +{
119708 + pte_t pte = native_ptep_get_and_clear(ptep);
119709 + pte_update(mm, addr, ptep);
119710 + return pte;
119711 +}
119712 +
119713 +
119714 +static inline __attribute__((always_inline)) pte_t ptep_get_and_clear_full(struct mm_struct *mm,
119715 +         unsigned long addr, pte_t *ptep,
119716 +         int full)
119717 +{
119718 + pte_t pte;
119719 + if (full) {
119720 +
119721 +
119722 +
119723 +
119724 +  pte = native_local_ptep_get_and_clear(ptep);
119725 + } else {
119726 +  pte = ptep_get_and_clear(mm, addr, ptep);
119727 + }
119728 + return pte;
119729 +}
119730 +
119731 +
119732 +static inline __attribute__((always_inline)) void ptep_set_wrprotect(struct mm_struct *mm,
119733 +          unsigned long addr, pte_t *ptep)
119734 +{
119735 + clear_bit(1, (unsigned long *)&ptep->pte);
119736 + pte_update(mm, addr, ptep);
119737 +}
119738 +# 517 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h"
119739 +static inline __attribute__((always_inline)) void clone_pgd_range(pgd_t *dst, pgd_t *src, int count)
119740 +{
119741 +       (__builtin_constant_p((count * sizeof(pgd_t))) ? __constant_memcpy((dst), (src), (count * sizeof(pgd_t))) : __memcpy((dst), (src), (count * sizeof(pgd_t))));
119742 +}
119743 +
119744 +
119745 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable.h" 1
119746 +# 162 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/pgtable.h"
119747 +void pgd_clear_bad(pgd_t *);
119748 +void pud_clear_bad(pud_t *);
119749 +void pmd_clear_bad(pmd_t *);
119750 +
119751 +static inline __attribute__((always_inline)) int pgd_none_or_clear_bad(pgd_t *pgd)
119752 +{
119753 + if (pgd_none(*pgd))
119754 +  return 1;
119755 + if (__builtin_expect(!!(pgd_bad(*pgd)), 0)) {
119756 +  pgd_clear_bad(pgd);
119757 +  return 1;
119758 + }
119759 + return 0;
119760 +}
119761 +
119762 +static inline __attribute__((always_inline)) int pud_none_or_clear_bad(pud_t *pud)
119763 +{
119764 + if (pud_none(*pud))
119765 +  return 1;
119766 + if (__builtin_expect(!!(pud_bad(*pud)), 0)) {
119767 +  pud_clear_bad(pud);
119768 +  return 1;
119769 + }
119770 + return 0;
119771 +}
119772 +
119773 +static inline __attribute__((always_inline)) int pmd_none_or_clear_bad(pmd_t *pmd)
119774 +{
119775 + if ((!(unsigned long)((pgd_val((((*pmd)).pud).pgd)))))
119776 +  return 1;
119777 + 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)) {
119778 +  pmd_clear_bad(pmd);
119779 +  return 1;
119780 + }
119781 + return 0;
119782 +}
119783 +
119784 +static inline __attribute__((always_inline)) pte_t __ptep_modify_prot_start(struct mm_struct *mm,
119785 +          unsigned long addr,
119786 +          pte_t *ptep)
119787 +{
119788 +
119789 +
119790 +
119791 +
119792 +
119793 + return ptep_get_and_clear(mm, addr, ptep);
119794 +}
119795 +
119796 +static inline __attribute__((always_inline)) void __ptep_modify_prot_commit(struct mm_struct *mm,
119797 +          unsigned long addr,
119798 +          pte_t *ptep, pte_t pte)
119799 +{
119800 +
119801 +
119802 +
119803 +
119804 + set_pte_at(mm, addr, ptep, pte);
119805 +}
119806 +# 524 "/d/kernels/linux-2.6.27.10-clickport/include/asm/pgtable.h" 2
119807 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119808 +# 56 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119809 +extern struct kmem_cache *vm_area_cachep;
119810 +
119811 +
119812 +
119813 +
119814 +
119815 +
119816 +struct vm_list_struct {
119817 + struct vm_list_struct *next;
119818 + struct vm_area_struct *vma;
119819 +};
119820 +# 137 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119821 +extern pgprot_t protection_map[16];
119822 +# 152 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119823 +struct vm_fault {
119824 + unsigned int flags;
119825 + unsigned long pgoff;
119826 + void *virtual_address;
119827 +
119828 + struct page *page;
119829 +
119830 +
119831 +
119832 +
119833 +};
119834 +
119835 +
119836 +
119837 +
119838 +
119839 +
119840 +struct vm_operations_struct {
119841 + void (*open)(struct vm_area_struct * area);
119842 + void (*close)(struct vm_area_struct * area);
119843 + int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf);
119844 +
119845 +
119846 +
119847 + int (*page_mkwrite)(struct vm_area_struct *vma, struct page *page);
119848 +
119849 +
119850 +
119851 +
119852 + int (*access)(struct vm_area_struct *vma, unsigned long addr,
119853 +        void *buf, int len, int write);
119854 +# 208 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119855 +};
119856 +
119857 +struct mmu_gather;
119858 +struct inode;
119859 +# 220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
119860 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h" 1
119861 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119862 +enum pageflags {
119863 + PG_locked,
119864 + PG_error,
119865 + PG_referenced,
119866 + PG_uptodate,
119867 + PG_dirty,
119868 + PG_lru,
119869 + PG_active,
119870 + PG_slab,
119871 + PG_owner_priv_1,
119872 + PG_arch_1,
119873 + PG_reserved,
119874 + PG_private,
119875 + PG_writeback,
119876 +
119877 + PG_head,
119878 + PG_tail,
119879 +
119880 +
119881 +
119882 + PG_swapcache,
119883 + PG_mappedtodisk,
119884 + PG_reclaim,
119885 + PG_buddy,
119886 +
119887 +
119888 +
119889 + __NR_PAGEFLAGS,
119890 +
119891 +
119892 + PG_checked = PG_owner_priv_1,
119893 +
119894 +
119895 + PG_pinned = PG_owner_priv_1,
119896 + PG_savepinned = PG_dirty,
119897 +
119898 +
119899 + PG_slob_page = PG_active,
119900 + PG_slob_free = PG_private,
119901 +
119902 +
119903 + PG_slub_frozen = PG_active,
119904 + PG_slub_debug = PG_error,
119905 +};
119906 +# 164 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119907 +struct page;
119908 +
119909 +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))); }
119910 +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); }
119911 +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); }
119912 +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); }
119913 +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); }
119914 +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); }
119915 +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); }
119916 +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); }
119917 +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); }
119918 +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); };
119919 +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); }
119920 +
119921 +
119922 +
119923 +
119924 +
119925 +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); }
119926 +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); }
119927 +
119928 +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); }
119929 +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); }
119930 +
119931 +
119932 +
119933 +
119934 +
119935 +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); }
119936 +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); }
119937 +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); }
119938 +
119939 +
119940 +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); }
119941 +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); }
119942 +# 211 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119943 +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); }
119944 +
119945 +
119946 +
119947 +
119948 +
119949 +
119950 +
119951 +static inline __attribute__((always_inline)) int PageUncached(struct page *page) { return 0; }
119952 +
119953 +
119954 +static inline __attribute__((always_inline)) int PageUptodate(struct page *page)
119955 +{
119956 + int ret = (__builtin_constant_p((PG_uptodate)) ? constant_test_bit((PG_uptodate), (&(page)->flags)) : variable_test_bit((PG_uptodate), (&(page)->flags)));
119957 +# 234 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119958 + if (ret)
119959 +  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");
119960 +
119961 + return ret;
119962 +}
119963 +
119964 +static inline __attribute__((always_inline)) void __SetPageUptodate(struct page *page)
119965 +{
119966 + __asm__ __volatile__("": : :"memory");
119967 + __set_bit(PG_uptodate, &(page)->flags);
119968 +}
119969 +
119970 +static inline __attribute__((always_inline)) void SetPageUptodate(struct page *page)
119971 +{
119972 +# 260 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119973 + __asm__ __volatile__("": : :"memory");
119974 + set_bit(PG_uptodate, &(page)->flags);
119975 +
119976 +}
119977 +
119978 +static inline __attribute__((always_inline)) void ClearPageUptodate(struct page *page) { clear_bit(PG_uptodate, &page->flags); }
119979 +
119980 +extern void cancel_dirty_page(struct page *page, unsigned int account_size);
119981 +
119982 +int test_clear_page_writeback(struct page *page);
119983 +int test_set_page_writeback(struct page *page);
119984 +
119985 +static inline __attribute__((always_inline)) void set_page_writeback(struct page *page)
119986 +{
119987 + test_set_page_writeback(page);
119988 +}
119989 +# 284 "/d/kernels/linux-2.6.27.10-clickport/include/linux/page-flags.h"
119990 +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); }
119991 +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); }
119992 +
119993 +static inline __attribute__((always_inline)) int PageCompound(struct page *page)
119994 +{
119995 + return page->flags & ((1L << PG_head) | (1L << PG_tail));
119996 +
119997 +}
119998 +# 221 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
119999 +# 244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120000 +static inline __attribute__((always_inline)) int put_page_testzero(struct page *page)
120001 +{
120002 + do { } while(0);
120003 + return atomic_dec_and_test(&page->_count);
120004 +}
120005 +
120006 +
120007 +
120008 +
120009 +
120010 +static inline __attribute__((always_inline)) int get_page_unless_zero(struct page *page)
120011 +{
120012 + do { } while(0);
120013 + return atomic_add_unless((&page->_count), 1, 0);
120014 +}
120015 +
120016 +
120017 +struct page *vmalloc_to_page(const void *addr);
120018 +unsigned long vmalloc_to_pfn(const void *addr);
120019 +
120020 +
120021 +
120022 +
120023 +
120024 +
120025 +
120026 +static inline __attribute__((always_inline)) int is_vmalloc_addr(const void *x)
120027 +{
120028 +
120029 + unsigned long addr = (unsigned long)x;
120030 +
120031 + 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));
120032 +
120033 +
120034 +
120035 +}
120036 +
120037 +static inline __attribute__((always_inline)) struct page *compound_head(struct page *page)
120038 +{
120039 + if (__builtin_expect(!!(PageTail(page)), 0))
120040 +  return page->first_page;
120041 + return page;
120042 +}
120043 +
120044 +static inline __attribute__((always_inline)) int page_count(struct page *page)
120045 +{
120046 + return ((&compound_head(page)->_count)->counter);
120047 +}
120048 +
120049 +static inline __attribute__((always_inline)) void get_page(struct page *page)
120050 +{
120051 + page = compound_head(page);
120052 + do { } while(0);
120053 + atomic_inc(&page->_count);
120054 +}
120055 +
120056 +static inline __attribute__((always_inline)) struct page *virt_to_head_page(const void *x)
120057 +{
120058 + struct page *page = (mem_map + (((((unsigned long)(x)) - ((unsigned long)(0xC0000000UL))) >> 12) - (0UL)));
120059 + return compound_head(page);
120060 +}
120061 +
120062 +
120063 +
120064 +
120065 +
120066 +static inline __attribute__((always_inline)) void init_page_count(struct page *page)
120067 +{
120068 + (((&page->_count)->counter) = (1));
120069 +}
120070 +
120071 +void put_page(struct page *page);
120072 +void put_pages_list(struct list_head *pages);
120073 +
120074 +void split_page(struct page *page, unsigned int order);
120075 +
120076 +
120077 +
120078 +
120079 +
120080 +
120081 +typedef void compound_page_dtor(struct page *);
120082 +
120083 +static inline __attribute__((always_inline)) void set_compound_page_dtor(struct page *page,
120084 +      compound_page_dtor *dtor)
120085 +{
120086 + page[1].lru.next = (struct list_head *)dtor;
120087 +}
120088 +
120089 +static inline __attribute__((always_inline)) compound_page_dtor *get_compound_page_dtor(struct page *page)
120090 +{
120091 + return (compound_page_dtor *)page[1].lru.next;
120092 +}
120093 +
120094 +static inline __attribute__((always_inline)) int compound_order(struct page *page)
120095 +{
120096 + if (!PageHead(page))
120097 +  return 0;
120098 + return (unsigned long)page[1].lru.prev;
120099 +}
120100 +
120101 +static inline __attribute__((always_inline)) void set_compound_order(struct page *page, unsigned long order)
120102 +{
120103 + page[1].lru.prev = (struct list_head *)order;
120104 +}
120105 +# 495 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120106 +static inline __attribute__((always_inline)) enum zone_type page_zonenum(struct page *page)
120107 +{
120108 + return (enum zone_type) ((page->flags >> (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0))) & ((1UL << 2) - 1));
120109 +}
120110 +# 508 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120111 +static inline __attribute__((always_inline)) int page_zone_id(struct page *page)
120112 +{
120113 + 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);
120114 +}
120115 +
120116 +static inline __attribute__((always_inline)) int zone_to_nid(struct zone *zone)
120117 +{
120118 +
120119 +
120120 +
120121 + return 0;
120122 +
120123 +}
120124 +
120125 +
120126 +
120127 +
120128 +static inline __attribute__((always_inline)) int page_to_nid(struct page *page)
120129 +{
120130 + return (page->flags >> ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0))) & ((1UL << 0) - 1);
120131 +}
120132 +
120133 +
120134 +static inline __attribute__((always_inline)) struct zone *page_zone(struct page *page)
120135 +{
120136 + return &(&contig_page_data)->node_zones[page_zonenum(page)];
120137 +}
120138 +# 543 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120139 +static inline __attribute__((always_inline)) void set_page_zone(struct page *page, enum zone_type zone)
120140 +{
120141 + page->flags &= ~(((1UL << 2) - 1) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0)));
120142 + page->flags |= (zone & ((1UL << 2) - 1)) << (((((sizeof(unsigned long)*8) - 0) - 0) - 2) * (2 != 0));
120143 +}
120144 +
120145 +static inline __attribute__((always_inline)) void set_page_node(struct page *page, unsigned long node)
120146 +{
120147 + page->flags &= ~(((1UL << 0) - 1) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0)));
120148 + page->flags |= (node & ((1UL << 0) - 1)) << ((((sizeof(unsigned long)*8) - 0) - 0) * (0 != 0));
120149 +}
120150 +
120151 +static inline __attribute__((always_inline)) void set_page_section(struct page *page, unsigned long section)
120152 +{
120153 + page->flags &= ~(((1UL << 0) - 1) << (((sizeof(unsigned long)*8) - 0) * (0 != 0)));
120154 + page->flags |= (section & ((1UL << 0) - 1)) << (((sizeof(unsigned long)*8) - 0) * (0 != 0));
120155 +}
120156 +
120157 +static inline __attribute__((always_inline)) void set_page_links(struct page *page, enum zone_type zone,
120158 + unsigned long node, unsigned long pfn)
120159 +{
120160 + set_page_zone(page, zone);
120161 + set_page_node(page, node);
120162 + set_page_section(page, ((pfn) >> 0));
120163 +}
120164 +
120165 +
120166 +
120167 +
120168 +
120169 +static inline __attribute__((always_inline)) unsigned long round_hint_to_min(unsigned long hint)
120170 +{
120171 +
120172 + hint &= (~(((1UL) << 12)-1));
120173 + if (((void *)hint != 0) &&
120174 +     (hint < mmap_min_addr))
120175 +  return (((mmap_min_addr)+((typeof(mmap_min_addr))(((1UL) << 12))-1))&~((typeof(mmap_min_addr))(((1UL) << 12))-1));
120176 +
120177 + return hint;
120178 +}
120179 +
120180 +
120181 +
120182 +
120183 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 1
120184 +
120185 +
120186 +
120187 +
120188 +
120189 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 1
120190 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 2
120191 +
120192 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
120193 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h" 2
120194 +# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h"
120195 +enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
120196 +  PGALLOC_DMA, PGALLOC_NORMAL , PGALLOC_HIGH , PGALLOC_MOVABLE,
120197 +  PGFREE, PGACTIVATE, PGDEACTIVATE,
120198 +  PGFAULT, PGMAJFAULT,
120199 +  PGREFILL_DMA, PGREFILL_NORMAL , PGREFILL_HIGH , PGREFILL_MOVABLE,
120200 +  PGSTEAL_DMA, PGSTEAL_NORMAL , PGSTEAL_HIGH , PGSTEAL_MOVABLE,
120201 +  PGSCAN_KSWAPD_DMA, PGSCAN_KSWAPD_NORMAL , PGSCAN_KSWAPD_HIGH , PGSCAN_KSWAPD_MOVABLE,
120202 +  PGSCAN_DIRECT_DMA, PGSCAN_DIRECT_NORMAL , PGSCAN_DIRECT_HIGH , PGSCAN_DIRECT_MOVABLE,
120203 +  PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL,
120204 +  PAGEOUTRUN, ALLOCSTALL, PGROTATED,
120205 +
120206 +  HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL,
120207 +
120208 +  NR_VM_EVENT_ITEMS
120209 +};
120210 +
120211 +extern const struct seq_operations fragmentation_op;
120212 +extern const struct seq_operations pagetypeinfo_op;
120213 +extern const struct seq_operations zoneinfo_op;
120214 +extern const struct seq_operations vmstat_op;
120215 +extern int sysctl_stat_interval;
120216 +# 64 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h"
120217 +struct vm_event_state {
120218 + unsigned long event[NR_VM_EVENT_ITEMS];
120219 +};
120220 +
120221 +extern __typeof__(struct vm_event_state) per_cpu__vm_event_states;
120222 +
120223 +static inline __attribute__((always_inline)) void __count_vm_event(enum vm_event_item item)
120224 +{
120225 + (*({ 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]++;
120226 +}
120227 +
120228 +static inline __attribute__((always_inline)) void count_vm_event(enum vm_event_item item)
120229 +{
120230 + (*({ 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]++;
120231 + do { } while (0);
120232 +}
120233 +
120234 +static inline __attribute__((always_inline)) void __count_vm_events(enum vm_event_item item, long delta)
120235 +{
120236 + (*({ 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;
120237 +}
120238 +
120239 +static inline __attribute__((always_inline)) void count_vm_events(enum vm_event_item item, long delta)
120240 +{
120241 + (*({ 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;
120242 + do { } while (0);
120243 +}
120244 +
120245 +extern void all_vm_events(unsigned long *);
120246 +
120247 +extern void vm_events_fold_cpu(int cpu);
120248 +# 132 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h"
120249 +extern atomic_long_t vm_stat[NR_VM_ZONE_STAT_ITEMS];
120250 +
120251 +static inline __attribute__((always_inline)) void zone_page_state_add(long x, struct zone *zone,
120252 +     enum zone_stat_item item)
120253 +{
120254 + atomic_long_add(x, &zone->vm_stat[item]);
120255 + atomic_long_add(x, &vm_stat[item]);
120256 +}
120257 +
120258 +static inline __attribute__((always_inline)) unsigned long global_page_state(enum zone_stat_item item)
120259 +{
120260 + long x = atomic_long_read(&vm_stat[item]);
120261 +
120262 + if (x < 0)
120263 +  x = 0;
120264 +
120265 + return x;
120266 +}
120267 +
120268 +static inline __attribute__((always_inline)) unsigned long zone_page_state(struct zone *zone,
120269 +     enum zone_stat_item item)
120270 +{
120271 + long x = atomic_long_read(&zone->vm_stat[item]);
120272 +
120273 + if (x < 0)
120274 +  x = 0;
120275 +
120276 + return x;
120277 +}
120278 +# 204 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmstat.h"
120279 +static inline __attribute__((always_inline)) void zap_zone_vm_stats(struct zone *zone)
120280 +{
120281 + (__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))))));
120282 +}
120283 +
120284 +extern void inc_zone_state(struct zone *, enum zone_stat_item);
120285 +
120286 +
120287 +void __mod_zone_page_state(struct zone *, enum zone_stat_item item, int);
120288 +void __inc_zone_page_state(struct page *, enum zone_stat_item);
120289 +void __dec_zone_page_state(struct page *, enum zone_stat_item);
120290 +
120291 +void mod_zone_page_state(struct zone *, enum zone_stat_item, int);
120292 +void inc_zone_page_state(struct page *, enum zone_stat_item);
120293 +void dec_zone_page_state(struct page *, enum zone_stat_item);
120294 +
120295 +extern void inc_zone_state(struct zone *, enum zone_stat_item);
120296 +extern void __inc_zone_state(struct zone *, enum zone_stat_item);
120297 +extern void dec_zone_state(struct zone *, enum zone_stat_item);
120298 +extern void __dec_zone_state(struct zone *, enum zone_stat_item);
120299 +
120300 +void refresh_cpu_vm_stats(int);
120301 +# 588 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h" 2
120302 +
120303 +static inline __attribute__((always_inline)) __attribute__((always_inline)) void *lowmem_page_address(struct page *page)
120304 +{
120305 + return ((void *)((unsigned long)(((unsigned long)((page) - mem_map) + (0UL)) << 12)+((unsigned long)(0xC0000000UL))));
120306 +}
120307 +# 608 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120308 +void *page_address(struct page *page);
120309 +void set_page_address(struct page *page, void *xxx_virtual);
120310 +void page_address_init(void);
120311 +# 630 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120312 +extern struct address_space swapper_space;
120313 +static inline __attribute__((always_inline)) struct address_space *page_mapping(struct page *page)
120314 +{
120315 + struct address_space *mapping = page->mapping;
120316 +
120317 + do { } while(0);
120318 +
120319 + if (__builtin_expect(!!(PageSwapCache(page)), 0))
120320 +  mapping = &swapper_space;
120321 + else
120322 +
120323 + if (__builtin_expect(!!((unsigned long)mapping & 1), 0))
120324 +  mapping = 0;
120325 + return mapping;
120326 +}
120327 +
120328 +static inline __attribute__((always_inline)) int PageAnon(struct page *page)
120329 +{
120330 + return ((unsigned long)page->mapping & 1) != 0;
120331 +}
120332 +
120333 +
120334 +
120335 +
120336 +
120337 +static inline __attribute__((always_inline)) unsigned long page_index(struct page *page)
120338 +{
120339 + if (__builtin_expect(!!(PageSwapCache(page)), 0))
120340 +  return ((page)->xxx_private);
120341 + return page->index;
120342 +}
120343 +
120344 +
120345 +
120346 +
120347 +
120348 +
120349 +static inline __attribute__((always_inline)) void reset_page_mapcount(struct page *page)
120350 +{
120351 + (((&(page)->_mapcount)->counter) = (-1));
120352 +}
120353 +
120354 +static inline __attribute__((always_inline)) int page_mapcount(struct page *page)
120355 +{
120356 + return ((&(page)->_mapcount)->counter) + 1;
120357 +}
120358 +
120359 +
120360 +
120361 +
120362 +static inline __attribute__((always_inline)) int page_mapped(struct page *page)
120363 +{
120364 + return ((&(page)->_mapcount)->counter) >= 0;
120365 +}
120366 +# 705 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120367 +extern void show_free_areas(void);
120368 +
120369 +
120370 +int shmem_lock(struct file *file, int lock, struct user_struct *user);
120371 +
120372 +
120373 +
120374 +
120375 +
120376 +
120377 +
120378 +struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags);
120379 +
120380 +int shmem_zero_setup(struct vm_area_struct *);
120381 +# 728 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120382 +extern int can_do_mlock(void);
120383 +extern int user_shm_lock(size_t, struct user_struct *);
120384 +extern void user_shm_unlock(size_t, struct user_struct *);
120385 +
120386 +
120387 +
120388 +
120389 +struct zap_details {
120390 + struct vm_area_struct *nonlinear_vma;
120391 + struct address_space *check_mapping;
120392 + unsigned long first_index;
120393 + unsigned long last_index;
120394 + spinlock_t *i_mmap_lock;
120395 + unsigned long truncate_count;
120396 +};
120397 +
120398 +struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
120399 +  pte_t pte);
120400 +
120401 +int zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
120402 +  unsigned long size);
120403 +unsigned long zap_page_range(struct vm_area_struct *vma, unsigned long address,
120404 +  unsigned long size, struct zap_details *);
120405 +unsigned long unmap_vmas(struct mmu_gather **tlb,
120406 +  struct vm_area_struct *start_vma, unsigned long start_addr,
120407 +  unsigned long end_addr, unsigned long *nr_accounted,
120408 +  struct zap_details *);
120409 +# 766 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120410 +struct mm_walk {
120411 + int (*pgd_entry)(pgd_t *, unsigned long, unsigned long, struct mm_walk *);
120412 + int (*pud_entry)(pud_t *, unsigned long, unsigned long, struct mm_walk *);
120413 + int (*pmd_entry)(pmd_t *, unsigned long, unsigned long, struct mm_walk *);
120414 + int (*pte_entry)(pte_t *, unsigned long, unsigned long, struct mm_walk *);
120415 + int (*pte_hole)(unsigned long, unsigned long, struct mm_walk *);
120416 + struct mm_struct *mm;
120417 + void *xxx_private;
120418 +};
120419 +
120420 +int walk_page_range(unsigned long addr, unsigned long end,
120421 +  struct mm_walk *walk);
120422 +void free_pgd_range(struct mmu_gather *tlb, unsigned long addr,
120423 +  unsigned long end, unsigned long floor, unsigned long ceiling);
120424 +int copy_page_range(struct mm_struct *dst, struct mm_struct *src,
120425 +   struct vm_area_struct *vma);
120426 +void unmap_mapping_range(struct address_space *mapping,
120427 +  loff_t const holebegin, loff_t const holelen, int even_cows);
120428 +int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
120429 +   void *buf, int len, int write);
120430 +
120431 +static inline __attribute__((always_inline)) void unmap_shared_mapping_range(struct address_space *mapping,
120432 +  loff_t const holebegin, loff_t const holelen)
120433 +{
120434 + unmap_mapping_range(mapping, holebegin, holelen, 0);
120435 +}
120436 +
120437 +extern int vmtruncate(struct inode * inode, loff_t offset);
120438 +extern int vmtruncate_range(struct inode * inode, loff_t offset, loff_t end);
120439 +
120440 +
120441 +extern int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,
120442 +   unsigned long address, int write_access);
120443 +# 810 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120444 +extern int make_pages_present(unsigned long addr, unsigned long end);
120445 +extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
120446 +
120447 +int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start,
120448 +  int len, int write, int force, struct page **pages, struct vm_area_struct **vmas);
120449 +
120450 +extern int try_to_release_page(struct page * page, gfp_t gfp_mask);
120451 +extern void do_invalidatepage(struct page *page, unsigned long offset);
120452 +
120453 +int __set_page_dirty_nobuffers(struct page *page);
120454 +int __set_page_dirty_no_writeback(struct page *page);
120455 +int redirty_page_for_writepage(struct writeback_control *wbc,
120456 +    struct page *page);
120457 +int set_page_dirty(struct page *page);
120458 +int set_page_dirty_lock(struct page *page);
120459 +int clear_page_dirty_for_io(struct page *page);
120460 +
120461 +extern unsigned long move_page_tables(struct vm_area_struct *vma,
120462 +  unsigned long old_addr, struct vm_area_struct *new_vma,
120463 +  unsigned long new_addr, unsigned long len);
120464 +extern unsigned long do_mremap(unsigned long addr,
120465 +          unsigned long old_len, unsigned long new_len,
120466 +          unsigned long flags, unsigned long new_addr);
120467 +extern int mprotect_fixup(struct vm_area_struct *vma,
120468 +     struct vm_area_struct **pprev, unsigned long start,
120469 +     unsigned long end, unsigned long newflags);
120470 +# 847 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120471 +int get_user_pages_fast(unsigned long start, int nr_pages, int write,
120472 +   struct page **pages);
120473 +# 865 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120474 +struct shrinker {
120475 + int (*shrink)(int nr_to_scan, gfp_t gfp_mask);
120476 + int seeks;
120477 +
120478 +
120479 + struct list_head list;
120480 + long nr;
120481 +};
120482 +
120483 +extern void register_shrinker(struct shrinker *);
120484 +extern void unregister_shrinker(struct shrinker *);
120485 +
120486 +int vma_wants_writenotify(struct vm_area_struct *vma);
120487 +
120488 +extern pte_t *get_locked_pte(struct mm_struct *mm, unsigned long addr, spinlock_t **ptl);
120489 +
120490 +
120491 +static inline __attribute__((always_inline)) int __pud_alloc(struct mm_struct *mm, pgd_t *pgd,
120492 +      unsigned long address)
120493 +{
120494 + return 0;
120495 +}
120496 +
120497 +
120498 +
120499 +
120500 +
120501 +static inline __attribute__((always_inline)) int __pmd_alloc(struct mm_struct *mm, pud_t *pud,
120502 +      unsigned long address)
120503 +{
120504 + return 0;
120505 +}
120506 +
120507 +
120508 +
120509 +
120510 +int __pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address);
120511 +int __pte_alloc_kernel(pmd_t *pmd, unsigned long address);
120512 +
120513 +
120514 +
120515 +
120516 +
120517 +
120518 +static inline __attribute__((always_inline)) pud_t *pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
120519 +{
120520 + return (__builtin_expect(!!(pgd_none(*pgd)), 0) && __pud_alloc(mm, pgd, address))?
120521 +  0: pud_offset(pgd, address);
120522 +}
120523 +
120524 +static inline __attribute__((always_inline)) pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long address)
120525 +{
120526 + return (__builtin_expect(!!(pud_none(*pud)), 0) && __pmd_alloc(mm, pud, address))?
120527 +  0: pmd_offset(pud, address);
120528 +}
120529 +# 944 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120530 +static inline __attribute__((always_inline)) void pgtable_page_ctor(struct page *page)
120531 +{
120532 + do { do { *(&((page)->ptl)) = (spinlock_t) { ({raw_spinlock_t duh; duh.slock=0;duh;}), }; } while (0); } while (0);
120533 + inc_zone_page_state(page, NR_PAGETABLE);
120534 +}
120535 +
120536 +static inline __attribute__((always_inline)) void pgtable_page_dtor(struct page *page)
120537 +{
120538 + ((page)->mapping = 0);
120539 + dec_zone_page_state(page, NR_PAGETABLE);
120540 +}
120541 +# 982 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120542 +extern void free_area_init(unsigned long * zones_size);
120543 +extern void free_area_init_node(int nid, unsigned long * zones_size,
120544 +  unsigned long zone_start_pfn, unsigned long *zholes_size);
120545 +# 1013 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120546 +extern void free_area_init_nodes(unsigned long *max_zone_pfn);
120547 +extern void add_active_range(unsigned int nid, unsigned long start_pfn,
120548 +     unsigned long end_pfn);
120549 +extern void remove_active_range(unsigned int nid, unsigned long start_pfn,
120550 +     unsigned long end_pfn);
120551 +extern void push_node_boundaries(unsigned int nid, unsigned long start_pfn,
120552 +     unsigned long end_pfn);
120553 +extern void remove_all_active_ranges(void);
120554 +extern unsigned long absent_pages_in_range(unsigned long start_pfn,
120555 +      unsigned long end_pfn);
120556 +extern void get_pfn_range_for_nid(unsigned int nid,
120557 +   unsigned long *start_pfn, unsigned long *end_pfn);
120558 +extern unsigned long find_min_pfn_with_active_regions(void);
120559 +extern void free_bootmem_with_active_regions(int nid,
120560 +      unsigned long max_low_pfn);
120561 +typedef int (*work_fn_t)(unsigned long, unsigned long, void *);
120562 +extern void work_with_active_regions(int nid, work_fn_t work_fn, void *data);
120563 +extern void sparse_memory_present_with_active_regions(int nid);
120564 +
120565 +extern int early_pfn_to_nid(unsigned long pfn);
120566 +
120567 +
120568 +extern void set_dma_reserve(unsigned long new_dma_reserve);
120569 +extern void memmap_init_zone(unsigned long, int, unsigned long,
120570 +    unsigned long, enum memmap_context);
120571 +extern void setup_per_zone_pages_min(void);
120572 +extern void mem_init(void);
120573 +extern void show_mem(void);
120574 +extern void si_meminfo(struct sysinfo * val);
120575 +extern void si_meminfo_node(struct sysinfo *val, int nid);
120576 +extern int after_bootmem;
120577 +
120578 +
120579 +
120580 +
120581 +static inline __attribute__((always_inline)) void setup_per_cpu_pageset(void) {}
120582 +
120583 +
120584 +
120585 +void vma_prio_tree_add(struct vm_area_struct *, struct vm_area_struct *old);
120586 +void vma_prio_tree_insert(struct vm_area_struct *, struct prio_tree_root *);
120587 +void vma_prio_tree_remove(struct vm_area_struct *, struct prio_tree_root *);
120588 +struct vm_area_struct *vma_prio_tree_next(struct vm_area_struct *vma,
120589 + struct prio_tree_iter *iter);
120590 +
120591 +
120592 +
120593 +
120594 +
120595 +static inline __attribute__((always_inline)) void vma_nonlinear_insert(struct vm_area_struct *vma,
120596 +     struct list_head *list)
120597 +{
120598 + vma->shared.vm_set.parent = 0;
120599 + list_add_tail(&vma->shared.vm_set.list, list);
120600 +}
120601 +
120602 +
120603 +extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin);
120604 +extern void vma_adjust(struct vm_area_struct *vma, unsigned long start,
120605 + unsigned long end, unsigned long pgoff, struct vm_area_struct *insert);
120606 +extern struct vm_area_struct *vma_merge(struct mm_struct *,
120607 + struct vm_area_struct *prev, unsigned long addr, unsigned long end,
120608 + unsigned long vm_flags, struct anon_vma *, struct file *, unsigned long,
120609 + struct mempolicy *);
120610 +extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);
120611 +extern int split_vma(struct mm_struct *,
120612 + struct vm_area_struct *, unsigned long addr, int new_below);
120613 +extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
120614 +extern void __vma_link_rb(struct mm_struct *, struct vm_area_struct *,
120615 + struct rb_node **, struct rb_node *);
120616 +extern void unlink_file_vma(struct vm_area_struct *);
120617 +extern struct vm_area_struct *copy_vma(struct vm_area_struct **,
120618 + unsigned long addr, unsigned long len, unsigned long pgoff);
120619 +extern void exit_mmap(struct mm_struct *);
120620 +
120621 +extern int mm_take_all_locks(struct mm_struct *mm);
120622 +extern void mm_drop_all_locks(struct mm_struct *mm);
120623 +
120624 +
120625 +
120626 +extern void added_exe_file_vma(struct mm_struct *mm);
120627 +extern void removed_exe_file_vma(struct mm_struct *mm);
120628 +# 1103 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120629 +extern int may_expand_vm(struct mm_struct *mm, unsigned long npages);
120630 +extern int install_special_mapping(struct mm_struct *mm,
120631 +       unsigned long addr, unsigned long len,
120632 +       unsigned long flags, struct page **pages);
120633 +
120634 +extern unsigned long get_unmapped_area(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
120635 +
120636 +extern unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
120637 + unsigned long len, unsigned long prot,
120638 + unsigned long flag, unsigned long pgoff);
120639 +extern unsigned long mmap_region(struct file *file, unsigned long addr,
120640 + unsigned long len, unsigned long flags,
120641 + unsigned int vm_flags, unsigned long pgoff,
120642 + int accountable);
120643 +
120644 +static inline __attribute__((always_inline)) unsigned long do_mmap(struct file *file, unsigned long addr,
120645 + unsigned long len, unsigned long prot,
120646 + unsigned long flag, unsigned long offset)
120647 +{
120648 + unsigned long ret = -22;
120649 + if ((offset + (((len)+((typeof(len))(((1UL) << 12))-1))&~((typeof(len))(((1UL) << 12))-1))) < offset)
120650 +  goto out;
120651 + if (!(offset & ~(~(((1UL) << 12)-1))))
120652 +  ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> 12);
120653 +out:
120654 + return ret;
120655 +}
120656 +
120657 +extern int do_munmap(struct mm_struct *, unsigned long, size_t);
120658 +
120659 +extern unsigned long do_brk(unsigned long, unsigned long);
120660 +
120661 +
120662 +extern unsigned long page_unuse(struct page *);
120663 +extern void truncate_inode_pages(struct address_space *, loff_t);
120664 +extern void truncate_inode_pages_range(struct address_space *,
120665 +           loff_t lstart, loff_t lend);
120666 +
120667 +
120668 +extern int filemap_fault(struct vm_area_struct *, struct vm_fault *);
120669 +
120670 +
120671 +int write_one_page(struct page *page, int wait);
120672 +
120673 +
120674 +
120675 +
120676 +
120677 +int do_page_cache_readahead(struct address_space *mapping, struct file *filp,
120678 +   unsigned long offset, unsigned long nr_to_read);
120679 +int force_page_cache_readahead(struct address_space *mapping, struct file *filp,
120680 +   unsigned long offset, unsigned long nr_to_read);
120681 +
120682 +void page_cache_sync_readahead(struct address_space *mapping,
120683 +          struct file_ra_state *ra,
120684 +          struct file *filp,
120685 +          unsigned long offset,
120686 +          unsigned long size);
120687 +
120688 +void page_cache_async_readahead(struct address_space *mapping,
120689 +    struct file_ra_state *ra,
120690 +    struct file *filp,
120691 +    struct page *pg,
120692 +    unsigned long offset,
120693 +    unsigned long size);
120694 +
120695 +unsigned long max_sane_readahead(unsigned long nr);
120696 +
120697 +
120698 +extern int expand_stack(struct vm_area_struct *vma, unsigned long address);
120699 +
120700 +
120701 +
120702 +extern int expand_stack_downwards(struct vm_area_struct *vma,
120703 +      unsigned long address);
120704 +
120705 +
120706 +extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr);
120707 +extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
120708 +          struct vm_area_struct **pprev);
120709 +
120710 +
120711 +
120712 +static inline __attribute__((always_inline)) struct vm_area_struct * find_vma_intersection(struct mm_struct * mm, unsigned long start_addr, unsigned long end_addr)
120713 +{
120714 + struct vm_area_struct * vma = find_vma(mm,start_addr);
120715 +
120716 + if (vma && end_addr <= vma->vm_start)
120717 +  vma = 0;
120718 + return vma;
120719 +}
120720 +
120721 +static inline __attribute__((always_inline)) unsigned long vma_pages(struct vm_area_struct *vma)
120722 +{
120723 + return (vma->vm_end - vma->vm_start) >> 12;
120724 +}
120725 +
120726 +pgprot_t vm_get_page_prot(unsigned long vm_flags);
120727 +struct vm_area_struct *find_extend_vma(struct mm_struct *, unsigned long addr);
120728 +int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
120729 +   unsigned long pfn, unsigned long size, pgprot_t);
120730 +int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *);
120731 +int vm_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
120732 +   unsigned long pfn);
120733 +int vm_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
120734 +   unsigned long pfn);
120735 +
120736 +struct page *follow_page(struct vm_area_struct *, unsigned long address,
120737 +   unsigned int foll_flags);
120738 +
120739 +
120740 +
120741 +
120742 +
120743 +typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
120744 +   void *data);
120745 +extern int apply_to_page_range(struct mm_struct *mm, unsigned long address,
120746 +          unsigned long size, pte_fn_t fn, void *data);
120747 +
120748 +
120749 +void vm_stat_account(struct mm_struct *, unsigned long, struct file *, long);
120750 +# 1244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/mm.h"
120751 +static inline __attribute__((always_inline)) void
120752 +kernel_map_pages(struct page *page, int numpages, int enable) {}
120753 +static inline __attribute__((always_inline)) void enable_debug_pagealloc(void)
120754 +{
120755 +}
120756 +
120757 +
120758 +
120759 +
120760 +
120761 +extern struct vm_area_struct *get_gate_vma(struct task_struct *tsk);
120762 +
120763 +int in_gate_area_no_task(unsigned long addr);
120764 +int in_gate_area(struct task_struct *task, unsigned long addr);
120765 +
120766 +
120767 +
120768 +
120769 +
120770 +int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *,
120771 +     void *, size_t *, loff_t *);
120772 +unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask,
120773 +   unsigned long lru_pages);
120774 +
120775 +
120776 +
120777 +
120778 +extern int randomize_va_space;
120779 +
120780 +
120781 +const char * arch_vma_name(struct vm_area_struct *vma);
120782 +void print_vma_addr(char *prefix, unsigned long rip);
120783 +
120784 +struct page *sparse_mem_map_populate(unsigned long pnum, int nid);
120785 +pgd_t *vmemmap_pgd_populate(unsigned long addr, int node);
120786 +pud_t *vmemmap_pud_populate(pgd_t *pgd, unsigned long addr, int node);
120787 +pmd_t *vmemmap_pmd_populate(pud_t *pud, unsigned long addr, int node);
120788 +pte_t *vmemmap_pte_populate(pmd_t *pmd, unsigned long addr, int node);
120789 +void *vmemmap_alloc_block(unsigned long size, int node);
120790 +void vmemmap_verify(pte_t *, int, unsigned long, unsigned long);
120791 +int vmemmap_populate_basepages(struct page *start_page,
120792 +      unsigned long pages, int node);
120793 +int vmemmap_populate(struct page *start_page, unsigned long pages, int node);
120794 +void vmemmap_populate_print_last(void);
120795 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2
120796 +
120797 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" 1
120798 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h"
120799 +extern void early_ioremap_init(void);
120800 +extern void early_ioremap_clear(void);
120801 +extern void early_ioremap_reset(void);
120802 +extern void *early_ioremap(unsigned long offset, unsigned long size);
120803 +extern void early_iounmap(void *addr, unsigned long size);
120804 +extern void *fix_ioremap(unsigned idx, unsigned long phys);
120805 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h"
120806 +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; }
120807 +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; }
120808 +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; }
120809 +
120810 +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; }
120811 +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; }
120812 +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; }
120813 +
120814 +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"); }
120815 +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"); }
120816 +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"); }
120817 +
120818 +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) ); }
120819 +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) ); }
120820 +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) ); }
120821 +# 77 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h"
120822 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 1
120823 +# 47 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120824 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h" 1
120825 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h"
120826 +extern unsigned int ioread8(void *);
120827 +extern unsigned int ioread16(void *);
120828 +extern unsigned int ioread16be(void *);
120829 +extern unsigned int ioread32(void *);
120830 +extern unsigned int ioread32be(void *);
120831 +
120832 +extern void iowrite8(u8, void *);
120833 +extern void iowrite16(u16, void *);
120834 +extern void iowrite16be(u16, void *);
120835 +extern void iowrite32(u32, void *);
120836 +extern void iowrite32be(u32, void *);
120837 +# 51 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/iomap.h"
120838 +extern void ioread8_rep(void *port, void *buf, unsigned long count);
120839 +extern void ioread16_rep(void *port, void *buf, unsigned long count);
120840 +extern void ioread32_rep(void *port, void *buf, unsigned long count);
120841 +
120842 +extern void iowrite8_rep(void *port, const void *buf, unsigned long count);
120843 +extern void iowrite16_rep(void *port, const void *buf, unsigned long count);
120844 +extern void iowrite32_rep(void *port, const void *buf, unsigned long count);
120845 +
120846 +
120847 +extern void *ioport_map(unsigned long port, unsigned int nr);
120848 +extern void ioport_unmap(void *);
120849 +
120850 +
120851 +
120852 +
120853 +
120854 +
120855 +struct pci_dev;
120856 +extern void *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
120857 +extern void pci_iounmap(struct pci_dev *dev, void *);
120858 +# 48 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 2
120859 +
120860 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmalloc.h" 1
120861 +
120862 +
120863 +
120864 +
120865 +
120866 +
120867 +struct vm_area_struct;
120868 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vmalloc.h"
120869 +struct vm_struct {
120870 +
120871 + struct vm_struct *next;
120872 + void *addr;
120873 + unsigned long size;
120874 + unsigned long flags;
120875 + struct page **pages;
120876 + unsigned int nr_pages;
120877 + unsigned long phys_addr;
120878 + void *caller;
120879 +};
120880 +
120881 +
120882 +
120883 +
120884 +extern void *vmalloc(unsigned long size);
120885 +extern void *vmalloc_user(unsigned long size);
120886 +extern void *vmalloc_node(unsigned long size, int node);
120887 +extern void *vmalloc_exec(unsigned long size);
120888 +extern void *vmalloc_32(unsigned long size);
120889 +extern void *vmalloc_32_user(unsigned long size);
120890 +extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);
120891 +extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask,
120892 +    pgprot_t prot);
120893 +extern void vfree(const void *addr);
120894 +
120895 +extern void *vmap(struct page **pages, unsigned int count,
120896 +   unsigned long flags, pgprot_t prot);
120897 +extern void vunmap(const void *addr);
120898 +
120899 +extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
120900 +       unsigned long pgoff);
120901 +void vmalloc_sync_all(void);
120902 +
120903 +
120904 +
120905 +
120906 +
120907 +static inline __attribute__((always_inline)) size_t get_vm_area_size(const struct vm_struct *area)
120908 +{
120909 +
120910 + return area->size - ((1UL) << 12);
120911 +}
120912 +
120913 +extern struct vm_struct *get_vm_area(unsigned long size, unsigned long flags);
120914 +extern struct vm_struct *get_vm_area_caller(unsigned long size,
120915 +     unsigned long flags, void *caller);
120916 +extern struct vm_struct *__get_vm_area(unsigned long size, unsigned long flags,
120917 +     unsigned long start, unsigned long end);
120918 +extern struct vm_struct *get_vm_area_node(unsigned long size,
120919 +       unsigned long flags, int node,
120920 +       gfp_t gfp_mask);
120921 +extern struct vm_struct *remove_vm_area(const void *addr);
120922 +
120923 +extern int map_vm_area(struct vm_struct *area, pgprot_t prot,
120924 +   struct page ***pages);
120925 +extern void unmap_kernel_range(unsigned long addr, unsigned long size);
120926 +
120927 +
120928 +extern struct vm_struct *alloc_vm_area(size_t size);
120929 +extern void free_vm_area(struct vm_struct *area);
120930 +
120931 +
120932 +
120933 +
120934 +extern rwlock_t vmlist_lock;
120935 +extern struct vm_struct *vmlist;
120936 +
120937 +extern const struct seq_operations vmalloc_op;
120938 +# 50 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h" 2
120939 +# 69 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120940 +static inline __attribute__((always_inline)) unsigned long virt_to_phys(volatile void *address)
120941 +{
120942 + return (((unsigned long)(address)) - ((unsigned long)(0xC0000000UL)));
120943 +}
120944 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120945 +static inline __attribute__((always_inline)) void *phys_to_virt(unsigned long address)
120946 +{
120947 + return ((void *)((unsigned long)(address)+((unsigned long)(0xC0000000UL))));
120948 +}
120949 +# 111 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120950 +extern void *ioremap_nocache(resource_size_t offset, unsigned long size);
120951 +extern void *ioremap_cache(resource_size_t offset, unsigned long size);
120952 +extern void *ioremap_prot(resource_size_t offset, unsigned long size,
120953 +    unsigned long prot_val);
120954 +
120955 +
120956 +
120957 +
120958 +static inline __attribute__((always_inline)) void *ioremap(resource_size_t offset, unsigned long size)
120959 +{
120960 + return ioremap_nocache(offset, size);
120961 +}
120962 +
120963 +extern void iounmap(volatile void *addr);
120964 +# 142 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120965 +static inline __attribute__((always_inline)) void
120966 +memset_io(volatile void *addr, unsigned char val, int count)
120967 +{
120968 + (__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)))));
120969 +}
120970 +
120971 +static inline __attribute__((always_inline)) void
120972 +memcpy_fromio(void *dst, const volatile void *src, int count)
120973 +{
120974 + __memcpy(dst, (const void *)src, count);
120975 +}
120976 +
120977 +static inline __attribute__((always_inline)) void
120978 +memcpy_toio(volatile void *dst, const void *src, int count)
120979 +{
120980 + __memcpy((void *)dst, src, count);
120981 +}
120982 +# 180 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120983 +static inline __attribute__((always_inline)) void flush_write_buffers(void)
120984 +{
120985 + asm volatile("lock; addl $0,0(%%esp)": : :"memory");
120986 +}
120987 +# 193 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120988 +extern void native_io_delay(void);
120989 +
120990 +extern int io_delay_type;
120991 +extern void io_delay_init(void);
120992 +# 280 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io_32.h"
120993 +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)); }
120994 +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)); }
120995 +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)); }
120996 +# 78 "/d/kernels/linux-2.6.27.10-clickport/include/asm/io.h" 2
120997 +
120998 +
120999 +
121000 +
121001 +extern void *xlate_dev_mem_ptr(unsigned long phys);
121002 +extern void unxlate_dev_mem_ptr(unsigned long phys, void *addr);
121003 +
121004 +extern int ioremap_change_attr(unsigned long vaddr, unsigned long size,
121005 +    unsigned long prot_val);
121006 +extern void *ioremap_wc(unsigned long offset, unsigned long size);
121007 +
121008 +
121009 +
121010 +
121011 +
121012 +
121013 +extern void early_ioremap_init(void);
121014 +extern void early_ioremap_clear(void);
121015 +extern void early_ioremap_reset(void);
121016 +extern void *early_ioremap(unsigned long offset, unsigned long size);
121017 +extern void early_iounmap(void *addr, unsigned long size);
121018 +extern void *fix_ioremap(unsigned idx, unsigned long phys);
121019 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h" 2
121020 +
121021 +struct sg_table {
121022 + struct scatterlist *sgl;
121023 + unsigned int nents;
121024 + unsigned int orig_nents;
121025 +};
121026 +# 55 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121027 +static inline __attribute__((always_inline)) void sg_assign_page(struct scatterlist *sg, struct page *page)
121028 +{
121029 + unsigned long page_link = sg->page_link & 0x3;
121030 +
121031 +
121032 +
121033 +
121034 +
121035 + 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);
121036 +
121037 +
121038 +
121039 +
121040 + sg->page_link = page_link | (unsigned long) page;
121041 +}
121042 +# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121043 +static inline __attribute__((always_inline)) void sg_set_page(struct scatterlist *sg, struct page *page,
121044 +          unsigned int len, unsigned int offset)
121045 +{
121046 + sg_assign_page(sg, page);
121047 + sg->offset = offset;
121048 + sg->length = len;
121049 +}
121050 +
121051 +static inline __attribute__((always_inline)) struct page *sg_page(struct scatterlist *sg)
121052 +{
121053 +
121054 +
121055 +
121056 +
121057 + return (struct page *)((sg)->page_link & ~0x3);
121058 +}
121059 +# 109 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121060 +static inline __attribute__((always_inline)) void sg_set_buf(struct scatterlist *sg, const void *buf,
121061 +         unsigned int buflen)
121062 +{
121063 + sg_set_page(sg, (mem_map + (((((unsigned long)(buf)) - ((unsigned long)(0xC0000000UL))) >> 12) - (0UL))), buflen, ((unsigned long)(buf) & ~(~(((1UL) << 12)-1))));
121064 +}
121065 +# 131 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121066 +static inline __attribute__((always_inline)) void sg_chain(struct scatterlist *prv, unsigned int prv_nents,
121067 +       struct scatterlist *sgl)
121068 +{
121069 +
121070 +
121071 +
121072 +
121073 +
121074 +
121075 +
121076 + prv[prv_nents - 1].offset = 0;
121077 + prv[prv_nents - 1].length = 0;
121078 +
121079 +
121080 +
121081 +
121082 +
121083 + prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01) & ~0x02;
121084 +}
121085 +# 160 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121086 +static inline __attribute__((always_inline)) void sg_mark_end(struct scatterlist *sg)
121087 +{
121088 +
121089 +
121090 +
121091 +
121092 +
121093 +
121094 + sg->page_link |= 0x02;
121095 + sg->page_link &= ~0x01;
121096 +}
121097 +# 182 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121098 +static inline __attribute__((always_inline)) dma_addr_t sg_phys(struct scatterlist *sg)
121099 +{
121100 + return ((dma_addr_t)((unsigned long)((sg_page(sg)) - mem_map) + (0UL)) << 12) + sg->offset;
121101 +}
121102 +# 197 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121103 +static inline __attribute__((always_inline)) void *sg_virt(struct scatterlist *sg)
121104 +{
121105 + return (char *) page_address(sg_page(sg)) + sg->offset;
121106 +}
121107 +
121108 +struct scatterlist *sg_next(struct scatterlist *);
121109 +struct scatterlist *sg_last(struct scatterlist *s, unsigned int);
121110 +void sg_init_table(struct scatterlist *, unsigned int);
121111 +void sg_init_one(struct scatterlist *, const void *, unsigned int);
121112 +
121113 +typedef struct scatterlist *(sg_alloc_fn)(unsigned int, gfp_t);
121114 +typedef void (sg_free_fn)(struct scatterlist *, unsigned int);
121115 +
121116 +void __sg_free_table(struct sg_table *, unsigned int, sg_free_fn *);
121117 +void sg_free_table(struct sg_table *);
121118 +int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, gfp_t,
121119 +       sg_alloc_fn *);
121120 +int sg_alloc_table(struct sg_table *, unsigned int, gfp_t);
121121 +
121122 +size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents,
121123 +      void *buf, size_t buflen);
121124 +size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents,
121125 +    void *buf, size_t buflen);
121126 +# 246 "/d/kernels/linux-2.6.27.10-clickport/include/linux/scatterlist.h"
121127 +struct sg_mapping_iter {
121128 +
121129 + struct page *page;
121130 + void *addr;
121131 + size_t length;
121132 + size_t consumed;
121133 +
121134 +
121135 + struct scatterlist *__sg;
121136 + unsigned int __nents;
121137 + unsigned int __offset;
121138 + unsigned int __flags;
121139 +};
121140 +
121141 +void sg_miter_start(struct sg_mapping_iter *miter, struct scatterlist *sgl,
121142 +      unsigned int nents, unsigned int flags);
121143 +bool sg_miter_next(struct sg_mapping_iter *miter);
121144 +void sg_miter_stop(struct sg_mapping_iter *miter);
121145 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2
121146 +
121147 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h" 1
121148 +
121149 +
121150 +
121151 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 1
121152 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/asm/swiotlb.h" 2
121153 +
121154 +
121155 +
121156 +extern dma_addr_t swiotlb_map_single(struct device *hwdev, void *ptr,
121157 +         size_t size, int dir);
121158 +extern void *swiotlb_alloc_coherent(struct device *hwdev, size_t size,
121159 +        dma_addr_t *dma_handle, gfp_t flags);
121160 +extern void swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr,
121161 +     size_t size, int dir);
121162 +extern void swiotlb_sync_single_for_cpu(struct device *hwdev,
121163 +     dma_addr_t dev_addr,
121164 +     size_t size, int dir);
121165 +extern void swiotlb_sync_single_for_device(struct device *hwdev,
121166 +        dma_addr_t dev_addr,
121167 +        size_t size, int dir);
121168 +extern void swiotlb_sync_single_range_for_cpu(struct device *hwdev,
121169 +           dma_addr_t dev_addr,
121170 +           unsigned long offset,
121171 +           size_t size, int dir);
121172 +extern void swiotlb_sync_single_range_for_device(struct device *hwdev,
121173 +       dma_addr_t dev_addr,
121174 +       unsigned long offset,
121175 +       size_t size, int dir);
121176 +extern void swiotlb_sync_sg_for_cpu(struct device *hwdev,
121177 +        struct scatterlist *sg, int nelems,
121178 +        int dir);
121179 +extern void swiotlb_sync_sg_for_device(struct device *hwdev,
121180 +           struct scatterlist *sg, int nelems,
121181 +           int dir);
121182 +extern int swiotlb_map_sg(struct device *hwdev, struct scatterlist *sg,
121183 +     int nents, int direction);
121184 +extern void swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sg,
121185 +        int nents, int direction);
121186 +extern int swiotlb_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr);
121187 +extern void swiotlb_free_coherent(struct device *hwdev, size_t size,
121188 +      void *vaddr, dma_addr_t dma_handle);
121189 +extern int swiotlb_dma_supported(struct device *hwdev, u64 mask);
121190 +extern void swiotlb_init(void);
121191 +
121192 +extern int swiotlb_force;
121193 +
121194 +
121195 +
121196 +
121197 +
121198 +
121199 +static inline __attribute__((always_inline)) void pci_swiotlb_init(void)
121200 +{
121201 +}
121202 +
121203 +
121204 +static inline __attribute__((always_inline)) void dma_mark_clean(void *addr, size_t size) {}
121205 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2
121206 +
121207 +extern dma_addr_t bad_dma_address;
121208 +extern int iommu_merge;
121209 +extern struct device fallback_dev;
121210 +extern int panic_on_overflow;
121211 +extern int force_iommu;
121212 +
121213 +struct dma_mapping_ops {
121214 + int (*mapping_error)(struct device *dev,
121215 +      dma_addr_t dma_addr);
121216 + void* (*alloc_coherent)(struct device *dev, size_t size,
121217 +    dma_addr_t *dma_handle, gfp_t gfp);
121218 + void (*free_coherent)(struct device *dev, size_t size,
121219 +    void *vaddr, dma_addr_t dma_handle);
121220 + dma_addr_t (*map_single)(struct device *hwdev, phys_addr_t ptr,
121221 +    size_t size, int direction);
121222 +
121223 + dma_addr_t (*map_simple)(struct device *hwdev, phys_addr_t ptr,
121224 +    size_t size, int direction);
121225 + void (*unmap_single)(struct device *dev, dma_addr_t addr,
121226 +    size_t size, int direction);
121227 + void (*sync_single_for_cpu)(struct device *hwdev,
121228 +    dma_addr_t dma_handle, size_t size,
121229 +    int direction);
121230 + void (*sync_single_for_device)(struct device *hwdev,
121231 +    dma_addr_t dma_handle, size_t size,
121232 +    int direction);
121233 + void (*sync_single_range_for_cpu)(struct device *hwdev,
121234 +    dma_addr_t dma_handle, unsigned long offset,
121235 +    size_t size, int direction);
121236 + void (*sync_single_range_for_device)(struct device *hwdev,
121237 +    dma_addr_t dma_handle, unsigned long offset,
121238 +    size_t size, int direction);
121239 + void (*sync_sg_for_cpu)(struct device *hwdev,
121240 +    struct scatterlist *sg, int nelems,
121241 +    int direction);
121242 + void (*sync_sg_for_device)(struct device *hwdev,
121243 +    struct scatterlist *sg, int nelems,
121244 +    int direction);
121245 + int (*map_sg)(struct device *hwdev, struct scatterlist *sg,
121246 +    int nents, int direction);
121247 + void (*unmap_sg)(struct device *hwdev,
121248 +    struct scatterlist *sg, int nents,
121249 +    int direction);
121250 + int (*dma_supported)(struct device *hwdev, u64 mask);
121251 + int is_phys;
121252 +};
121253 +
121254 +extern struct dma_mapping_ops *dma_ops;
121255 +
121256 +static inline __attribute__((always_inline)) struct dma_mapping_ops *get_dma_ops(struct device *dev)
121257 +{
121258 +
121259 + return dma_ops;
121260 +
121261 +
121262 +
121263 +
121264 +
121265 +
121266 +}
121267 +
121268 +
121269 +static inline __attribute__((always_inline)) int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
121270 +{
121271 +
121272 + return 0;
121273 +
121274 +
121275 +
121276 +
121277 +
121278 +
121279 +
121280 +}
121281 +
121282 +
121283 +
121284 +
121285 +void *dma_alloc_coherent(struct device *dev, size_t size,
121286 +      dma_addr_t *dma_handle, gfp_t flag);
121287 +
121288 +void dma_free_coherent(struct device *dev, size_t size,
121289 +    void *vaddr, dma_addr_t dma_handle);
121290 +
121291 +
121292 +extern int dma_supported(struct device *hwdev, u64 mask);
121293 +extern int dma_set_mask(struct device *dev, u64 mask);
121294 +
121295 +static inline __attribute__((always_inline)) dma_addr_t
121296 +dma_map_single(struct device *hwdev, void *ptr, size_t size,
121297 +        int direction)
121298 +{
121299 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121300 +
121301 + 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);
121302 + return ops->map_single(hwdev, virt_to_phys(ptr), size, direction);
121303 +}
121304 +
121305 +static inline __attribute__((always_inline)) void
121306 +dma_unmap_single(struct device *dev, dma_addr_t addr, size_t size,
121307 +   int direction)
121308 +{
121309 + struct dma_mapping_ops *ops = get_dma_ops(dev);
121310 +
121311 + 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);
121312 + if (ops->unmap_single)
121313 +  ops->unmap_single(dev, addr, size, direction);
121314 +}
121315 +
121316 +static inline __attribute__((always_inline)) int
121317 +dma_map_sg(struct device *hwdev, struct scatterlist *sg,
121318 +    int nents, int direction)
121319 +{
121320 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121321 +
121322 + 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);
121323 + return ops->map_sg(hwdev, sg, nents, direction);
121324 +}
121325 +
121326 +static inline __attribute__((always_inline)) void
121327 +dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
121328 +      int direction)
121329 +{
121330 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121331 +
121332 + 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);
121333 + if (ops->unmap_sg)
121334 +  ops->unmap_sg(hwdev, sg, nents, direction);
121335 +}
121336 +
121337 +static inline __attribute__((always_inline)) void
121338 +dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
121339 +   size_t size, int direction)
121340 +{
121341 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121342 +
121343 + 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);
121344 + if (ops->sync_single_for_cpu)
121345 +  ops->sync_single_for_cpu(hwdev, dma_handle, size, direction);
121346 + flush_write_buffers();
121347 +}
121348 +
121349 +static inline __attribute__((always_inline)) void
121350 +dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle,
121351 +      size_t size, int direction)
121352 +{
121353 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121354 +
121355 + 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);
121356 + if (ops->sync_single_for_device)
121357 +  ops->sync_single_for_device(hwdev, dma_handle, size, direction);
121358 + flush_write_buffers();
121359 +}
121360 +
121361 +static inline __attribute__((always_inline)) void
121362 +dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
121363 +         unsigned long offset, size_t size, int direction)
121364 +{
121365 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121366 +
121367 + 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);
121368 + if (ops->sync_single_range_for_cpu)
121369 +  ops->sync_single_range_for_cpu(hwdev, dma_handle, offset,
121370 +            size, direction);
121371 + flush_write_buffers();
121372 +}
121373 +
121374 +static inline __attribute__((always_inline)) void
121375 +dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle,
121376 +     unsigned long offset, size_t size,
121377 +     int direction)
121378 +{
121379 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121380 +
121381 + 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);
121382 + if (ops->sync_single_range_for_device)
121383 +  ops->sync_single_range_for_device(hwdev, dma_handle,
121384 +        offset, size, direction);
121385 + flush_write_buffers();
121386 +}
121387 +
121388 +static inline __attribute__((always_inline)) void
121389 +dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
121390 +      int nelems, int direction)
121391 +{
121392 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121393 +
121394 + 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);
121395 + if (ops->sync_sg_for_cpu)
121396 +  ops->sync_sg_for_cpu(hwdev, sg, nelems, direction);
121397 + flush_write_buffers();
121398 +}
121399 +
121400 +static inline __attribute__((always_inline)) void
121401 +dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
121402 +         int nelems, int direction)
121403 +{
121404 + struct dma_mapping_ops *ops = get_dma_ops(hwdev);
121405 +
121406 + 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);
121407 + if (ops->sync_sg_for_device)
121408 +  ops->sync_sg_for_device(hwdev, sg, nelems, direction);
121409 +
121410 + flush_write_buffers();
121411 +}
121412 +
121413 +static inline __attribute__((always_inline)) dma_addr_t dma_map_page(struct device *dev, struct page *page,
121414 +          size_t offset, size_t size,
121415 +          int direction)
121416 +{
121417 + struct dma_mapping_ops *ops = get_dma_ops(dev);
121418 +
121419 + 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);
121420 + return ops->map_single(dev, ((dma_addr_t)((unsigned long)((page) - mem_map) + (0UL)) << 12) + offset,
121421 +          size, direction);
121422 +}
121423 +
121424 +static inline __attribute__((always_inline)) void dma_unmap_page(struct device *dev, dma_addr_t addr,
121425 +      size_t size, int direction)
121426 +{
121427 + dma_unmap_single(dev, addr, size, direction);
121428 +}
121429 +
121430 +static inline __attribute__((always_inline)) void
121431 +dma_cache_sync(struct device *dev, void *vaddr, size_t size,
121432 + enum dma_data_direction dir)
121433 +{
121434 + flush_write_buffers();
121435 +}
121436 +
121437 +static inline __attribute__((always_inline)) int dma_get_cache_alignment(void)
121438 +{
121439 +
121440 +
121441 + return boot_cpu_data.x86_clflush_size;
121442 +}
121443 +
121444 +
121445 +
121446 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/dma-coherent.h" 1
121447 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/dma-coherent.h"
121448 +int dma_alloc_from_coherent(struct device *dev, ssize_t size,
121449 +           dma_addr_t *dma_handle, void **ret);
121450 +int dma_release_from_coherent(struct device *dev, int order, void *vaddr);
121451 +
121452 +
121453 +
121454 +
121455 +
121456 +extern int
121457 +dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
121458 +       dma_addr_t device_addr, size_t size, int flags);
121459 +
121460 +extern void
121461 +dma_release_declared_memory(struct device *dev);
121462 +
121463 +extern void *
121464 +dma_mark_declared_memory_occupied(struct device *dev,
121465 +      dma_addr_t device_addr, size_t size);
121466 +# 253 "/d/kernels/linux-2.6.27.10-clickport/include/asm/dma-mapping.h" 2
121467 +# 53 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h" 2
121468 +# 61 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h"
121469 +extern u64 dma_get_required_mask(struct device *dev);
121470 +
121471 +static inline __attribute__((always_inline)) unsigned int dma_get_max_seg_size(struct device *dev)
121472 +{
121473 + return dev->dma_parms ? dev->dma_parms->max_segment_size : 65536;
121474 +}
121475 +
121476 +static inline __attribute__((always_inline)) unsigned int dma_set_max_seg_size(struct device *dev,
121477 +      unsigned int size)
121478 +{
121479 + if (dev->dma_parms) {
121480 +  dev->dma_parms->max_segment_size = size;
121481 +  return 0;
121482 + } else
121483 +  return -5;
121484 +}
121485 +
121486 +static inline __attribute__((always_inline)) unsigned long dma_get_seg_boundary(struct device *dev)
121487 +{
121488 + return dev->dma_parms ?
121489 +  dev->dma_parms->segment_boundary_mask : 0xffffffff;
121490 +}
121491 +
121492 +static inline __attribute__((always_inline)) int dma_set_seg_boundary(struct device *dev, unsigned long mask)
121493 +{
121494 + if (dev->dma_parms) {
121495 +  dev->dma_parms->segment_boundary_mask = mask;
121496 +  return 0;
121497 + } else
121498 +  return -5;
121499 +}
121500 +# 123 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h"
121501 +extern void *dmam_alloc_coherent(struct device *dev, size_t size,
121502 +     dma_addr_t *dma_handle, gfp_t gfp);
121503 +extern void dmam_free_coherent(struct device *dev, size_t size, void *vaddr,
121504 +          dma_addr_t dma_handle);
121505 +extern void *dmam_alloc_noncoherent(struct device *dev, size_t size,
121506 +        dma_addr_t *dma_handle, gfp_t gfp);
121507 +extern void dmam_free_noncoherent(struct device *dev, size_t size, void *vaddr,
121508 +      dma_addr_t dma_handle);
121509 +
121510 +extern int dmam_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr,
121511 +     dma_addr_t device_addr, size_t size,
121512 +     int flags);
121513 +extern void dmam_release_declared_memory(struct device *dev);
121514 +# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dma-mapping.h"
121515 +struct dma_attrs;
121516 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h" 2
121517 +# 38 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121518 +enum dma_state {
121519 + DMA_RESOURCE_SUSPEND,
121520 + DMA_RESOURCE_RESUME,
121521 + DMA_RESOURCE_AVAILABLE,
121522 + DMA_RESOURCE_REMOVED,
121523 +};
121524 +
121525 +
121526 +
121527 +
121528 +
121529 +
121530 +
121531 +enum dma_state_client {
121532 + DMA_ACK,
121533 + DMA_DUP,
121534 + DMA_NAK,
121535 +};
121536 +
121537 +
121538 +
121539 +
121540 +
121541 +
121542 +typedef s32 dma_cookie_t;
121543 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121544 +enum dma_status {
121545 + DMA_SUCCESS,
121546 + DMA_IN_PROGRESS,
121547 + DMA_ERROR,
121548 +};
121549 +
121550 +
121551 +
121552 +
121553 +enum dma_transaction_type {
121554 + DMA_MEMCPY,
121555 + DMA_XOR,
121556 + DMA_PQ_XOR,
121557 + DMA_DUAL_XOR,
121558 + DMA_PQ_UPDATE,
121559 + DMA_ZERO_SUM,
121560 + DMA_PQ_ZERO_SUM,
121561 + DMA_MEMSET,
121562 + DMA_MEMCPY_CRC32C,
121563 + DMA_INTERRUPT,
121564 + DMA_SLAVE,
121565 +};
121566 +# 104 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121567 +enum dma_slave_width {
121568 + DMA_SLAVE_WIDTH_8BIT,
121569 + DMA_SLAVE_WIDTH_16BIT,
121570 + DMA_SLAVE_WIDTH_32BIT,
121571 +};
121572 +# 121 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121573 +enum dma_ctrl_flags {
121574 + DMA_PREP_INTERRUPT = (1 << 0),
121575 + DMA_CTRL_ACK = (1 << 1),
121576 + DMA_COMPL_SKIP_SRC_UNMAP = (1 << 2),
121577 + DMA_COMPL_SKIP_DEST_UNMAP = (1 << 3),
121578 +};
121579 +
121580 +
121581 +
121582 +
121583 +
121584 +typedef struct { unsigned long bits[((((DMA_SLAVE + 1)) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))]; } dma_cap_mask_t;
121585 +# 152 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121586 +struct dma_slave {
121587 + struct device *dev;
121588 + struct device *dma_dev;
121589 + dma_addr_t tx_reg;
121590 + dma_addr_t rx_reg;
121591 + enum dma_slave_width reg_width;
121592 +};
121593 +# 167 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121594 +struct dma_chan_percpu {
121595 + local_t refcount;
121596 +
121597 + unsigned long memcpy_count;
121598 + unsigned long bytes_transferred;
121599 +};
121600 +# 187 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121601 +struct dma_chan {
121602 + struct dma_device *device;
121603 + dma_cookie_t cookie;
121604 +
121605 +
121606 + int chan_id;
121607 + struct device dev;
121608 +
121609 + struct kref refcount;
121610 + int slow_ref;
121611 + struct rcu_head rcu;
121612 +
121613 + struct list_head device_node;
121614 + struct dma_chan_percpu *local;
121615 + int client_count;
121616 +};
121617 +
121618 +
121619 +
121620 +void dma_chan_cleanup(struct kref *kref);
121621 +
121622 +static inline __attribute__((always_inline)) void dma_chan_get(struct dma_chan *chan)
121623 +{
121624 + if (__builtin_expect(!!(chan->slow_ref), 0))
121625 +  kref_get(&chan->refcount);
121626 + else {
121627 +  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));
121628 +  do { } while (0);
121629 + }
121630 +}
121631 +
121632 +static inline __attribute__((always_inline)) void dma_chan_put(struct dma_chan *chan)
121633 +{
121634 + if (__builtin_expect(!!(chan->slow_ref), 0))
121635 +  kref_put(&chan->refcount, dma_chan_cleanup);
121636 + else {
121637 +  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));
121638 +  do { } while (0);
121639 + }
121640 +}
121641 +# 241 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121642 +struct dma_client;
121643 +typedef enum dma_state_client (*dma_event_callback) (struct dma_client *client,
121644 +  struct dma_chan *chan, enum dma_state state);
121645 +# 254 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121646 +struct dma_client {
121647 + dma_event_callback event_callback;
121648 + dma_cap_mask_t cap_mask;
121649 + struct dma_slave *slave;
121650 + struct list_head global_node;
121651 +};
121652 +
121653 +typedef void (*dma_async_tx_callback)(void *dma_async_param);
121654 +# 281 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121655 +struct dma_async_tx_descriptor {
121656 + dma_cookie_t cookie;
121657 + enum dma_ctrl_flags flags;
121658 + dma_addr_t phys;
121659 + struct list_head tx_list;
121660 + struct dma_chan *chan;
121661 + dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx);
121662 + dma_async_tx_callback callback;
121663 + void *callback_param;
121664 + struct dma_async_tx_descriptor *next;
121665 + struct dma_async_tx_descriptor *parent;
121666 + spinlock_t lock;
121667 +};
121668 +# 318 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121669 +struct dma_device {
121670 +
121671 + unsigned int chancnt;
121672 + struct list_head channels;
121673 + struct list_head global_node;
121674 + dma_cap_mask_t cap_mask;
121675 + int max_xor;
121676 +
121677 + struct kref refcount;
121678 + struct completion done;
121679 +
121680 + int dev_id;
121681 + struct device *dev;
121682 +
121683 + int (*device_alloc_chan_resources)(struct dma_chan *chan,
121684 +   struct dma_client *client);
121685 + void (*device_free_chan_resources)(struct dma_chan *chan);
121686 +
121687 + struct dma_async_tx_descriptor *(*device_prep_dma_memcpy)(
121688 +  struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
121689 +  size_t len, unsigned long flags);
121690 + struct dma_async_tx_descriptor *(*device_prep_dma_xor)(
121691 +  struct dma_chan *chan, dma_addr_t dest, dma_addr_t *src,
121692 +  unsigned int src_cnt, size_t len, unsigned long flags);
121693 + struct dma_async_tx_descriptor *(*device_prep_dma_zero_sum)(
121694 +  struct dma_chan *chan, dma_addr_t *src, unsigned int src_cnt,
121695 +  size_t len, u32 *result, unsigned long flags);
121696 + struct dma_async_tx_descriptor *(*device_prep_dma_memset)(
121697 +  struct dma_chan *chan, dma_addr_t dest, int value, size_t len,
121698 +  unsigned long flags);
121699 + struct dma_async_tx_descriptor *(*device_prep_dma_interrupt)(
121700 +  struct dma_chan *chan, unsigned long flags);
121701 +
121702 + struct dma_async_tx_descriptor *(*device_prep_slave_sg)(
121703 +  struct dma_chan *chan, struct scatterlist *sgl,
121704 +  unsigned int sg_len, enum dma_data_direction direction,
121705 +  unsigned long flags);
121706 + void (*device_terminate_all)(struct dma_chan *chan);
121707 +
121708 + enum dma_status (*device_is_tx_complete)(struct dma_chan *chan,
121709 +   dma_cookie_t cookie, dma_cookie_t *last,
121710 +   dma_cookie_t *used);
121711 + void (*device_issue_pending)(struct dma_chan *chan);
121712 +};
121713 +
121714 +
121715 +
121716 +void dma_async_client_register(struct dma_client *client);
121717 +void dma_async_client_unregister(struct dma_client *client);
121718 +void dma_async_client_chan_request(struct dma_client *client);
121719 +dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan,
121720 + void *dest, void *src, size_t len);
121721 +dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,
121722 + struct page *page, unsigned int offset, void *kdata, size_t len);
121723 +dma_cookie_t dma_async_memcpy_pg_to_pg(struct dma_chan *chan,
121724 + struct page *dest_pg, unsigned int dest_off, struct page *src_pg,
121725 + unsigned int src_off, size_t len);
121726 +void dma_async_tx_descriptor_init(struct dma_async_tx_descriptor *tx,
121727 + struct dma_chan *chan);
121728 +
121729 +static inline __attribute__((always_inline)) void async_tx_ack(struct dma_async_tx_descriptor *tx)
121730 +{
121731 + tx->flags = (enum dma_ctrl_flags) (tx->flags | DMA_CTRL_ACK);
121732 +}
121733 +
121734 +static inline __attribute__((always_inline)) bool async_tx_test_ack(struct dma_async_tx_descriptor *tx)
121735 +{
121736 + return (tx->flags & DMA_CTRL_ACK) == DMA_CTRL_ACK;
121737 +}
121738 +
121739 +
121740 +static inline __attribute__((always_inline)) int __first_dma_cap(const dma_cap_mask_t *srcp)
121741 +{
121742 + return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_first_bit(srcp->bits, (DMA_SLAVE + 1))); __min1 < __min2 ? __min1: __min2; });
121743 +
121744 +}
121745 +
121746 +
121747 +static inline __attribute__((always_inline)) int __next_dma_cap(int n, const dma_cap_mask_t *srcp)
121748 +{
121749 + return ({ int __min1 = ((DMA_SLAVE + 1)); int __min2 = (find_next_bit(srcp->bits, (DMA_SLAVE + 1), n+1)); __min1 < __min2 ? __min1: __min2; });
121750 +
121751 +}
121752 +
121753 +
121754 +static inline __attribute__((always_inline)) void
121755 +__dma_cap_set(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp)
121756 +{
121757 + set_bit(tx_type, dstp->bits);
121758 +}
121759 +
121760 +
121761 +static inline __attribute__((always_inline)) int
121762 +__dma_has_cap(enum dma_transaction_type tx_type, dma_cap_mask_t *srcp)
121763 +{
121764 + return (__builtin_constant_p((tx_type)) ? constant_test_bit((tx_type), (srcp->bits)) : variable_test_bit((tx_type), (srcp->bits)));
121765 +}
121766 +# 428 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121767 +static inline __attribute__((always_inline)) void dma_async_issue_pending(struct dma_chan *chan)
121768 +{
121769 + chan->device->device_issue_pending(chan);
121770 +}
121771 +# 446 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121772 +static inline __attribute__((always_inline)) enum dma_status dma_async_is_tx_complete(struct dma_chan *chan,
121773 + dma_cookie_t cookie, dma_cookie_t *last, dma_cookie_t *used)
121774 +{
121775 + return chan->device->device_is_tx_complete(chan, cookie, last, used);
121776 +}
121777 +# 464 "/d/kernels/linux-2.6.27.10-clickport/include/linux/dmaengine.h"
121778 +static inline __attribute__((always_inline)) enum dma_status dma_async_is_complete(dma_cookie_t cookie,
121779 +   dma_cookie_t last_complete, dma_cookie_t last_used)
121780 +{
121781 + if (last_complete <= last_used) {
121782 +  if ((cookie <= last_complete) || (cookie > last_used))
121783 +   return DMA_SUCCESS;
121784 + } else {
121785 +  if ((cookie <= last_complete) && (cookie > last_used))
121786 +   return DMA_SUCCESS;
121787 + }
121788 + return DMA_IN_PROGRESS;
121789 +}
121790 +
121791 +enum dma_status dma_sync_wait(struct dma_chan *chan, dma_cookie_t cookie);
121792 +
121793 +
121794 +
121795 +int dma_async_device_register(struct dma_device *device);
121796 +void dma_async_device_unregister(struct dma_device *device);
121797 +
121798 +
121799 +
121800 +struct dma_page_list {
121801 + char *base_address;
121802 + int nr_pages;
121803 + struct page **pages;
121804 +};
121805 +
121806 +struct dma_pinned_list {
121807 + int nr_iovecs;
121808 + struct dma_page_list page_list[0];
121809 +};
121810 +
121811 +struct dma_pinned_list *dma_pin_iovec_pages(struct iovec *iov, size_t len);
121812 +void dma_unpin_iovec_pages(struct dma_pinned_list* pinned_list);
121813 +
121814 +dma_cookie_t dma_memcpy_to_iovec(struct dma_chan *chan, struct iovec *iov,
121815 + struct dma_pinned_list *pinned_list, unsigned char *kdata, size_t len);
121816 +dma_cookie_t dma_memcpy_pg_to_iovec(struct dma_chan *chan, struct iovec *iov,
121817 + struct dma_pinned_list *pinned_list, struct page *page,
121818 + unsigned int offset, size_t len);
121819 +# 30 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
121820 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" 1
121821 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
121822 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" 1
121823 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
121824 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" 1
121825 +
121826 +
121827 +
121828 +
121829 +
121830 +
121831 +
121832 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" 1
121833 +# 100 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h"
121834 +struct timex {
121835 + unsigned int modes;
121836 + long offset;
121837 + long freq;
121838 + long maxerror;
121839 + long esterror;
121840 + int status;
121841 + long constant;
121842 + long precision;
121843 + long tolerance;
121844 +
121845 +
121846 + struct timeval time;
121847 + long tick;
121848 +
121849 + long ppsfreq;
121850 + long jitter;
121851 + int shift;
121852 + long stabil;
121853 + long jitcnt;
121854 + long calcnt;
121855 + long errcnt;
121856 + long stbcnt;
121857 +
121858 + int tai;
121859 +
121860 + int :32; int :32; int :32; int :32;
121861 + int :32; int :32; int :32; int :32;
121862 + int :32; int :32; int :32;
121863 +};
121864 +# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h"
121865 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/timex.h" 1
121866 +
121867 +
121868 +
121869 +
121870 +
121871 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h" 1
121872 +# 15 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h"
121873 +typedef unsigned long long cycles_t;
121874 +
121875 +extern unsigned int cpu_khz;
121876 +extern unsigned int tsc_khz;
121877 +
121878 +extern void disable_TSC(void);
121879 +
121880 +static inline __attribute__((always_inline)) cycles_t get_cycles(void)
121881 +{
121882 + unsigned long long ret = 0;
121883 +
121884 +
121885 +
121886 +
121887 +
121888 + (ret = paravirt_read_tsc());
121889 +
121890 + return ret;
121891 +}
121892 +
121893 +static inline __attribute__((always_inline)) __attribute__((always_inline)) cycles_t vget_cycles(void)
121894 +{
121895 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/asm/tsc.h"
121896 + return (cycles_t)__native_read_tsc();
121897 +}
121898 +
121899 +extern void tsc_init(void);
121900 +extern void mark_tsc_unstable(char *reason);
121901 +extern int unsynchronized_tsc(void);
121902 +int check_tsc_unstable(void);
121903 +
121904 +
121905 +
121906 +
121907 +
121908 +extern void check_tsc_sync_source(int cpu);
121909 +extern void check_tsc_sync_target(void);
121910 +
121911 +extern int notsc_setup(char *);
121912 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/asm/timex.h" 2
121913 +# 196 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h" 2
121914 +
121915 +
121916 +
121917 +
121918 +
121919 +
121920 +extern unsigned long tick_usec;
121921 +extern unsigned long tick_nsec;
121922 +extern int tickadj;
121923 +
121924 +
121925 +
121926 +
121927 +extern int time_status;
121928 +extern long time_maxerror;
121929 +extern long time_esterror;
121930 +
121931 +extern long time_adjust;
121932 +
121933 +extern void ntp_init(void);
121934 +extern void ntp_clear(void);
121935 +
121936 +
121937 +
121938 +
121939 +
121940 +static inline __attribute__((always_inline)) int ntp_synced(void)
121941 +{
121942 + return !(time_status & 0x0040);
121943 +}
121944 +# 244 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timex.h"
121945 +extern u64 tick_length;
121946 +
121947 +extern void second_overflow(void);
121948 +extern void update_ntp_one_tick(void);
121949 +extern int do_adjtimex(struct timex *);
121950 +
121951 +
121952 +
121953 +
121954 +int read_current_timer(unsigned long *timer_val);
121955 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h" 2
121956 +# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h"
121957 +extern u64 __attribute__((section(".data"))) jiffies_64;
121958 +extern unsigned long volatile __attribute__((section(".data"))) jiffies;
121959 +
121960 +
121961 +u64 get_jiffies_64(void);
121962 +# 173 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h"
121963 +extern unsigned long preset_lpj;
121964 +# 286 "/d/kernels/linux-2.6.27.10-clickport/include/linux/jiffies.h"
121965 +extern unsigned int jiffies_to_msecs(const unsigned long j);
121966 +extern unsigned int jiffies_to_usecs(const unsigned long j);
121967 +extern unsigned long msecs_to_jiffies(const unsigned int m);
121968 +extern unsigned long usecs_to_jiffies(const unsigned int u);
121969 +extern unsigned long timespec_to_jiffies(const struct timespec *value);
121970 +extern void jiffies_to_timespec(const unsigned long jiffies,
121971 +    struct timespec *value);
121972 +extern unsigned long timeval_to_jiffies(const struct timeval *value);
121973 +extern void jiffies_to_timeval(const unsigned long jiffies,
121974 +          struct timeval *value);
121975 +extern clock_t jiffies_to_clock_t(long x);
121976 +extern unsigned long clock_t_to_jiffies(unsigned long x);
121977 +extern u64 jiffies_64_to_clock_t(u64 x);
121978 +extern u64 nsec_to_clock_t(u64 x);
121979 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h" 2
121980 +# 46 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
121981 +union ktime {
121982 + s64 tv64;
121983 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
121984 +};
121985 +
121986 +typedef union ktime ktime_t;
121987 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
121988 +static inline __attribute__((always_inline)) ktime_t ktime_set(const long secs, const unsigned long nsecs)
121989 +{
121990 +
121991 +
121992 +
121993 +
121994 + return ({ ktime_t __kt; __kt.tv64 = ((s64)secs * 1000000000L + (s64)nsecs); __kt; });
121995 +}
121996 +# 124 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
121997 +static inline __attribute__((always_inline)) ktime_t timespec_to_ktime(struct timespec ts)
121998 +{
121999 + return ktime_set(ts.tv_sec, ts.tv_nsec);
122000 +}
122001 +
122002 +
122003 +static inline __attribute__((always_inline)) ktime_t timeval_to_ktime(struct timeval tv)
122004 +{
122005 + return ktime_set(tv.tv_sec, tv.tv_usec * 1000L);
122006 +}
122007 +# 306 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
122008 +static inline __attribute__((always_inline)) int ktime_equal(const ktime_t cmp1, const ktime_t cmp2)
122009 +{
122010 + return cmp1.tv64 == cmp2.tv64;
122011 +}
122012 +
122013 +static inline __attribute__((always_inline)) s64 ktime_to_us(const ktime_t kt)
122014 +{
122015 + struct timeval tv = ns_to_timeval((kt).tv64);
122016 + return (s64) tv.tv_sec * 1000000L + tv.tv_usec;
122017 +}
122018 +
122019 +static inline __attribute__((always_inline)) s64 ktime_us_delta(const ktime_t later, const ktime_t earlier)
122020 +{
122021 +       return ktime_to_us(({ ktime_t __kt; __kt.tv64 = ((later).tv64 - (earlier).tv64); __kt; }));
122022 +}
122023 +
122024 +static inline __attribute__((always_inline)) ktime_t ktime_add_us(const ktime_t kt, const u64 usec)
122025 +{
122026 + return ({ ktime_t __kt; __kt.tv64 = ((kt).tv64 + (usec * 1000)); __kt; });
122027 +}
122028 +
122029 +static inline __attribute__((always_inline)) ktime_t ktime_sub_us(const ktime_t kt, const u64 usec)
122030 +{
122031 + return ({ktime_t duh; duh.tv64 = (kt).tv64 - (usec * 1000); duh; });
122032 +}
122033 +
122034 +extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs);
122035 +# 344 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ktime.h"
122036 +extern void ktime_get_ts(struct timespec *ts);
122037 +
122038 +
122039 +
122040 +
122041 +static inline __attribute__((always_inline)) ktime_t ns_to_ktime(u64 ns)
122042 +{
122043 + static ktime_t ktime_zero;
122044 +    ktime_zero = ({ktime_t duh; duh.tv64 = 0;duh;});
122045 + return ({ ktime_t __kt; __kt.tv64 = ((ktime_zero).tv64 + (ns)); __kt; });
122046 +}
122047 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h" 2
122048 +
122049 +
122050 +
122051 +
122052 +struct hrtimer_clock_base;
122053 +struct hrtimer_cpu_base;
122054 +
122055 +
122056 +
122057 +
122058 +enum hrtimer_mode {
122059 + HRTIMER_MODE_ABS,
122060 + HRTIMER_MODE_REL,
122061 +};
122062 +
122063 +
122064 +
122065 +
122066 +enum hrtimer_restart {
122067 + HRTIMER_NORESTART,
122068 + HRTIMER_RESTART,
122069 +};
122070 +# 60 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122071 +enum hrtimer_cb_mode {
122072 + HRTIMER_CB_SOFTIRQ,
122073 + HRTIMER_CB_IRQSAFE,
122074 + HRTIMER_CB_IRQSAFE_NO_RESTART,
122075 + HRTIMER_CB_IRQSAFE_PERCPU,
122076 + HRTIMER_CB_IRQSAFE_UNLOCKED,
122077 +};
122078 +# 122 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122079 +struct hrtimer {
122080 + struct rb_node node;
122081 + ktime_t expires;
122082 + enum hrtimer_restart (*function)(struct hrtimer *);
122083 + struct hrtimer_clock_base *base;
122084 + unsigned long state;
122085 + enum hrtimer_cb_mode cb_mode;
122086 + struct list_head cb_entry;
122087 +
122088 + void *start_site;
122089 + char start_comm[16];
122090 + int start_pid;
122091 +
122092 +};
122093 +# 144 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122094 +struct hrtimer_sleeper {
122095 + struct hrtimer timer;
122096 + struct task_struct *task;
122097 +};
122098 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122099 +struct hrtimer_clock_base {
122100 + struct hrtimer_cpu_base *cpu_base;
122101 + clockid_t index;
122102 + struct rb_root active;
122103 + struct rb_node *first;
122104 + ktime_t resolution;
122105 + ktime_t (*get_time)(void);
122106 + ktime_t (*get_softirq_time)(void);
122107 + ktime_t softirq_time;
122108 +
122109 + ktime_t offset;
122110 + int (*reprogram)(struct hrtimer *t,
122111 +          struct hrtimer_clock_base *b,
122112 +          ktime_t n);
122113 +
122114 +};
122115 +# 199 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122116 +struct hrtimer_cpu_base {
122117 + spinlock_t lock;
122118 + struct hrtimer_clock_base clock_base[2];
122119 + struct list_head cb_pending;
122120 +
122121 + ktime_t expires_next;
122122 + int hres_active;
122123 + unsigned long nr_events;
122124 +
122125 +};
122126 +
122127 +
122128 +struct clock_event_device;
122129 +
122130 +extern void clock_was_set(void);
122131 +extern void hres_timers_resume(void);
122132 +extern void hrtimer_interrupt(struct clock_event_device *dev);
122133 +
122134 +
122135 +
122136 +
122137 +static inline __attribute__((always_inline)) ktime_t hrtimer_cb_get_time(struct hrtimer *timer)
122138 +{
122139 + return timer->base->get_time();
122140 +}
122141 +
122142 +static inline __attribute__((always_inline)) int hrtimer_is_hres_active(struct hrtimer *timer)
122143 +{
122144 + return timer->base->cpu_base->hres_active;
122145 +}
122146 +# 270 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hrtimer.h"
122147 +extern ktime_t ktime_get(void);
122148 +extern ktime_t ktime_get_real(void);
122149 +
122150 +
122151 +
122152 +
122153 +extern void hrtimer_init(struct hrtimer *timer, clockid_t which_clock,
122154 +    enum hrtimer_mode mode);
122155 +
122156 +
122157 +
122158 +
122159 +
122160 +
122161 +
122162 +static inline __attribute__((always_inline)) void hrtimer_init_on_stack(struct hrtimer *timer,
122163 +      clockid_t which_clock,
122164 +      enum hrtimer_mode mode)
122165 +{
122166 + hrtimer_init(timer, which_clock, mode);
122167 +}
122168 +static inline __attribute__((always_inline)) void destroy_hrtimer_on_stack(struct hrtimer *timer) { }
122169 +
122170 +
122171 +
122172 +extern int hrtimer_start(struct hrtimer *timer, ktime_t tim,
122173 +    const enum hrtimer_mode mode);
122174 +extern int hrtimer_cancel(struct hrtimer *timer);
122175 +extern int hrtimer_try_to_cancel(struct hrtimer *timer);
122176 +
122177 +static inline __attribute__((always_inline)) int hrtimer_restart(struct hrtimer *timer)
122178 +{
122179 + return hrtimer_start(timer, timer->expires, HRTIMER_MODE_ABS);
122180 +}
122181 +
122182 +
122183 +extern ktime_t hrtimer_get_remaining(const struct hrtimer *timer);
122184 +extern int hrtimer_get_res(const clockid_t which_clock, struct timespec *tp);
122185 +
122186 +extern ktime_t hrtimer_get_next_event(void);
122187 +
122188 +
122189 +
122190 +
122191 +
122192 +static inline __attribute__((always_inline)) int hrtimer_active(const struct hrtimer *timer)
122193 +{
122194 + return timer->state != 0x00;
122195 +}
122196 +
122197 +
122198 +
122199 +
122200 +static inline __attribute__((always_inline)) int hrtimer_is_queued(struct hrtimer *timer)
122201 +{
122202 + return timer->state &
122203 +  (0x01 | 0x04);
122204 +}
122205 +
122206 +
122207 +
122208 +
122209 +
122210 +static inline __attribute__((always_inline)) int hrtimer_callback_running(struct hrtimer *timer)
122211 +{
122212 + return timer->state & 0x02;
122213 +}
122214 +
122215 +
122216 +extern u64
122217 +hrtimer_forward(struct hrtimer *timer, ktime_t now, ktime_t interval);
122218 +
122219 +
122220 +static inline __attribute__((always_inline)) u64 hrtimer_forward_now(struct hrtimer *timer,
122221 +          ktime_t interval)
122222 +{
122223 + return hrtimer_forward(timer, timer->base->get_time(), interval);
122224 +}
122225 +
122226 +
122227 +extern long hrtimer_nanosleep(struct timespec *rqtp,
122228 +         struct timespec *rmtp,
122229 +         const enum hrtimer_mode mode,
122230 +         const clockid_t clockid);
122231 +extern long hrtimer_nanosleep_restart(struct restart_block *restart_block);
122232 +
122233 +extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl,
122234 +     struct task_struct *tsk);
122235 +
122236 +
122237 +extern void hrtimer_run_queues(void);
122238 +extern void hrtimer_run_pending(void);
122239 +
122240 +
122241 +extern void __attribute__ ((__section__(".init.text"))) hrtimers_init(void);
122242 +
122243 +
122244 +extern u64 ktime_divns(const ktime_t kt, s64 div);
122245 +
122246 +
122247 +
122248 +
122249 +
122250 +extern void sysrq_timer_list_show(void);
122251 +
122252 +
122253 +
122254 +
122255 +
122256 +
122257 +extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
122258 +         void *timerf, char *comm,
122259 +         unsigned int timer_flag);
122260 +
122261 +static inline __attribute__((always_inline)) void timer_stats_account_hrtimer(struct hrtimer *timer)
122262 +{
122263 + timer_stats_update_stats(timer, timer->start_pid, timer->start_site,
122264 +     (void *) timer->function, timer->start_comm, 0);
122265 +}
122266 +
122267 +extern void __timer_stats_hrtimer_set_start_info(struct hrtimer *timer,
122268 +       void *addr);
122269 +
122270 +static inline __attribute__((always_inline)) void timer_stats_hrtimer_set_start_info(struct hrtimer *timer)
122271 +{
122272 + __timer_stats_hrtimer_set_start_info(timer, __builtin_return_address(0));
122273 +}
122274 +
122275 +static inline __attribute__((always_inline)) void timer_stats_hrtimer_clear_start_info(struct hrtimer *timer)
122276 +{
122277 + timer->start_site = 0;
122278 +}
122279 +# 31 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h" 2
122280 +# 96 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122281 +struct net_device;
122282 +struct scatterlist;
122283 +struct pipe_inode_info;
122284 +
122285 +
122286 +struct nf_conntrack {
122287 + atomic_t use;
122288 +};
122289 +
122290 +
122291 +
122292 +struct nf_bridge_info {
122293 + atomic_t use;
122294 + struct net_device *physindev;
122295 + struct net_device *physoutdev;
122296 + unsigned int mask;
122297 + unsigned long data[32 / sizeof(unsigned long)];
122298 +};
122299 +
122300 +
122301 +struct sk_buff_head {
122302 +
122303 + struct sk_buff *next;
122304 + struct sk_buff *prev;
122305 +
122306 + __u32 qlen;
122307 + spinlock_t lock;
122308 +};
122309 +
122310 +struct sk_buff;
122311 +
122312 +
122313 +
122314 +
122315 +typedef struct skb_frag_struct skb_frag_t;
122316 +
122317 +struct skb_frag_struct {
122318 + struct page *page;
122319 + __u32 page_offset;
122320 + __u32 size;
122321 +};
122322 +
122323 +
122324 +
122325 +
122326 +struct skb_shared_info {
122327 + atomic_t dataref;
122328 + unsigned short nr_frags;
122329 + unsigned short gso_size;
122330 +
122331 + unsigned short gso_segs;
122332 + unsigned short gso_type;
122333 + __be32 ip6_frag_id;
122334 + struct sk_buff *frag_list;
122335 + skb_frag_t frags[(65536/((1UL) << 12) + 2)];
122336 +};
122337 +# 168 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122338 +enum {
122339 + SKB_FCLONE_UNAVAILABLE,
122340 + SKB_FCLONE_ORIG,
122341 + SKB_FCLONE_CLONE,
122342 +};
122343 +
122344 +enum {
122345 + SKB_GSO_TCPV4 = 1 << 0,
122346 + SKB_GSO_UDP = 1 << 1,
122347 +
122348 +
122349 + SKB_GSO_DODGY = 1 << 2,
122350 +
122351 +
122352 + SKB_GSO_TCP_ECN = 1 << 3,
122353 +
122354 + SKB_GSO_TCPV6 = 1 << 4,
122355 +};
122356 +# 194 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122357 +typedef unsigned char *sk_buff_data_t;
122358 +# 259 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122359 +struct sk_buff {
122360 +
122361 + struct sk_buff *next;
122362 + struct sk_buff *prev;
122363 +
122364 + struct sock *sk;
122365 + ktime_t tstamp;
122366 + struct net_device *dev;
122367 +
122368 + union {
122369 +  struct dst_entry *dst;
122370 +  struct rtable *rtable;
122371 + };
122372 + struct sec_path *sp;
122373 +
122374 +
122375 +
122376 +
122377 +
122378 +
122379 +
122380 + char cb[48];
122381 +
122382 + unsigned int len,
122383 +    data_len;
122384 + __u16 mac_len,
122385 +    hdr_len;
122386 + union {
122387 +  __wsum csum;
122388 +  struct {
122389 +   __u16 csum_start;
122390 +   __u16 csum_offset;
122391 +  };
122392 + };
122393 + __u32 priority;
122394 + __u8 local_df:1,
122395 +    cloned:1,
122396 +    ip_summed:2,
122397 +    nohdr:1,
122398 +    nfctinfo:3;
122399 + __u8 pkt_type:3,
122400 +    fclone:2,
122401 +    ipvs_property:1,
122402 +    peeked:1,
122403 +    nf_trace:1;
122404 + __be16 protocol;
122405 +
122406 + void (*destructor)(struct sk_buff *skb);
122407 +
122408 + struct nf_conntrack *nfct;
122409 + struct sk_buff *nfct_reasm;
122410 +
122411 +
122412 + struct nf_bridge_info *nf_bridge;
122413 +
122414 +
122415 + int iif;
122416 + __u16 queue_mapping;
122417 +
122418 + __u16 tc_index;
122419 +
122420 + __u16 tc_verd;
122421 +
122422 +
122423 +
122424 + __u8 ndisc_nodetype:2;
122425 +
122426 +
122427 + __u8 do_not_encrypt:1;
122428 +
122429 +
122430 +
122431 +
122432 +
122433 +
122434 +
122435 + __u32 secmark;
122436 +
122437 +
122438 + __u32 mark;
122439 +
122440 + __u16 vlan_tci;
122441 +
122442 + sk_buff_data_t transport_header;
122443 + sk_buff_data_t network_header;
122444 + sk_buff_data_t mac_header;
122445 +
122446 + sk_buff_data_t tail;
122447 + sk_buff_data_t end;
122448 + unsigned char *head,
122449 +    *data;
122450 + unsigned int truesize;
122451 + atomic_t users;
122452 +};
122453 +# 362 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122454 +extern void kfree_skb(struct sk_buff *skb);
122455 +extern void __kfree_skb(struct sk_buff *skb);
122456 +extern struct sk_buff *__alloc_skb(unsigned int size,
122457 +       gfp_t priority, int fclone, int node);
122458 +static inline __attribute__((always_inline)) struct sk_buff *alloc_skb(unsigned int size,
122459 +     gfp_t priority)
122460 +{
122461 + return __alloc_skb(size, priority, 0, -1);
122462 +}
122463 +
122464 +static inline __attribute__((always_inline)) struct sk_buff *alloc_skb_fclone(unsigned int size,
122465 +            gfp_t priority)
122466 +{
122467 + return __alloc_skb(size, priority, 1, -1);
122468 +}
122469 +
122470 +extern struct sk_buff *skb_morph(struct sk_buff *dst, struct sk_buff *src);
122471 +extern struct sk_buff *skb_clone(struct sk_buff *skb,
122472 +     gfp_t priority);
122473 +extern struct sk_buff *skb_copy(const struct sk_buff *skb,
122474 +    gfp_t priority);
122475 +extern struct sk_buff *pskb_copy(struct sk_buff *skb,
122476 +     gfp_t gfp_mask);
122477 +extern struct sk_buff *skb_recycle(struct sk_buff *skb);
122478 +extern int pskb_expand_head(struct sk_buff *skb,
122479 +     int nhead, int ntail,
122480 +     gfp_t gfp_mask);
122481 +extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb,
122482 +         unsigned int headroom);
122483 +extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb,
122484 +           int newheadroom, int newtailroom,
122485 +           gfp_t priority);
122486 +extern int skb_to_sgvec(struct sk_buff *skb,
122487 +        struct scatterlist *sg, int offset,
122488 +        int len);
122489 +extern int skb_cow_data(struct sk_buff *skb, int tailbits,
122490 +        struct sk_buff **trailer);
122491 +extern int skb_pad(struct sk_buff *skb, int pad);
122492 +
122493 +extern void skb_over_panic(struct sk_buff *skb, int len,
122494 +         void *here);
122495 +extern void skb_under_panic(struct sk_buff *skb, int len,
122496 +          void *here);
122497 +extern void skb_truesize_bug(struct sk_buff *skb);
122498 +
122499 +static inline __attribute__((always_inline)) void skb_truesize_check(struct sk_buff *skb)
122500 +{
122501 + int len = sizeof(struct sk_buff) + skb->len;
122502 +
122503 + if (__builtin_expect(!!((int)skb->truesize < len), 0))
122504 +  skb_truesize_bug(skb);
122505 +}
122506 +
122507 +extern int skb_append_datato_frags(struct sock *sk, struct sk_buff *skb,
122508 +   int getfrag(void *from, char *to, int offset,
122509 +   int len,int odd, struct sk_buff *skb),
122510 +   void *from, int length);
122511 +
122512 +struct skb_seq_state
122513 +{
122514 + __u32 lower_offset;
122515 + __u32 upper_offset;
122516 + __u32 frag_idx;
122517 + __u32 stepped_offset;
122518 + struct sk_buff *root_skb;
122519 + struct sk_buff *cur_skb;
122520 + __u8 *frag_data;
122521 +};
122522 +
122523 +extern void skb_prepare_seq_read(struct sk_buff *skb,
122524 +        unsigned int from, unsigned int to,
122525 +        struct skb_seq_state *st);
122526 +extern unsigned int skb_seq_read(unsigned int consumed, const u8 **data,
122527 +       struct skb_seq_state *st);
122528 +extern void skb_abort_seq_read(struct skb_seq_state *st);
122529 +
122530 +extern unsigned int skb_find_text(struct sk_buff *skb, unsigned int from,
122531 +        unsigned int to, struct ts_config *config,
122532 +        struct ts_state *state);
122533 +
122534 +
122535 +
122536 +
122537 +
122538 +
122539 +
122540 +static inline __attribute__((always_inline)) unsigned char *skb_end_pointer(const struct sk_buff *skb)
122541 +{
122542 + return skb->end;
122543 +}
122544 +# 463 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122545 +static inline __attribute__((always_inline)) int skb_queue_empty(const struct sk_buff_head *list)
122546 +{
122547 + return list->next == (struct sk_buff *)list;
122548 +}
122549 +# 475 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122550 +static inline __attribute__((always_inline)) struct sk_buff *skb_get(struct sk_buff *skb)
122551 +{
122552 + atomic_inc(&skb->users);
122553 + return skb;
122554 +}
122555 +# 494 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122556 +static inline __attribute__((always_inline)) int skb_cloned(const struct sk_buff *skb)
122557 +{
122558 + return skb->cloned &&
122559 +        (((&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref)->counter) & ((1 << 16) - 1)) != 1;
122560 +}
122561 +# 507 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122562 +static inline __attribute__((always_inline)) int skb_header_cloned(const struct sk_buff *skb)
122563 +{
122564 + int dataref;
122565 +
122566 + if (!skb->cloned)
122567 +  return 0;
122568 +
122569 + dataref = ((&((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref)->counter);
122570 + dataref = (dataref & ((1 << 16) - 1)) - (dataref >> 16);
122571 + return dataref != 1;
122572 +}
122573 +# 527 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122574 +static inline __attribute__((always_inline)) void skb_header_release(struct sk_buff *skb)
122575 +{
122576 + 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);
122577 + skb->nohdr = 1;
122578 + atomic_add(1 << 16, &((struct skb_shared_info *)(skb_end_pointer(skb)))->dataref);
122579 +}
122580 +# 541 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122581 +static inline __attribute__((always_inline)) int skb_shared(const struct sk_buff *skb)
122582 +{
122583 + return ((&skb->users)->counter) != 1;
122584 +}
122585 +# 559 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122586 +static inline __attribute__((always_inline)) struct sk_buff *skb_share_check(struct sk_buff *skb,
122587 +           gfp_t pri)
122588 +{
122589 + 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);
122590 + if (skb_shared(skb)) {
122591 +  struct sk_buff *nskb = skb_clone(skb, pri);
122592 +  kfree_skb(skb);
122593 +  skb = nskb;
122594 + }
122595 + return skb;
122596 +}
122597 +# 591 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122598 +static inline __attribute__((always_inline)) struct sk_buff *skb_unshare(struct sk_buff *skb,
122599 +       gfp_t pri)
122600 +{
122601 + 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);
122602 + if (skb_cloned(skb)) {
122603 +  struct sk_buff *nskb = skb_copy(skb, pri);
122604 +  kfree_skb(skb);
122605 +  skb = nskb;
122606 + }
122607 + return skb;
122608 +}
122609 +# 616 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122610 +static inline __attribute__((always_inline)) struct sk_buff *skb_peek(struct sk_buff_head *list_)
122611 +{
122612 + struct sk_buff *list = ((struct sk_buff *)list_)->next;
122613 + if (list == (struct sk_buff *)list_)
122614 +  list = 0;
122615 + return list;
122616 +}
122617 +# 637 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122618 +static inline __attribute__((always_inline)) struct sk_buff *skb_peek_tail(struct sk_buff_head *list_)
122619 +{
122620 + struct sk_buff *list = ((struct sk_buff *)list_)->prev;
122621 + if (list == (struct sk_buff *)list_)
122622 +  list = 0;
122623 + return list;
122624 +}
122625 +
122626 +
122627 +
122628 +
122629 +
122630 +
122631 +
122632 +static inline __attribute__((always_inline)) __u32 skb_queue_len(const struct sk_buff_head *list_)
122633 +{
122634 + return list_->qlen;
122635 +}
122636 +# 664 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122637 +static inline __attribute__((always_inline)) void skb_queue_head_init(struct sk_buff_head *list)
122638 +{
122639 + do { *(&list->lock) = (spinlock_t) { ({raw_spinlock_t duh; duh.slock=0;duh;}), }; } while (0);
122640 + list->prev = list->next = (struct sk_buff *)list;
122641 + list->qlen = 0;
122642 +}
122643 +
122644 +static inline __attribute__((always_inline)) void skb_queue_head_init_class(struct sk_buff_head *list,
122645 +  struct lock_class_key *xxx_class)
122646 +{
122647 + skb_queue_head_init(list);
122648 + do { (void)(xxx_class); } while (0);
122649 +}
122650 +
122651 +
122652 +
122653 +
122654 +
122655 +
122656 +
122657 +extern void skb_insert(struct sk_buff *old, struct sk_buff *newsk, struct sk_buff_head *list);
122658 +static inline __attribute__((always_inline)) void __skb_insert(struct sk_buff *newsk,
122659 +    struct sk_buff *prev, struct sk_buff *next,
122660 +    struct sk_buff_head *list)
122661 +{
122662 + newsk->next = next;
122663 + newsk->prev = prev;
122664 + next->prev = prev->next = newsk;
122665 + list->qlen++;
122666 +}
122667 +# 706 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122668 +static inline __attribute__((always_inline)) void __skb_queue_after(struct sk_buff_head *list,
122669 +         struct sk_buff *prev,
122670 +         struct sk_buff *newsk)
122671 +{
122672 + __skb_insert(newsk, prev, prev->next, list);
122673 +}
122674 +
122675 +extern void skb_append(struct sk_buff *old, struct sk_buff *newsk,
122676 +         struct sk_buff_head *list);
122677 +
122678 +static inline __attribute__((always_inline)) void __skb_queue_before(struct sk_buff_head *list,
122679 +          struct sk_buff *next,
122680 +          struct sk_buff *newsk)
122681 +{
122682 + __skb_insert(newsk, next->prev, next, list);
122683 +}
122684 +# 733 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122685 +extern void skb_queue_head(struct sk_buff_head *list, struct sk_buff *newsk);
122686 +static inline __attribute__((always_inline)) void __skb_queue_head(struct sk_buff_head *list,
122687 +        struct sk_buff *newsk)
122688 +{
122689 + __skb_queue_after(list, (struct sk_buff *)list, newsk);
122690 +}
122691 +# 750 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122692 +extern void skb_queue_tail(struct sk_buff_head *list, struct sk_buff *newsk);
122693 +static inline __attribute__((always_inline)) void __skb_queue_tail(struct sk_buff_head *list,
122694 +       struct sk_buff *newsk)
122695 +{
122696 + __skb_queue_before(list, (struct sk_buff *)list, newsk);
122697 +}
122698 +
122699 +
122700 +
122701 +
122702 +
122703 +extern void skb_unlink(struct sk_buff *skb, struct sk_buff_head *list);
122704 +static inline __attribute__((always_inline)) void __skb_unlink(struct sk_buff *skb, struct sk_buff_head *list)
122705 +{
122706 + struct sk_buff *next, *prev;
122707 +
122708 + list->qlen--;
122709 + next = skb->next;
122710 + prev = skb->prev;
122711 + skb->next = skb->prev = 0;
122712 + next->prev = prev;
122713 + prev->next = next;
122714 +}
122715 +# 782 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122716 +extern struct sk_buff *skb_dequeue(struct sk_buff_head *list);
122717 +static inline __attribute__((always_inline)) struct sk_buff *__skb_dequeue(struct sk_buff_head *list)
122718 +{
122719 + struct sk_buff *skb = skb_peek(list);
122720 + if (skb)
122721 +  __skb_unlink(skb, list);
122722 + return skb;
122723 +}
122724 +# 799 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122725 +extern struct sk_buff *skb_dequeue_tail(struct sk_buff_head *list);
122726 +static inline __attribute__((always_inline)) struct sk_buff *__skb_dequeue_tail(struct sk_buff_head *list)
122727 +{
122728 + struct sk_buff *skb = skb_peek_tail(list);
122729 + if (skb)
122730 +  __skb_unlink(skb, list);
122731 + return skb;
122732 +}
122733 +
122734 +
122735 +static inline __attribute__((always_inline)) int skb_is_nonlinear(const struct sk_buff *skb)
122736 +{
122737 + return skb->data_len;
122738 +}
122739 +
122740 +static inline __attribute__((always_inline)) unsigned int skb_headlen(const struct sk_buff *skb)
122741 +{
122742 + return skb->len - skb->data_len;
122743 +}
122744 +
122745 +static inline __attribute__((always_inline)) int skb_pagelen(const struct sk_buff *skb)
122746 +{
122747 + int i, len = 0;
122748 +
122749 + for (i = (int)((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags - 1; i >= 0; i--)
122750 +  len += ((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i].size;
122751 + return len + skb_headlen(skb);
122752 +}
122753 +
122754 +static inline __attribute__((always_inline)) void skb_fill_page_desc(struct sk_buff *skb, int i,
122755 +          struct page *page, int off, int size)
122756 +{
122757 + skb_frag_t *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i];
122758 +
122759 + frag->page = page;
122760 + frag->page_offset = off;
122761 + frag->size = size;
122762 + ((struct skb_shared_info *)(skb_end_pointer(skb)))->nr_frags = i + 1;
122763 +}
122764 +# 860 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122765 +static inline __attribute__((always_inline)) unsigned char *skb_tail_pointer(const struct sk_buff *skb)
122766 +{
122767 + return skb->tail;
122768 +}
122769 +
122770 +static inline __attribute__((always_inline)) void skb_reset_tail_pointer(struct sk_buff *skb)
122771 +{
122772 + skb->tail = skb->data;
122773 +}
122774 +
122775 +static inline __attribute__((always_inline)) void skb_set_tail_pointer(struct sk_buff *skb, const int offset)
122776 +{
122777 + skb->tail = skb->data + offset;
122778 +}
122779 +
122780 +
122781 +
122782 +
122783 +
122784 +
122785 +extern unsigned char *skb_put(struct sk_buff *skb, unsigned int len);
122786 +static inline __attribute__((always_inline)) unsigned char *__skb_put(struct sk_buff *skb, unsigned int len)
122787 +{
122788 + unsigned char *tmp = skb_tail_pointer(skb);
122789 + 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);
122790 + skb->tail += len;
122791 + skb->len += len;
122792 + return tmp;
122793 +}
122794 +
122795 +extern unsigned char *skb_push(struct sk_buff *skb, unsigned int len);
122796 +static inline __attribute__((always_inline)) unsigned char *__skb_push(struct sk_buff *skb, unsigned int len)
122797 +{
122798 + skb->data -= len;
122799 + skb->len += len;
122800 + return skb->data;
122801 +}
122802 +
122803 +extern unsigned char *skb_pull(struct sk_buff *skb, unsigned int len);
122804 +static inline __attribute__((always_inline)) unsigned char *__skb_pull(struct sk_buff *skb, unsigned int len)
122805 +{
122806 + skb->len -= len;
122807 + 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);
122808 + return skb->data += len;
122809 +}
122810 +
122811 +extern unsigned char *__pskb_pull_tail(struct sk_buff *skb, int delta);
122812 +
122813 +static inline __attribute__((always_inline)) unsigned char *__pskb_pull(struct sk_buff *skb, unsigned int len)
122814 +{
122815 + if (len > skb_headlen(skb) &&
122816 +     !__pskb_pull_tail(skb, len - skb_headlen(skb)))
122817 +  return 0;
122818 + skb->len -= len;
122819 + return skb->data += len;
122820 +}
122821 +
122822 +static inline __attribute__((always_inline)) unsigned char *pskb_pull(struct sk_buff *skb, unsigned int len)
122823 +{
122824 + return __builtin_expect(!!(len > skb->len), 0) ? 0 : __pskb_pull(skb, len);
122825 +}
122826 +
122827 +static inline __attribute__((always_inline)) int pskb_may_pull(struct sk_buff *skb, unsigned int len)
122828 +{
122829 + if (__builtin_expect(!!(len <= skb_headlen(skb)), 1))
122830 +  return 1;
122831 + if (__builtin_expect(!!(len > skb->len), 0))
122832 +  return 0;
122833 + return __pskb_pull_tail(skb, len - skb_headlen(skb)) != 0;
122834 +}
122835 +
122836 +
122837 +
122838 +
122839 +
122840 +
122841 +
122842 +static inline __attribute__((always_inline)) unsigned int skb_headroom(const struct sk_buff *skb)
122843 +{
122844 + return skb->data - skb->head;
122845 +}
122846 +
122847 +
122848 +
122849 +
122850 +
122851 +
122852 +
122853 +static inline __attribute__((always_inline)) int skb_tailroom(const struct sk_buff *skb)
122854 +{
122855 + return skb_is_nonlinear(skb) ? 0 : skb->end - skb->tail;
122856 +}
122857 +# 961 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122858 +static inline __attribute__((always_inline)) void skb_reserve(struct sk_buff *skb, int len)
122859 +{
122860 + skb->data += len;
122861 + skb->tail += len;
122862 +}
122863 +# 1024 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122864 +static inline __attribute__((always_inline)) unsigned char *skb_transport_header(const struct sk_buff *skb)
122865 +{
122866 + return skb->transport_header;
122867 +}
122868 +
122869 +static inline __attribute__((always_inline)) void skb_reset_transport_header(struct sk_buff *skb)
122870 +{
122871 + skb->transport_header = skb->data;
122872 +}
122873 +
122874 +static inline __attribute__((always_inline)) void skb_set_transport_header(struct sk_buff *skb,
122875 +         const int offset)
122876 +{
122877 + skb->transport_header = skb->data + offset;
122878 +}
122879 +
122880 +static inline __attribute__((always_inline)) unsigned char *skb_network_header(const struct sk_buff *skb)
122881 +{
122882 + return skb->network_header;
122883 +}
122884 +
122885 +static inline __attribute__((always_inline)) void skb_reset_network_header(struct sk_buff *skb)
122886 +{
122887 + skb->network_header = skb->data;
122888 +}
122889 +
122890 +static inline __attribute__((always_inline)) void skb_set_network_header(struct sk_buff *skb, const int offset)
122891 +{
122892 + skb->network_header = skb->data + offset;
122893 +}
122894 +
122895 +static inline __attribute__((always_inline)) unsigned char *skb_mac_header(const struct sk_buff *skb)
122896 +{
122897 + return skb->mac_header;
122898 +}
122899 +
122900 +static inline __attribute__((always_inline)) int skb_mac_header_was_set(const struct sk_buff *skb)
122901 +{
122902 + return skb->mac_header != 0;
122903 +}
122904 +
122905 +static inline __attribute__((always_inline)) void skb_reset_mac_header(struct sk_buff *skb)
122906 +{
122907 + skb->mac_header = skb->data;
122908 +}
122909 +
122910 +static inline __attribute__((always_inline)) void skb_set_mac_header(struct sk_buff *skb, const int offset)
122911 +{
122912 + skb->mac_header = skb->data + offset;
122913 +}
122914 +
122915 +
122916 +static inline __attribute__((always_inline)) int skb_transport_offset(const struct sk_buff *skb)
122917 +{
122918 + return skb_transport_header(skb) - skb->data;
122919 +}
122920 +
122921 +static inline __attribute__((always_inline)) u32 skb_network_header_len(const struct sk_buff *skb)
122922 +{
122923 + return skb->transport_header - skb->network_header;
122924 +}
122925 +
122926 +static inline __attribute__((always_inline)) int skb_network_offset(const struct sk_buff *skb)
122927 +{
122928 + return skb_network_header(skb) - skb->data;
122929 +}
122930 +# 1134 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122931 +extern int ___pskb_trim(struct sk_buff *skb, unsigned int len);
122932 +
122933 +static inline __attribute__((always_inline)) void __skb_trim(struct sk_buff *skb, unsigned int len)
122934 +{
122935 + if (__builtin_expect(!!(skb->data_len), 0)) {
122936 +  ({ 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); });
122937 +  return;
122938 + }
122939 + skb->len = len;
122940 + skb_set_tail_pointer(skb, len);
122941 +}
122942 +
122943 +extern void skb_trim(struct sk_buff *skb, unsigned int len);
122944 +
122945 +static inline __attribute__((always_inline)) int __pskb_trim(struct sk_buff *skb, unsigned int len)
122946 +{
122947 + if (skb->data_len)
122948 +  return ___pskb_trim(skb, len);
122949 + __skb_trim(skb, len);
122950 + return 0;
122951 +}
122952 +
122953 +static inline __attribute__((always_inline)) int pskb_trim(struct sk_buff *skb, unsigned int len)
122954 +{
122955 + return (len < skb->len) ? __pskb_trim(skb, len) : 0;
122956 +}
122957 +# 1170 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122958 +static inline __attribute__((always_inline)) void pskb_trim_unique(struct sk_buff *skb, unsigned int len)
122959 +{
122960 + int err = pskb_trim(skb, len);
122961 + 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);
122962 +}
122963 +# 1184 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122964 +static inline __attribute__((always_inline)) void skb_orphan(struct sk_buff *skb)
122965 +{
122966 + if (skb->destructor)
122967 +  skb->destructor(skb);
122968 + skb->destructor = 0;
122969 + skb->sk = 0;
122970 +}
122971 +# 1200 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122972 +extern void skb_queue_purge(struct sk_buff_head *list);
122973 +static inline __attribute__((always_inline)) void __skb_queue_purge(struct sk_buff_head *list)
122974 +{
122975 + struct sk_buff *skb;
122976 + while ((skb = __skb_dequeue(list)) != 0)
122977 +  kfree_skb(skb);
122978 +}
122979 +# 1220 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122980 +static inline __attribute__((always_inline)) struct sk_buff *__dev_alloc_skb(unsigned int length,
122981 +           gfp_t gfp_mask)
122982 +{
122983 + struct sk_buff *skb = alloc_skb(length + 16, gfp_mask);
122984 + if (__builtin_expect(!!(skb), 1))
122985 +  skb_reserve(skb, 16);
122986 + return skb;
122987 +}
122988 +
122989 +extern struct sk_buff *dev_alloc_skb(unsigned int length);
122990 +
122991 +extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
122992 +  unsigned int length, gfp_t gfp_mask);
122993 +# 1247 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
122994 +static inline __attribute__((always_inline)) struct sk_buff *netdev_alloc_skb(struct net_device *dev,
122995 +  unsigned int length)
122996 +{
122997 + return __netdev_alloc_skb(dev, length, ((( gfp_t)0x20u)));
122998 +}
122999 +# 1261 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123000 +static inline __attribute__((always_inline)) int skb_clone_writable(struct sk_buff *skb, unsigned int len)
123001 +{
123002 + return !skb_header_cloned(skb) &&
123003 +        skb_headroom(skb) + len <= skb->hdr_len;
123004 +}
123005 +
123006 +static inline __attribute__((always_inline)) int __skb_cow(struct sk_buff *skb, unsigned int headroom,
123007 +       int cloned)
123008 +{
123009 + int delta = 0;
123010 +
123011 + if (headroom < 16)
123012 +  headroom = 16;
123013 + if (headroom > skb_headroom(skb))
123014 +  delta = headroom - skb_headroom(skb);
123015 +
123016 + if (delta || cloned)
123017 +  return pskb_expand_head(skb, (((delta)+((typeof(delta))(16)-1))&~((typeof(delta))(16)-1)), 0,
123018 +     ((( gfp_t)0x20u)));
123019 + return 0;
123020 +}
123021 +# 1295 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123022 +static inline __attribute__((always_inline)) int skb_cow(struct sk_buff *skb, unsigned int headroom)
123023 +{
123024 + return __skb_cow(skb, headroom, skb_cloned(skb));
123025 +}
123026 +# 1310 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123027 +static inline __attribute__((always_inline)) int skb_cow_head(struct sk_buff *skb, unsigned int headroom)
123028 +{
123029 + return __skb_cow(skb, headroom, skb_header_cloned(skb));
123030 +}
123031 +# 1326 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123032 +static inline __attribute__((always_inline)) int skb_padto(struct sk_buff *skb, unsigned int len)
123033 +{
123034 + unsigned int size = skb->len;
123035 + if (__builtin_expect(!!(size >= len), 1))
123036 +  return 0;
123037 + return skb_pad(skb, len - size);
123038 +}
123039 +
123040 +static inline __attribute__((always_inline)) int skb_add_data(struct sk_buff *skb,
123041 +          unsigned char *from, int copy)
123042 +{
123043 + const int off = skb->len;
123044 +
123045 + if (skb->ip_summed == 0) {
123046 +  int err = 0;
123047 +  __wsum csum = csum_and_copy_from_user(from, skb_put(skb, copy),
123048 +           copy, 0, &err);
123049 +  if (!err) {
123050 +   skb->csum = csum_block_add(skb->csum, csum, off);
123051 +   return 0;
123052 +  }
123053 + } else if (!copy_from_user(skb_put(skb, copy), from, copy))
123054 +  return 0;
123055 +
123056 + __skb_trim(skb, off);
123057 + return -14;
123058 +}
123059 +
123060 +static inline __attribute__((always_inline)) int skb_can_coalesce(struct sk_buff *skb, int i,
123061 +       struct page *page, int off)
123062 +{
123063 + if (i) {
123064 +  struct skb_frag_struct *frag = &((struct skb_shared_info *)(skb_end_pointer(skb)))->frags[i - 1];
123065 +
123066 +  return page == frag->page &&
123067 +         off == frag->page_offset + frag->size;
123068 + }
123069 + return 0;
123070 +}
123071 +
123072 +static inline __attribute__((always_inline)) int __skb_linearize(struct sk_buff *skb)
123073 +{
123074 + return __pskb_pull_tail(skb, skb->data_len) ? 0 : -12;
123075 +}
123076 +# 1378 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123077 +static inline __attribute__((always_inline)) int skb_linearize(struct sk_buff *skb)
123078 +{
123079 + return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0;
123080 +}
123081 +# 1390 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123082 +static inline __attribute__((always_inline)) int skb_linearize_cow(struct sk_buff *skb)
123083 +{
123084 + return skb_is_nonlinear(skb) || skb_cloned(skb) ?
123085 +        __skb_linearize(skb) : 0;
123086 +}
123087 +# 1407 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123088 +static inline __attribute__((always_inline)) void skb_postpull_rcsum(struct sk_buff *skb,
123089 +          const void *start, unsigned int len)
123090 +{
123091 + if (skb->ip_summed == 2)
123092 +  skb->csum = csum_sub(skb->csum, csum_partial((const unsigned char *) start, len, 0));
123093 +}
123094 +
123095 +unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len);
123096 +# 1425 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123097 +static inline __attribute__((always_inline)) int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
123098 +{
123099 + if (__builtin_expect(!!(len >= skb->len), 1))
123100 +  return 0;
123101 + if (skb->ip_summed == 2)
123102 +  skb->ip_summed = 0;
123103 + return __pskb_trim(skb, len);
123104 +}
123105 +# 1450 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123106 +extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags,
123107 +        int *peeked, int *err);
123108 +extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags,
123109 +      int noblock, int *err);
123110 +extern unsigned int datagram_poll(struct file *file, struct socket *sock,
123111 +         struct poll_table_struct *wait);
123112 +extern int skb_copy_datagram_iovec(const struct sk_buff *from,
123113 +            int offset, struct iovec *to,
123114 +            int size);
123115 +extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb,
123116 +       int hlen,
123117 +       struct iovec *iov);
123118 +extern int skb_copy_datagram_from_iovec(struct sk_buff *skb,
123119 +          int offset,
123120 +          struct iovec *from,
123121 +          int len);
123122 +extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb);
123123 +extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb,
123124 +      unsigned int flags);
123125 +extern __wsum skb_checksum(const struct sk_buff *skb, int offset,
123126 +        int len, __wsum csum);
123127 +extern int skb_copy_bits(const struct sk_buff *skb, int offset,
123128 +         void *to, int len);
123129 +extern int skb_store_bits(struct sk_buff *skb, int offset,
123130 +          const void *from, int len);
123131 +extern __wsum skb_copy_and_csum_bits(const struct sk_buff *skb,
123132 +           int offset, u8 *to, int len,
123133 +           __wsum csum);
123134 +extern int skb_splice_bits(struct sk_buff *skb,
123135 +      unsigned int offset,
123136 +      struct pipe_inode_info *pipe,
123137 +      unsigned int len,
123138 +      unsigned int flags);
123139 +extern void skb_copy_and_csum_dev(const struct sk_buff *skb, u8 *to);
123140 +extern void skb_split(struct sk_buff *skb,
123141 +     struct sk_buff *skb1, const u32 len);
123142 +
123143 +extern struct sk_buff *skb_segment(struct sk_buff *skb, int features);
123144 +
123145 +static inline __attribute__((always_inline)) void *skb_header_pointer(const struct sk_buff *skb, int offset,
123146 +           int len, void *buffer)
123147 +{
123148 + int hlen = skb_headlen(skb);
123149 +
123150 + if (hlen - offset >= len)
123151 +  return skb->data + offset;
123152 +
123153 + if (skb_copy_bits(skb, offset, buffer, len) < 0)
123154 +  return 0;
123155 +
123156 + return buffer;
123157 +}
123158 +
123159 +static inline __attribute__((always_inline)) void skb_copy_from_linear_data(const struct sk_buff *skb,
123160 +          void *to,
123161 +          const unsigned int len)
123162 +{
123163 + (__builtin_constant_p((len)) ? __constant_memcpy((to), (skb->data), (len)) : __memcpy((to), (skb->data), (len)));
123164 +}
123165 +
123166 +static inline __attribute__((always_inline)) void skb_copy_from_linear_data_offset(const struct sk_buff *skb,
123167 +          const int offset, void *to,
123168 +          const unsigned int len)
123169 +{
123170 + (__builtin_constant_p((len)) ? __constant_memcpy((to), (skb->data + offset), (len)) : __memcpy((to), (skb->data + offset), (len)));
123171 +}
123172 +
123173 +static inline __attribute__((always_inline)) void skb_copy_to_linear_data(struct sk_buff *skb,
123174 +        const void *from,
123175 +        const unsigned int len)
123176 +{
123177 + (__builtin_constant_p((len)) ? __constant_memcpy((skb->data), (from), (len)) : __memcpy((skb->data), (from), (len)));
123178 +}
123179 +
123180 +static inline __attribute__((always_inline)) void skb_copy_to_linear_data_offset(struct sk_buff *skb,
123181 +        const int offset,
123182 +        const void *from,
123183 +        const unsigned int len)
123184 +{
123185 + (__builtin_constant_p((len)) ? __constant_memcpy((skb->data + offset), (from), (len)) : __memcpy((skb->data + offset), (from), (len)));
123186 +}
123187 +
123188 +extern void skb_init(void);
123189 +# 1543 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123190 +static inline __attribute__((always_inline)) void skb_get_timestamp(const struct sk_buff *skb, struct timeval *stamp)
123191 +{
123192 + *stamp = ns_to_timeval((skb->tstamp).tv64);
123193 +}
123194 +
123195 +static inline __attribute__((always_inline)) void __net_timestamp(struct sk_buff *skb)
123196 +{
123197 + skb->tstamp = ktime_get_real();
123198 +}
123199 +
123200 +static inline __attribute__((always_inline)) ktime_t net_timedelta(ktime_t t)
123201 +{
123202 + return ({ ktime_t __kt; __kt.tv64 = ((ktime_get_real()).tv64 - (t).tv64); __kt; });
123203 +}
123204 +
123205 +static inline __attribute__((always_inline)) ktime_t net_invalid_timestamp(void)
123206 +{
123207 + return ktime_set(0, 0);
123208 +}
123209 +
123210 +extern __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len);
123211 +extern __sum16 __skb_checksum_complete(struct sk_buff *skb);
123212 +
123213 +static inline __attribute__((always_inline)) int skb_csum_unnecessary(const struct sk_buff *skb)
123214 +{
123215 + return skb->ip_summed & 1;
123216 +}
123217 +# 1587 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123218 +static inline __attribute__((always_inline)) __sum16 skb_checksum_complete(struct sk_buff *skb)
123219 +{
123220 + return skb_csum_unnecessary(skb) ?
123221 +        0 : __skb_checksum_complete(skb);
123222 +}
123223 +
123224 +
123225 +extern void nf_conntrack_destroy(struct nf_conntrack *nfct);
123226 +static inline __attribute__((always_inline)) void nf_conntrack_put(struct nf_conntrack *nfct)
123227 +{
123228 + if (nfct && atomic_dec_and_test(&nfct->use))
123229 +  nf_conntrack_destroy(nfct);
123230 +}
123231 +static inline __attribute__((always_inline)) void nf_conntrack_get(struct nf_conntrack *nfct)
123232 +{
123233 + if (nfct)
123234 +  atomic_inc(&nfct->use);
123235 +}
123236 +static inline __attribute__((always_inline)) void nf_conntrack_get_reasm(struct sk_buff *skb)
123237 +{
123238 + if (skb)
123239 +  atomic_inc(&skb->users);
123240 +}
123241 +static inline __attribute__((always_inline)) void nf_conntrack_put_reasm(struct sk_buff *skb)
123242 +{
123243 + if (skb)
123244 +  kfree_skb(skb);
123245 +}
123246 +
123247 +
123248 +static inline __attribute__((always_inline)) void nf_bridge_put(struct nf_bridge_info *nf_bridge)
123249 +{
123250 + if (nf_bridge && atomic_dec_and_test(&nf_bridge->use))
123251 +  kfree(nf_bridge);
123252 +}
123253 +static inline __attribute__((always_inline)) void nf_bridge_get(struct nf_bridge_info *nf_bridge)
123254 +{
123255 + if (nf_bridge)
123256 +  atomic_inc(&nf_bridge->use);
123257 +}
123258 +
123259 +static inline __attribute__((always_inline)) void nf_reset(struct sk_buff *skb)
123260 +{
123261 +
123262 + nf_conntrack_put(skb->nfct);
123263 + skb->nfct = 0;
123264 + nf_conntrack_put_reasm(skb->nfct_reasm);
123265 + skb->nfct_reasm = 0;
123266 +
123267 +
123268 + nf_bridge_put(skb->nf_bridge);
123269 + skb->nf_bridge = 0;
123270 +
123271 +}
123272 +
123273 +
123274 +static inline __attribute__((always_inline)) void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
123275 +{
123276 +
123277 + dst->nfct = src->nfct;
123278 + nf_conntrack_get(src->nfct);
123279 + dst->nfctinfo = src->nfctinfo;
123280 + dst->nfct_reasm = src->nfct_reasm;
123281 + nf_conntrack_get_reasm(src->nfct_reasm);
123282 +
123283 +
123284 + dst->nf_bridge = src->nf_bridge;
123285 + nf_bridge_get(src->nf_bridge);
123286 +
123287 +}
123288 +
123289 +static inline __attribute__((always_inline)) void nf_copy(struct sk_buff *dst, const struct sk_buff *src)
123290 +{
123291 +
123292 + nf_conntrack_put(dst->nfct);
123293 + nf_conntrack_put_reasm(dst->nfct_reasm);
123294 +
123295 +
123296 + nf_bridge_put(dst->nf_bridge);
123297 +
123298 + __nf_copy(dst, src);
123299 +}
123300 +
123301 +
123302 +static inline __attribute__((always_inline)) void skb_copy_secmark(struct sk_buff *to, const struct sk_buff *from)
123303 +{
123304 + to->secmark = from->secmark;
123305 +}
123306 +
123307 +static inline __attribute__((always_inline)) void skb_init_secmark(struct sk_buff *skb)
123308 +{
123309 + skb->secmark = 0;
123310 +}
123311 +# 1688 "/d/kernels/linux-2.6.27.10-clickport/include/linux/skbuff.h"
123312 +static inline __attribute__((always_inline)) void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping)
123313 +{
123314 + skb->queue_mapping = queue_mapping;
123315 +}
123316 +
123317 +static inline __attribute__((always_inline)) u16 skb_get_queue_mapping(struct sk_buff *skb)
123318 +{
123319 + return skb->queue_mapping;
123320 +}
123321 +
123322 +static inline __attribute__((always_inline)) void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from)
123323 +{
123324 + to->queue_mapping = from->queue_mapping;
123325 +}
123326 +
123327 +static inline __attribute__((always_inline)) int skb_is_gso(const struct sk_buff *skb)
123328 +{
123329 + return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_size;
123330 +}
123331 +
123332 +static inline __attribute__((always_inline)) int skb_is_gso_v6(const struct sk_buff *skb)
123333 +{
123334 + return ((struct skb_shared_info *)(skb_end_pointer(skb)))->gso_type & SKB_GSO_TCPV6;
123335 +}
123336 +
123337 +extern void __skb_warn_lro_forwarding(const struct sk_buff *skb);
123338 +
123339 +static inline __attribute__((always_inline)) bool skb_warn_if_lro(const struct sk_buff *skb)
123340 +{
123341 +
123342 +
123343 + struct skb_shared_info *shinfo = ((struct skb_shared_info *)(skb_end_pointer(skb)));
123344 + if (shinfo->gso_size != 0 && __builtin_expect(!!(shinfo->gso_type == 0), 0)) {
123345 +  __skb_warn_lro_forwarding(skb);
123346 +  return true;
123347 + }
123348 + return false;
123349 +}
123350 +
123351 +static inline __attribute__((always_inline)) void skb_forward_csum(struct sk_buff *skb)
123352 +{
123353 +
123354 + if (skb->ip_summed == 2)
123355 +  skb->ip_summed = 0;
123356 +}
123357 +
123358 +bool skb_partial_csum_set(struct sk_buff *skb, u16 start, u16 off);
123359 +# 27 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
123360 +
123361 +
123362 +
123363 +
123364 +
123365 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 1
123366 +
123367 +
123368 +
123369 +
123370 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h" 1
123371 +
123372 +
123373 +
123374 +
123375 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 1
123376 +# 44 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
123377 +struct sched_param {
123378 + int sched_priority;
123379 +};
123380 +
123381 +
123382 +
123383 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h" 1
123384 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123385 +struct task_struct;
123386 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123387 +typedef struct __user_cap_header_struct {
123388 + __u32 version;
123389 + int pid;
123390 +} *cap_user_header_t;
123391 +
123392 +typedef struct __user_cap_data_struct {
123393 +        __u32 effective;
123394 +        __u32 permitted;
123395 +        __u32 inheritable;
123396 +} *cap_user_data_t;
123397 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123398 +struct vfs_cap_data {
123399 + __le32 magic_etc;
123400 + struct {
123401 +  __le32 permitted;
123402 +  __le32 inheritable;
123403 + } data[2];
123404 +};
123405 +# 95 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123406 +typedef struct kernel_cap_struct {
123407 + __u32 cap[2];
123408 +} kernel_cap_t;
123409 +# 423 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123410 +static inline __attribute__((always_inline)) kernel_cap_t cap_combine(const kernel_cap_t a,
123411 +           const kernel_cap_t b)
123412 +{
123413 + kernel_cap_t dest;
123414 + do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] | b.cap[__capi]; } } while (0);
123415 + return dest;
123416 +}
123417 +
123418 +static inline __attribute__((always_inline)) kernel_cap_t cap_intersect(const kernel_cap_t a,
123419 +      const kernel_cap_t b)
123420 +{
123421 + kernel_cap_t dest;
123422 + do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] & b.cap[__capi]; } } while (0);
123423 + return dest;
123424 +}
123425 +
123426 +static inline __attribute__((always_inline)) kernel_cap_t cap_drop(const kernel_cap_t a,
123427 +        const kernel_cap_t drop)
123428 +{
123429 + kernel_cap_t dest;
123430 + do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = a.cap[__capi] &~ drop.cap[__capi]; } } while (0);
123431 + return dest;
123432 +}
123433 +
123434 +static inline __attribute__((always_inline)) kernel_cap_t cap_invert(const kernel_cap_t c)
123435 +{
123436 + kernel_cap_t dest;
123437 + do { unsigned __capi; for (__capi = 0; __capi < 2; ++__capi) { dest.cap[__capi] = ~ c.cap[__capi]; } } while (0);
123438 + return dest;
123439 +}
123440 +
123441 +static inline __attribute__((always_inline)) int cap_isclear(const kernel_cap_t a)
123442 +{
123443 + unsigned __capi;
123444 + for (__capi = 0; __capi < 2; ++__capi) {
123445 +  if (a.cap[__capi] != 0)
123446 +   return 0;
123447 + }
123448 + return 1;
123449 +}
123450 +
123451 +static inline __attribute__((always_inline)) int cap_issubset(const kernel_cap_t a, const kernel_cap_t set)
123452 +{
123453 + kernel_cap_t dest;
123454 + dest = cap_drop(a, set);
123455 + return cap_isclear(dest);
123456 +}
123457 +
123458 +
123459 +
123460 +static inline __attribute__((always_inline)) int cap_is_fs_cap(int cap)
123461 +{
123462 + 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))) } });
123463 + return !!((1 << ((cap) & 31)) & __cap_fs_set.cap[((cap) >> 5)]);
123464 +}
123465 +
123466 +static inline __attribute__((always_inline)) kernel_cap_t cap_drop_fs_set(const kernel_cap_t a)
123467 +{
123468 + 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))) } });
123469 + return cap_drop(a, __cap_fs_set);
123470 +}
123471 +
123472 +static inline __attribute__((always_inline)) kernel_cap_t cap_raise_fs_set(const kernel_cap_t a,
123473 +         const kernel_cap_t permitted)
123474 +{
123475 + 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))) } });
123476 + return cap_combine(a,
123477 +      cap_intersect(permitted, __cap_fs_set));
123478 +}
123479 +
123480 +static inline __attribute__((always_inline)) kernel_cap_t cap_drop_nfsd_set(const kernel_cap_t a)
123481 +{
123482 + 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))) } });
123483 + return cap_drop(a, __cap_fs_set);
123484 +}
123485 +
123486 +static inline __attribute__((always_inline)) kernel_cap_t cap_raise_nfsd_set(const kernel_cap_t a,
123487 +           const kernel_cap_t permitted)
123488 +{
123489 + 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))) } });
123490 + return cap_combine(a,
123491 +      cap_intersect(permitted, __cap_nfsd_set));
123492 +}
123493 +
123494 +extern const kernel_cap_t __cap_empty_set;
123495 +extern const kernel_cap_t __cap_full_set;
123496 +extern const kernel_cap_t __cap_init_eff_set;
123497 +
123498 +kernel_cap_t cap_set_effective(const kernel_cap_t pE_new);
123499 +# 525 "/d/kernels/linux-2.6.27.10-clickport/include/linux/capability.h"
123500 +extern int capable(int cap);
123501 +# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
123502 +# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
123503 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cputime.h" 1
123504 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/cputime.h" 1
123505 +
123506 +
123507 +
123508 +
123509 +
123510 +
123511 +typedef unsigned long cputime_t;
123512 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/cputime.h"
123513 +typedef u64 cputime64_t;
123514 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/cputime.h" 2
123515 +# 67 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
123516 +
123517 +
123518 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 1
123519 +
123520 +
123521 +
123522 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" 1
123523 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h"
123524 +struct ipc_perm
123525 +{
123526 + __kernel_key_t key;
123527 + __kernel_uid_t uid;
123528 + __kernel_gid_t gid;
123529 + __kernel_uid_t cuid;
123530 + __kernel_gid_t cgid;
123531 + __kernel_mode_t mode;
123532 + unsigned short seq;
123533 +};
123534 +
123535 +
123536 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ipcbuf.h" 1
123537 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/asm/ipcbuf.h"
123538 +struct ipc64_perm {
123539 + __kernel_key_t key;
123540 + __kernel_uid32_t uid;
123541 + __kernel_gid32_t gid;
123542 + __kernel_uid32_t cuid;
123543 + __kernel_gid32_t cgid;
123544 + __kernel_mode_t mode;
123545 + unsigned short __pad1;
123546 + unsigned short seq;
123547 + unsigned short __pad2;
123548 + unsigned long __unused1;
123549 + unsigned long __unused2;
123550 +};
123551 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h" 2
123552 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h"
123553 +struct ipc_kludge {
123554 + struct msgbuf *msgp;
123555 + long msgtyp;
123556 +};
123557 +# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ipc.h"
123558 +struct kern_ipc_perm
123559 +{
123560 + spinlock_t lock;
123561 + int deleted;
123562 + int id;
123563 + key_t key;
123564 + uid_t uid;
123565 + gid_t gid;
123566 + xid_t xid;
123567 + uid_t cuid;
123568 + gid_t cgid;
123569 + mode_t mode;
123570 + unsigned long seq;
123571 + void *security;
123572 +};
123573 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2
123574 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h"
123575 +struct semid_ds {
123576 + struct ipc_perm sem_perm;
123577 + __kernel_time_t sem_otime;
123578 + __kernel_time_t sem_ctime;
123579 + struct sem *sem_base;
123580 + struct sem_queue *sem_pending;
123581 + struct sem_queue **sem_pending_last;
123582 + struct sem_undo *undo;
123583 + unsigned short sem_nsems;
123584 +};
123585 +
123586 +
123587 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sembuf.h" 1
123588 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sembuf.h"
123589 +struct semid64_ds {
123590 + struct ipc64_perm sem_perm;
123591 + __kernel_time_t sem_otime;
123592 + unsigned long __unused1;
123593 + __kernel_time_t sem_ctime;
123594 + unsigned long __unused2;
123595 + unsigned long sem_nsems;
123596 + unsigned long __unused3;
123597 + unsigned long __unused4;
123598 +};
123599 +# 36 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2
123600 +
123601 +
123602 +struct sembuf {
123603 + unsigned short sem_num;
123604 + short sem_op;
123605 + short sem_flg;
123606 +};
123607 +
123608 +
123609 +union semun {
123610 + int val;
123611 + struct semid_ds *buf;
123612 + unsigned short *array;
123613 + struct seminfo *__buf;
123614 + void *__pad;
123615 +};
123616 +
123617 +struct seminfo {
123618 + int semmap;
123619 + int semmni;
123620 + int semmns;
123621 + int semmnu;
123622 + int semmsl;
123623 + int semopm;
123624 + int semume;
123625 + int semusz;
123626 + int semvmx;
123627 + int semaem;
123628 +};
123629 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h"
123630 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
123631 +# 81 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sem.h" 2
123632 +
123633 +
123634 +struct task_struct;
123635 +
123636 +
123637 +struct sem {
123638 + int semval;
123639 + int sempid;
123640 +};
123641 +
123642 +
123643 +struct sem_array {
123644 + struct kern_ipc_perm sem_perm;
123645 + time_t sem_otime;
123646 + time_t sem_ctime;
123647 + struct sem *sem_base;
123648 + struct list_head sem_pending;
123649 + struct list_head list_id;
123650 + unsigned long sem_nsems;
123651 +};
123652 +
123653 +
123654 +struct sem_queue {
123655 + struct list_head list;
123656 + struct task_struct *sleeper;
123657 + struct sem_undo *undo;
123658 + int pid;
123659 + int status;
123660 + struct sembuf *sops;
123661 + int nsops;
123662 + int alter;
123663 +};
123664 +
123665 +
123666 +
123667 +
123668 +struct sem_undo {
123669 + struct list_head list_proc;
123670 +
123671 + struct rcu_head rcu;
123672 + struct sem_undo_list *ulp;
123673 + struct list_head list_id;
123674 + int semid;
123675 + short * semadj;
123676 +};
123677 +
123678 +
123679 +
123680 +
123681 +struct sem_undo_list {
123682 + atomic_t refcnt;
123683 + spinlock_t lock;
123684 + struct list_head list_proc;
123685 +};
123686 +
123687 +struct sysv_sem {
123688 + struct sem_undo_list *undo_list;
123689 +};
123690 +
123691 +
123692 +
123693 +extern int copy_semundo(unsigned long clone_flags, struct task_struct *tsk);
123694 +extern void exit_sem(struct task_struct *tsk);
123695 +# 70 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
123696 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 1
123697 +
123698 +
123699 +
123700 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" 1
123701 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h"
123702 +struct siginfo;
123703 +# 28 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h"
123704 +typedef unsigned long old_sigset_t;
123705 +
123706 +typedef struct {
123707 + unsigned long sig[(64 / 32)];
123708 +} sigset_t;
123709 +# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h"
123710 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/signal.h" 1
123711 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/signal.h"
123712 +typedef void __signalfn_t(int);
123713 +typedef __signalfn_t *__sighandler_t;
123714 +
123715 +typedef void __restorefn_t(void);
123716 +typedef __restorefn_t *__sigrestore_t;
123717 +# 121 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h" 2
123718 +
123719 +
123720 +
123721 +
123722 +
123723 +struct old_sigaction {
123724 + __sighandler_t sa_handler;
123725 + old_sigset_t sa_mask;
123726 + unsigned long sa_flags;
123727 + __sigrestore_t sa_restorer;
123728 +};
123729 +
123730 +struct sigaction {
123731 + __sighandler_t sa_handler;
123732 + unsigned long sa_flags;
123733 + __sigrestore_t sa_restorer;
123734 + sigset_t sa_mask;
123735 +};
123736 +
123737 +struct k_sigaction {
123738 + struct sigaction sa;
123739 +};
123740 +# 175 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h"
123741 +typedef struct sigaltstack {
123742 + void *ss_sp;
123743 + int ss_flags;
123744 + size_t ss_size;
123745 +} stack_t;
123746 +# 193 "/d/kernels/linux-2.6.27.10-clickport/include/asm/signal.h"
123747 +static inline __attribute__((always_inline)) void __gen_sigaddset(sigset_t *set, int _sig)
123748 +{
123749 + asm("btsl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
123750 +}
123751 +
123752 +static inline __attribute__((always_inline)) void __const_sigaddset(sigset_t *set, int _sig)
123753 +{
123754 + unsigned long sig = _sig - 1;
123755 + set->sig[sig / 32] |= 1 << (sig % 32);
123756 +}
123757 +
123758 +
123759 +
123760 +
123761 +
123762 +
123763 +
123764 +static inline __attribute__((always_inline)) void __gen_sigdelset(sigset_t *set, int _sig)
123765 +{
123766 + asm("btrl %1,%0" : "+m"(*set) : "Ir"(_sig - 1) : "cc");
123767 +}
123768 +
123769 +static inline __attribute__((always_inline)) void __const_sigdelset(sigset_t *set, int _sig)
123770 +{
123771 + unsigned long sig = _sig - 1;
123772 + set->sig[sig / 32] &= ~(1 << (sig % 32));
123773 +}
123774 +
123775 +static inline __attribute__((always_inline)) int __const_sigismember(sigset_t *set, int _sig)
123776 +{
123777 + unsigned long sig = _sig - 1;
123778 + return 1 & (set->sig[sig / 32] >> (sig % 32));
123779 +}
123780 +
123781 +static inline __attribute__((always_inline)) int __gen_sigismember(sigset_t *set, int _sig)
123782 +{
123783 + int ret;
123784 + asm("btl %2,%1\n\tsbbl %0,%0"
123785 +     : "=r"(ret) : "m"(*set), "Ir"(_sig-1) : "cc");
123786 + return ret;
123787 +}
123788 +
123789 +
123790 +
123791 +
123792 +
123793 +
123794 +static inline __attribute__((always_inline)) int sigfindinword(unsigned long word)
123795 +{
123796 + asm("bsfl %1,%0" : "=r"(word) : "rm"(word) : "cc");
123797 + return word;
123798 +}
123799 +
123800 +struct pt_regs;
123801 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 2
123802 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/siginfo.h" 1
123803 +
123804 +
123805 +
123806 +
123807 +
123808 +
123809 +
123810 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h" 1
123811 +
123812 +
123813 +
123814 +
123815 +
123816 +
123817 +typedef union sigval {
123818 + int sival_int;
123819 + void *sival_ptr;
123820 +} sigval_t;
123821 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h"
123822 +typedef struct siginfo {
123823 + int si_signo;
123824 + int si_errno;
123825 + int si_code;
123826 +
123827 + union {
123828 +  int _pad[((128 - (3 * sizeof(int))) / sizeof(int))];
123829 +
123830 +
123831 +  struct {
123832 +   pid_t _pid;
123833 +   uid_t _uid;
123834 +  } _kill;
123835 +
123836 +
123837 +  struct {
123838 +   timer_t _tid;
123839 +   int _overrun;
123840 +   char _pad[sizeof( uid_t) - sizeof(int)];
123841 +   sigval_t _sigval;
123842 +   int _sys_private;
123843 +  } _timer;
123844 +
123845 +
123846 +  struct {
123847 +   pid_t _pid;
123848 +   uid_t _uid;
123849 +   sigval_t _sigval;
123850 +  } _rt;
123851 +
123852 +
123853 +  struct {
123854 +   pid_t _pid;
123855 +   uid_t _uid;
123856 +   int _status;
123857 +   clock_t _utime;
123858 +   clock_t _stime;
123859 +  } _sigchld;
123860 +
123861 +
123862 +  struct {
123863 +   void *_addr;
123864 +
123865 +
123866 +
123867 +  } _sigfault;
123868 +
123869 +
123870 +  struct {
123871 +   long _band;
123872 +   int _fd;
123873 +  } _sigpoll;
123874 + } _sifields;
123875 +} siginfo_t;
123876 +# 251 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/siginfo.h"
123877 +typedef struct sigevent {
123878 + sigval_t sigev_value;
123879 + int sigev_signo;
123880 + int sigev_notify;
123881 + union {
123882 +  int _pad[((64 - (sizeof(int) * 2 + sizeof(sigval_t))) / sizeof(int))];
123883 +   int _tid;
123884 +
123885 +  struct {
123886 +   void (*_function)(sigval_t);
123887 +   void *_attribute;
123888 +  } _sigev_thread;
123889 + } _sigev_un;
123890 +} sigevent_t;
123891 +
123892 +
123893 +
123894 +
123895 +
123896 +
123897 +
123898 +struct siginfo;
123899 +void do_schedule_next_timer(struct siginfo *info);
123900 +
123901 +
123902 +
123903 +
123904 +
123905 +static inline __attribute__((always_inline)) void copy_siginfo(struct siginfo *to, struct siginfo *from)
123906 +{
123907 + if (from->si_code < 0)
123908 +  (__builtin_constant_p((sizeof(*to))) ? __constant_memcpy((to), (from), (sizeof(*to))) : __memcpy((to), (from), (sizeof(*to))));
123909 + else
123910 +
123911 +  (__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))));
123912 +}
123913 +
123914 +
123915 +
123916 +extern int copy_siginfo_to_user(struct siginfo *to, struct siginfo *from);
123917 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/asm/siginfo.h" 2
123918 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h" 2
123919 +# 14 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h"
123920 +struct sigqueue {
123921 + struct list_head list;
123922 + int flags;
123923 + siginfo_t info;
123924 + struct user_struct *user;
123925 +};
123926 +
123927 +
123928 +
123929 +
123930 +struct sigpending {
123931 + struct list_head list;
123932 + sigset_t signal;
123933 +};
123934 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h"
123935 +static inline __attribute__((always_inline)) int sigisemptyset(sigset_t *set)
123936 +{
123937 + extern void _NSIG_WORDS_is_unsupported_size(void);
123938 + switch ((64 / 32)) {
123939 + case 4:
123940 +  return (set->sig[3] | set->sig[2] |
123941 +   set->sig[1] | set->sig[0]) == 0;
123942 + case 2:
123943 +  return (set->sig[1] | set->sig[0]) == 0;
123944 + case 1:
123945 +  return set->sig[0] == 0;
123946 + default:
123947 +  _NSIG_WORDS_is_unsupported_size();
123948 +  return 0;
123949 + }
123950 +}
123951 +# 119 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h"
123952 +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(); } }
123953 +
123954 +
123955 +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(); } }
123956 +
123957 +
123958 +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(); } }
123959 +# 149 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h"
123960 +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(); } }
123961 +
123962 +
123963 +
123964 +
123965 +static inline __attribute__((always_inline)) void sigemptyset(sigset_t *set)
123966 +{
123967 + switch ((64 / 32)) {
123968 + default:
123969 +  (__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))))));
123970 +  break;
123971 + case 2: set->sig[1] = 0;
123972 + case 1: set->sig[0] = 0;
123973 +  break;
123974 + }
123975 +}
123976 +
123977 +static inline __attribute__((always_inline)) void sigfillset(sigset_t *set)
123978 +{
123979 + switch ((64 / 32)) {
123980 + default:
123981 +  (__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))))));
123982 +  break;
123983 + case 2: set->sig[1] = -1;
123984 + case 1: set->sig[0] = -1;
123985 +  break;
123986 + }
123987 +}
123988 +
123989 +
123990 +
123991 +static inline __attribute__((always_inline)) void sigaddsetmask(sigset_t *set, unsigned long mask)
123992 +{
123993 + set->sig[0] |= mask;
123994 +}
123995 +
123996 +static inline __attribute__((always_inline)) void sigdelsetmask(sigset_t *set, unsigned long mask)
123997 +{
123998 + set->sig[0] &= ~mask;
123999 +}
124000 +
124001 +static inline __attribute__((always_inline)) int sigtestsetmask(sigset_t *set, unsigned long mask)
124002 +{
124003 + return (set->sig[0] & mask) != 0;
124004 +}
124005 +
124006 +static inline __attribute__((always_inline)) void siginitset(sigset_t *set, unsigned long mask)
124007 +{
124008 + set->sig[0] = mask;
124009 + switch ((64 / 32)) {
124010 + default:
124011 +  (__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))))));
124012 +  break;
124013 + case 2: set->sig[1] = 0;
124014 + case 1: ;
124015 + }
124016 +}
124017 +
124018 +static inline __attribute__((always_inline)) void siginitsetinv(sigset_t *set, unsigned long mask)
124019 +{
124020 + set->sig[0] = ~mask;
124021 + switch ((64 / 32)) {
124022 + default:
124023 +  (__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))))));
124024 +  break;
124025 + case 2: set->sig[1] = -1;
124026 + case 1: ;
124027 + }
124028 +}
124029 +
124030 +
124031 +
124032 +static inline __attribute__((always_inline)) void init_sigpending(struct sigpending *sig)
124033 +{
124034 + sigemptyset(&sig->signal);
124035 + INIT_LIST_HEAD(&sig->list);
124036 +}
124037 +
124038 +extern void flush_sigqueue(struct sigpending *queue);
124039 +
124040 +
124041 +static inline __attribute__((always_inline)) int valid_signal(unsigned long sig)
124042 +{
124043 + return sig <= 64 ? 1 : 0;
124044 +}
124045 +
124046 +extern int next_signal(struct sigpending *pending, sigset_t *mask);
124047 +extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p);
124048 +extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *);
124049 +extern long do_sigpending(void *, unsigned long);
124050 +extern int sigprocmask(int, sigset_t *, sigset_t *);
124051 +extern int show_unhandled_signals;
124052 +
124053 +struct pt_regs;
124054 +extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie);
124055 +extern void exit_signals(struct task_struct *tsk);
124056 +
124057 +extern struct kmem_cache *sighand_cachep;
124058 +
124059 +int unhandled_signal(struct task_struct *tsk, int sig);
124060 +# 373 "/d/kernels/linux-2.6.27.10-clickport/include/linux/signal.h"
124061 +void signals_init(void);
124062 +# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124063 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fs_struct.h" 1
124064 +
124065 +
124066 +
124067 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/path.h" 1
124068 +
124069 +
124070 +
124071 +struct dentry;
124072 +struct vfsmount;
124073 +
124074 +struct path {
124075 + struct vfsmount *mnt;
124076 + struct dentry *dentry;
124077 +};
124078 +
124079 +extern void path_get(struct path *);
124080 +extern void path_put(struct path *);
124081 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/fs_struct.h" 2
124082 +
124083 +struct fs_struct {
124084 + atomic_t count;
124085 + rwlock_t lock;
124086 + int umask;
124087 + struct path root, pwd;
124088 +};
124089 +
124090 +
124091 +
124092 +
124093 +
124094 +
124095 +
124096 +extern struct kmem_cache *fs_cachep;
124097 +
124098 +extern void exit_fs(struct task_struct *);
124099 +extern void set_fs_root(struct fs_struct *, struct path *);
124100 +extern void set_fs_pwd(struct fs_struct *, struct path *);
124101 +extern struct fs_struct *copy_fs_struct(struct fs_struct *);
124102 +extern void put_fs_struct(struct fs_struct *);
124103 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124104 +
124105 +
124106 +
124107 +
124108 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" 1
124109 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h"
124110 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h" 1
124111 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h"
124112 +struct percpu_counter {
124113 + spinlock_t lock;
124114 + s64 count;
124115 +
124116 + struct list_head list;
124117 +
124118 + s32 *counters;
124119 +};
124120 +
124121 +
124122 +
124123 +
124124 +
124125 +
124126 +
124127 +int percpu_counter_init(struct percpu_counter *fbc, s64 amount);
124128 +int percpu_counter_init_irq(struct percpu_counter *fbc, s64 amount);
124129 +void percpu_counter_destroy(struct percpu_counter *fbc);
124130 +void percpu_counter_set(struct percpu_counter *fbc, s64 amount);
124131 +void __percpu_counter_add(struct percpu_counter *fbc, s64 amount, s32 batch);
124132 +s64 __percpu_counter_sum(struct percpu_counter *fbc, int set);
124133 +
124134 +static inline __attribute__((always_inline)) void percpu_counter_add(struct percpu_counter *fbc, s64 amount)
124135 +{
124136 + __percpu_counter_add(fbc, amount, (32*2));
124137 +}
124138 +
124139 +static inline __attribute__((always_inline)) s64 percpu_counter_sum_positive(struct percpu_counter *fbc)
124140 +{
124141 + s64 ret = __percpu_counter_sum(fbc, 0);
124142 + return ret < 0 ? 0 : ret;
124143 +}
124144 +
124145 +static inline __attribute__((always_inline)) s64 percpu_counter_sum_and_set(struct percpu_counter *fbc)
124146 +{
124147 + return __percpu_counter_sum(fbc, 1);
124148 +}
124149 +
124150 +
124151 +static inline __attribute__((always_inline)) s64 percpu_counter_sum(struct percpu_counter *fbc)
124152 +{
124153 + return __percpu_counter_sum(fbc, 0);
124154 +}
124155 +
124156 +static inline __attribute__((always_inline)) s64 percpu_counter_read(struct percpu_counter *fbc)
124157 +{
124158 + return fbc->count;
124159 +}
124160 +
124161 +
124162 +
124163 +
124164 +
124165 +
124166 +static inline __attribute__((always_inline)) s64 percpu_counter_read_positive(struct percpu_counter *fbc)
124167 +{
124168 + s64 ret = fbc->count;
124169 +
124170 + __asm__ __volatile__("": : :"memory");
124171 + if (ret >= 0)
124172 +  return ret;
124173 + return 1;
124174 +}
124175 +# 138 "/d/kernels/linux-2.6.27.10-clickport/include/linux/percpu_counter.h"
124176 +static inline __attribute__((always_inline)) void percpu_counter_inc(struct percpu_counter *fbc)
124177 +{
124178 + percpu_counter_add(fbc, 1);
124179 +}
124180 +
124181 +static inline __attribute__((always_inline)) void percpu_counter_dec(struct percpu_counter *fbc)
124182 +{
124183 + percpu_counter_add(fbc, -1);
124184 +}
124185 +
124186 +static inline __attribute__((always_inline)) void percpu_counter_sub(struct percpu_counter *fbc, s64 amount)
124187 +{
124188 + percpu_counter_add(fbc, -amount);
124189 +}
124190 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h" 2
124191 +
124192 +
124193 +
124194 +struct prop_global {
124195 +
124196 +
124197 +
124198 +
124199 +
124200 + int shift;
124201 +
124202 +
124203 +
124204 +
124205 +
124206 +
124207 + struct percpu_counter events;
124208 +};
124209 +
124210 +
124211 +
124212 +
124213 +
124214 +
124215 +struct prop_descriptor {
124216 + int index;
124217 + struct prop_global pg[2];
124218 + struct mutex mutex;
124219 +};
124220 +
124221 +int prop_descriptor_init(struct prop_descriptor *pd, int shift);
124222 +void prop_change_shift(struct prop_descriptor *pd, int new_shift);
124223 +
124224 +
124225 +
124226 +
124227 +
124228 +struct prop_local_percpu {
124229 +
124230 +
124231 +
124232 + struct percpu_counter events;
124233 +
124234 +
124235 +
124236 +
124237 + int shift;
124238 + unsigned long period;
124239 + spinlock_t lock;
124240 +};
124241 +
124242 +int prop_local_init_percpu(struct prop_local_percpu *pl);
124243 +void prop_local_destroy_percpu(struct prop_local_percpu *pl);
124244 +void __prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl);
124245 +void prop_fraction_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl,
124246 +  long *numerator, long *denominator);
124247 +
124248 +static inline __attribute__((always_inline))
124249 +void prop_inc_percpu(struct prop_descriptor *pd, struct prop_local_percpu *pl)
124250 +{
124251 + unsigned long flags;
124252 +
124253 + do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0);
124254 + __prop_inc_percpu(pd, pl);
124255 + 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);
124256 +}
124257 +# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/proportions.h"
124258 +void __prop_inc_percpu_max(struct prop_descriptor *pd,
124259 +      struct prop_local_percpu *pl, long frac);
124260 +
124261 +
124262 +
124263 +
124264 +
124265 +
124266 +struct prop_local_single {
124267 +
124268 +
124269 +
124270 + unsigned long events;
124271 +
124272 +
124273 +
124274 +
124275 +
124276 + int shift;
124277 + unsigned long period;
124278 + spinlock_t lock;
124279 +};
124280 +
124281 +
124282 +
124283 +
124284 +
124285 +int prop_local_init_single(struct prop_local_single *pl);
124286 +void prop_local_destroy_single(struct prop_local_single *pl);
124287 +void __prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl);
124288 +void prop_fraction_single(struct prop_descriptor *pd, struct prop_local_single *pl,
124289 +  long *numerator, long *denominator);
124290 +
124291 +static inline __attribute__((always_inline))
124292 +void prop_inc_single(struct prop_descriptor *pd, struct prop_local_single *pl)
124293 +{
124294 + unsigned long flags;
124295 +
124296 + do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0);
124297 + __prop_inc_single(pd, pl);
124298 + 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);
124299 +}
124300 +# 77 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124301 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h" 1
124302 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/seccomp.h"
124303 +typedef struct { int gcc_is_buggy; } seccomp_t;
124304 +
124305 +
124306 +
124307 +static inline __attribute__((always_inline)) long prctl_get_seccomp(void)
124308 +{
124309 + return -22;
124310 +}
124311 +
124312 +static inline __attribute__((always_inline)) long prctl_set_seccomp(unsigned long arg2)
124313 +{
124314 + return -22;
124315 +}
124316 +# 78 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124317 +
124318 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" 1
124319 +# 16 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h"
124320 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h" 1
124321 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h"
124322 +struct plist_head {
124323 + struct list_head prio_list;
124324 + struct list_head node_list;
124325 +
124326 +
124327 +
124328 +};
124329 +
124330 +struct plist_node {
124331 + int prio;
124332 + struct plist_head plist;
124333 +};
124334 +# 127 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h"
124335 +static inline __attribute__((always_inline)) void
124336 +plist_head_init(struct plist_head *head, spinlock_t *lock)
124337 +{
124338 + INIT_LIST_HEAD(&head->prio_list);
124339 + INIT_LIST_HEAD(&head->node_list);
124340 +
124341 +
124342 +
124343 +}
124344 +
124345 +
124346 +
124347 +
124348 +
124349 +
124350 +static inline __attribute__((always_inline)) void plist_node_init(struct plist_node *node, int prio)
124351 +{
124352 + node->prio = prio;
124353 + plist_head_init(&node->plist, 0);
124354 +}
124355 +
124356 +extern void plist_add(struct plist_node *node, struct plist_head *head);
124357 +extern void plist_del(struct plist_node *node, struct plist_head *head);
124358 +# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h"
124359 +static inline __attribute__((always_inline)) int plist_head_empty(const struct plist_head *head)
124360 +{
124361 + return list_empty(&head->node_list);
124362 +}
124363 +
124364 +
124365 +
124366 +
124367 +
124368 +static inline __attribute__((always_inline)) int plist_node_empty(const struct plist_node *node)
124369 +{
124370 + return plist_head_empty(&node->plist);
124371 +}
124372 +# 234 "/d/kernels/linux-2.6.27.10-clickport/include/linux/plist.h"
124373 +static inline __attribute__((always_inline)) struct plist_node* plist_first(const struct plist_head *head)
124374 +{
124375 + 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) );});
124376 +
124377 +}
124378 +# 17 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h" 2
124379 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h"
124380 +struct rt_mutex {
124381 + spinlock_t wait_lock;
124382 + struct plist_head wait_list;
124383 + struct task_struct *owner;
124384 +
124385 +
124386 +
124387 +
124388 +
124389 +
124390 +};
124391 +
124392 +struct rt_mutex_waiter;
124393 +struct hrtimer_sleeper;
124394 +
124395 +
124396 +
124397 +
124398 +
124399 +
124400 + static inline __attribute__((always_inline)) int rt_mutex_debug_check_no_locks_freed(const void *from,
124401 +             unsigned long len)
124402 + {
124403 + return 0;
124404 + }
124405 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/rtmutex.h"
124406 +static inline __attribute__((always_inline)) int rt_mutex_is_locked(struct rt_mutex *lock)
124407 +{
124408 + return lock->owner != 0;
124409 +}
124410 +
124411 +extern void __rt_mutex_init(struct rt_mutex *lock, const char *name);
124412 +extern void rt_mutex_destroy(struct rt_mutex *lock);
124413 +
124414 +extern void rt_mutex_lock(struct rt_mutex *lock);
124415 +extern int rt_mutex_lock_interruptible(struct rt_mutex *lock,
124416 +      int detect_deadlock);
124417 +extern int rt_mutex_timed_lock(struct rt_mutex *lock,
124418 +     struct hrtimer_sleeper *timeout,
124419 +     int detect_deadlock);
124420 +
124421 +extern int rt_mutex_trylock(struct rt_mutex *lock);
124422 +
124423 +extern void rt_mutex_unlock(struct rt_mutex *lock);
124424 +# 80 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124425 +
124426 +
124427 +
124428 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" 1
124429 +
124430 +
124431 +
124432 +
124433 +
124434 +struct task_struct;
124435 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h"
124436 +struct rusage {
124437 + struct timeval ru_utime;
124438 + struct timeval ru_stime;
124439 + long ru_maxrss;
124440 + long ru_ixrss;
124441 + long ru_idrss;
124442 + long ru_isrss;
124443 + long ru_minflt;
124444 + long ru_majflt;
124445 + long ru_nswap;
124446 + long ru_inblock;
124447 + long ru_oublock;
124448 + long ru_msgsnd;
124449 + long ru_msgrcv;
124450 + long ru_nsignals;
124451 + long ru_nvcsw;
124452 + long ru_nivcsw;
124453 +};
124454 +
124455 +struct rlimit {
124456 + unsigned long rlim_cur;
124457 + unsigned long rlim_max;
124458 +};
124459 +# 71 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h"
124460 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1
124461 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/resource.h" 1
124462 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 2
124463 +# 72 "/d/kernels/linux-2.6.27.10-clickport/include/linux/resource.h" 2
124464 +
124465 +int getrusage(struct task_struct *p, int who, struct rusage *ru);
124466 +# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124467 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" 1
124468 +
124469 +
124470 +
124471 +
124472 +
124473 +
124474 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h" 1
124475 +
124476 +
124477 +
124478 +
124479 +
124480 +
124481 +enum debug_obj_state {
124482 + ODEBUG_STATE_NONE,
124483 + ODEBUG_STATE_INIT,
124484 + ODEBUG_STATE_INACTIVE,
124485 + ODEBUG_STATE_ACTIVE,
124486 + ODEBUG_STATE_DESTROYED,
124487 + ODEBUG_STATE_NOTAVAILABLE,
124488 + ODEBUG_STATE_MAX,
124489 +};
124490 +
124491 +struct debug_obj_descr;
124492 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h"
124493 +struct debug_obj {
124494 + struct hlist_node node;
124495 + enum debug_obj_state state;
124496 + void *object;
124497 + struct debug_obj_descr *descr;
124498 +};
124499 +# 45 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h"
124500 +struct debug_obj_descr {
124501 + const char *name;
124502 +
124503 + int (*fixup_init) (void *addr, enum debug_obj_state state);
124504 + int (*fixup_activate) (void *addr, enum debug_obj_state state);
124505 + int (*fixup_destroy) (void *addr, enum debug_obj_state state);
124506 + int (*fixup_free) (void *addr, enum debug_obj_state state);
124507 +};
124508 +# 66 "/d/kernels/linux-2.6.27.10-clickport/include/linux/debugobjects.h"
124509 +static inline __attribute__((always_inline)) void
124510 +debug_object_init (void *addr, struct debug_obj_descr *descr) { }
124511 +static inline __attribute__((always_inline)) void
124512 +debug_object_init_on_stack(void *addr, struct debug_obj_descr *descr) { }
124513 +static inline __attribute__((always_inline)) void
124514 +debug_object_activate (void *addr, struct debug_obj_descr *descr) { }
124515 +static inline __attribute__((always_inline)) void
124516 +debug_object_deactivate(void *addr, struct debug_obj_descr *descr) { }
124517 +static inline __attribute__((always_inline)) void
124518 +debug_object_destroy (void *addr, struct debug_obj_descr *descr) { }
124519 +static inline __attribute__((always_inline)) void
124520 +debug_object_free (void *addr, struct debug_obj_descr *descr) { }
124521 +
124522 +static inline __attribute__((always_inline)) void debug_objects_early_init(void) { }
124523 +static inline __attribute__((always_inline)) void debug_objects_mem_init(void) { }
124524 +
124525 +
124526 +
124527 +
124528 +
124529 +static inline __attribute__((always_inline)) void
124530 +debug_check_no_obj_freed(const void *address, unsigned long size) { }
124531 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h" 2
124532 +
124533 +struct tvec_base;
124534 +
124535 +struct timer_list {
124536 + struct list_head entry;
124537 + unsigned long expires;
124538 +
124539 + void (*function)(unsigned long);
124540 + unsigned long data;
124541 +
124542 + struct tvec_base *base;
124543 +
124544 + void *start_site;
124545 + char start_comm[16];
124546 + int start_pid;
124547 +
124548 +};
124549 +
124550 +extern struct tvec_base boot_tvec_bases;
124551 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"
124552 +void init_timer(struct timer_list *timer);
124553 +void init_timer_deferrable(struct timer_list *timer);
124554 +
124555 +
124556 +
124557 +
124558 +
124559 +static inline __attribute__((always_inline)) void destroy_timer_on_stack(struct timer_list *timer) { }
124560 +static inline __attribute__((always_inline)) void init_timer_on_stack(struct timer_list *timer)
124561 +{
124562 + init_timer(timer);
124563 +}
124564 +
124565 +
124566 +static inline __attribute__((always_inline)) void setup_timer(struct timer_list * timer,
124567 +    void (*function)(unsigned long),
124568 +    unsigned long data)
124569 +{
124570 + timer->function = function;
124571 + timer->data = data;
124572 + init_timer(timer);
124573 +}
124574 +
124575 +static inline __attribute__((always_inline)) void setup_timer_on_stack(struct timer_list *timer,
124576 +     void (*function)(unsigned long),
124577 +     unsigned long data)
124578 +{
124579 + timer->function = function;
124580 + timer->data = data;
124581 + init_timer_on_stack(timer);
124582 +}
124583 +# 82 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"
124584 +static inline __attribute__((always_inline)) int timer_pending(const struct timer_list * timer)
124585 +{
124586 + return timer->entry.next != 0;
124587 +}
124588 +
124589 +extern void add_timer_on(struct timer_list *timer, int cpu);
124590 +extern int del_timer(struct timer_list * timer);
124591 +extern int __mod_timer(struct timer_list *timer, unsigned long expires);
124592 +extern int mod_timer(struct timer_list *timer, unsigned long expires);
124593 +# 102 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"
124594 +extern unsigned long next_timer_interrupt(void);
124595 +
124596 +
124597 +
124598 +
124599 +
124600 +extern unsigned long get_next_timer_interrupt(unsigned long now);
124601 +# 117 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"
124602 +extern void init_timer_stats(void);
124603 +
124604 +extern void timer_stats_update_stats(void *timer, pid_t pid, void *startf,
124605 +         void *timerf, char *comm,
124606 +         unsigned int timer_flag);
124607 +
124608 +extern void __timer_stats_timer_set_start_info(struct timer_list *timer,
124609 +            void *addr);
124610 +
124611 +static inline __attribute__((always_inline)) void timer_stats_timer_set_start_info(struct timer_list *timer)
124612 +{
124613 + __timer_stats_timer_set_start_info(timer, __builtin_return_address(0));
124614 +}
124615 +
124616 +static inline __attribute__((always_inline)) void timer_stats_timer_clear_start_info(struct timer_list *timer)
124617 +{
124618 + timer->start_site = 0;
124619 +}
124620 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/timer.h"
124621 +static inline __attribute__((always_inline)) void add_timer(struct timer_list *timer)
124622 +{
124623 + 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);
124624 + __mod_timer(timer, timer->expires);
124625 +}
124626 +
124627 +
124628 +  extern int try_to_del_timer_sync(struct timer_list *timer);
124629 +  extern int del_timer_sync(struct timer_list *timer);
124630 +
124631 +
124632 +
124633 +
124634 +
124635 +
124636 +
124637 +extern void init_timers(void);
124638 +extern void run_local_timers(void);
124639 +struct hrtimer;
124640 +extern enum hrtimer_restart it_real_fn(struct hrtimer *);
124641 +
124642 +unsigned long __round_jiffies(unsigned long j, int cpu);
124643 +unsigned long __round_jiffies_relative(unsigned long j, int cpu);
124644 +unsigned long round_jiffies(unsigned long j);
124645 +unsigned long round_jiffies_relative(unsigned long j);
124646 +# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124647 +
124648 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h" 1
124649 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h"
124650 +struct task_io_accounting {
124651 +
124652 +
124653 + u64 rchar;
124654 +
124655 + u64 wchar;
124656 +
124657 + u64 syscr;
124658 +
124659 + u64 syscw;
124660 +
124661 +
124662 +
124663 +
124664 +
124665 +
124666 +
124667 + u64 read_bytes;
124668 +
124669 +
124670 +
124671 +
124672 +
124673 + u64 write_bytes;
124674 +# 43 "/d/kernels/linux-2.6.27.10-clickport/include/linux/task_io_accounting.h"
124675 + u64 cancelled_write_bytes;
124676 +
124677 +};
124678 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124679 +
124680 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h" 1
124681 +# 33 "/d/kernels/linux-2.6.27.10-clickport/include/linux/latencytop.h"
124682 +static inline __attribute__((always_inline)) void
124683 +account_scheduler_latency(struct task_struct *task, int usecs, int inter)
124684 +{
124685 +}
124686 +
124687 +static inline __attribute__((always_inline)) void clear_all_latency_tracing(struct task_struct *p)
124688 +{
124689 +}
124690 +# 89 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124691 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/cred.h" 1
124692 +# 90 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124693 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h" 1
124694 +
124695 +
124696 +
124697 +
124698 +
124699 +enum pid_type
124700 +{
124701 + PIDTYPE_PID,
124702 + PIDTYPE_PGID,
124703 + PIDTYPE_SID,
124704 + PIDTYPE_MAX,
124705 + PIDTYPE_REALPID
124706 +};
124707 +# 51 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h"
124708 +struct upid {
124709 +
124710 + int nr;
124711 + struct pid_namespace *ns;
124712 + struct hlist_node pid_chain;
124713 +};
124714 +
124715 +struct pid
124716 +{
124717 + atomic_t count;
124718 + unsigned int level;
124719 +
124720 + struct hlist_head tasks[PIDTYPE_MAX];
124721 + struct rcu_head rcu;
124722 + struct upid numbers[1];
124723 +};
124724 +
124725 +extern struct pid init_struct_pid;
124726 +
124727 +struct pid_link
124728 +{
124729 + struct hlist_node node;
124730 + struct pid *pid;
124731 +};
124732 +
124733 +static inline __attribute__((always_inline)) struct pid *get_pid(struct pid *pid)
124734 +{
124735 + if (pid)
124736 +  atomic_inc(&pid->count);
124737 + return pid;
124738 +}
124739 +
124740 +extern void put_pid(struct pid *pid);
124741 +extern struct task_struct *pid_task(struct pid *pid, enum pid_type);
124742 +extern struct task_struct *get_pid_task(struct pid *pid, enum pid_type);
124743 +
124744 +extern struct pid *get_task_pid(struct task_struct *task, enum pid_type type);
124745 +
124746 +
124747 +
124748 +
124749 +
124750 +extern void attach_pid(struct task_struct *task, enum pid_type type,
124751 +   struct pid *pid);
124752 +extern void detach_pid(struct task_struct *task, enum pid_type);
124753 +extern void change_pid(struct task_struct *task, enum pid_type,
124754 +   struct pid *pid);
124755 +extern void transfer_pid(struct task_struct *old, struct task_struct *xxx_new,
124756 +    enum pid_type);
124757 +
124758 +struct pid_namespace;
124759 +extern struct pid_namespace init_pid_ns;
124760 +# 113 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h"
124761 +extern struct pid *find_pid_ns(int nr, struct pid_namespace *ns);
124762 +extern struct pid *find_vpid(int nr);
124763 +
124764 +
124765 +
124766 +
124767 +extern struct pid *find_get_pid(int nr);
124768 +extern struct pid *find_ge_pid(int nr, struct pid_namespace *);
124769 +int next_pidmap(struct pid_namespace *pid_ns, int last);
124770 +
124771 +extern struct pid *alloc_pid(struct pid_namespace *ns);
124772 +extern void free_pid(struct pid *pid);
124773 +# 137 "/d/kernels/linux-2.6.27.10-clickport/include/linux/pid.h"
124774 +static inline __attribute__((always_inline)) pid_t pid_nr(struct pid *pid)
124775 +{
124776 + pid_t nr = 0;
124777 + if (pid)
124778 +  nr = pid->numbers[0].nr;
124779 + return nr;
124780 +}
124781 +
124782 +pid_t pid_nr_ns(struct pid *pid, struct pid_namespace *ns);
124783 +pid_t pid_unmapped_nr_ns(struct pid *pid, struct pid_namespace *ns);
124784 +pid_t pid_vnr(struct pid *pid);
124785 +# 91 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
124786 +
124787 +
124788 +
124789 +struct mem_cgroup;
124790 +struct exec_domain;
124791 +struct futex_pi_state;
124792 +struct robust_list_head;
124793 +struct bio;
124794 +# 116 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
124795 +extern unsigned long avenrun[];
124796 +# 130 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
124797 +extern unsigned long total_forks;
124798 +extern int nr_threads;
124799 +extern __typeof__(unsigned long) per_cpu__process_counts;
124800 +extern int nr_processes(void);
124801 +extern unsigned long nr_running(void);
124802 +extern unsigned long nr_uninterruptible(void);
124803 +extern unsigned long nr_active(void);
124804 +extern unsigned long nr_iowait(void);
124805 +
124806 +struct seq_file;
124807 +struct cfs_rq;
124808 +struct task_group;
124809 +
124810 +extern void proc_sched_show_task(struct task_struct *p, struct seq_file *m);
124811 +extern void proc_sched_set_task(struct task_struct *p);
124812 +extern void
124813 +print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq);
124814 +# 161 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
124815 +extern unsigned long long time_sync_thresh;
124816 +# 238 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
124817 +extern rwlock_t tasklist_lock;
124818 +extern spinlock_t mmlist_lock;
124819 +
124820 +struct task_struct;
124821 +
124822 +extern void sched_init(void);
124823 +extern void sched_init_smp(void);
124824 +
124825 +extern "C" __attribute__((regparm(0))) void schedule_tail(struct task_struct *prev);
124826 +
124827 +
124828 +
124829 +
124830 +extern void init_idle(struct task_struct *idle, int cpu);
124831 +extern void init_idle_bootup_task(struct task_struct *idle);
124832 +
124833 +extern int runqueue_is_locked(void);
124834 +
124835 +extern cpumask_t nohz_cpu_mask;
124836 +
124837 +
124838 +
124839 +static inline __attribute__((always_inline)) int select_nohz_load_balancer(int cpu)
124840 +{
124841 + return 0;
124842 +}
124843 +
124844 +
124845 +extern unsigned long rt_needs_cpu(int cpu);
124846 +
124847 +
124848 +
124849 +
124850 +extern void show_state_filter(unsigned long state_filter);
124851 +
124852 +static inline __attribute__((always_inline)) void show_state(void)
124853 +{
124854 + show_state_filter(0);
124855 +}
124856 +
124857 +extern void show_regs(struct pt_regs *);
124858 +
124859 +
124860 +
124861 +
124862 +
124863 +
124864 +extern void show_stack(struct task_struct *task, unsigned long *sp);
124865 +
124866 +void io_schedule(void);
124867 +long io_schedule_timeout(long timeout);
124868 +
124869 +extern void cpu_init (void);
124870 +extern void trap_init(void);
124871 +extern void account_process_tick(struct task_struct *task, int user);
124872 +extern void update_process_times(int user);
124873 +extern void scheduler_tick(void);
124874 +extern void hrtick_resched(void);
124875 +
124876 +extern void sched_show_task(struct task_struct *p);
124877 +
124878 +
124879 +extern void softlockup_tick(void);
124880 +extern void touch_softlockup_watchdog(void);
124881 +extern void touch_all_softlockup_watchdogs(void);
124882 +extern unsigned int softlockup_panic;
124883 +extern unsigned long sysctl_hung_task_check_count;
124884 +extern unsigned long sysctl_hung_task_timeout_secs;
124885 +extern unsigned long sysctl_hung_task_warnings;
124886 +extern int softlockup_thresh;
124887 +# 328 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
124888 +extern char __sched_text_start[], __sched_text_end[];
124889 +
124890 +
124891 +extern int in_sched_functions(unsigned long addr);
124892 +
124893 +
124894 +extern signed long schedule_timeout(signed long timeout);
124895 +extern signed long schedule_timeout_interruptible(signed long timeout);
124896 +extern signed long schedule_timeout_killable(signed long timeout);
124897 +extern signed long schedule_timeout_uninterruptible(signed long timeout);
124898 +extern "C" __attribute__((regparm(0))) void schedule(void);
124899 +
124900 +struct nsproxy;
124901 +struct user_namespace;
124902 +
124903 +
124904 +
124905 +
124906 +extern int sysctl_max_map_count;
124907 +
124908 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 1
124909 +
124910 +
124911 +
124912 +
124913 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" 1
124914 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h"
124915 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
124916 +# 13 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h" 2
124917 +
124918 +struct workqueue_struct;
124919 +
124920 +struct work_struct;
124921 +typedef void (*work_func_t)(struct work_struct *work);
124922 +
124923 +
124924 +
124925 +
124926 +
124927 +
124928 +
124929 +struct work_struct {
124930 + atomic_long_t data;
124931 +
124932 +
124933 +
124934 + struct list_head entry;
124935 + work_func_t func;
124936 +
124937 +
124938 +
124939 +};
124940 +
124941 +
124942 +
124943 +struct delayed_work {
124944 + struct work_struct work;
124945 + struct timer_list timer;
124946 +};
124947 +
124948 +struct execute_work {
124949 + struct work_struct work;
124950 +};
124951 +# 150 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h"
124952 +extern struct workqueue_struct *
124953 +__create_workqueue_key(const char *name, int singlethread,
124954 +         int freezeable, struct lock_class_key *key,
124955 +         const char *lock_name);
124956 +# 179 "/d/kernels/linux-2.6.27.10-clickport/include/linux/workqueue.h"
124957 +extern void destroy_workqueue(struct workqueue_struct *wq);
124958 +
124959 +extern int queue_work(struct workqueue_struct *wq, struct work_struct *work);
124960 +extern int queue_work_on(int cpu, struct workqueue_struct *wq,
124961 +   struct work_struct *work);
124962 +extern int queue_delayed_work(struct workqueue_struct *wq,
124963 +   struct delayed_work *work, unsigned long delay);
124964 +extern int queue_delayed_work_on(int cpu, struct workqueue_struct *wq,
124965 +   struct delayed_work *work, unsigned long delay);
124966 +
124967 +extern void flush_workqueue(struct workqueue_struct *wq);
124968 +extern void flush_scheduled_work(void);
124969 +
124970 +extern int schedule_work(struct work_struct *work);
124971 +extern int schedule_work_on(int cpu, struct work_struct *work);
124972 +extern int schedule_delayed_work(struct delayed_work *work, unsigned long delay);
124973 +extern int schedule_delayed_work_on(int cpu, struct delayed_work *work,
124974 +     unsigned long delay);
124975 +extern int schedule_on_each_cpu(work_func_t func);
124976 +extern int current_is_keventd(void);
124977 +extern int keventd_up(void);
124978 +
124979 +extern void init_workqueues(void);
124980 +int execute_in_process_context(work_func_t fn, struct execute_work *);
124981 +
124982 +extern int flush_work(struct work_struct *work);
124983 +
124984 +extern int cancel_work_sync(struct work_struct *work);
124985 +
124986 +
124987 +
124988 +
124989 +
124990 +
124991 +
124992 +static inline __attribute__((always_inline)) int cancel_delayed_work(struct delayed_work *work)
124993 +{
124994 + int ret;
124995 +
124996 + ret = del_timer_sync(&work->timer);
124997 + if (ret)
124998 +  clear_bit(0, ((unsigned long *)(&(&work->work)->data)));
124999 + return ret;
125000 +}
125001 +
125002 +extern int cancel_delayed_work_sync(struct delayed_work *work);
125003 +
125004 +
125005 +static inline __attribute__((always_inline))
125006 +void cancel_rearming_delayed_workqueue(struct workqueue_struct *wq,
125007 +     struct delayed_work *work)
125008 +{
125009 + cancel_delayed_work_sync(work);
125010 +}
125011 +
125012 +
125013 +static inline __attribute__((always_inline))
125014 +void cancel_rearming_delayed_work(struct delayed_work *work)
125015 +{
125016 + cancel_delayed_work_sync(work);
125017 +}
125018 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2
125019 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h" 1
125020 +# 32 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h"
125021 +typedef unsigned long aio_context_t;
125022 +
125023 +enum {
125024 + IOCB_CMD_PREAD = 0,
125025 + IOCB_CMD_PWRITE = 1,
125026 + IOCB_CMD_FSYNC = 2,
125027 + IOCB_CMD_FDSYNC = 3,
125028 +
125029 +
125030 +
125031 +
125032 + IOCB_CMD_NOOP = 6,
125033 + IOCB_CMD_PREADV = 7,
125034 + IOCB_CMD_PWRITEV = 8,
125035 +};
125036 +# 57 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h"
125037 +struct io_event {
125038 + __u64 data;
125039 + __u64 obj;
125040 + __s64 res;
125041 + __s64 res2;
125042 +};
125043 +# 78 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio_abi.h"
125044 +struct iocb {
125045 +
125046 + __u64 aio_data;
125047 + __u32 aio_key, aio_reserved1;
125048 +
125049 +
125050 +
125051 + __u16 aio_lio_opcode;
125052 + __s16 aio_reqprio;
125053 + __u32 aio_fildes;
125054 +
125055 + __u64 aio_buf;
125056 + __u64 aio_nbytes;
125057 + __s64 aio_offset;
125058 +
125059 +
125060 + __u64 aio_reserved2;
125061 +
125062 +
125063 + __u32 aio_flags;
125064 +
125065 +
125066 +
125067 +
125068 +
125069 + __u32 aio_resfd;
125070 +};
125071 +# 7 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2
125072 +
125073 +
125074 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
125075 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h" 2
125076 +
125077 +
125078 +
125079 +
125080 +struct kioctx;
125081 +# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h"
125082 +struct kiocb {
125083 + struct list_head ki_run_list;
125084 + unsigned long ki_flags;
125085 + int ki_users;
125086 + unsigned ki_key;
125087 +
125088 + struct file *ki_filp;
125089 + struct kioctx *ki_ctx;
125090 + int (*ki_cancel)(struct kiocb *, struct io_event *);
125091 + ssize_t (*ki_retry)(struct kiocb *);
125092 + void (*ki_dtor)(struct kiocb *);
125093 +
125094 + union {
125095 +  void *user;
125096 +  struct task_struct *tsk;
125097 + } ki_obj;
125098 +
125099 + __u64 ki_user_data;
125100 + wait_queue_t ki_wait;
125101 + loff_t ki_pos;
125102 +
125103 + void *xxx_private;
125104 +
125105 + unsigned short ki_opcode;
125106 + size_t ki_nbytes;
125107 + char *ki_buf;
125108 + size_t ki_left;
125109 + struct iovec ki_inline_vec;
125110 +  struct iovec *ki_iovec;
125111 +  unsigned long ki_nr_segs;
125112 +  unsigned long ki_cur_seg;
125113 +
125114 + struct list_head ki_list;
125115 +
125116 +
125117 +
125118 +
125119 +
125120 +
125121 + struct file *ki_eventfd;
125122 +};
125123 +# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/aio.h"
125124 +struct aio_ring {
125125 + unsigned id;
125126 + unsigned nr;
125127 + unsigned head;
125128 + unsigned tail;
125129 +
125130 + unsigned magic;
125131 + unsigned compat_features;
125132 + unsigned incompat_features;
125133 + unsigned header_length;
125134 +
125135 +
125136 + struct io_event io_events[0];
125137 +};
125138 +
125139 +
125140 +
125141 +
125142 +struct aio_ring_info {
125143 + unsigned long mmap_base;
125144 + unsigned long mmap_size;
125145 +
125146 + struct page **ring_pages;
125147 + spinlock_t ring_lock;
125148 + long nr_pages;
125149 +
125150 + unsigned nr, tail;
125151 +
125152 + struct page *internal_pages[8];
125153 +};
125154 +
125155 +struct kioctx {
125156 + atomic_t users;
125157 + int dead;
125158 + struct mm_struct *mm;
125159 +
125160 +
125161 + unsigned long user_id;
125162 + struct kioctx *next;
125163 +
125164 + wait_queue_head_t wait;
125165 +
125166 + spinlock_t ctx_lock;
125167 +
125168 + int reqs_active;
125169 + struct list_head active_reqs;
125170 + struct list_head run_list;
125171 +
125172 +
125173 + unsigned max_reqs;
125174 +
125175 + struct aio_ring_info ring_info;
125176 +
125177 + struct delayed_work wq;
125178 +};
125179 +
125180 +
125181 +extern unsigned aio_max_size;
125182 +
125183 +extern ssize_t wait_on_sync_kiocb(struct kiocb *iocb);
125184 +extern int aio_put_req(struct kiocb *iocb);
125185 +extern void kick_iocb(struct kiocb *iocb);
125186 +extern int aio_complete(struct kiocb *iocb, long res, long res2);
125187 +struct mm_struct;
125188 +extern void exit_aio(struct mm_struct *mm);
125189 +
125190 +
125191 +
125192 +
125193 +
125194 +static inline __attribute__((always_inline)) struct kiocb *list_kiocb(struct list_head *h)
125195 +{
125196 + return ({ const typeof( ((struct kiocb *)0)->ki_list ) *__mptr = (h); (struct kiocb *)( (char *)__mptr - __builtin_offsetof(struct kiocb,ki_list) );});
125197 +}
125198 +
125199 +
125200 +extern unsigned long aio_nr;
125201 +extern unsigned long aio_max_nr;
125202 +# 349 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
125203 +
125204 +extern unsigned long
125205 +arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
125206 +         unsigned long, unsigned long);
125207 +extern unsigned long
125208 +arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
125209 +     unsigned long len, unsigned long pgoff,
125210 +     unsigned long flags);
125211 +extern void arch_unmap_area(struct mm_struct *, unsigned long);
125212 +extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long);
125213 +# 398 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125214 +extern void set_dumpable(struct mm_struct *mm, int value);
125215 +extern int get_dumpable(struct mm_struct *mm);
125216 +# 420 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125217 +struct sighand_struct {
125218 + atomic_t count;
125219 + struct k_sigaction action[64];
125220 + spinlock_t siglock;
125221 + wait_queue_head_t signalfd_wqh;
125222 +};
125223 +
125224 +struct pacct_struct {
125225 + int ac_flag;
125226 + long ac_exitcode;
125227 + unsigned long ac_mem;
125228 + cputime_t ac_utime, ac_stime;
125229 + unsigned long ac_minflt, ac_majflt;
125230 +};
125231 +# 442 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125232 +struct signal_struct {
125233 + atomic_t count;
125234 + atomic_t live;
125235 +
125236 + wait_queue_head_t wait_chldexit;
125237 +
125238 +
125239 + struct task_struct *curr_target;
125240 +
125241 +
125242 + struct sigpending shared_pending;
125243 +
125244 +
125245 + int group_exit_code;
125246 +
125247 +
125248 +
125249 +
125250 +
125251 + struct task_struct *group_exit_task;
125252 + int notify_count;
125253 +
125254 +
125255 + int group_stop_count;
125256 + unsigned int flags;
125257 +
125258 +
125259 + struct list_head posix_timers;
125260 +
125261 +
125262 + struct hrtimer real_timer;
125263 + struct pid *leader_pid;
125264 + ktime_t it_real_incr;
125265 +
125266 +
125267 + cputime_t it_prof_expires, it_virt_expires;
125268 + cputime_t it_prof_incr, it_virt_incr;
125269 +# 487 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125270 + union {
125271 +  pid_t pgrp __attribute__((deprecated));
125272 +  pid_t __pgrp;
125273 + };
125274 +
125275 + struct pid *tty_old_pgrp;
125276 +
125277 + union {
125278 +  pid_t session __attribute__((deprecated));
125279 +  pid_t __session;
125280 + };
125281 +
125282 +
125283 + int leader;
125284 +
125285 + struct tty_struct *tty;
125286 +
125287 +
125288 +
125289 +
125290 +
125291 +
125292 +
125293 + cputime_t utime, stime, cutime, cstime;
125294 + cputime_t gtime;
125295 + cputime_t cgtime;
125296 + unsigned long nvcsw, nivcsw, cnvcsw, cnivcsw;
125297 + unsigned long min_flt, maj_flt, cmin_flt, cmaj_flt;
125298 + unsigned long inblock, oublock, cinblock, coublock;
125299 + struct task_io_accounting ioac;
125300 +
125301 +
125302 +
125303 +
125304 +
125305 +
125306 +
125307 + unsigned long long sum_sched_runtime;
125308 +# 535 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125309 + struct rlimit rlim[16];
125310 +
125311 + struct list_head cpu_timers[3];
125312 +# 546 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125313 + struct pacct_struct pacct;
125314 +
125315 +
125316 + struct taskstats *stats;
125317 +
125318 +
125319 +
125320 +
125321 +
125322 +};
125323 +# 579 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125324 +static inline __attribute__((always_inline)) int signal_group_exit(const struct signal_struct *sig)
125325 +{
125326 + return (sig->flags & 0x00000008) ||
125327 +  (sig->group_exit_task != 0);
125328 +}
125329 +
125330 +
125331 +
125332 +
125333 +struct user_struct {
125334 + atomic_t __count;
125335 + atomic_t processes;
125336 + atomic_t files;
125337 + atomic_t sigpending;
125338 +
125339 + atomic_t inotify_watches;
125340 + atomic_t inotify_devs;
125341 +
125342 +
125343 + atomic_t epoll_devs;
125344 + atomic_t epoll_watches;
125345 +
125346 +
125347 +
125348 + unsigned long mq_bytes;
125349 +
125350 + unsigned long locked_shm;
125351 +
125352 +
125353 +
125354 +
125355 +
125356 +
125357 +
125358 + struct hlist_node uidhash_node;
125359 + uid_t uid;
125360 +# 623 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125361 +};
125362 +
125363 +extern int uids_sysfs_init(void);
125364 +
125365 +extern struct user_struct *find_user(uid_t);
125366 +
125367 +extern struct user_struct root_user;
125368 +
125369 +
125370 +struct backing_dev_info;
125371 +struct reclaim_state;
125372 +
125373 +
125374 +struct sched_info {
125375 +
125376 + unsigned long pcount;
125377 + unsigned long long cpu_time,
125378 +      run_delay;
125379 +
125380 +
125381 + unsigned long long last_arrival,
125382 +      last_queued;
125383 +
125384 +
125385 + unsigned int bkl_count;
125386 +
125387 +};
125388 +
125389 +
125390 +
125391 +extern const struct file_operations proc_schedstat_operations;
125392 +
125393 +
125394 +
125395 +struct task_delay_info {
125396 + spinlock_t lock;
125397 + unsigned int flags;
125398 +# 676 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125399 + struct timespec blkio_start, blkio_end;
125400 + u64 blkio_delay;
125401 + u64 swapin_delay;
125402 + u32 blkio_count;
125403 +
125404 + u32 swapin_count;
125405 +
125406 +
125407 + struct timespec freepages_start, freepages_end;
125408 + u64 freepages_delay;
125409 + u32 freepages_count;
125410 +};
125411 +
125412 +
125413 +static inline __attribute__((always_inline)) int sched_info_on(void)
125414 +{
125415 +
125416 + return 1;
125417 +
125418 +
125419 +
125420 +
125421 +
125422 +
125423 +}
125424 +
125425 +enum cpu_idle_type {
125426 + CPU_IDLE,
125427 + CPU_NOT_IDLE,
125428 + CPU_NEWLY_IDLE,
125429 + CPU_MAX_IDLE_TYPES
125430 +};
125431 +# 746 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125432 +struct sched_group {
125433 + struct sched_group *next;
125434 + cpumask_t cpumask;
125435 +
125436 +
125437 +
125438 +
125439 +
125440 +
125441 + unsigned int __cpu_power;
125442 +
125443 +
125444 +
125445 +
125446 + u32 reciprocal_cpu_power;
125447 +};
125448 +
125449 +enum sched_domain_level {
125450 + SD_LV_NONE = 0,
125451 + SD_LV_SIBLING,
125452 + SD_LV_MC,
125453 + SD_LV_CPU,
125454 + SD_LV_NODE,
125455 + SD_LV_ALLNODES,
125456 + SD_LV_MAX
125457 +};
125458 +
125459 +struct sched_domain_attr {
125460 + int relax_domain_level;
125461 +};
125462 +
125463 +
125464 +
125465 +
125466 +
125467 +struct sched_domain {
125468 +
125469 + struct sched_domain *parent;
125470 + struct sched_domain *child;
125471 + struct sched_group *groups;
125472 + cpumask_t span;
125473 + unsigned long min_interval;
125474 + unsigned long max_interval;
125475 + unsigned int busy_factor;
125476 + unsigned int imbalance_pct;
125477 + unsigned int cache_nice_tries;
125478 + unsigned int busy_idx;
125479 + unsigned int idle_idx;
125480 + unsigned int newidle_idx;
125481 + unsigned int wake_idx;
125482 + unsigned int forkexec_idx;
125483 + int flags;
125484 + enum sched_domain_level level;
125485 +
125486 +
125487 + unsigned long last_balance;
125488 + unsigned int balance_interval;
125489 + unsigned int nr_balance_failed;
125490 +
125491 + u64 last_update;
125492 +
125493 +
125494 +
125495 + unsigned int lb_count[CPU_MAX_IDLE_TYPES];
125496 + unsigned int lb_failed[CPU_MAX_IDLE_TYPES];
125497 + unsigned int lb_balanced[CPU_MAX_IDLE_TYPES];
125498 + unsigned int lb_imbalance[CPU_MAX_IDLE_TYPES];
125499 + unsigned int lb_gained[CPU_MAX_IDLE_TYPES];
125500 + unsigned int lb_hot_gained[CPU_MAX_IDLE_TYPES];
125501 + unsigned int lb_nobusyg[CPU_MAX_IDLE_TYPES];
125502 + unsigned int lb_nobusyq[CPU_MAX_IDLE_TYPES];
125503 +
125504 +
125505 + unsigned int alb_count;
125506 + unsigned int alb_failed;
125507 + unsigned int alb_pushed;
125508 +
125509 +
125510 + unsigned int sbe_count;
125511 + unsigned int sbe_balanced;
125512 + unsigned int sbe_pushed;
125513 +
125514 +
125515 + unsigned int sbf_count;
125516 + unsigned int sbf_balanced;
125517 + unsigned int sbf_pushed;
125518 +
125519 +
125520 + unsigned int ttwu_wake_remote;
125521 + unsigned int ttwu_move_affine;
125522 + unsigned int ttwu_move_balance;
125523 +
125524 +};
125525 +
125526 +extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new,
125527 +        struct sched_domain_attr *dattr_new);
125528 +extern int arch_reinit_sched_domains(void);
125529 +# 855 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125530 +struct io_context;
125531 +
125532 +
125533 +struct group_info {
125534 + int ngroups;
125535 + atomic_t usage;
125536 + gid_t small_block[32];
125537 + int nblocks;
125538 + gid_t *blocks[0];
125539 +};
125540 +# 881 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125541 +extern struct group_info *groups_alloc(int gidsetsize);
125542 +extern void groups_free(struct group_info *group_info);
125543 +extern int set_current_groups(struct group_info *group_info);
125544 +extern int groups_search(struct group_info *group_info, gid_t grp);
125545 +
125546 +
125547 +
125548 +
125549 +
125550 +
125551 +
125552 +static inline __attribute__((always_inline)) void prefetch_stack(struct task_struct *t) { }
125553 +
125554 +
125555 +struct audit_context;
125556 +struct mempolicy;
125557 +struct pipe_inode_info;
125558 +struct uts_namespace;
125559 +
125560 +struct rq;
125561 +struct sched_domain;
125562 +
125563 +struct sched_class {
125564 + const struct sched_class *next;
125565 +
125566 + void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup);
125567 + void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
125568 + void (*yield_task) (struct rq *rq);
125569 + int (*select_task_rq)(struct task_struct *p, int sync);
125570 +
125571 + void (*check_preempt_curr) (struct rq *rq, struct task_struct *p);
125572 +
125573 + struct task_struct * (*pick_next_task) (struct rq *rq);
125574 + void (*put_prev_task) (struct rq *rq, struct task_struct *p);
125575 +
125576 +
125577 + unsigned long (*load_balance) (struct rq *this_rq, int this_cpu,
125578 +   struct rq *busiest, unsigned long max_load_move,
125579 +   struct sched_domain *sd, enum cpu_idle_type idle,
125580 +   int *all_pinned, int *this_best_prio);
125581 +
125582 + int (*move_one_task) (struct rq *this_rq, int this_cpu,
125583 +         struct rq *busiest, struct sched_domain *sd,
125584 +         enum cpu_idle_type idle);
125585 + void (*pre_schedule) (struct rq *this_rq, struct task_struct *task);
125586 + void (*post_schedule) (struct rq *this_rq);
125587 + void (*task_wake_up) (struct rq *this_rq, struct task_struct *task);
125588 +
125589 +
125590 + void (*set_curr_task) (struct rq *rq);
125591 + void (*task_tick) (struct rq *rq, struct task_struct *p, int queued);
125592 + void (*task_new) (struct rq *rq, struct task_struct *p);
125593 + void (*set_cpus_allowed)(struct task_struct *p,
125594 +     const cpumask_t *newmask);
125595 +
125596 + void (*rq_online)(struct rq *rq);
125597 + void (*rq_offline)(struct rq *rq);
125598 +
125599 + void (*switched_from) (struct rq *this_rq, struct task_struct *task,
125600 +          int running);
125601 + void (*switched_to) (struct rq *this_rq, struct task_struct *task,
125602 +        int running);
125603 + void (*prio_changed) (struct rq *this_rq, struct task_struct *task,
125604 +        int oldprio, int running);
125605 +
125606 +
125607 +
125608 +
125609 +};
125610 +
125611 +struct load_weight {
125612 + unsigned long weight, inv_weight;
125613 +};
125614 +# 965 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125615 +struct sched_entity {
125616 + struct load_weight load;
125617 + struct rb_node run_node;
125618 + struct list_head group_node;
125619 + unsigned int on_rq;
125620 +
125621 + u64 exec_start;
125622 + u64 sum_exec_runtime;
125623 + u64 vruntime;
125624 + u64 prev_sum_exec_runtime;
125625 +
125626 + u64 last_wakeup;
125627 + u64 avg_overlap;
125628 +
125629 +
125630 + u64 wait_start;
125631 + u64 wait_max;
125632 + u64 wait_count;
125633 + u64 wait_sum;
125634 +
125635 + u64 sleep_start;
125636 + u64 sleep_max;
125637 + s64 sum_sleep_runtime;
125638 +
125639 + u64 block_start;
125640 + u64 block_max;
125641 + u64 exec_max;
125642 + u64 slice_max;
125643 +
125644 + u64 nr_migrations;
125645 + u64 nr_migrations_cold;
125646 + u64 nr_failed_migrations_affine;
125647 + u64 nr_failed_migrations_running;
125648 + u64 nr_failed_migrations_hot;
125649 + u64 nr_forced_migrations;
125650 + u64 nr_forced2_migrations;
125651 +
125652 + u64 nr_wakeups;
125653 + u64 nr_wakeups_sync;
125654 + u64 nr_wakeups_migrate;
125655 + u64 nr_wakeups_local;
125656 + u64 nr_wakeups_remote;
125657 + u64 nr_wakeups_affine;
125658 + u64 nr_wakeups_affine_attempts;
125659 + u64 nr_wakeups_passive;
125660 + u64 nr_wakeups_idle;
125661 +# 1020 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125662 +};
125663 +
125664 +struct sched_rt_entity {
125665 + struct list_head run_list;
125666 + unsigned int time_slice;
125667 + unsigned long timeout;
125668 + int nr_cpus_allowed;
125669 +
125670 + struct sched_rt_entity *back;
125671 +
125672 +
125673 +
125674 +
125675 +
125676 +
125677 +
125678 +};
125679 +
125680 +struct task_struct {
125681 + volatile long state;
125682 + void *stack;
125683 + atomic_t usage;
125684 + unsigned int flags;
125685 + unsigned int ptrace;
125686 +
125687 + int lock_depth;
125688 +
125689 +
125690 +
125691 +
125692 +
125693 +
125694 +
125695 + int prio, static_prio, normal_prio;
125696 + unsigned int rt_priority;
125697 + const struct sched_class *sched_class;
125698 + struct sched_entity se;
125699 + struct sched_rt_entity rt;
125700 +
125701 +
125702 +
125703 + struct hlist_head preempt_notifiers;
125704 +# 1072 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125705 + unsigned char fpu_counter;
125706 + s8 oomkilladj;
125707 +
125708 + unsigned int btrace_seq;
125709 +
125710 +
125711 + unsigned int policy;
125712 + cpumask_t cpus_allowed;
125713 +
125714 +
125715 +
125716 +
125717 +
125718 +
125719 +
125720 + struct sched_info sched_info;
125721 +
125722 +
125723 + struct list_head tasks;
125724 +
125725 + struct mm_struct *mm, *active_mm;
125726 +
125727 +
125728 + struct linux_binfmt *binfmt;
125729 + int exit_state;
125730 + int exit_code, exit_signal;
125731 + int pdeath_signal;
125732 +
125733 + unsigned int personality;
125734 + unsigned did_exec:1;
125735 + pid_t pid;
125736 + pid_t tgid;
125737 +# 1114 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125738 + struct task_struct *real_parent;
125739 + struct task_struct *parent;
125740 +
125741 +
125742 +
125743 + struct list_head children;
125744 + struct list_head sibling;
125745 + struct task_struct *group_leader;
125746 +
125747 +
125748 +
125749 +
125750 +
125751 +
125752 + struct list_head ptraced;
125753 + struct list_head ptrace_entry;
125754 +
125755 +
125756 + struct pid_link pids[PIDTYPE_MAX];
125757 + struct list_head thread_group;
125758 +
125759 + struct completion *vfork_done;
125760 + int *set_child_tid;
125761 + int *clear_child_tid;
125762 +
125763 + cputime_t utime, stime, utimescaled, stimescaled;
125764 + cputime_t gtime;
125765 + cputime_t prev_utime, prev_stime;
125766 + unsigned long nvcsw, nivcsw;
125767 + struct timespec start_time;
125768 + struct timespec real_start_time;
125769 +
125770 + unsigned long min_flt, maj_flt;
125771 +
125772 +   cputime_t it_prof_expires, it_virt_expires;
125773 + unsigned long long it_sched_expires;
125774 + struct list_head cpu_timers[3];
125775 +
125776 +
125777 + uid_t uid,euid,suid,fsuid;
125778 + gid_t gid,egid,sgid,fsgid;
125779 + struct group_info *group_info;
125780 + kernel_cap_t cap_effective, cap_inheritable, cap_permitted, cap_bset;
125781 + struct user_struct *user;
125782 + unsigned securebits;
125783 +
125784 +
125785 +
125786 +
125787 +
125788 + char comm[16];
125789 +
125790 +
125791 +
125792 +
125793 + int link_count, total_link_count;
125794 +
125795 +
125796 + struct sysv_sem sysvsem;
125797 +
125798 +
125799 +
125800 + unsigned long last_switch_timestamp;
125801 + unsigned long last_switch_count;
125802 +
125803 +
125804 + struct thread_struct thread;
125805 +
125806 + struct fs_struct *fs;
125807 +
125808 + struct files_struct *files;
125809 +
125810 + struct nsproxy *nsproxy;
125811 +
125812 + struct signal_struct *signal;
125813 + struct sighand_struct *sighand;
125814 +
125815 + sigset_t blocked, real_blocked;
125816 + sigset_t saved_sigmask;
125817 + struct sigpending pending;
125818 +
125819 + unsigned long sas_ss_sp;
125820 + size_t sas_ss_size;
125821 + int (*notifier)(void *priv);
125822 + void *notifier_data;
125823 + sigset_t *notifier_mask;
125824 +
125825 + void *security;
125826 +
125827 + struct audit_context *audit_context;
125828 +
125829 +
125830 +
125831 +
125832 + seccomp_t seccomp;
125833 +
125834 +
125835 + struct vx_info *vx_info;
125836 + struct nx_info *nx_info;
125837 +
125838 + xid_t xid;
125839 + nid_t nid;
125840 + tag_t tag;
125841 +
125842 +
125843 +    u32 parent_exec_id;
125844 +    u32 self_exec_id;
125845 +
125846 + spinlock_t alloc_lock;
125847 +
125848 +
125849 + spinlock_t pi_lock;
125850 +
125851 +
125852 +
125853 + struct plist_head pi_waiters;
125854 +
125855 + struct rt_mutex_waiter *pi_blocked_on;
125856 +# 1262 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125857 + void *journal_info;
125858 +
125859 +
125860 + struct bio *bio_list, **bio_tail;
125861 +
125862 +
125863 + struct reclaim_state *reclaim_state;
125864 +
125865 + struct backing_dev_info *backing_dev_info;
125866 +
125867 + struct io_context *io_context;
125868 +
125869 + unsigned long ptrace_message;
125870 + siginfo_t *last_siginfo;
125871 + struct task_io_accounting ioac;
125872 +
125873 + u64 acct_rss_mem1;
125874 + u64 acct_vm_mem1;
125875 + cputime_t acct_timexpd;
125876 +# 1294 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125877 + struct robust_list_head *robust_list;
125878 +
125879 +
125880 +
125881 + struct list_head pi_state_list;
125882 + struct futex_pi_state *pi_state_cache;
125883 +
125884 +
125885 +
125886 +
125887 +
125888 + atomic_t fs_excl;
125889 + struct rcu_head rcu;
125890 +
125891 + struct list_head *scm_work_list;
125892 +
125893 +
125894 +
125895 +
125896 + struct pipe_inode_info *splice_pipe;
125897 +
125898 + struct task_delay_info *delays;
125899 +
125900 +
125901 +
125902 +
125903 + struct prop_local_single dirties;
125904 +
125905 +
125906 +
125907 +
125908 +};
125909 +# 1346 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125910 +static inline __attribute__((always_inline)) int rt_prio(int prio)
125911 +{
125912 + if (__builtin_expect(!!(prio < 100), 0))
125913 +  return 1;
125914 + return 0;
125915 +}
125916 +
125917 +static inline __attribute__((always_inline)) int rt_task(struct task_struct *p)
125918 +{
125919 + return rt_prio(p->prio);
125920 +}
125921 +
125922 +static inline __attribute__((always_inline)) void set_task_session(struct task_struct *tsk, pid_t session)
125923 +{
125924 + tsk->signal->__session = session;
125925 +}
125926 +
125927 +static inline __attribute__((always_inline)) void set_task_pgrp(struct task_struct *tsk, pid_t pgrp)
125928 +{
125929 + tsk->signal->__pgrp = pgrp;
125930 +}
125931 +
125932 +static inline __attribute__((always_inline)) struct pid *task_pid(struct task_struct *task)
125933 +{
125934 + return task->pids[PIDTYPE_PID].pid;
125935 +}
125936 +
125937 +static inline __attribute__((always_inline)) struct pid *task_tgid(struct task_struct *task)
125938 +{
125939 + return task->group_leader->pids[PIDTYPE_PID].pid;
125940 +}
125941 +
125942 +static inline __attribute__((always_inline)) struct pid *task_pgrp(struct task_struct *task)
125943 +{
125944 + return task->group_leader->pids[PIDTYPE_PGID].pid;
125945 +}
125946 +
125947 +static inline __attribute__((always_inline)) struct pid *task_session(struct task_struct *task)
125948 +{
125949 + return task->group_leader->pids[PIDTYPE_SID].pid;
125950 +}
125951 +
125952 +struct pid_namespace;
125953 +# 1404 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
125954 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/base.h" 1
125955 +
125956 +
125957 +
125958 +
125959 +
125960 +
125961 +enum {
125962 + VSC_STARTUP = 1,
125963 + VSC_SHUTDOWN,
125964 +
125965 + VSC_NETUP,
125966 + VSC_NETDOWN,
125967 +};
125968 +# 1405 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
125969 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 1
125970 +# 83 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h"
125971 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 1
125972 +
125973 +
125974 +
125975 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
125976 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2
125977 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1
125978 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2
125979 +
125980 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 1
125981 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h"
125982 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
125983 +# 23 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 2
125984 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/resource.h" 1
125985 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h" 2
125986 +# 41 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h"
125987 +typedef atomic_long_t rlim_atomic_t;
125988 +typedef unsigned long rlim_t;
125989 +# 62 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit.h"
125990 +struct sysinfo;
125991 +
125992 +void vx_vsi_meminfo(struct sysinfo *);
125993 +void vx_vsi_swapinfo(struct sysinfo *);
125994 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/limit_def.h" 2
125995 +
125996 +
125997 +struct _vx_res_limit {
125998 + rlim_t soft;
125999 + rlim_t hard;
126000 +
126001 + rlim_atomic_t rcur;
126002 + rlim_t rmin;
126003 + rlim_t rmax;
126004 +
126005 + atomic_t lhit;
126006 +};
126007 +
126008 +
126009 +
126010 +struct _vx_limit {
126011 + struct _vx_res_limit res[24];
126012 +};
126013 +# 84 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2
126014 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/sched_def.h" 1
126015 +
126016 +
126017 +
126018 +
126019 +
126020 +
126021 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
126022 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/sched_def.h" 2
126023 +
126024 +
126025 +
126026 +
126027 +
126028 +struct _vx_sched {
126029 + spinlock_t tokens_lock;
126030 +
126031 + int tokens;
126032 + int fill_rate[2];
126033 + int interval[2];
126034 + int tokens_min;
126035 + int tokens_max;
126036 +
126037 + int prio_bias;
126038 +
126039 + unsigned update_mask;
126040 + cpumask_t update;
126041 +};
126042 +
126043 +struct _vx_sched_pc {
126044 + int tokens;
126045 + int flags;
126046 +
126047 + int fill_rate[2];
126048 + int interval[2];
126049 + int tokens_min;
126050 + int tokens_max;
126051 +
126052 + int prio_bias;
126053 + int vavavoom;
126054 +
126055 + unsigned long norm_time;
126056 + unsigned long idle_time;
126057 + unsigned long token_time;
126058 + unsigned long onhold;
126059 +
126060 + uint64_t user_ticks;
126061 + uint64_t sys_ticks;
126062 + uint64_t hold_ticks;
126063 +};
126064 +# 85 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2
126065 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cvirt_def.h" 1
126066 +
126067 +
126068 +
126069 +
126070 +
126071 +
126072 +
126073 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
126074 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cvirt_def.h" 2
126075 +
126076 +
126077 +struct _vx_usage_stat {
126078 + uint64_t user;
126079 + uint64_t nice;
126080 + uint64_t system;
126081 + uint64_t softirq;
126082 + uint64_t irq;
126083 + uint64_t idle;
126084 + uint64_t iowait;
126085 +};
126086 +
126087 +struct _vx_syslog {
126088 + wait_queue_head_t log_wait;
126089 + spinlock_t logbuf_lock;
126090 +
126091 + unsigned long log_start;
126092 + unsigned long con_start;
126093 + unsigned long log_end;
126094 + unsigned long logged_chars;
126095 +
126096 + char log_buf[1024];
126097 +};
126098 +
126099 +
126100 +
126101 +
126102 +struct _vx_cvirt {
126103 + atomic_t nr_threads;
126104 + atomic_t nr_running;
126105 + atomic_t nr_uninterruptible;
126106 +
126107 + atomic_t nr_onhold;
126108 + uint32_t onhold_last;
126109 +
126110 + struct timeval bias_tv;
126111 + struct timespec bias_idle;
126112 + struct timespec bias_uptime;
126113 + uint64_t bias_clock;
126114 +
126115 + spinlock_t load_lock;
126116 + atomic_t load_updates;
126117 + uint32_t load_last;
126118 + uint32_t load[3];
126119 +
126120 + atomic_t total_forks;
126121 +
126122 + struct _vx_syslog syslog;
126123 +};
126124 +
126125 +struct _vx_cvirt_pc {
126126 + struct _vx_usage_stat cpustat;
126127 +};
126128 +# 86 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2
126129 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 1
126130 +
126131 +
126132 +
126133 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
126134 +# 5 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 2
126135 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct.h" 1
126136 +
126137 +
126138 +
126139 +
126140 +enum sock_acc_field {
126141 + VXA_SOCK_UNSPEC = 0,
126142 + VXA_SOCK_UNIX,
126143 + VXA_SOCK_INET,
126144 + VXA_SOCK_INET6,
126145 + VXA_SOCK_PACKET,
126146 + VXA_SOCK_OTHER,
126147 + VXA_SOCK_SIZE
126148 +};
126149 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/cacct_def.h" 2
126150 +
126151 +
126152 +struct _vx_sock_acc {
126153 + atomic_long_t count;
126154 + atomic_long_t total;
126155 +};
126156 +
126157 +
126158 +
126159 +struct _vx_cacct {
126160 + struct _vx_sock_acc sock[VXA_SOCK_SIZE][3];
126161 + atomic_t slab[8];
126162 + atomic_t page[6][8];
126163 +};
126164 +# 87 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2
126165 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/device_def.h" 1
126166 +
126167 +
126168 +
126169 +
126170 +
126171 +struct vx_dmap_target {
126172 + dev_t target;
126173 + uint32_t flags;
126174 +};
126175 +
126176 +struct _vx_device {
126177 +
126178 +
126179 +
126180 +};
126181 +# 88 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h" 2
126182 +
126183 +
126184 +
126185 +struct _vx_info_pc {
126186 + struct _vx_sched_pc sched_pc;
126187 + struct _vx_cvirt_pc cvirt_pc;
126188 +};
126189 +
126190 +struct vx_info {
126191 + struct hlist_node vx_hlist;
126192 + xid_t vx_id;
126193 + atomic_t vx_usecnt;
126194 + atomic_t vx_tasks;
126195 + struct vx_info *vx_parent;
126196 + int vx_state;
126197 +
126198 + unsigned long vx_nsmask[2];
126199 + struct nsproxy *vx_nsproxy[2];
126200 + struct fs_struct *vx_fs[2];
126201 +
126202 + uint64_t vx_flags;
126203 + uint64_t vx_ccaps;
126204 + kernel_cap_t vx_bcaps;
126205 +
126206 +
126207 + struct task_struct *vx_reaper;
126208 + pid_t vx_initpid;
126209 + int64_t vx_badness_bias;
126210 +
126211 + struct _vx_limit limit;
126212 + struct _vx_sched sched;
126213 + struct _vx_cvirt cvirt;
126214 + struct _vx_cacct cacct;
126215 +
126216 + struct _vx_device dmap;
126217 +
126218 +
126219 +
126220 +
126221 + struct _vx_info_pc *ptr_pc;
126222 +
126223 +
126224 + wait_queue_head_t vx_wait;
126225 + int reboot_cmd;
126226 + int exit_code;
126227 +
126228 + char vx_name[65];
126229 +};
126230 +# 148 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h"
126231 +struct vx_info_save {
126232 + struct vx_info *vxi;
126233 + xid_t xid;
126234 +};
126235 +# 163 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/context.h"
126236 +extern void claim_vx_info(struct vx_info *, struct task_struct *);
126237 +extern void release_vx_info(struct vx_info *, struct task_struct *);
126238 +
126239 +extern struct vx_info *lookup_vx_info(int);
126240 +extern struct vx_info *lookup_or_create_vx_info(int);
126241 +
126242 +extern int get_xid_list(int, unsigned int *, int);
126243 +extern int xid_is_hashed(xid_t);
126244 +
126245 +extern int vx_migrate_task(struct task_struct *, struct vx_info *, int);
126246 +
126247 +extern long vs_state_change(struct vx_info *, unsigned int);
126248 +# 1406 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
126249 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/debug.h" 1
126250 +# 1407 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
126251 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h" 1
126252 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/linux/vserver/pid.h"
126253 +static inline __attribute__((always_inline)) int __vx_info_map_pid(struct vx_info *vxi, int pid,
126254 + const char *func, const char *file, int line)
126255 +{
126256 + if ((((((vxi) ? (vxi)->vx_flags : 0)) & (0x00000010)) ^ (0))) {
126257 +  do { } while (0);
126258 +
126259 +
126260 +
126261 +
126262 +  if (pid == 0)
126263 +   return 0;
126264 +  if (pid == vxi->vx_initpid)
126265 +   return 1;
126266 + }
126267 + return pid;
126268 +}
126269 +
126270 +
126271 +
126272 +
126273 +
126274 +
126275 +static inline __attribute__((always_inline)) int __vx_info_rmap_pid(struct vx_info *vxi, int pid,
126276 + const char *func, const char *file, int line)
126277 +{
126278 + if ((((((vxi) ? (vxi)->vx_flags : 0)) & (0x00000010)) ^ (0))) {
126279 +  do { } while (0);
126280 +
126281 +
126282 +
126283 +
126284 +  if ((pid == 1) && vxi->vx_initpid)
126285 +   return vxi->vx_initpid;
126286 +  if (pid == vxi->vx_initpid)
126287 +   return ~0U;
126288 + }
126289 + return pid;
126290 +}
126291 +# 1408 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h" 2
126292 +
126293 +static inline __attribute__((always_inline)) pid_t task_pid_nr(struct task_struct *tsk)
126294 +{
126295 + return tsk->pid;
126296 +}
126297 +
126298 +pid_t task_pid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
126299 +
126300 +static inline __attribute__((always_inline)) pid_t task_pid_vnr(struct task_struct *tsk)
126301 +{
126302 + 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);
126303 +}
126304 +
126305 +
126306 +static inline __attribute__((always_inline)) pid_t task_tgid_nr(struct task_struct *tsk)
126307 +{
126308 + return tsk->tgid;
126309 +}
126310 +
126311 +pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
126312 +
126313 +static inline __attribute__((always_inline)) pid_t task_tgid_vnr(struct task_struct *tsk)
126314 +{
126315 + 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);
126316 +}
126317 +
126318 +
126319 +static inline __attribute__((always_inline)) pid_t task_pgrp_nr(struct task_struct *tsk)
126320 +{
126321 + return tsk->signal->__pgrp;
126322 +}
126323 +
126324 +pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
126325 +
126326 +static inline __attribute__((always_inline)) pid_t task_pgrp_vnr(struct task_struct *tsk)
126327 +{
126328 + return pid_vnr(task_pgrp(tsk));
126329 +}
126330 +
126331 +
126332 +static inline __attribute__((always_inline)) pid_t task_session_nr(struct task_struct *tsk)
126333 +{
126334 + return tsk->signal->__session;
126335 +}
126336 +
126337 +pid_t task_session_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
126338 +
126339 +static inline __attribute__((always_inline)) pid_t task_session_vnr(struct task_struct *tsk)
126340 +{
126341 + return pid_vnr(task_session(tsk));
126342 +}
126343 +# 1469 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126344 +static inline __attribute__((always_inline)) int pid_alive(struct task_struct *p)
126345 +{
126346 + return p->pids[PIDTYPE_PID].pid != 0;
126347 +}
126348 +
126349 +
126350 +
126351 +
126352 +
126353 +
126354 +
126355 +static inline __attribute__((always_inline)) int is_global_init(struct task_struct *tsk)
126356 +{
126357 + return tsk->pid == 1;
126358 +}
126359 +
126360 +
126361 +
126362 +
126363 +
126364 +extern int is_container_init(struct task_struct *tsk);
126365 +
126366 +extern struct pid *cad_pid;
126367 +
126368 +extern void free_task(struct task_struct *tsk);
126369 +
126370 +
126371 +extern void __put_task_struct(struct task_struct *t);
126372 +
126373 +static inline __attribute__((always_inline)) void put_task_struct(struct task_struct *t)
126374 +{
126375 + if (atomic_dec_and_test(&t->usage))
126376 +  __put_task_struct(t);
126377 +}
126378 +
126379 +extern cputime_t task_utime(struct task_struct *p);
126380 +extern cputime_t task_stime(struct task_struct *p);
126381 +extern cputime_t task_gtime(struct task_struct *p);
126382 +# 1567 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126383 +extern int set_cpus_allowed_ptr(struct task_struct *p,
126384 +    const cpumask_t *new_mask);
126385 +# 1578 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126386 +static inline __attribute__((always_inline)) int set_cpus_allowed(struct task_struct *p, cpumask_t new_mask)
126387 +{
126388 + return set_cpus_allowed_ptr(p, &new_mask);
126389 +}
126390 +
126391 +extern unsigned long long sched_clock(void);
126392 +
126393 +extern void sched_clock_init(void);
126394 +extern u64 sched_clock_cpu(int cpu);
126395 +# 1601 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126396 +extern void sched_clock_tick(void);
126397 +extern void sched_clock_idle_sleep_event(void);
126398 +extern void sched_clock_idle_wakeup_event(u64 delta_ns);
126399 +
126400 +
126401 +
126402 +
126403 +
126404 +
126405 +extern unsigned long long cpu_clock(int cpu);
126406 +
126407 +extern unsigned long long
126408 +task_sched_runtime(struct task_struct *task);
126409 +
126410 +
126411 +
126412 +extern void sched_exec(void);
126413 +
126414 +
126415 +
126416 +
126417 +extern void sched_clock_idle_sleep_event(void);
126418 +extern void sched_clock_idle_wakeup_event(u64 delta_ns);
126419 +
126420 +
126421 +extern void idle_task_exit(void);
126422 +
126423 +
126424 +
126425 +
126426 +extern void sched_idle_next(void);
126427 +
126428 +
126429 +
126430 +
126431 +static inline __attribute__((always_inline)) void wake_up_idle_cpu(int cpu) { }
126432 +
126433 +
126434 +
126435 +extern unsigned int sysctl_sched_latency;
126436 +extern unsigned int sysctl_sched_min_granularity;
126437 +extern unsigned int sysctl_sched_wakeup_granularity;
126438 +extern unsigned int sysctl_sched_child_runs_first;
126439 +extern unsigned int sysctl_sched_features;
126440 +extern unsigned int sysctl_sched_migration_cost;
126441 +extern unsigned int sysctl_sched_nr_migrate;
126442 +extern unsigned int sysctl_sched_shares_ratelimit;
126443 +
126444 +int sched_nr_latency_handler(struct ctl_table *table, int write,
126445 +  struct file *file, void *buffer, size_t *length,
126446 +  loff_t *ppos);
126447 +
126448 +extern unsigned int sysctl_sched_rt_period;
126449 +extern int sysctl_sched_rt_runtime;
126450 +
126451 +int sched_rt_handler(struct ctl_table *table, int write,
126452 +  struct file *filp, void *buffer, size_t *lenp,
126453 +  loff_t *ppos);
126454 +
126455 +extern unsigned int sysctl_sched_compat_yield;
126456 +
126457 +
126458 +extern int rt_mutex_getprio(struct task_struct *p);
126459 +extern void rt_mutex_setprio(struct task_struct *p, int prio);
126460 +extern void rt_mutex_adjust_pi(struct task_struct *p);
126461 +# 1674 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126462 +extern void set_user_nice(struct task_struct *p, long nice);
126463 +extern int task_prio(const struct task_struct *p);
126464 +extern int task_nice(const struct task_struct *p);
126465 +extern int can_nice(const struct task_struct *p, const int nice);
126466 +extern int task_curr(const struct task_struct *p);
126467 +extern int idle_cpu(int cpu);
126468 +extern int sched_setscheduler(struct task_struct *, int, struct sched_param *);
126469 +extern int sched_setscheduler_nocheck(struct task_struct *, int,
126470 +          struct sched_param *);
126471 +extern struct task_struct *idle_task(int cpu);
126472 +extern struct task_struct *curr_task(int cpu);
126473 +extern void set_curr_task(int cpu, struct task_struct *p);
126474 +
126475 +void yield(void);
126476 +
126477 +
126478 +
126479 +
126480 +extern struct exec_domain default_exec_domain;
126481 +
126482 +union thread_union {
126483 + struct thread_info thread_info;
126484 + unsigned long stack[(((1UL) << 12) << 0)/sizeof(long)];
126485 +};
126486 +
126487 +
126488 +static inline __attribute__((always_inline)) int kstack_end(void *addr)
126489 +{
126490 +
126491 +
126492 +
126493 + return !(((unsigned long)addr+sizeof(void*)-1) & ((((1UL) << 12) << 0)-sizeof(void*)));
126494 +}
126495 +
126496 +
126497 +extern union thread_union init_thread_union;
126498 +extern struct task_struct init_task;
126499 +
126500 +extern struct mm_struct init_mm;
126501 +
126502 +extern struct pid_namespace init_pid_ns;
126503 +# 1730 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126504 +extern struct task_struct *find_task_by_pid_type_ns(int type, int pid,
126505 +  struct pid_namespace *ns);
126506 +
126507 +extern struct task_struct *find_task_by_vpid(pid_t nr);
126508 +extern struct task_struct *find_task_by_pid_ns(pid_t nr,
126509 +  struct pid_namespace *ns);
126510 +
126511 +extern void __set_special_pids(struct pid *pid);
126512 +
126513 +
126514 +extern struct user_struct * alloc_uid(struct user_namespace *, uid_t);
126515 +static inline __attribute__((always_inline)) struct user_struct *get_uid(struct user_struct *u)
126516 +{
126517 + atomic_inc(&u->__count);
126518 + return u;
126519 +}
126520 +extern void free_uid(struct user_struct *);
126521 +extern void switch_uid(struct user_struct *);
126522 +extern void release_uids(struct user_namespace *ns);
126523 +
126524 +
126525 +
126526 +extern void do_timer(unsigned long ticks);
126527 +
126528 +extern int wake_up_state(struct task_struct *tsk, unsigned int state);
126529 +extern int wake_up_process(struct task_struct *tsk);
126530 +extern void wake_up_new_task(struct task_struct *tsk,
126531 +    unsigned long clone_flags);
126532 +
126533 + extern void kick_process(struct task_struct *tsk);
126534 +
126535 +
126536 +
126537 +extern void sched_fork(struct task_struct *p, int clone_flags);
126538 +extern void sched_dead(struct task_struct *p);
126539 +
126540 +extern int in_group_p(gid_t);
126541 +extern int in_egroup_p(gid_t);
126542 +
126543 +extern void proc_caches_init(void);
126544 +extern void flush_signals(struct task_struct *);
126545 +extern void ignore_signals(struct task_struct *);
126546 +extern void flush_signal_handlers(struct task_struct *, int force_default);
126547 +extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info);
126548 +
126549 +static inline __attribute__((always_inline)) int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info)
126550 +{
126551 + unsigned long flags;
126552 + int ret;
126553 +
126554 + do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); flags = _spin_lock_irqsave(&tsk->sighand->siglock); } while (0);
126555 + ret = dequeue_signal(tsk, mask, info);
126556 + do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _spin_unlock_irqrestore(&tsk->sighand->siglock, flags); } while (0);
126557 +
126558 + return ret;
126559 +}
126560 +
126561 +extern void block_all_signals(int (*notifier)(void *priv), void *priv,
126562 +         sigset_t *mask);
126563 +extern void unblock_all_signals(void);
126564 +extern void release_task(struct task_struct * p);
126565 +extern int send_sig_info(int, struct siginfo *, struct task_struct *);
126566 +extern int force_sigsegv(int, struct task_struct *);
126567 +extern int force_sig_info(int, struct siginfo *, struct task_struct *);
126568 +extern int __kill_pgrp_info(int sig, struct siginfo *info, struct pid *pgrp);
126569 +extern int kill_pid_info(int sig, struct siginfo *info, struct pid *pid);
126570 +extern int kill_pid_info_as_uid(int, struct siginfo *, struct pid *, uid_t, uid_t, u32);
126571 +extern int kill_pgrp(struct pid *pid, int sig, int priv);
126572 +extern int kill_pid(struct pid *pid, int sig, int priv);
126573 +extern int kill_proc_info(int, struct siginfo *, pid_t);
126574 +extern int do_notify_parent(struct task_struct *, int);
126575 +extern void force_sig(int, struct task_struct *);
126576 +extern void force_sig_specific(int, struct task_struct *);
126577 +extern int send_sig(int, struct task_struct *, int);
126578 +extern void zap_other_threads(struct task_struct *p);
126579 +extern struct sigqueue *sigqueue_alloc(void);
126580 +extern void sigqueue_free(struct sigqueue *);
126581 +extern int send_sigqueue(struct sigqueue *, struct task_struct *, int group);
126582 +extern int do_sigaction(int, struct k_sigaction *, struct k_sigaction *);
126583 +extern int do_sigaltstack(const stack_t *, stack_t *, unsigned long);
126584 +
126585 +static inline __attribute__((always_inline)) int kill_cad_pid(int sig, int priv)
126586 +{
126587 + return kill_pid(cad_pid, sig, priv);
126588 +}
126589 +
126590 +
126591 +
126592 +
126593 +
126594 +
126595 +static inline __attribute__((always_inline)) int is_si_special(const struct siginfo *info)
126596 +{
126597 + return info <= ((struct siginfo *) 2);
126598 +}
126599 +
126600 +
126601 +
126602 +static inline __attribute__((always_inline)) int on_sig_stack(unsigned long sp)
126603 +{
126604 + return (sp - get_current()->sas_ss_sp < get_current()->sas_ss_size);
126605 +}
126606 +
126607 +static inline __attribute__((always_inline)) int sas_ss_flags(unsigned long sp)
126608 +{
126609 + return (get_current()->sas_ss_size == 0 ? 2
126610 +  : on_sig_stack(sp) ? 1 : 0);
126611 +}
126612 +
126613 +
126614 +
126615 +
126616 +extern struct mm_struct * mm_alloc(void);
126617 +
126618 +
126619 +extern void __mmdrop(struct mm_struct *);
126620 +static inline __attribute__((always_inline)) void mmdrop(struct mm_struct * mm)
126621 +{
126622 + if (__builtin_expect(!!(atomic_dec_and_test(&mm->mm_count)), 0))
126623 +  __mmdrop(mm);
126624 +}
126625 +
126626 +
126627 +extern void mmput(struct mm_struct *);
126628 +
126629 +extern struct mm_struct *get_task_mm(struct task_struct *task);
126630 +
126631 +extern void mm_release(struct task_struct *, struct mm_struct *);
126632 +
126633 +extern struct mm_struct *dup_mm(struct task_struct *tsk);
126634 +
126635 +extern int copy_thread(int, unsigned long, unsigned long, unsigned long, struct task_struct *, struct pt_regs *);
126636 +extern void flush_thread(void);
126637 +extern void exit_thread(void);
126638 +
126639 +extern void exit_files(struct task_struct *);
126640 +extern void __cleanup_signal(struct signal_struct *);
126641 +extern void __cleanup_sighand(struct sighand_struct *);
126642 +
126643 +extern void exit_itimers(struct signal_struct *);
126644 +extern void flush_itimer_signals(void);
126645 +
126646 +extern void do_group_exit(int);
126647 +
126648 +extern void daemonize(const char *, ...);
126649 +extern int allow_signal(int);
126650 +extern int disallow_signal(int);
126651 +
126652 +extern int do_execve(char *, char * *, char * *, struct pt_regs *);
126653 +extern long do_fork(unsigned long, unsigned long, struct pt_regs *, unsigned long, int *, int *);
126654 +struct task_struct *fork_idle(int);
126655 +
126656 +extern void set_task_comm(struct task_struct *tsk, char *from);
126657 +extern char *get_task_comm(char *to, struct task_struct *tsk);
126658 +
126659 +
126660 +extern unsigned long wait_task_inactive(struct task_struct *, long match_state);
126661 +# 1919 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126662 +static inline __attribute__((always_inline)) int has_group_leader_pid(struct task_struct *p)
126663 +{
126664 + return p->pid == p->tgid;
126665 +}
126666 +
126667 +static inline __attribute__((always_inline))
126668 +int same_thread_group(struct task_struct *p1, struct task_struct *p2)
126669 +{
126670 + return p1->tgid == p2->tgid;
126671 +}
126672 +
126673 +static inline __attribute__((always_inline)) struct task_struct *next_thread(const struct task_struct *p)
126674 +{
126675 + 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) );});
126676 +
126677 +}
126678 +
126679 +static inline __attribute__((always_inline)) int thread_group_empty(struct task_struct *p)
126680 +{
126681 + return list_empty(&p->thread_group);
126682 +}
126683 +# 1954 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126684 +static inline __attribute__((always_inline)) void task_lock(struct task_struct *p)
126685 +{
126686 + _spin_lock(&p->alloc_lock);
126687 +}
126688 +
126689 +static inline __attribute__((always_inline)) void task_unlock(struct task_struct *p)
126690 +{
126691 + do {__raw_spin_unlock(&(&p->alloc_lock)->raw_lock); (void)0; } while (0);
126692 +}
126693 +
126694 +extern struct sighand_struct *lock_task_sighand(struct task_struct *tsk,
126695 +       unsigned long *flags);
126696 +
126697 +static inline __attribute__((always_inline)) void unlock_task_sighand(struct task_struct *tsk,
126698 +      unsigned long *flags)
126699 +{
126700 + do { ({ unsigned long __dummy; typeof(*flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); _spin_unlock_irqrestore(&tsk->sighand->siglock, *flags); } while (0);
126701 +}
126702 +
126703 +
126704 +
126705 +
126706 +
126707 +
126708 +static inline __attribute__((always_inline)) void setup_thread_stack(struct task_struct *p, struct task_struct *org)
126709 +{
126710 + *((struct thread_info *)(p)->stack) = *((struct thread_info *)(org)->stack);
126711 + ((struct thread_info *)(p)->stack)->task = p;
126712 +}
126713 +
126714 +static inline __attribute__((always_inline)) unsigned long *end_of_stack(struct task_struct *p)
126715 +{
126716 + return (unsigned long *)((char *) ((struct thread_info *)(p)->stack) + 1);
126717 +}
126718 +
126719 +
126720 +
126721 +static inline __attribute__((always_inline)) int object_is_on_stack(void *obj)
126722 +{
126723 + void *stack = ((get_current())->stack);
126724 +
126725 + return (obj >= stack) && ((char *) obj < ((char *) stack + (((1UL) << 12) << 0)));
126726 +}
126727 +
126728 +extern void thread_info_cache_init(void);
126729 +
126730 +
126731 +
126732 +
126733 +static inline __attribute__((always_inline)) void set_tsk_thread_flag(struct task_struct *tsk, int flag)
126734 +{
126735 + set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag);
126736 +}
126737 +
126738 +static inline __attribute__((always_inline)) void clear_tsk_thread_flag(struct task_struct *tsk, int flag)
126739 +{
126740 + clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag);
126741 +}
126742 +
126743 +static inline __attribute__((always_inline)) int test_and_set_tsk_thread_flag(struct task_struct *tsk, int flag)
126744 +{
126745 + return test_and_set_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag);
126746 +}
126747 +
126748 +static inline __attribute__((always_inline)) int test_and_clear_tsk_thread_flag(struct task_struct *tsk, int flag)
126749 +{
126750 + return test_and_clear_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag);
126751 +}
126752 +
126753 +static inline __attribute__((always_inline)) int test_tsk_thread_flag(struct task_struct *tsk, int flag)
126754 +{
126755 + return test_ti_thread_flag(((struct thread_info *)(tsk)->stack), flag);
126756 +}
126757 +
126758 +static inline __attribute__((always_inline)) void set_tsk_need_resched(struct task_struct *tsk)
126759 +{
126760 + set_tsk_thread_flag(tsk,3);
126761 +}
126762 +
126763 +static inline __attribute__((always_inline)) void clear_tsk_need_resched(struct task_struct *tsk)
126764 +{
126765 + clear_tsk_thread_flag(tsk,3);
126766 +}
126767 +
126768 +static inline __attribute__((always_inline)) int test_tsk_need_resched(struct task_struct *tsk)
126769 +{
126770 + return __builtin_expect(!!(test_tsk_thread_flag(tsk,3)), 0);
126771 +}
126772 +
126773 +static inline __attribute__((always_inline)) int signal_pending(struct task_struct *p)
126774 +{
126775 + return __builtin_expect(!!(test_tsk_thread_flag(p,2)), 0);
126776 +}
126777 +
126778 +extern int __fatal_signal_pending(struct task_struct *p);
126779 +
126780 +static inline __attribute__((always_inline)) int fatal_signal_pending(struct task_struct *p)
126781 +{
126782 + return signal_pending(p) && __fatal_signal_pending(p);
126783 +}
126784 +
126785 +static inline __attribute__((always_inline)) int signal_pending_state(long state, struct task_struct *p)
126786 +{
126787 + if (!(state & (1 | 128)))
126788 +  return 0;
126789 + if (!signal_pending(p))
126790 +  return 0;
126791 +
126792 + return (state & 1) || __fatal_signal_pending(p);
126793 +}
126794 +
126795 +static inline __attribute__((always_inline)) int need_resched(void)
126796 +{
126797 + return __builtin_expect(!!(test_ti_thread_flag(current_thread_info(), 3)), 0);
126798 +}
126799 +# 2077 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126800 +extern int _cond_resched(void);
126801 +
126802 +
126803 +
126804 +
126805 +
126806 +
126807 +static inline __attribute__((always_inline)) int cond_resched(void)
126808 +{
126809 + return _cond_resched();
126810 +}
126811 +
126812 +extern int cond_resched_lock(spinlock_t * lock);
126813 +extern int cond_resched_softirq(void);
126814 +static inline __attribute__((always_inline)) int cond_resched_bkl(void)
126815 +{
126816 + return _cond_resched();
126817 +}
126818 +
126819 +
126820 +
126821 +
126822 +
126823 +
126824 +static inline __attribute__((always_inline)) int spin_needbreak(spinlock_t *lock)
126825 +{
126826 +
126827 +
126828 +
126829 + return 0;
126830 +
126831 +}
126832 +
126833 +
126834 +
126835 +
126836 +
126837 +
126838 +
126839 +extern void recalc_sigpending_and_wake(struct task_struct *t);
126840 +extern void recalc_sigpending(void);
126841 +
126842 +extern void signal_wake_up(struct task_struct *t, int resume_stopped);
126843 +
126844 +
126845 +
126846 +
126847 +
126848 +
126849 +static inline __attribute__((always_inline)) unsigned int task_cpu(const struct task_struct *p)
126850 +{
126851 + return ((struct thread_info *)(p)->stack)->cpu;
126852 +}
126853 +
126854 +extern void set_task_cpu(struct task_struct *p, unsigned int cpu);
126855 +# 2146 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126856 +extern void arch_pick_mmap_layout(struct mm_struct *mm);
126857 +
126858 +
126859 +
126860 +
126861 +
126862 +
126863 +static inline __attribute__((always_inline)) void
126864 +__trace_special(void *__tr, void *__data,
126865 +  unsigned long arg1, unsigned long arg2, unsigned long arg3)
126866 +{
126867 +}
126868 +
126869 +
126870 +extern long sched_setaffinity(pid_t pid, const cpumask_t *new_mask);
126871 +extern long sched_getaffinity(pid_t pid, cpumask_t *mask);
126872 +
126873 +extern int sched_mc_power_savings, sched_smt_power_savings;
126874 +
126875 +extern void normalize_rt_tasks(void);
126876 +# 2192 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126877 +static inline __attribute__((always_inline)) void add_rchar(struct task_struct *tsk, ssize_t amt)
126878 +{
126879 + tsk->ioac.rchar += amt;
126880 +}
126881 +
126882 +static inline __attribute__((always_inline)) void add_wchar(struct task_struct *tsk, ssize_t amt)
126883 +{
126884 + tsk->ioac.wchar += amt;
126885 +}
126886 +
126887 +static inline __attribute__((always_inline)) void inc_syscr(struct task_struct *tsk)
126888 +{
126889 + tsk->ioac.syscr++;
126890 +}
126891 +
126892 +static inline __attribute__((always_inline)) void inc_syscw(struct task_struct *tsk)
126893 +{
126894 + tsk->ioac.syscw++;
126895 +}
126896 +# 2237 "/d/kernels/linux-2.6.27.10-clickport/include/linux/sched.h"
126897 +static inline __attribute__((always_inline)) void mm_update_next_owner(struct mm_struct *mm)
126898 +{
126899 +}
126900 +
126901 +static inline __attribute__((always_inline)) void mm_init_owner(struct mm_struct *mm, struct task_struct *p)
126902 +{
126903 +}
126904 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h" 2
126905 +
126906 +
126907 +
126908 +extern int __attribute__((section(".spinlock.text"))) __reacquire_kernel_lock(void);
126909 +extern void __attribute__((section(".spinlock.text"))) __release_kernel_lock(void);
126910 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/smp_lock.h"
126911 +static inline __attribute__((always_inline)) int reacquire_kernel_lock(struct task_struct *task)
126912 +{
126913 + if (__builtin_expect(!!(task->lock_depth >= 0), 0))
126914 +  return __reacquire_kernel_lock();
126915 + return 0;
126916 +}
126917 +
126918 +extern void __attribute__((section(".spinlock.text"))) lock_kernel(void) ;
126919 +extern void __attribute__((section(".spinlock.text"))) unlock_kernel(void) ;
126920 +
126921 +
126922 +
126923 +
126924 +
126925 +
126926 +
126927 +static inline __attribute__((always_inline)) void cycle_kernel_lock(void)
126928 +{
126929 + lock_kernel();
126930 + unlock_kernel();
126931 +}
126932 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 2
126933 +
126934 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h" 1
126935 +
126936 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 1
126937 +
126938 +
126939 +
126940 +
126941 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 1
126942 +# 20 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
126943 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqreturn.h" 1
126944 +# 19 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irqreturn.h"
126945 +typedef int irqreturn_t;
126946 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2
126947 +
126948 +
126949 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" 1
126950 +# 11 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h"
126951 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_vectors.h" 1
126952 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h" 2
126953 +
126954 +static inline __attribute__((always_inline)) int irq_canonicalize(int irq)
126955 +{
126956 + return ((irq == 2) ? 9 : irq);
126957 +}
126958 +
126959 +
126960 +
126961 +
126962 +
126963 +
126964 +  extern void irq_ctx_init(int cpu);
126965 +  extern void irq_ctx_exit(int cpu);
126966 +# 40 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq.h"
126967 +extern void fixup_irqs(cpumask_t map);
126968 +
126969 +
126970 +extern unsigned int do_IRQ(struct pt_regs *regs);
126971 +extern void init_IRQ(void);
126972 +extern void native_init_IRQ(void);
126973 +
126974 +
126975 +extern unsigned long used_vectors[(((256) + (8 * sizeof(long)) - 1) / (8 * sizeof(long)))];
126976 +# 24 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2
126977 +
126978 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs.h" 1
126979 +
126980 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs_32.h" 1
126981 +# 12 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs_32.h"
126982 +extern __typeof__(struct pt_regs *) per_cpu__irq_regs;
126983 +
126984 +static inline __attribute__((always_inline)) struct pt_regs *get_irq_regs(void)
126985 +{
126986 + 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__; });
126987 +}
126988 +
126989 +static inline __attribute__((always_inline)) struct pt_regs *set_irq_regs(struct pt_regs *new_regs)
126990 +{
126991 + struct pt_regs *old_regs;
126992 +
126993 + old_regs = get_irq_regs();
126994 + 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);
126995 +
126996 + return old_regs;
126997 +}
126998 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/irq_regs.h" 2
126999 +# 26 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2
127000 +
127001 +struct irq_desc;
127002 +typedef void (*irq_flow_handler_t)(unsigned int irq,
127003 +         struct irq_desc *desc);
127004 +# 74 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127005 +struct proc_dir_entry;
127006 +struct msi_desc;
127007 +# 99 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127008 +struct irq_chip {
127009 + const char *name;
127010 + unsigned int (*startup)(unsigned int irq);
127011 + void (*shutdown)(unsigned int irq);
127012 + void (*enable)(unsigned int irq);
127013 + void (*disable)(unsigned int irq);
127014 +
127015 + void (*ack)(unsigned int irq);
127016 + void (*mask)(unsigned int irq);
127017 + void (*mask_ack)(unsigned int irq);
127018 + void (*unmask)(unsigned int irq);
127019 + void (*eoi)(unsigned int irq);
127020 +
127021 + void (*end)(unsigned int irq);
127022 + void (*set_affinity)(unsigned int irq, cpumask_t dest);
127023 + int (*retrigger)(unsigned int irq);
127024 + int (*set_type)(unsigned int irq, unsigned int flow_type);
127025 + int (*set_wake)(unsigned int irq, unsigned int on);
127026 +# 126 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127027 + const char *xxx_typename;
127028 +};
127029 +# 153 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127030 +struct irq_desc {
127031 + irq_flow_handler_t handle_irq;
127032 + struct irq_chip *chip;
127033 + struct msi_desc *msi_desc;
127034 + void *handler_data;
127035 + void *chip_data;
127036 + struct irqaction *action;
127037 + unsigned int status;
127038 +
127039 + unsigned int depth;
127040 + unsigned int wake_depth;
127041 + unsigned int irq_count;
127042 + unsigned int irqs_unhandled;
127043 + unsigned long last_unhandled;
127044 + spinlock_t lock;
127045 +
127046 + cpumask_t affinity;
127047 + unsigned int cpu;
127048 +
127049 +
127050 + cpumask_t pending_mask;
127051 +
127052 +
127053 + struct proc_dir_entry *dir;
127054 +
127055 + const char *name;
127056 +} __attribute__((__aligned__(1 << ((7)))));
127057 +
127058 +extern struct irq_desc irq_desc[224];
127059 +
127060 +
127061 +
127062 +
127063 +
127064 +typedef struct irq_chip hw_irq_controller;
127065 +
127066 +typedef struct irq_desc irq_desc_t;
127067 +
127068 +
127069 +
127070 +
127071 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 1
127072 +# 21 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h"
127073 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h" 1
127074 +# 9 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h"
127075 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/errno.h" 1
127076 +# 10 "/d/kernels/linux-2.6.27.10-clickport/include/linux/profile.h" 2
127077 +
127078 +
127079 +
127080 +
127081 +
127082 +
127083 +struct proc_dir_entry;
127084 +struct pt_regs;
127085 +struct notifier_block;
127086 +
127087 +
127088 +void create_prof_cpu_mask(struct proc_dir_entry *de);
127089 +
127090 +
127091 +
127092 +
127093 +
127094 +
127095 +enum profile_type {
127096 + PROFILE_TASK_EXIT,
127097 + PROFILE_MUNMAP
127098 +};
127099 +
127100 +
127101 +
127102 +extern int prof_on __attribute__((__section__(".data.read_mostly")));
127103 +
127104 +
127105 +void __attribute__ ((__section__(".init.text"))) profile_init(void);
127106 +void profile_tick(int type);
127107 +
127108 +
127109 +
127110 +
127111 +void profile_hits(int type, void *ip, unsigned int nr_hits);
127112 +
127113 +
127114 +
127115 +
127116 +static inline __attribute__((always_inline)) void profile_hit(int type, void *ip)
127117 +{
127118 +
127119 +
127120 +
127121 + if (__builtin_expect(!!(prof_on == type), 0))
127122 +  profile_hits(type, ip, 1);
127123 +}
127124 +
127125 +struct task_struct;
127126 +struct mm_struct;
127127 +
127128 +
127129 +void profile_task_exit(struct task_struct * task);
127130 +
127131 +
127132 +
127133 +
127134 +int profile_handoff_task(struct task_struct * task);
127135 +
127136 +
127137 +void profile_munmap(unsigned long addr);
127138 +
127139 +int task_handoff_register(struct notifier_block * n);
127140 +int task_handoff_unregister(struct notifier_block * n);
127141 +
127142 +int profile_event_register(enum profile_type, struct notifier_block * n);
127143 +int profile_event_unregister(enum profile_type, struct notifier_block * n);
127144 +
127145 +int register_timer_hook(int (*hook)(struct pt_regs *));
127146 +void unregister_timer_hook(int (*hook)(struct pt_regs *));
127147 +
127148 +struct pt_regs;
127149 +# 22 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2
127150 +
127151 +
127152 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/atomic.h" 1
127153 +# 25 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2
127154 +
127155 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sections.h" 1
127156 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm-generic/sections.h" 1
127157 +
127158 +
127159 +
127160 +
127161 +
127162 +extern char _text[], _stext[], _etext[];
127163 +extern char _data[], _sdata[], _edata[];
127164 +extern char __bss_start[], __bss_stop[];
127165 +extern char __init_begin[], __init_end[];
127166 +extern char _sinittext[], _einittext[];
127167 +extern char _end[];
127168 +extern char __per_cpu_start[], __per_cpu_end[];
127169 +extern char __kprobes_text_start[], __kprobes_text_end[];
127170 +extern char __initdata_begin[], __initdata_end[];
127171 +extern char __start_rodata[], __end_rodata[];
127172 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/sections.h" 2
127173 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h" 2
127174 +
127175 +
127176 +
127177 +
127178 +extern void apic_timer_interrupt(void);
127179 +extern void error_interrupt(void);
127180 +extern void spurious_interrupt(void);
127181 +extern void thermal_interrupt(void);
127182 +extern void reschedule_interrupt(void);
127183 +
127184 +extern void invalidate_interrupt(void);
127185 +extern void invalidate_interrupt0(void);
127186 +extern void invalidate_interrupt1(void);
127187 +extern void invalidate_interrupt2(void);
127188 +extern void invalidate_interrupt3(void);
127189 +extern void invalidate_interrupt4(void);
127190 +extern void invalidate_interrupt5(void);
127191 +extern void invalidate_interrupt6(void);
127192 +extern void invalidate_interrupt7(void);
127193 +
127194 +extern void irq_move_cleanup_interrupt(void);
127195 +extern void threshold_interrupt(void);
127196 +
127197 +extern void call_function_interrupt(void);
127198 +extern void call_function_single_interrupt(void);
127199 +
127200 +
127201 +extern void disable_8259A_irq(unsigned int irq);
127202 +extern void enable_8259A_irq(unsigned int irq);
127203 +extern int i8259A_irq_pending(unsigned int irq);
127204 +extern void make_8259A_irq(unsigned int irq);
127205 +extern void init_8259A(int aeoi);
127206 +
127207 +
127208 +
127209 +extern unsigned long io_apic_irqs;
127210 +
127211 +extern void init_VISWS_APIC_irqs(void);
127212 +extern void setup_IO_APIC(void);
127213 +extern void disable_IO_APIC(void);
127214 +extern void print_IO_APIC(void);
127215 +extern int IO_APIC_get_PCI_irq_vector(int bus, int slot, int fn);
127216 +extern void setup_ioapic_dest(void);
127217 +
127218 +
127219 +
127220 +
127221 +
127222 +
127223 +extern void send_IPI_self(int vector);
127224 +extern void send_IPI(int dest, int vector);
127225 +
127226 +
127227 +extern atomic_t irq_err_count;
127228 +extern atomic_t irq_mis_count;
127229 +
127230 +
127231 +extern void eisa_set_level_irq(unsigned int irq);
127232 +
127233 +
127234 +
127235 +extern "C" __attribute__((regparm(0))) void vic_cpi_interrupt(void);
127236 +extern "C" __attribute__((regparm(0))) void vic_sys_interrupt(void);
127237 +extern "C" __attribute__((regparm(0))) void vic_cmn_interrupt(void);
127238 +extern "C" __attribute__((regparm(0))) void qic_timer_interrupt(void);
127239 +extern "C" __attribute__((regparm(0))) void qic_invalidate_interrupt(void);
127240 +extern "C" __attribute__((regparm(0))) void qic_reschedule_interrupt(void);
127241 +extern "C" __attribute__((regparm(0))) void qic_enable_irq_interrupt(void);
127242 +extern "C" __attribute__((regparm(0))) void qic_call_function_interrupt(void);
127243 +# 109 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h"
127244 +extern void (*const interrupt[224])(void);
127245 +# 120 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hw_irq.h"
127246 +static inline __attribute__((always_inline)) void lock_vector_lock(void) {}
127247 +static inline __attribute__((always_inline)) void unlock_vector_lock(void) {}
127248 +static inline __attribute__((always_inline)) void __setup_vector_irq(int cpu) {}
127249 +# 195 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h" 2
127250 +
127251 +extern int setup_irq(unsigned int irq, struct irqaction *xxx_new);
127252 +# 208 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127253 +void set_pending_irq(unsigned int irq, cpumask_t mask);
127254 +void move_native_irq(int irq);
127255 +void move_masked_irq(int irq);
127256 +# 242 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127257 +static inline __attribute__((always_inline)) void set_balance_irq_affinity(unsigned int irq, cpumask_t mask)
127258 +{
127259 +}
127260 +
127261 +
127262 +extern int no_irq_affinity;
127263 +
127264 +static inline __attribute__((always_inline)) int irq_balancing_disabled(unsigned int irq)
127265 +{
127266 + return irq_desc[irq].status & 0x00400000;
127267 +}
127268 +
127269 +
127270 +extern int handle_IRQ_event(unsigned int irq, struct irqaction *action);
127271 +
127272 +
127273 +
127274 +
127275 +
127276 +extern void handle_level_irq(unsigned int irq, struct irq_desc *desc);
127277 +extern void handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc);
127278 +extern void handle_edge_irq(unsigned int irq, struct irq_desc *desc);
127279 +extern void handle_simple_irq(unsigned int irq, struct irq_desc *desc);
127280 +extern void handle_percpu_irq(unsigned int irq, struct irq_desc *desc);
127281 +extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc);
127282 +
127283 +
127284 +
127285 +
127286 +
127287 +extern unsigned int __do_IRQ(unsigned int irq);
127288 +# 281 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq.h"
127289 +static inline __attribute__((always_inline)) void generic_handle_irq(unsigned int irq)
127290 +{
127291 + struct irq_desc *desc = irq_desc + irq;
127292 +
127293 +
127294 +
127295 +
127296 + if (__builtin_expect(!!(desc->handle_irq), 1))
127297 +  desc->handle_irq(irq, desc);
127298 + else
127299 +  __do_IRQ(irq);
127300 +
127301 +}
127302 +
127303 +
127304 +extern void note_interrupt(unsigned int irq, struct irq_desc *desc,
127305 +      int action_ret);
127306 +
127307 +
127308 +void check_irq_resend(struct irq_desc *desc, unsigned int irq);
127309 +
127310 +
127311 +extern int noirqdebug_setup(char *str);
127312 +
127313 +
127314 +extern int can_request_irq(unsigned int irq, unsigned long irqflags);
127315 +
127316 +
127317 +extern struct irq_chip no_irq_chip;
127318 +extern struct irq_chip dummy_irq_chip;
127319 +
127320 +extern void
127321 +set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
127322 +    irq_flow_handler_t handle);
127323 +extern void
127324 +set_irq_chip_and_handler_name(unsigned int irq, struct irq_chip *chip,
127325 +         irq_flow_handler_t handle, const char *name);
127326 +
127327 +extern void
127328 +__set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
127329 +    const char *name);
127330 +
127331 +
127332 +static inline __attribute__((always_inline)) void __set_irq_handler_unlocked(int irq,
127333 +           irq_flow_handler_t handler)
127334 +{
127335 + irq_desc[irq].handle_irq = handler;
127336 +}
127337 +
127338 +
127339 +
127340 +
127341 +static inline __attribute__((always_inline)) void
127342 +set_irq_handler(unsigned int irq, irq_flow_handler_t handle)
127343 +{
127344 + __set_irq_handler(irq, handle, 0, 0);
127345 +}
127346 +
127347 +
127348 +
127349 +
127350 +
127351 +
127352 +static inline __attribute__((always_inline)) void
127353 +set_irq_chained_handler(unsigned int irq,
127354 +   irq_flow_handler_t handle)
127355 +{
127356 + __set_irq_handler(irq, handle, 1, 0);
127357 +}
127358 +
127359 +extern void set_irq_noprobe(unsigned int irq);
127360 +extern void set_irq_probe(unsigned int irq);
127361 +
127362 +
127363 +extern int create_irq(void);
127364 +extern void destroy_irq(unsigned int irq);
127365 +
127366 +
127367 +static inline __attribute__((always_inline)) int irq_has_action(unsigned int irq)
127368 +{
127369 + struct irq_desc *desc = irq_desc + irq;
127370 + return desc->action != 0;
127371 +}
127372 +
127373 +
127374 +extern void dynamic_irq_init(unsigned int irq);
127375 +extern void dynamic_irq_cleanup(unsigned int irq);
127376 +
127377 +
127378 +extern int set_irq_chip(unsigned int irq, struct irq_chip *chip);
127379 +extern int set_irq_data(unsigned int irq, void *data);
127380 +extern int set_irq_chip_data(unsigned int irq, void *data);
127381 +extern int set_irq_type(unsigned int irq, unsigned int type);
127382 +extern int set_irq_msi(unsigned int irq, struct msi_desc *entry);
127383 +# 6 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 2
127384 +
127385 +typedef struct {
127386 + unsigned int __softirq_pending;
127387 + unsigned long idle_timestamp;
127388 + unsigned int __nmi_count;
127389 + unsigned int apic_timer_irqs;
127390 + unsigned int irq0_irqs;
127391 + unsigned int irq_resched_count;
127392 + unsigned int irq_call_count;
127393 + unsigned int irq_tlb_count;
127394 + unsigned int irq_thermal_count;
127395 + unsigned int irq_spurious_count;
127396 +} __attribute__((__aligned__((1 << (7))))) irq_cpustat_t;
127397 +
127398 +extern __typeof__(irq_cpustat_t) per_cpu__irq_stat;
127399 +
127400 +
127401 +
127402 +
127403 +void ack_bad_irq(unsigned int irq);
127404 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/irq_cpustat.h" 1
127405 +# 27 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq_32.h" 2
127406 +# 3 "/d/kernels/linux-2.6.27.10-clickport/include/asm/hardirq.h" 2
127407 +
127408 +
127409 +
127410 +
127411 +extern u64 arch_irq_stat_cpu(unsigned int cpu);
127412 +
127413 +
127414 +extern u64 arch_irq_stat(void);
127415 +# 8 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h" 2
127416 +# 108 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h"
127417 +extern void synchronize_irq(unsigned int irq);
127418 +
127419 +
127420 +
127421 +
127422 +struct task_struct;
127423 +
127424 +
127425 +static inline __attribute__((always_inline)) void account_system_vtime(struct task_struct *tsk)
127426 +{
127427 +}
127428 +# 146 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h"
127429 +extern void irq_enter(void);
127430 +# 162 "/d/kernels/linux-2.6.27.10-clickport/include/linux/hardirq.h"
127431 +extern void irq_exit(void);
127432 +# 33 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
127433 +
127434 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h" 1
127435 +# 18 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h"
127436 +extern unsigned char _ctype[];
127437 +# 37 "/d/kernels/linux-2.6.27.10-clickport/include/linux/ctype.h"
127438 +static inline __attribute__((always_inline)) unsigned char __tolower(unsigned char c)
127439 +{
127440 + if ((((_ctype[(int)(unsigned char)(c)])&(0x01)) != 0))
127441 +  c -= 'A'-'a';
127442 + return c;
127443 +}
127444 +
127445 +static inline __attribute__((always_inline)) unsigned char __toupper(unsigned char c)
127446 +{
127447 + if ((((_ctype[(int)(unsigned char)(c)])&(0x02)) != 0))
127448 +  c -= 'a'-'A';
127449 + return c;
127450 +}
127451 +# 35 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
127452 +
127453 +
127454 +}
127455 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/cxxunprotect.h" 1
127456 +# 39 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh" 2
127457 +# 76 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127458 +extern "C" {
127459 +void click_chatter(const char *fmt, ...);
127460 +}
127461 +# 96 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127462 +extern "C" {
127463 +void *click_lalloc(size_t size);
127464 +void click_lfree(volatile void *p, size_t size);
127465 +}
127466 +# 108 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127467 +
127468 +extern void click_random_srandom();
127469 +
127470 +
127471 +
127472 +extern "C" {
127473 +extern uint32_t click_random_seed;
127474 +extern void srandom(uint32_t);
127475 +
127476 +inline __attribute__((always_inline)) uint32_t
127477 +random()
127478 +{
127479 +    click_random_seed = click_random_seed*69069L + 1;
127480 +    return (click_random_seed ^ jiffies) & 2147483647;
127481 +}
127482 +}
127483 +
127484 +
127485 +
127486 +
127487 +
127488 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *, void *), void *thunk);
127489 +int click_qsort(void *base, size_t n, size_t size, int (*compar)(const void *, const void *));
127490 +# 150 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127491 +extern "C" {
127492 +
127493 +long strtol(const char *, char **, int);
127494 +
127495 +inline __attribute__((always_inline)) unsigned long
127496 +strtoul(const char *nptr, char **endptr, int base)
127497 +{
127498 +    return simple_strtoul(nptr, endptr, base);
127499 +}
127500 +# 170 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127501 +}
127502 +# 270 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127503 +inline __attribute__((always_inline)) struct timeval
127504 +make_timeval(int sec, int usec)
127505 +{
127506 +    struct timeval tv;
127507 +    tv.tv_sec = sec;
127508 +    tv.tv_usec = usec;
127509 +    return tv;
127510 +}
127511 +
127512 +inline __attribute__((always_inline)) bool
127513 +operator==(const struct timeval &a, const struct timeval &b)
127514 +{
127515 +    return a.tv_sec == b.tv_sec && a.tv_usec == b.tv_usec;
127516 +}
127517 +
127518 +inline __attribute__((always_inline)) bool
127519 +operator!=(const struct timeval &a, const struct timeval &b)
127520 +{
127521 +    return a.tv_sec != b.tv_sec || a.tv_usec != b.tv_usec;
127522 +}
127523 +
127524 +inline __attribute__((always_inline)) bool
127525 +operator<(const struct timeval &a, const struct timeval &b)
127526 +{
127527 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec < b.tv_usec);
127528 +}
127529 +
127530 +inline __attribute__((always_inline)) bool
127531 +operator<=(const struct timeval &a, const struct timeval &b)
127532 +{
127533 +    return a.tv_sec < b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec <= b.tv_usec);
127534 +}
127535 +
127536 +inline __attribute__((always_inline)) bool
127537 +operator>=(const struct timeval &a, const struct timeval &b)
127538 +{
127539 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec >= b.tv_usec);
127540 +}
127541 +
127542 +inline __attribute__((always_inline)) bool
127543 +operator>(const struct timeval &a, const struct timeval &b)
127544 +{
127545 +    return a.tv_sec > b.tv_sec || (a.tv_sec == b.tv_sec && a.tv_usec > b.tv_usec);
127546 +}
127547 +
127548 +inline __attribute__((always_inline)) struct timeval &
127549 +operator+=(struct timeval &a, const struct timeval &b)
127550 +{
127551 +    a.tv_sec += b.tv_sec;
127552 +    a.tv_usec += b.tv_usec;
127553 +    if (a.tv_usec >= 1000000) {
127554 + a.tv_sec++;
127555 + a.tv_usec -= 1000000;
127556 +    }
127557 +    return a;
127558 +}
127559 +
127560 +inline __attribute__((always_inline)) struct timeval &
127561 +operator-=(struct timeval &a, const struct timeval &b)
127562 +{
127563 +    a.tv_sec -= b.tv_sec;
127564 +    a.tv_usec -= b.tv_usec;
127565 +    if (a.tv_usec < 0) {
127566 + a.tv_sec--;
127567 + a.tv_usec += 1000000;
127568 +    }
127569 +    return a;
127570 +}
127571 +
127572 +inline __attribute__((always_inline)) struct timeval
127573 +operator+(struct timeval a, const struct timeval &b)
127574 +{
127575 +    a += b;
127576 +    return a;
127577 +}
127578 +
127579 +inline __attribute__((always_inline)) struct timeval
127580 +operator-(struct timeval a, const struct timeval &b)
127581 +{
127582 +    a -= b;
127583 +    return a;
127584 +}
127585 +
127586 +
127587 +
127588 +
127589 +class StringAccum;
127590 +StringAccum &operator<<(StringAccum &, const struct timeval &);
127591 +
127592 +# 387 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127593 +
127594 +
127595 +
127596 +typedef uint64_t click_cycles_t;
127597 +
127598 +
127599 +
127600 +
127601 +inline __attribute__((always_inline)) click_cycles_t
127602 +click_get_cycles()
127603 +{
127604 +
127605 +    uint64_t x;
127606 +    __asm__ __volatile__ ("rdtsc" : "=A" (x));
127607 +    return x;
127608 +# 416 "/d/click/click-1.6.0-27/linuxmodule/../include/click/glue.hh"
127609 +}
127610 +
127611 +
127612 +# 6 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh" 2
127613 +
127614 +
127615 +# 50 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127616 +class atomic_uint32_t { public:
127617 +
127618 +
127619 +
127620 +
127621 +    inline __attribute__((always_inline)) uint32_t value() const;
127622 +    inline __attribute__((always_inline)) operator uint32_t() const;
127623 +
127624 +    inline __attribute__((always_inline)) atomic_uint32_t &operator=(uint32_t v);
127625 +
127626 +    inline __attribute__((always_inline)) atomic_uint32_t &operator+=(int32_t delta);
127627 +    inline __attribute__((always_inline)) atomic_uint32_t &operator-=(int32_t delta);
127628 +    inline __attribute__((always_inline)) atomic_uint32_t &operator|=(uint32_t mask);
127629 +    inline __attribute__((always_inline)) atomic_uint32_t &operator&=(uint32_t mask);
127630 +
127631 +    inline __attribute__((always_inline)) void operator++();
127632 +    inline __attribute__((always_inline)) void operator++(int);
127633 +    inline __attribute__((always_inline)) void operator--();
127634 +    inline __attribute__((always_inline)) void operator--(int);
127635 +
127636 +    inline __attribute__((always_inline)) uint32_t swap(uint32_t v);
127637 +    inline __attribute__((always_inline)) uint32_t fetch_and_add(uint32_t delta);
127638 +    inline __attribute__((always_inline)) bool dec_and_test();
127639 +    inline __attribute__((always_inline)) bool compare_and_swap(uint32_t test_value, uint32_t new_value);
127640 +
127641 +  private:
127642 +
127643 +
127644 +    atomic_t _val;
127645 +
127646 +
127647 +
127648 +
127649 +
127650 +
127651 +};
127652 +
127653 +
127654 +inline __attribute__((always_inline)) uint32_t
127655 +atomic_uint32_t::value() const
127656 +{
127657 +
127658 +    return ((&_val)->counter);
127659 +
127660 +
127661 +
127662 +}
127663 +
127664 +
127665 +inline __attribute__((always_inline))
127666 +atomic_uint32_t::operator uint32_t() const
127667 +{
127668 +    return value();
127669 +}
127670 +
127671 +
127672 +inline __attribute__((always_inline)) atomic_uint32_t &
127673 +atomic_uint32_t::operator=(uint32_t v)
127674 +{
127675 +
127676 +    (((&_val)->counter) = (v));
127677 +
127678 +
127679 +
127680 +    return *this;
127681 +}
127682 +
127683 +
127684 +inline __attribute__((always_inline)) atomic_uint32_t &
127685 +atomic_uint32_t::operator+=(int32_t delta)
127686 +{
127687 +
127688 +    atomic_add(delta, &_val);
127689 +# 131 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127690 +    return *this;
127691 +}
127692 +
127693 +
127694 +inline __attribute__((always_inline)) atomic_uint32_t &
127695 +atomic_uint32_t::operator-=(int32_t delta)
127696 +{
127697 +
127698 +    atomic_sub(delta, &_val);
127699 +# 148 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127700 +    return *this;
127701 +}
127702 +
127703 +
127704 +inline __attribute__((always_inline)) atomic_uint32_t &
127705 +atomic_uint32_t::operator|=(uint32_t mask)
127706 +{
127707 +
127708 +
127709 +
127710 +    unsigned long flags;
127711 +    do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0);
127712 +    _val.counter |= mask;
127713 +    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);
127714 +# 170 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127715 +     return *this;
127716 +}
127717 +
127718 +
127719 +inline __attribute__((always_inline)) atomic_uint32_t &
127720 +atomic_uint32_t::operator&=(uint32_t mask)
127721 +{
127722 +
127723 +
127724 +
127725 +    unsigned long flags;
127726 +    do { ({ unsigned long __dummy; typeof(flags) __dummy2; (void)(&__dummy == &__dummy2); 1; }); do { (flags) = __raw_local_irq_save(); } while (0); do { } while (0); } while (0);
127727 +    _val.counter &= mask;
127728 +    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);
127729 +# 192 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127730 +    return *this;
127731 +}
127732 +
127733 +
127734 +inline __attribute__((always_inline)) void
127735 +atomic_uint32_t::operator++()
127736 +{
127737 +
127738 +    atomic_inc(&_val);
127739 +# 209 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127740 +}
127741 +
127742 +
127743 +inline __attribute__((always_inline)) void
127744 +atomic_uint32_t::operator++(int)
127745 +{
127746 +
127747 +    atomic_inc(&_val);
127748 +# 225 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127749 +}
127750 +
127751 +
127752 +inline __attribute__((always_inline)) void
127753 +atomic_uint32_t::operator--()
127754 +{
127755 +
127756 +    atomic_dec(&_val);
127757 +# 241 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127758 +}
127759 +
127760 +
127761 +inline __attribute__((always_inline)) void
127762 +atomic_uint32_t::operator--(int)
127763 +{
127764 +
127765 +    atomic_dec(&_val);
127766 +# 257 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127767 +}
127768 +# 267 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127769 +inline __attribute__((always_inline)) uint32_t
127770 +atomic_uint32_t::swap(uint32_t v)
127771 +{
127772 +
127773 +    asm ("xchgl %0,%1"
127774 +  : "=r" (v), "=m" (_val.counter));
127775 +    return v;
127776 +# 286 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127777 +}
127778 +# 296 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127779 +inline __attribute__((always_inline)) uint32_t
127780 +atomic_uint32_t::fetch_and_add(uint32_t delta)
127781 +{
127782 +
127783 +    asm volatile ("lock ; " "xaddl %0,%1"
127784 +    : "=r" (delta), "=m" (_val.counter)
127785 +    : "0" (delta), "m" (_val.counter)
127786 +    : "cc");
127787 +    return delta;
127788 +# 317 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127789 +}
127790 +# 327 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127791 +inline __attribute__((always_inline)) bool
127792 +atomic_uint32_t::dec_and_test()
127793 +{
127794 +
127795 +    return atomic_dec_and_test(&_val);
127796 +# 342 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127797 +}
127798 +# 357 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127799 +inline __attribute__((always_inline)) bool
127800 +atomic_uint32_t::compare_and_swap(uint32_t test_value, uint32_t new_value)
127801 +{
127802 +
127803 +    asm volatile ("lock ; " "cmpxchgl %2,%0 ; sete %%al"
127804 +    : "=m" (_val.counter), "=a" (test_value)
127805 +    : "r" (new_value), "m" (_val.counter), "a" (test_value)
127806 +    : "cc");
127807 +    return (uint8_t) test_value;
127808 +# 380 "/d/click/click-1.6.0-27/linuxmodule/../include/click/atomic.hh"
127809 +}
127810 +
127811 +inline __attribute__((always_inline)) uint32_t
127812 +operator+(const atomic_uint32_t &a, const atomic_uint32_t &b)
127813 +{
127814 +    return a.value() + b.value();
127815 +}
127816 +
127817 +inline __attribute__((always_inline)) uint32_t
127818 +operator-(const atomic_uint32_t &a, const atomic_uint32_t &b)
127819 +{
127820 +    return a.value() - b.value();
127821 +}
127822 +
127823 +inline __attribute__((always_inline)) bool
127824 +operator==(const atomic_uint32_t &a, const atomic_uint32_t &b)
127825 +{
127826 +    return a.value() == b.value();
127827 +}
127828 +
127829 +inline __attribute__((always_inline)) bool
127830 +operator!=(const atomic_uint32_t &a, const atomic_uint32_t &b)
127831 +{
127832 +    return a.value() != b.value();
127833 +}
127834 +
127835 +inline __attribute__((always_inline)) bool
127836 +operator>(const atomic_uint32_t &a, const atomic_uint32_t &b)
127837 +{
127838 +    return a.value() > b.value();
127839 +}
127840 +
127841 +inline __attribute__((always_inline)) bool
127842 +operator<(const atomic_uint32_t &a, const atomic_uint32_t &b)
127843 +{
127844 +    return a.value() < b.value();
127845 +}
127846 +
127847 +inline __attribute__((always_inline)) bool
127848 +operator>=(const atomic_uint32_t &a, const atomic_uint32_t &b)
127849 +{
127850 +    return a.value() >= b.value();
127851 +}
127852 +
127853 +inline __attribute__((always_inline)) bool
127854 +operator<=(const atomic_uint32_t &a, const atomic_uint32_t &b)
127855 +{
127856 +    return a.value() <= b.value();
127857 +}
127858 +
127859 +typedef atomic_uint32_t uatomic32_t;
127860 +
127861 +
127862 +# 9 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh" 2
127863 +
127864 +
127865 +class String { public:
127866 +
127867 +
127868 +
127869 +
127870 +  static void static_initialize();
127871 +  static void static_cleanup();
127872 +  struct Initializer { Initializer(); };
127873 +
127874 +  inline __attribute__((always_inline)) String();
127875 +  inline __attribute__((always_inline)) String(const String &str);
127876 +  inline __attribute__((always_inline)) String(const char *cstr);
127877 +  inline __attribute__((always_inline)) String(const char *s, int len);
127878 +  inline __attribute__((always_inline)) String(const char *begin, const char *end);
127879 +  explicit inline __attribute__((always_inline)) String(bool b);
127880 +  explicit inline __attribute__((always_inline)) String(char c);
127881 +  explicit inline __attribute__((always_inline)) String(unsigned char c);
127882 +  explicit String(int i);
127883 +  explicit String(unsigned u);
127884 +  explicit String(long i);
127885 +  explicit String(unsigned long u);
127886 +
127887 +  explicit String(long long q);
127888 +  explicit String(unsigned long long q);
127889 +# 43 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
127890 +  inline __attribute__((always_inline)) ~String();
127891 +
127892 +  static inline __attribute__((always_inline)) const String &empty_string();
127893 +  static String garbage_string(int len);
127894 +  static String stable_string(const char *s, int len = -1);
127895 +  static inline __attribute__((always_inline)) String stable_string(const char *begin, const char *end);
127896 +
127897 +
127898 +  typedef int64_t int_large_t;
127899 +  typedef uint64_t uint_large_t;
127900 +# 61 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
127901 +  static String numeric_string(int_large_t num, int base = 10, bool uppercase = true);
127902 +  static String numeric_string(uint_large_t num, int base = 10, bool uppercase = true);
127903 +
127904 +  inline __attribute__((always_inline)) int length() const;
127905 +  inline __attribute__((always_inline)) const char *data() const;
127906 +
127907 +  typedef const char *const_iterator;
127908 +  typedef const_iterator iterator;
127909 +  inline __attribute__((always_inline)) const_iterator begin() const;
127910 +  inline __attribute__((always_inline)) const_iterator end() const;
127911 +
127912 +  typedef int (String::*unspecified_bool_type)() const;
127913 +  inline __attribute__((always_inline)) operator unspecified_bool_type() const;
127914 +
127915 +  inline __attribute__((always_inline)) char operator[](int i) const;
127916 +  inline __attribute__((always_inline)) char at(int i) const;
127917 +  inline __attribute__((always_inline)) char front() const;
127918 +  inline __attribute__((always_inline)) char back() const;
127919 +
127920 +  const char *c_str() const;
127921 +
127922 +  size_t hashcode() const;
127923 +
127924 +  bool equals(const char *s, int len) const;
127925 +
127926 +
127927 +
127928 +
127929 +
127930 +
127931 +
127932 +  static inline __attribute__((always_inline)) int compare(const String &a, const String &b);
127933 +  inline __attribute__((always_inline)) int compare(const String &str) const;
127934 +  int compare(const char *s, int len) const;
127935 +
127936 +
127937 +
127938 +
127939 +
127940 +  inline __attribute__((always_inline)) String substring(const char *begin, const char *end) const;
127941 +  String substring(int pos, int len) const;
127942 +  inline __attribute__((always_inline)) String substring(int pos) const;
127943 +
127944 +  int find_left(char c, int start = 0) const;
127945 +  int find_left(const String &s, int start = 0) const;
127946 +  int find_right(char c, int start = 0x7FFFFFFF) const;
127947 +
127948 +  String lower() const;
127949 +  String upper() const;
127950 +  String printable() const;
127951 +  String trim_space() const;
127952 +  String quoted_hex() const;
127953 +
127954 +  inline __attribute__((always_inline)) String &operator=(const String &str);
127955 +  inline __attribute__((always_inline)) String &operator=(const char *cstr);
127956 +
127957 +  void append(const char *s, int len);
127958 +  inline __attribute__((always_inline)) void append(const char *begin, const char *end);
127959 +  void append_fill(int c, int len);
127960 +  char *append_garbage(int len);
127961 +  inline __attribute__((always_inline)) String &operator+=(const String &str);
127962 +  inline __attribute__((always_inline)) String &operator+=(const char *cstr);
127963 +  inline __attribute__((always_inline)) String &operator+=(char c);
127964 +# 135 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
127965 +  inline __attribute__((always_inline)) bool data_shared() const;
127966 +  char *mutable_data();
127967 +  char *mutable_c_str();
127968 +
127969 +  inline __attribute__((always_inline)) bool out_of_memory() const;
127970 +  static inline __attribute__((always_inline)) const String &out_of_memory_string();
127971 +  static inline __attribute__((always_inline)) const char *out_of_memory_data();
127972 +
127973 + private:
127974 +
127975 +
127976 +  struct Memo {
127977 +    atomic_uint32_t _refcount;
127978 +    uint32_t _capacity;
127979 +    atomic_uint32_t _dirty;
127980 +    char *_real_data;
127981 +
127982 +    Memo();
127983 +    Memo(char *, int, int);
127984 +    Memo(int, int);
127985 +    ~Memo();
127986 +  };
127987 +
127988 +
127989 +  mutable const char *_data;
127990 +  mutable int _length;
127991 +  mutable Memo *_memo;
127992 +
127993 +  inline __attribute__((always_inline)) String(const char *, int, Memo *);
127994 +
127995 +  inline __attribute__((always_inline)) void assign(const String &) const;
127996 +  void assign(const char *, int);
127997 +  inline __attribute__((always_inline)) void deref() const;
127998 +  void make_out_of_memory();
127999 +
128000 +  static Memo *null_memo;
128001 +  static Memo *permanent_memo;
128002 +  static Memo *oom_memo;
128003 +  static String *null_string_p;
128004 +  static String *oom_string_p;
128005 +  static const char oom_string_data;
128006 +
128007 +  static String claim_string(char *, int, int);
128008 +
128009 +  friend class String::Initializer;
128010 +  friend class StringAccum;
128011 +
128012 +};
128013 +
128014 +
128015 +inline __attribute__((always_inline))
128016 +String::String(const char *data, int length, Memo *memo)
128017 +  : _data(data), _length(length), _memo(memo)
128018 +{
128019 +  _memo->_refcount++;
128020 +}
128021 +
128022 +inline __attribute__((always_inline)) void
128023 +String::assign(const String &str) const
128024 +{
128025 +  _data = str._data;
128026 +  _length = str._length;
128027 +  _memo = str._memo;
128028 +  _memo->_refcount++;
128029 +}
128030 +
128031 +inline __attribute__((always_inline)) void
128032 +String::deref() const
128033 +{
128034 +  if (_memo->_refcount.dec_and_test())
128035 +    delete _memo;
128036 +}
128037 +
128038 +
128039 +inline __attribute__((always_inline))
128040 +String::String()
128041 +  : _data(null_memo->_real_data), _length(0), _memo(null_memo)
128042 +{
128043 +  _memo->_refcount++;
128044 +}
128045 +# 224 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128046 +inline __attribute__((always_inline))
128047 +String::String(const char *cstr)
128048 +{
128049 +  assign(cstr, -1);
128050 +}
128051 +# 240 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128052 +inline __attribute__((always_inline))
128053 +String::String(const char *s, int len)
128054 +{
128055 +  assign(s, len);
128056 +}
128057 +# 256 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128058 +inline __attribute__((always_inline))
128059 +String::String(const char *begin, const char *end)
128060 +{
128061 +  assign(begin, (end > begin ? end - begin : 0));
128062 +}
128063 +
128064 +
128065 +
128066 +
128067 +
128068 +inline __attribute__((always_inline))
128069 +String::String(bool b)
128070 +  : _data(b ? "true" : "false"), _length(b ? 4 : 5), _memo(permanent_memo)
128071 +{
128072 +  _memo->_refcount++;
128073 +}
128074 +
128075 +
128076 +
128077 +
128078 +inline __attribute__((always_inline))
128079 +String::String(char c)
128080 +{
128081 +  assign(&c, 1);
128082 +}
128083 +
128084 +
128085 +
128086 +
128087 +inline __attribute__((always_inline))
128088 +String::String(unsigned char c)
128089 +{
128090 +  assign(reinterpret_cast<char *>(&c), 1);
128091 +}
128092 +
128093 +
128094 +
128095 +
128096 +inline __attribute__((always_inline))
128097 +String::String(const String &str)
128098 +{
128099 +  assign(str);
128100 +}
128101 +
128102 +
128103 +inline __attribute__((always_inline))
128104 +String::~String()
128105 +{
128106 +  deref();
128107 +}
128108 +
128109 +
128110 +inline __attribute__((always_inline)) int
128111 +String::length() const
128112 +{
128113 +  return _length;
128114 +}
128115 +
128116 +
128117 +
128118 +
128119 +
128120 +inline __attribute__((always_inline)) const char *
128121 +String::data() const
128122 +{
128123 +  return _data;
128124 +}
128125 +
128126 +
128127 +
128128 +
128129 +
128130 +inline __attribute__((always_inline)) String::const_iterator
128131 +String::begin() const
128132 +{
128133 +  return _data;
128134 +}
128135 +
128136 +
128137 +
128138 +
128139 +
128140 +inline __attribute__((always_inline)) String::const_iterator
128141 +String::end() const
128142 +{
128143 +  return _data + _length;
128144 +}
128145 +
128146 +
128147 +inline __attribute__((always_inline))
128148 +String::operator unspecified_bool_type() const
128149 +{
128150 +  return _length != 0 ? &String::length : 0;
128151 +}
128152 +
128153 +
128154 +
128155 +
128156 +
128157 +inline __attribute__((always_inline)) char
128158 +String::operator[](int i) const
128159 +{
128160 +  return _data[i];
128161 +}
128162 +
128163 +
128164 +
128165 +
128166 +
128167 +
128168 +
128169 +inline __attribute__((always_inline)) char
128170 +String::at(int i) const
128171 +{
128172 +  ;
128173 +  return _data[i];
128174 +}
128175 +
128176 +
128177 +
128178 +
128179 +inline __attribute__((always_inline)) char
128180 +String::front() const
128181 +{
128182 +  return _data[0];
128183 +}
128184 +
128185 +
128186 +
128187 +
128188 +inline __attribute__((always_inline)) char
128189 +String::back() const
128190 +{
128191 +  return _data[_length - 1];
128192 +}
128193 +
128194 +
128195 +inline __attribute__((always_inline)) bool
128196 +String::data_shared() const
128197 +{
128198 +  return !_memo->_capacity || _memo->_refcount != 1;
128199 +}
128200 +
128201 +
128202 +
128203 +
128204 +
128205 +inline __attribute__((always_inline)) const String &
128206 +String::empty_string()
128207 +{
128208 +  return *null_string_p;
128209 +}
128210 +# 418 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128211 +inline __attribute__((always_inline)) String
128212 +String::stable_string(const char *begin, const char *end)
128213 +{
128214 +    if (begin < end)
128215 + return String::stable_string(begin, end - begin);
128216 +    else
128217 + return String();
128218 +}
128219 +# 436 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128220 +inline __attribute__((always_inline)) String
128221 +String::substring(const char *begin, const char *end) const
128222 +{
128223 +    if (begin < end && begin >= _data && end <= _data + _length)
128224 + return String(begin, end - begin, _memo);
128225 +    else
128226 + return String();
128227 +}
128228 +
128229 +
128230 +
128231 +
128232 +
128233 +inline __attribute__((always_inline)) String
128234 +String::substring(int pos) const
128235 +{
128236 +  return substring(pos, _length);
128237 +}
128238 +# 462 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128239 +inline __attribute__((always_inline)) int
128240 +String::compare(const String &a, const String &b)
128241 +{
128242 +  return a.compare(b);
128243 +}
128244 +
128245 +
128246 +
128247 +
128248 +
128249 +inline __attribute__((always_inline)) int
128250 +String::compare(const String &str) const
128251 +{
128252 +  return compare(str._data, str._length);
128253 +}
128254 +# 486 "/d/click/click-1.6.0-27/linuxmodule/../include/click/string.hh"
128255 +inline __attribute__((always_inline)) bool
128256 +operator==(const String &a, const String &b)
128257 +{
128258 +  return a.equals(b.data(), b.length());
128259 +}
128260 +
128261 +
128262 +inline __attribute__((always_inline)) bool
128263 +operator==(const char *a, const String &b)
128264 +{
128265 +  return b.equals(a, -1);
128266 +}
128267 +
128268 +
128269 +inline __attribute__((always_inline)) bool
128270 +operator==(const String &a, const char *b)
128271 +{
128272 +  return a.equals(b, -1);
128273 +}
128274 +
128275 +
128276 +
128277 +
128278 +
128279 +
128280 +inline __attribute__((always_inline)) bool
128281 +operator!=(const String &a, const String &b)
128282 +{
128283 +  return !a.equals(b.data(), b.length());
128284 +}
128285 +
128286 +
128287 +inline __attribute__((always_inline)) bool
128288 +operator!=(const char *a, const String &b)
128289 +{
128290 +  return !b.equals(a, -1);
128291 +}
128292 +
128293 +
128294 +inline __attribute__((always_inline)) bool
128295 +operator!=(const String &a, const char *b)
128296 +{
128297 +  return !a.equals(b, -1);
128298 +}
128299 +
128300 +
128301 +
128302 +
128303 +
128304 +
128305 +
128306 +inline __attribute__((always_inline)) bool
128307 +operator<(const String &a, const String &b)
128308 +{
128309 +  return a.compare(b.data(), b.length()) < 0;
128310 +}
128311 +
128312 +
128313 +
128314 +
128315 +
128316 +
128317 +
128318 +inline __attribute__((always_inline)) bool
128319 +operator<=(const String &a, const String &b)
128320 +{
128321 +  return a.compare(b.data(), b.length()) <= 0;
128322 +}
128323 +
128324 +
128325 +
128326 +
128327 +
128328 +
128329 +
128330 +inline __attribute__((always_inline)) bool
128331 +operator>(const String &a, const String &b)
128332 +{
128333 +  return a.compare(b.data(), b.length()) > 0;
128334 +}
128335 +
128336 +
128337 +
128338 +
128339 +
128340 +
128341 +
128342 +inline __attribute__((always_inline)) bool
128343 +operator>=(const String &a, const String &b)
128344 +{
128345 +  return a.compare(b.data(), b.length()) >= 0;
128346 +}
128347 +
128348 +
128349 +inline __attribute__((always_inline)) String &
128350 +String::operator=(const String &str)
128351 +{
128352 +  if (&str != this) {
128353 +    deref();
128354 +    assign(str);
128355 +  }
128356 +  return *this;
128357 +}
128358 +
128359 +
128360 +inline __attribute__((always_inline)) String &
128361 +String::operator=(const char *cstr)
128362 +{
128363 +  deref();
128364 +  assign(cstr, -1);
128365 +  return *this;
128366 +}
128367 +
128368 +
128369 +
128370 +
128371 +inline __attribute__((always_inline)) void
128372 +String::append(const char *begin, const char *end)
128373 +{
128374 +  if (begin < end)
128375 +    append(begin, end - begin);
128376 +}
128377 +
128378 +
128379 +
128380 +
128381 +inline __attribute__((always_inline)) String &
128382 +String::operator+=(const String &str)
128383 +{
128384 +  append(str._data, str._length);
128385 +  return *this;
128386 +}
128387 +
128388 +
128389 +
128390 +
128391 +inline __attribute__((always_inline)) String &
128392 +String::operator+=(const char *cstr)
128393 +{
128394 +  append(cstr, -1);
128395 +  return *this;
128396 +}
128397 +
128398 +
128399 +
128400 +
128401 +inline __attribute__((always_inline)) String &
128402 +String::operator+=(char c)
128403 +{
128404 +  append(&c, 1);
128405 +  return *this;
128406 +}
128407 +
128408 +
128409 +
128410 +
128411 +
128412 +inline __attribute__((always_inline)) String
128413 +operator+(String a, const String &b)
128414 +{
128415 +  a += b;
128416 +  return a;
128417 +}
128418 +
128419 +
128420 +inline __attribute__((always_inline)) String
128421 +operator+(String a, const char *b)
128422 +{
128423 +  a.append(b, -1);
128424 +  return a;
128425 +}
128426 +
128427 +
128428 +inline __attribute__((always_inline)) String
128429 +operator+(const char *a, const String &b)
128430 +{
128431 +  String s1(a);
128432 +  s1 += b;
128433 +  return s1;
128434 +}
128435 +
128436 +
128437 +
128438 +
128439 +
128440 +inline __attribute__((always_inline)) String
128441 +operator+(String a, char b)
128442 +{
128443 +  a.append(&b, 1);
128444 +  return a;
128445 +}
128446 +
128447 +
128448 +inline __attribute__((always_inline)) bool
128449 +String::out_of_memory() const
128450 +{
128451 +  return _data == &oom_string_data;
128452 +}
128453 +
128454 +
128455 +inline __attribute__((always_inline)) const String &
128456 +String::out_of_memory_string()
128457 +{
128458 +  return *oom_string_p;
128459 +}
128460 +
128461 +
128462 +
128463 +
128464 +
128465 +inline __attribute__((always_inline)) const char *
128466 +String::out_of_memory_data()
128467 +{
128468 +  return &oom_string_data;
128469 +}
128470 +
128471 +
128472 +
128473 +inline __attribute__((always_inline)) const char *rfind(const char *begin, const char *end, char c)
128474 +{
128475 +  for (const char *bb = end - 1; bb >= begin; bb--)
128476 +    if (*bb == c)
128477 +      return bb;
128478 +  return end;
128479 +}
128480 +
128481 +inline __attribute__((always_inline)) const char *find(const String &s, char c)
128482 +{
128483 +  return find(s.begin(), s.end(), c);
128484 +}
128485 +
128486 +
128487 +# 22 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2
128488 +# 1 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" 1
128489 +
128490 +
128491 +
128492 +
128493 +
128494 +
128495 +# 1 "/d/kernels/linux-2.6.27.10-clickport/include/asm/string.h" 1
128496 +# 8 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh" 2
128497 +
128498 +
128499 +
128500 +
128501 +
128502 +
128503 +
128504 +
128505 +
128506 +
128507 +
128508 +class StringAccum { public:
128509 +
128510 +
128511 +    StringAccum()
128512 + : _s(0), _len(0), _cap(0) {
128513 +    }
128514 +
128515 +    explicit inline __attribute__((always_inline)) StringAccum(int);
128516 +
128517 +
128518 +    ~StringAccum() {
128519 + if (_cap >= 0)
128520 +     (click_lfree((_s), (_cap)));
128521 +    }
128522 +
128523 +
128524 +
128525 +
128526 +
128527 +
128528 +
128529 +    inline __attribute__((always_inline)) const char *data() const {
128530 + return reinterpret_cast<const char *>(_s);
128531 +    }
128532 +
128533 +
128534 +    inline __attribute__((always_inline)) char *data() {
128535 + return reinterpret_cast<char *>(_s);
128536 +    }
128537 +
128538 +
128539 +    int length() const {
128540 + return _len;
128541 +    }
128542 +
128543 +
128544 +
128545 +
128546 +
128547 +
128548 +    int capacity() const {
128549 + return _cap;
128550 +    }
128551 +
128552 +    typedef int (StringAccum::*unspecified_bool_type)() const;
128553 +
128554 +
128555 +
128556 +
128557 +    operator unspecified_bool_type() const {
128558 + return _len != 0 ? &StringAccum::capacity : 0;
128559 +    }
128560 +
128561 +
128562 +
128563 +
128564 +    bool operator!() const {
128565 + return _len == 0;
128566 +    }
128567 +
128568 +
128569 +    bool out_of_memory() const {
128570 + return _cap < 0;
128571 +    }
128572 +
128573 +    const char *c_str();
128574 +
128575 +
128576 +
128577 +
128578 +
128579 +    char operator[](int i) const {
128580 + ;
128581 + return static_cast<char>(_s[i]);
128582 +    }
128583 +
128584 +
128585 +
128586 +
128587 +
128588 +    char &operator[](int i) {
128589 + ;
128590 + return reinterpret_cast<char &>(_s[i]);
128591 +    }
128592 +
128593 +
128594 +
128595 +    char back() const {
128596 + ;
128597 + return static_cast<char>(_s[_len - 1]);
128598 +    }
128599 +
128600 +
128601 +
128602 +    char &back() {
128603 + ;
128604 + return reinterpret_cast<char &>(_s[_len - 1]);
128605 +    }
128606 +
128607 +    inline __attribute__((always_inline)) void clear();
128608 +
128609 +    inline __attribute__((always_inline)) char *reserve(int n);
128610 +    void set_length(int len);
128611 +    void adjust_length(int delta);
128612 +    inline __attribute__((always_inline)) char *extend(int nadjust, int nreserve = 0);
128613 +    void pop_back(int n = 1);
128614 +
128615 +    inline __attribute__((always_inline)) void append(char c);
128616 +    inline __attribute__((always_inline)) void append(unsigned char c);
128617 +    void append_fill(int c, int len);
128618 +
128619 +    inline __attribute__((always_inline)) void append(const char *suffix, int len);
128620 +    inline __attribute__((always_inline)) void append(const unsigned char *suffix, int len);
128621 +    inline __attribute__((always_inline)) void append(const char *begin, const char *end);
128622 +
128623 +    void append_numeric(String::uint_large_t num, int base = 10, bool uppercase = true);
128624 +    void append_numeric(String::int_large_t num, int base = 10, bool uppercase = true);
128625 +
128626 +    StringAccum &snprintf(int n, const char *format, ...);
128627 +
128628 +    String take_string();
128629 +
128630 +    void swap(StringAccum &o);
128631 +
128632 +
128633 +
128634 +    void forward(int delta) __attribute__((deprecated));
128635 +
128636 +  private:
128637 +
128638 +    unsigned char *_s;
128639 +    int _len;
128640 +    int _cap;
128641 +
128642 +    void make_out_of_memory();
128643 +    inline __attribute__((always_inline)) void safe_append(const char *, int);
128644 +    bool grow(int);
128645 +
128646 +    StringAccum(const StringAccum &);
128647 +    StringAccum &operator=(const StringAccum &);
128648 +
128649 +    friend StringAccum &operator<<(StringAccum &, const char *);
128650 +
128651 +};
128652 +
128653 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, char);
128654 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned char);
128655 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const char *);
128656 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const String &);
128657 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, const StringAccum &);
128658 +
128659 +
128660 +
128661 +
128662 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, bool);
128663 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, short);
128664 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned short);
128665 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, int);
128666 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned);
128667 +StringAccum &operator<<(StringAccum &, long);
128668 +StringAccum &operator<<(StringAccum &, unsigned long);
128669 +
128670 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, long long);
128671 +inline __attribute__((always_inline)) StringAccum &operator<<(StringAccum &, unsigned long long);
128672 +# 192 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128673 +StringAccum &operator<<(StringAccum &, void *);
128674 +# 201 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128675 +inline __attribute__((always_inline))
128676 +StringAccum::StringAccum(int capacity)
128677 +    : _len(0)
128678 +{
128679 +    ;
128680 +    if (capacity) {
128681 + _s = (unsigned char *) (click_lalloc((capacity)));
128682 + _cap = (_s ? capacity : -1);
128683 +    } else {
128684 + _s = 0;
128685 + _cap = 0;
128686 +    }
128687 +}
128688 +# 225 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128689 +inline __attribute__((always_inline)) char *
128690 +StringAccum::reserve(int n)
128691 +{
128692 +    ;
128693 +    if (_len + n <= _cap || grow(_len + n))
128694 + return (char *)(_s + _len);
128695 +    else
128696 + return 0;
128697 +}
128698 +# 244 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128699 +inline __attribute__((always_inline)) void
128700 +StringAccum::adjust_length(int delta) {
128701 +    ;
128702 +    _len += delta;
128703 +}
128704 +
128705 +
128706 +
128707 +
128708 +inline __attribute__((always_inline)) void
128709 +StringAccum::forward(int delta)
128710 +{
128711 +    adjust_length(delta);
128712 +}
128713 +# 266 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128714 +inline __attribute__((always_inline)) char *
128715 +StringAccum::extend(int nadjust, int nreserve)
128716 +{
128717 +    ;
128718 +    char *c = reserve(nadjust + nreserve);
128719 +    if (c)
128720 + _len += nadjust;
128721 +    return c;
128722 +}
128723 +
128724 +
128725 +
128726 +
128727 +
128728 +
128729 +inline __attribute__((always_inline)) void
128730 +StringAccum::pop_back(int n) {
128731 +    ;
128732 +    _len -= n;
128733 +}
128734 +
128735 +
128736 +
128737 +
128738 +
128739 +inline __attribute__((always_inline)) void
128740 +StringAccum::set_length(int len) {
128741 +    ;
128742 +    _len = len;
128743 +}
128744 +
128745 +
128746 +
128747 +inline __attribute__((always_inline)) void
128748 +StringAccum::append(char c)
128749 +{
128750 +    if (_len < _cap || grow(_len))
128751 + _s[_len++] = c;
128752 +}
128753 +
128754 +
128755 +inline __attribute__((always_inline)) void
128756 +StringAccum::append(unsigned char c)
128757 +{
128758 +    append(static_cast<char>(c));
128759 +}
128760 +
128761 +inline __attribute__((always_inline)) void
128762 +StringAccum::safe_append(const char *s, int len)
128763 +{
128764 +    if (char *x = extend(len))
128765 + (__builtin_constant_p((len)) ? __constant_memcpy((x), (s), (len)) : __memcpy((x), (s), (len)));
128766 +}
128767 +
128768 +
128769 +
128770 +
128771 +
128772 +
128773 +inline __attribute__((always_inline)) void
128774 +StringAccum::append(const char *suffix, int len)
128775 +{
128776 +    if (len < 0)
128777 + len = strlen(suffix);
128778 +    if (len == 0 && suffix == String::out_of_memory_data())
128779 + make_out_of_memory();
128780 +    safe_append(suffix, len);
128781 +}
128782 +
128783 +
128784 +inline __attribute__((always_inline)) void
128785 +StringAccum::append(const unsigned char *suffix, int len)
128786 +{
128787 +    append(reinterpret_cast<const char *>(suffix), len);
128788 +}
128789 +
128790 +
128791 +
128792 +
128793 +inline __attribute__((always_inline)) void
128794 +StringAccum::append(const char *begin, const char *end)
128795 +{
128796 +    if (begin < end)
128797 + safe_append(begin, end - begin);
128798 +    else if (begin == String::out_of_memory_data())
128799 + make_out_of_memory();
128800 +}
128801 +
128802 +
128803 +
128804 +
128805 +
128806 +inline __attribute__((always_inline)) void
128807 +StringAccum::clear()
128808 +{
128809 +    if (_cap < 0)
128810 + _cap = 0, _s = 0;
128811 +    _len = 0;
128812 +}
128813 +
128814 +
128815 +
128816 +
128817 +
128818 +inline __attribute__((always_inline)) StringAccum &
128819 +operator<<(StringAccum &sa, char c)
128820 +{
128821 +    sa.append(c);
128822 +    return sa;
128823 +}
128824 +
128825 +
128826 +
128827 +
128828 +
128829 +inline __attribute__((always_inline)) StringAccum &
128830 +operator<<(StringAccum &sa, unsigned char c)
128831 +{
128832 +    sa.append(c);
128833 +    return sa;
128834 +}
128835 +
128836 +
128837 +
128838 +
128839 +
128840 +inline __attribute__((always_inline)) StringAccum &
128841 +operator<<(StringAccum &sa, const char *cstr)
128842 +{
128843 +    sa.append(cstr, -1);
128844 +    return sa;
128845 +}
128846 +
128847 +
128848 +
128849 +
128850 +inline __attribute__((always_inline)) StringAccum &
128851 +operator<<(StringAccum &sa, bool b)
128852 +{
128853 +    return sa << (b ? "true" : "false");
128854 +}
128855 +
128856 +
128857 +
128858 +
128859 +inline __attribute__((always_inline)) StringAccum &
128860 +operator<<(StringAccum &sa, short i)
128861 +{
128862 +    return sa << static_cast<long>(i);
128863 +}
128864 +
128865 +
128866 +
128867 +
128868 +inline __attribute__((always_inline)) StringAccum &
128869 +operator<<(StringAccum &sa, unsigned short u)
128870 +{
128871 +    return sa << static_cast<unsigned long>(u);
128872 +}
128873 +
128874 +
128875 +
128876 +
128877 +inline __attribute__((always_inline)) StringAccum &
128878 +operator<<(StringAccum &sa, int i)
128879 +{
128880 +    return sa << static_cast<long>(i);
128881 +}
128882 +
128883 +
128884 +
128885 +
128886 +inline __attribute__((always_inline)) StringAccum &
128887 +operator<<(StringAccum &sa, unsigned u)
128888 +{
128889 +    return sa << static_cast<unsigned long>(u);
128890 +}
128891 +
128892 +
128893 +
128894 +
128895 +
128896 +inline __attribute__((always_inline)) StringAccum &
128897 +operator<<(StringAccum &sa, long long q)
128898 +{
128899 +    sa.append_numeric(static_cast<String::int_large_t>(q));
128900 +    return sa;
128901 +}
128902 +
128903 +
128904 +
128905 +
128906 +inline __attribute__((always_inline)) StringAccum &
128907 +operator<<(StringAccum &sa, unsigned long long q)
128908 +{
128909 +    sa.append_numeric(static_cast<String::uint_large_t>(q));
128910 +    return sa;
128911 +}
128912 +# 491 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128913 +StringAccum &
128914 +operator<<(StringAccum &sa, const String &str)
128915 +{
128916 +    sa.append(str.data(), str.length());
128917 +    return sa;
128918 +}
128919 +# 510 "/d/click/click-1.6.0-27/linuxmodule/../include/click/straccum.hh"
128920 +inline __attribute__((always_inline)) StringAccum &
128921 +operator<<(StringAccum &sa, const StringAccum &sb)
128922 +{
128923 +    sa.append(sb.data(), sb.length());
128924 +    return sa;
128925 +}
128926 +
128927 +
128928 +# 23 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc" 2
128929 +
128930 +
128931 +# 67 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
128932 +String::Memo *String::null_memo = 0;
128933 +String::Memo *String::permanent_memo = 0;
128934 +String::Memo *String::oom_memo = 0;
128935 +String *String::null_string_p = 0;
128936 +String *String::oom_string_p = 0;
128937 +const char String::oom_string_data = 0;
128938 +
128939 +
128940 +inline __attribute__((always_inline))
128941 +String::Memo::Memo()
128942 +  : _capacity(0), _real_data("")
128943 +{
128944 +    _refcount = 0;
128945 +    _dirty = 0;
128946 +}
128947 +
128948 +inline __attribute__((always_inline))
128949 +String::Memo::Memo(char *data, int dirty, int capacity)
128950 +  : _capacity(capacity), _real_data(data)
128951 +{
128952 +    _refcount = 0;
128953 +    _dirty = dirty;
128954 +}
128955 +
128956 +String::Memo::Memo(int dirty, int capacity)
128957 +  : _capacity(capacity), _real_data((char *) (click_lalloc((capacity))))
128958 +{
128959 +    ;
128960 +    _refcount = 1;
128961 +    _dirty = dirty;
128962 +}
128963 +
128964 +String::Memo::~Memo()
128965 +{
128966 +  if (_capacity) {
128967 +    ;
128968 +    (click_lfree((_real_data), (_capacity)));
128969 +  }
128970 +}
128971 +
128972 +
128973 +
128974 +
128975 +
128976 +String::String(int i)
128977 +{
128978 +  char buf[128];
128979 +  sprintf(buf, "%d", i);
128980 +  assign(buf, -1);
128981 +}
128982 +
128983 +
128984 +
128985 +String::String(unsigned u)
128986 +{
128987 +  char buf[128];
128988 +  sprintf(buf, "%u", u);
128989 +  assign(buf, -1);
128990 +}
128991 +
128992 +
128993 +
128994 +String::String(long i)
128995 +{
128996 +  char buf[128];
128997 +  sprintf(buf, "%ld", i);
128998 +  assign(buf, -1);
128999 +}
129000 +
129001 +
129002 +
129003 +String::String(unsigned long u)
129004 +{
129005 +  char buf[128];
129006 +  sprintf(buf, "%lu", u);
129007 +  assign(buf, -1);
129008 +}
129009 +
129010 +
129011 +
129012 +
129013 +
129014 +
129015 +
129016 +String::String(long long q)
129017 +{
129018 +  StringAccum sa;
129019 +  sa << q;
129020 +  assign(sa.data(), sa.length());
129021 +}
129022 +
129023 +
129024 +
129025 +String::String(unsigned long long q)
129026 +{
129027 +  StringAccum sa;
129028 +  sa << q;
129029 +  assign(sa.data(), sa.length());
129030 +}
129031 +# 202 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129032 +String
129033 +String::claim_string(char *str, int len, int capacity)
129034 +{
129035 +  ;
129036 +  Memo *new_memo = new Memo(str, len, capacity);
129037 +  if (new_memo)
129038 +    return String(str, len, new_memo);
129039 +  else
129040 +    return String(&oom_string_data, 0, oom_memo);
129041 +}
129042 +# 220 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129043 +String
129044 +String::stable_string(const char *s, int len)
129045 +{
129046 +  if (len < 0)
129047 +    len = (s ? strlen(s) : 0);
129048 +  return String(s, len, permanent_memo);
129049 +}
129050 +
129051 +
129052 +String
129053 +String::garbage_string(int len)
129054 +{
129055 +  String s;
129056 +  s.append_garbage(len);
129057 +  return s;
129058 +}
129059 +
129060 +
129061 +
129062 +
129063 +
129064 +
129065 +String
129066 +String::numeric_string(int_large_t num, int base, bool uppercase)
129067 +{
129068 +    StringAccum sa;
129069 +    sa.append_numeric(num, base, uppercase);
129070 +    return sa.take_string();
129071 +}
129072 +
129073 +
129074 +
129075 +
129076 +
129077 +
129078 +String
129079 +String::numeric_string(uint_large_t num, int base, bool uppercase)
129080 +{
129081 +    StringAccum sa;
129082 +    sa.append_numeric(num, base, uppercase);
129083 +    return sa.take_string();
129084 +}
129085 +
129086 +void
129087 +String::make_out_of_memory()
129088 +{
129089 +  if (_memo)
129090 +    deref();
129091 +  _memo = oom_memo;
129092 +  _memo->_refcount++;
129093 +  _data = _memo->_real_data;
129094 +  _length = 0;
129095 +}
129096 +
129097 +void
129098 +String::assign(const char *str, int len)
129099 +{
129100 +  if (!str) {
129101 +    ;
129102 +    len = 0;
129103 +  } else if (len < 0)
129104 +    len = strlen(str);
129105 +
129106 +  if (len == 0) {
129107 +    _memo = (str == &oom_string_data ? oom_memo : null_memo);
129108 +    _memo->_refcount++;
129109 +
129110 +  } else {
129111 +
129112 +    int capacity = (len + 16) & ~15;
129113 +    _memo = new Memo(len, capacity);
129114 +    if (!_memo || !_memo->_real_data) {
129115 +      make_out_of_memory();
129116 +      return;
129117 +    }
129118 +    (__builtin_constant_p((len)) ? __constant_memcpy((_memo->_real_data), (str), (len)) : __memcpy((_memo->_real_data), (str), (len)));
129119 +  }
129120 +
129121 +  _data = _memo->_real_data;
129122 +  _length = len;
129123 +}
129124 +
129125 +
129126 +
129127 +
129128 +
129129 +
129130 +char *
129131 +String::append_garbage(int len)
129132 +{
129133 +
129134 +    if (len <= 0 || _memo == oom_memo)
129135 + return 0;
129136 +
129137 +
129138 +
129139 +
129140 +    uint32_t dirty = _memo->_dirty;
129141 +    if (_memo->_capacity > dirty + len) {
129142 + char *real_dirty = _memo->_real_data + dirty;
129143 + if (real_dirty == _data + _length
129144 +     && _memo->_dirty.compare_and_swap(dirty, dirty + len)) {
129145 +     _length += len;
129146 +     ;
129147 +     return real_dirty;
129148 + }
129149 +    }
129150 +
129151 +
129152 +
129153 +
129154 +
129155 +    int new_capacity = (_length + len < 1024 ? (_length + 16) & ~15 : 1024);
129156 +    while (new_capacity < _length + len)
129157 + new_capacity *= 2;
129158 +# 343 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129159 +    Memo *new_memo = new Memo(_length + len, new_capacity);
129160 +    if (!new_memo || !new_memo->_real_data) {
129161 + delete new_memo;
129162 + make_out_of_memory();
129163 + return 0;
129164 +    }
129165 +
129166 +    char *new_data = new_memo->_real_data;
129167 +    (__builtin_constant_p((_length)) ? __constant_memcpy((new_data), (_data), (_length)) : __memcpy((new_data), (_data), (_length)));
129168 +
129169 +    deref();
129170 +    _data = new_data;
129171 +    new_data += _length;
129172 +    _length += len;
129173 +    _memo = new_memo;
129174 +    return new_data;
129175 +}
129176 +
129177 +
129178 +
129179 +
129180 +
129181 +
129182 +
129183 +void
129184 +String::append(const char *suffix, int len)
129185 +{
129186 +    if (!suffix) {
129187 + ;
129188 + len = 0;
129189 +    } else if (len < 0)
129190 + len = strlen(suffix);
129191 +
129192 +    if (suffix == &oom_string_data)
129193 +
129194 +
129195 + make_out_of_memory();
129196 +    else if (char *space = append_garbage(len))
129197 + (__builtin_constant_p((len)) ? __constant_memcpy((space), (suffix), (len)) : __memcpy((space), (suffix), (len)));
129198 +}
129199 +
129200 +
129201 +void
129202 +String::append_fill(int c, int len)
129203 +{
129204 +    ;
129205 +    if (char *space = append_garbage(len))
129206 + (__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)))));
129207 +}
129208 +
129209 +
129210 +
129211 +char *
129212 +String::mutable_data()
129213 +{
129214 +
129215 +
129216 +  if (_memo->_capacity && _memo->_refcount == 1)
129217 +    return const_cast<char *>(_data);
129218 +
129219 +
129220 +
129221 +  ;
129222 +  deref();
129223 +  assign(_data, _length);
129224 +  return const_cast<char *>(_data);
129225 +}
129226 +
129227 +
129228 +
129229 +
129230 +char *
129231 +String::mutable_c_str()
129232 +{
129233 +  (void) mutable_data();
129234 +  (void) c_str();
129235 +  return const_cast<char *>(_data);
129236 +}
129237 +
129238 +
129239 +
129240 +
129241 +
129242 +
129243 +
129244 +const char *
129245 +String::c_str() const
129246 +{
129247 +
129248 +
129249 +
129250 +
129251 +  if (!_memo->_capacity && _data[_length] == '\0')
129252 +    return _data;
129253 +
129254 +
129255 +
129256 +  ;
129257 +
129258 +
129259 +
129260 +  uint32_t dirty = _memo->_dirty;
129261 +  if (_memo->_real_data + dirty == _data + _length) {
129262 +      if (_memo->_capacity > dirty
129263 +   && _memo->_dirty.compare_and_swap(dirty, dirty + 1)) {
129264 +
129265 +
129266 +   char *real_data = const_cast<char *>(_data);
129267 +   real_data[_length] = '\0';
129268 +   return _data;
129269 +      }
129270 +
129271 +  } else {
129272 +
129273 +
129274 +    if (_data[_length] == '\0')
129275 +      return _data;
129276 +  }
129277 +
129278 +
129279 +  {
129280 +    String s(_data, _length);
129281 +    deref();
129282 +    assign(s);
129283 +  }
129284 +
129285 +  char *real_data = const_cast<char *>(_data);
129286 +  real_data[_length] = '\0';
129287 +  _memo->_dirty++;
129288 +  return _data;
129289 +}
129290 +# 487 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129291 +String
129292 +String::substring(int pos, int len) const
129293 +{
129294 +    if (pos < 0)
129295 + pos += _length;
129296 +    if (len < 0)
129297 + len = _length - pos + len;
129298 +    if (pos + len > _length)
129299 + len = _length - pos;
129300 +
129301 +    if (pos < 0 || len <= 0)
129302 + return String();
129303 +    else
129304 + return String(_data + pos, len, _memo);
129305 +}
129306 +# 511 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129307 +int
129308 +String::find_left(char c, int start) const
129309 +{
129310 +    if (start < 0)
129311 + start = 0;
129312 +    for (int i = start; i < _length; i++)
129313 + if (_data[i] == c)
129314 +     return i;
129315 +    return -1;
129316 +}
129317 +# 530 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129318 +int
129319 +String::find_left(const String &str, int start) const
129320 +{
129321 +    if (start < 0)
129322 + start = 0;
129323 +    if (start >= length())
129324 + return -1;
129325 +    if (!str.length())
129326 + return 0;
129327 +    int first_c = (unsigned char)str[0];
129328 +    int pos = start, max_pos = length() - str.length();
129329 +    for (pos = find_left(first_c, pos); pos >= 0 && pos <= max_pos;
129330 +  pos = find_left(first_c, pos + 1))
129331 + if (!__builtin_memcmp(_data + pos, str._data, str.length()))
129332 +     return pos;
129333 +    return -1;
129334 +}
129335 +# 557 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129336 +int
129337 +String::find_right(char c, int start) const
129338 +{
129339 +    if (start >= _length)
129340 + start = _length - 1;
129341 +    for (int i = start; i >= 0; i--)
129342 + if (_data[i] == c)
129343 +     return i;
129344 +    return -1;
129345 +}
129346 +
129347 +static String
129348 +hard_lower(const String &s, int pos)
129349 +{
129350 +    String new_s(s.data(), s.length());
129351 +    char *x = const_cast<char *>(new_s.data());
129352 +    int len = s.length();
129353 +    for (; pos < len; pos++)
129354 + x[pos] = __tolower(x[pos]);
129355 +    return new_s;
129356 +}
129357 +
129358 +
129359 +
129360 +
129361 +
129362 +String
129363 +String::lower() const
129364 +{
129365 +
129366 +    for (int i = 0; i < _length; i++)
129367 + if (_data[i] >= 'A' && _data[i] <= 'Z')
129368 +     return hard_lower(*this, i);
129369 +    return *this;
129370 +}
129371 +
129372 +static String
129373 +hard_upper(const String &s, int pos)
129374 +{
129375 +    String new_s(s.data(), s.length());
129376 +    char *x = const_cast<char *>(new_s.data());
129377 +    int len = s.length();
129378 +    for (; pos < len; pos++)
129379 + x[pos] = __toupper(x[pos]);
129380 +    return new_s;
129381 +}
129382 +
129383 +
129384 +
129385 +
129386 +
129387 +String
129388 +String::upper() const
129389 +{
129390 +
129391 +    for (int i = 0; i < _length; i++)
129392 + if (_data[i] >= 'a' && _data[i] <= 'z')
129393 +     return hard_upper(*this, i);
129394 +    return *this;
129395 +}
129396 +
129397 +static String
129398 +hard_printable(const String &s, int pos)
129399 +{
129400 +    StringAccum sa(s.length() * 2);
129401 +    sa.append(s.data(), pos);
129402 +    const unsigned char *x = reinterpret_cast<const unsigned char *>(s.data());
129403 +    int len = s.length();
129404 +    for (; pos < len; pos++) {
129405 + if (x[pos] >= 32 && x[pos] < 127)
129406 +     sa << x[pos];
129407 + else if (x[pos] < 32)
129408 +     sa << '^' << (unsigned char)(x[pos] + 64);
129409 + else if (char *buf = sa.extend(4, 1))
129410 +     sprintf(buf, "\\%03o", x[pos]);
129411 +    }
129412 +    return sa.take_string();
129413 +}
129414 +
129415 +
129416 +
129417 +
129418 +
129419 +
129420 +String
129421 +String::printable() const
129422 +{
129423 +
129424 +    for (int i = 0; i < _length; i++)
129425 + if (_data[i] < 32 || _data[i] > 126)
129426 +     return hard_printable(*this, i);
129427 +    return *this;
129428 +}
129429 +
129430 +
129431 +String
129432 +String::trim_space() const
129433 +{
129434 +    for (int i = _length - 1; i >= 0; i--)
129435 + if (!(((_ctype[(int)(unsigned char)(_data[i])])&(0x20)) != 0))
129436 +     return substring(0, i + 1);
129437 +
129438 +    return (_length ? String() : *this);
129439 +}
129440 +
129441 +
129442 +
129443 +
129444 +String
129445 +String::quoted_hex() const
129446 +{
129447 +    static const char hex_digits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
129448 +    StringAccum sa;
129449 +    char *buf;
129450 +    if (out_of_memory() || !(buf = sa.extend(length() * 2 + 3)))
129451 + return out_of_memory_string();
129452 +    *buf++ = '\\';
129453 +    *buf++ = '<';
129454 +    const uint8_t *e = reinterpret_cast<const uint8_t*>(end());
129455 +    for (const uint8_t *x = reinterpret_cast<const uint8_t*>(begin()); x < e; x++) {
129456 + *buf++ = hex_digits[(*x >> 4) & 0xF];
129457 + *buf++ = hex_digits[*x & 0xF];
129458 +    }
129459 +    *buf++ = '>';
129460 +    return sa.take_string();
129461 +}
129462 +
129463 +
129464 +
129465 +
129466 +
129467 +
129468 +size_t
129469 +String::hashcode() const
129470 +{
129471 +    int l = length();
129472 +    const char *d = data();
129473 +    if (!l)
129474 + return 0;
129475 +    else if (l == 1)
129476 + return d[0] | (d[0] << 8);
129477 +    else if (l < 4)
129478 + return d[0] + (d[1] << 3) + (l << 12);
129479 +    else
129480 + return d[0] + (d[1] << 8) + (d[2] << 16) + (d[3] << 24)
129481 +     + (l << 12) + (d[l-1] << 10);
129482 +}
129483 +# 713 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129484 +bool
129485 +String::equals(const char *s, int len) const
129486 +{
129487 +
129488 +
129489 +
129490 +
129491 +    if (len < 0)
129492 + len = strlen(s);
129493 +    if (_length != len)
129494 + return false;
129495 +    else if (_data == s)
129496 + return true;
129497 +    else if (len == 0)
129498 + return (s != &oom_string_data && _memo != oom_memo);
129499 +    else
129500 + return __builtin_memcmp(_data, s, len) == 0;
129501 +}
129502 +# 740 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129503 +int
129504 +String::compare(const char *s, int len) const
129505 +{
129506 +    if (len < 0)
129507 + len = strlen(s);
129508 +    if (_data == s)
129509 + return _length - len;
129510 +    else if (_memo == oom_memo)
129511 + return 1;
129512 +    else if (s == &oom_string_data)
129513 + return -1;
129514 +    else if (_length == len)
129515 + return __builtin_memcmp(_data, s, len);
129516 +    else if (_length < len) {
129517 + int v = __builtin_memcmp(_data, s, _length);
129518 + return (v ? v : -1);
129519 +    } else {
129520 + int v = __builtin_memcmp(_data, s, len);
129521 + return (v ? v : 1);
129522 +    }
129523 +}
129524 +# 775 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129525 +String::Initializer::Initializer()
129526 +{
129527 +    String::static_initialize();
129528 +}
129529 +# 789 "/d/click/click-1.6.0-27/linuxmodule/../lib/string.cc"
129530 +void
129531 +String::static_initialize()
129532 +{
129533 +
129534 +    if (!null_memo) {
129535 +
129536 +
129537 +
129538 + null_memo = new Memo;
129539 + null_memo->_refcount++;
129540 + permanent_memo = new Memo;
129541 + permanent_memo->_refcount++;
129542 +
129543 +
129544 + oom_memo = new Memo;
129545 + oom_memo->_refcount++;
129546 + oom_memo->_real_data = const_cast<char*>(&oom_string_data);
129547 + null_string_p = new String;
129548 + oom_string_p = new String(&oom_string_data, 0, oom_memo);
129549 +
129550 +
129551 +
129552 +    }
129553 +}
129554 +
129555 +
129556 +
129557 +
129558 +
129559 +void
129560 +String::static_cleanup()
129561 +{
129562 +    if (null_string_p) {
129563 + delete null_string_p;
129564 + null_string_p = 0;
129565 + delete oom_string_p;
129566 + oom_string_p = 0;
129567 + if (oom_memo->_refcount.dec_and_test())
129568 +     delete oom_memo;
129569 + if (permanent_memo->_refcount.dec_and_test())
129570 +     delete permanent_memo;
129571 + if (null_memo->_refcount.dec_and_test())
129572 +     delete null_memo;
129573 + null_memo = permanent_memo = oom_memo = 0;
129574 +    }
129575 +}
129576 +
129577 +
129578 diff -Nurb click-1.6.0/ns/Makefile click-1.6.0-27/ns/Makefile
129579 --- click-1.6.0/ns/Makefile     1969-12-31 19:00:00.000000000 -0500
129580 +++ click-1.6.0-27/ns/Makefile  2009-01-28 16:15:43.000000000 -0500
129581 @@ -0,0 +1,145 @@
129582 +## The following line supports click-mkmindriver and should not be changed.
129583 +## Click ns driver Makefile ##
129584 +SHELL = /bin/sh
129585 +
129586 +top_srcdir := ..
129587 +srcdir := .
129588 +top_builddir := ..
129589 +subdir := ns
129590 +conf_auxdir := $(top_srcdir)
129591 +
129592 +prefix = /d/click/click-1.6.0-27/inst
129593 +exec_prefix = /d/click/click-1.6.0-27/inst
129594 +bindir = /d/click/click-1.6.0-27/inst/bin
129595 +sbindir = /d/click/click-1.6.0-27/inst/sbin
129596 +libdir = /d/click/click-1.6.0-27/inst/lib
129597 +
129598 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard
129599 +
129600 +CC = gcc -W -Wall
129601 +CPP = gcc -W -Wall -E
129602 +CXX = g++ -W -Wall 
129603 +CXXCPP = g++ -W -Wall  -E
129604 +AR_CREATE = ar cru
129605 +RANLIB = ranlib
129606 +INSTALL = /usr/bin/install -c
129607 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
129608 +
129609 +ifeq ($(V),1)
129610 +ccompile = $(COMPILE) $(1)
129611 +cxxcompile = $(CXXCOMPILE) $(1)
129612 +else
129613 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
129614 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
129615 +endif
129616 +
129617 +.SUFFIXES:
129618 +.SUFFIXES: .S .c .cc .o .s .ii
129619 +
129620 +.c.o:
129621 +       $(call ccompile,-c $< -o $@,CC)
129622 +.s.o:
129623 +       $(call ccompile,-c $< -o $@,ASM)
129624 +.S.o:
129625 +       $(call ccompile,-c $< -o $@,ASM)
129626 +.cc.o:
129627 +       $(call cxxcompile,-c $< -o $@,CXX)
129628 +.cc.s:
129629 +       $(call cxxcompile,-S $< -o $@,CXX -S)
129630 +.cc.ii:
129631 +       $(call cxxcompile,-E $< > $@,CXXCPP)
129632 +
129633 +
129634 +GENERIC_OBJS = string.o straccum.o nameinfo.o \
129635 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
129636 +       ipaddress.o ipflowid.o etheraddress.o \
129637 +       packet.o \
129638 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
129639 +       element.o \
129640 +       confparse.o variableenv.o lexer.o elemfilter.o \
129641 +       routerthread.o router.o master.o handlercall.o notifier.o \
129642 +       integers.o md5.o crc32.o in_cksum.o iptable.o \
129643 +       archive.o userutils.o driver.o \
129644 +       $(EXTRA_DRIVER_OBJS)
129645 +
129646 +EXTRA_DRIVER_OBJS = 
129647 +
129648 +LIBOBJS = $(GENERIC_OBJS) $(STD_ELEMENT_OBJS) clp.o
129649 +STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
129650 +       errorelement.o portinfo.o scheduleinfo.o
129651 +OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o nsclick.o
129652 +
129653 +CPPFLAGS =  -DCLICK_NS
129654 +CFLAGS = -g -O2 -fPIC
129655 +CXXFLAGS = -g -O2 -fPIC
129656 +DEPCFLAGS = -MD
129657 +
129658 +DEFS = -DHAVE_CONFIG_H
129659 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
129660 +       -I$(srcdir) -I$(top_srcdir) 
129661 +LDFLAGS = -shared
129662 +LIBS =  `$(top_builddir)/click-compile --otherlibs` $(ELEMENT_LIBS)
129663 +
129664 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
129665 +CXXLD = $(CXX)
129666 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
129667 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
129668 +CCLD = $(CC)
129669 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
129670 +
129671 +ifndef MINDRIVER
129672 +ELEMENTSCONF = elements
129673 +INSTALLLIBS = libnsclick.so
129674 +else
129675 +ELEMENTSCONF = elements_$(MINDRIVER)
129676 +INSTALLLIBS = libns$(MINDRIVER)click.so
129677 +endif
129678 +
129679 +all: $(INSTALLLIBS)
129680 +
129681 +ifneq ($(MAKECMDGOALS),clean)
129682 +-include $(ELEMENTSCONF).mk
129683 +endif
129684 +
129685 +libnsclick.so: Makefile $(LIBOBJS) $(OBJS)
129686 +       $(CXXLINK) -shared $(LIBOBJS) $(OBJS)
129687 +libnsclick.a: Makefile $(LIBOBJS) $(OBJS)
129688 +       $(AR_CREATE) libnsclick.a $(LIBOBJS) $(OBJS)
129689 +       $(RANLIB) libnsclick.a
129690 +
129691 +nsclick-test: libnsclick.a nsclick-test.o
129692 +       $(CXXLD) $(CXXFLAGS)  -o $@ nsclick-test.o libnsclick.a $(LIBS)
129693 +
129694 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
129695 +       cd $(top_builddir) \
129696 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
129697 +
129698 +elemlist:
129699 +       @rm -f elements.conf
129700 +       @$(MAKE) elements.conf
129701 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
129702 +       echo "ns userlevel  app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r ns -p $(top_srcdir) > elements.conf
129703 +$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
129704 +       $(top_builddir)/click-buildtool elem2make -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
129705 +$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
129706 +       $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
129707 +       @rm -f $(ELEMENTSCONF).d
129708 +
129709 +DEPFILES := $(wildcard *.d)
129710 +ifneq ($(DEPFILES),)
129711 +include $(DEPFILES)
129712 +endif
129713 +
129714 +install: libnsclick.so
129715 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
129716 +       $(INSTALL) libnsclick.so $(DESTDIR)$(libdir)/libnsclick.so
129717 +uninstall:
129718 +       /bin/rm -f $(DESTDIR)$(libdir)/libnsclick.so
129719 +
129720 +clean:
129721 +       rm -f *.d *.o $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc elements.conf libnsclick.a \
129722 +       libnsclick.so
129723 +distclean: clean
129724 +       -rm -f Makefile
129725 +
129726 +.PHONY: all clean distclean elemlist install uninstall
129727 diff -Nurb click-1.6.0/stamp-h click-1.6.0-27/stamp-h
129728 --- click-1.6.0/stamp-h 1969-12-31 19:00:00.000000000 -0500
129729 +++ click-1.6.0-27/stamp-h      2009-01-28 16:15:44.000000000 -0500
129730 @@ -0,0 +1 @@
129731 +
129732 diff -Nurb click-1.6.0/tools/Makefile click-1.6.0-27/tools/Makefile
129733 --- click-1.6.0/tools/Makefile  1969-12-31 19:00:00.000000000 -0500
129734 +++ click-1.6.0-27/tools/Makefile       2009-01-28 16:15:43.000000000 -0500
129735 @@ -0,0 +1,79 @@
129736 +# Warning: this file must be usable by regular make
129737 +# (unlike the Makefiles in subdirectories).
129738 +
129739 +SHELL = /bin/sh
129740 +
129741 +
129742 +top_srcdir = ..
129743 +srcdir = .
129744 +top_builddir = ..
129745 +subdir = tools
129746 +conf_auxdir = $(top_srcdir)
129747 +
129748 +prefix = /d/click/click-1.6.0-27/inst
129749 +bindir = /d/click/click-1.6.0-27/inst/bin
129750 +INSTALL = /usr/bin/install -c
129751 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
129752 +
129753 +TOOLDIRS =  click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install
129754 +TARGETS =  click-align click-check click-combine click-devirtualize click-fastclassifier click-flatten click-mkmindriver click-pretty click-undead click-xform click2xml click-install
129755 +
129756 +all: $(TARGETS)
129757 +
129758 +lib: always Makefile
129759 +       @cd lib && $(MAKE) all
129760 +click-align: lib Makefile
129761 +       @cd click-align && $(MAKE) all-local
129762 +click-check: lib Makefile
129763 +       @cd click-check && $(MAKE) all-local
129764 +click-combine: lib Makefile
129765 +       @cd click-combine && $(MAKE) all-local
129766 +click-devirtualize: lib Makefile
129767 +       @cd click-devirtualize && $(MAKE) all-local
129768 +click-fastclassifier: lib Makefile
129769 +       @cd click-fastclassifier && $(MAKE) all-local
129770 +click-flatten: lib Makefile
129771 +       @cd click-flatten && $(MAKE) all-local
129772 +click-install: lib Makefile
129773 +       @cd click-install && $(MAKE) all-local
129774 +click-ipopt: lib Makefile
129775 +       @cd click-ipopt && $(MAKE) all-local
129776 +click-mkmindriver: lib Makefile
129777 +       @cd click-mkmindriver && $(MAKE) all-local
129778 +click-pretty: lib Makefile
129779 +       @cd click-pretty && $(MAKE) all-local
129780 +click-undead: lib Makefile
129781 +       @cd click-undead && $(MAKE) all-local
129782 +click-xform: lib Makefile
129783 +       @cd click-xform && $(MAKE) all-local
129784 +click2xml: lib Makefile
129785 +       @cd click2xml && $(MAKE) all-local
129786 +udpgen: Makefile
129787 +       @cd udpgen && $(MAKE) all
129788 +always:
129789 +       @:
129790 +
129791 +Makefile: $(srcdir)/Makefile.in
129792 +       cd $(top_builddir) \
129793 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
129794 +
129795 +clean:
129796 +       @-for d in lib $(TOOLDIRS); do (cd $$d && $(MAKE) clean); done
129797 +distclean:
129798 +       @-for d in lib $(TOOLDIRS); do (cd $$d && $(MAKE) distclean); done
129799 +       -rm -f Makefile
129800 +
129801 +install: install-subdirs
129802 +install-subdirs: lib
129803 +       @for d in lib $(TARGETS); do (cd $$d && $(MAKE) install-local) || exit 1; done
129804 +install-include:
129805 +       @cd lib && $(MAKE) install-include
129806 +install-lib:
129807 +       @cd lib && $(MAKE) install-lib
129808 +install-man:
129809 +       :
129810 +uninstall:
129811 +       @for d in lib $(TARGETS); do (cd $$d && $(MAKE) uninstall) || exit 1; done
129812 +
129813 +
129814 +.PHONY: all always lib $(TOOLDIRS) clean distclean distdir install install-subdirs install-include install-lib uninstall
129815 diff -Nurb click-1.6.0/tools/click-align/Makefile click-1.6.0-27/tools/click-align/Makefile
129816 --- click-1.6.0/tools/click-align/Makefile      1969-12-31 19:00:00.000000000 -0500
129817 +++ click-1.6.0-27/tools/click-align/Makefile   2009-01-28 16:15:43.000000000 -0500
129818 @@ -0,0 +1,94 @@
129819 +SHELL = /bin/sh
129820 +
129821 +
129822 +top_srcdir = ../..
129823 +srcdir = .
129824 +top_builddir = ../..
129825 +subdir = tools/click-align
129826 +conf_auxdir = $(top_srcdir)
129827 +
129828 +prefix = /d/click/click-1.6.0-27/inst
129829 +bindir = /d/click/click-1.6.0-27/inst/bin
129830 +HOST_TOOLS = host
129831 +
129832 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
129833 +
129834 +ifeq ($(HOST_TOOLS),build)
129835 +CC = 
129836 +CXX = 
129837 +LIBCLICKTOOL = libclicktool_build.a
129838 +DL_LIBS = 
129839 +else
129840 +CC = gcc -W -Wall
129841 +CXX = g++ -W -Wall 
129842 +LIBCLICKTOOL = libclicktool.a
129843 +DL_LIBS = -ldl
129844 +endif
129845 +INSTALL = /usr/bin/install -c
129846 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
129847 +
129848 +.SUFFIXES:
129849 +.SUFFIXES: .S .c .cc .o .s
129850 +
129851 +.c.o:
129852 +       $(COMPILE) -c $<
129853 +.s.o:
129854 +       $(COMPILE) -c $<
129855 +.S.o:
129856 +       $(COMPILE) -c $<
129857 +.cc.o:
129858 +       $(CXXCOMPILE) -c $<
129859 +
129860 +
129861 +OBJS = alignment.o alignclass.o click-align.o
129862 +
129863 +CPPFLAGS =  -DCLICK_TOOL
129864 +CFLAGS = -g -O2
129865 +CXXFLAGS = -g -O2
129866 +DEPCFLAGS = -MD
129867 +
129868 +DEFS = -DHAVE_CONFIG_H
129869 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
129870 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
129871 +LDFLAGS = 
129872 +LIBS =  $(DL_LIBS)
129873 +
129874 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
129875 +CXXLD = $(CXX)
129876 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
129877 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
129878 +CCLD = $(CC)
129879 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
129880 +
129881 +all: $(LIBCLICKTOOL) all-local
129882 +all-local: click-align
129883 +
129884 +$(LIBCLICKTOOL):
129885 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
129886 +
129887 +click-align: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
129888 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
129889 +
129890 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
129891 +       cd $(top_builddir) \
129892 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
129893 +
129894 +DEPFILES := $(wildcard *.d)
129895 +ifneq ($(DEPFILES),)
129896 +include $(DEPFILES)
129897 +endif
129898 +
129899 +install: $(LIBCLICKTOOL) install-local
129900 +install-local: all-local
129901 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
129902 +       $(INSTALL) click-align $(DESTDIR)$(bindir)/click-align
129903 +uninstall:
129904 +       /bin/rm -f $(DESTDIR)$(bindir)/click-align
129905 +
129906 +clean:
129907 +       rm -f *.d *.o click-align
129908 +distclean: clean
129909 +       -rm -f Makefile
129910 +
129911 +.PHONY: all all-local clean distclean \
129912 +       install install-local uninstall $(LIBCLICKTOOL)
129913 diff -Nurb click-1.6.0/tools/click-check/Makefile click-1.6.0-27/tools/click-check/Makefile
129914 --- click-1.6.0/tools/click-check/Makefile      1969-12-31 19:00:00.000000000 -0500
129915 +++ click-1.6.0-27/tools/click-check/Makefile   2009-01-28 16:15:43.000000000 -0500
129916 @@ -0,0 +1,94 @@
129917 +SHELL = /bin/sh
129918 +
129919 +
129920 +top_srcdir = ../..
129921 +srcdir = .
129922 +top_builddir = ../..
129923 +subdir = tools/click-check
129924 +conf_auxdir = $(top_srcdir)
129925 +
129926 +prefix = /d/click/click-1.6.0-27/inst
129927 +bindir = /d/click/click-1.6.0-27/inst/bin
129928 +HOST_TOOLS = host
129929 +
129930 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
129931 +
129932 +ifeq ($(HOST_TOOLS),build)
129933 +CC = 
129934 +CXX = 
129935 +LIBCLICKTOOL = libclicktool_build.a
129936 +DL_LIBS = 
129937 +else
129938 +CC = gcc -W -Wall
129939 +CXX = g++ -W -Wall 
129940 +LIBCLICKTOOL = libclicktool.a
129941 +DL_LIBS = -ldl
129942 +endif
129943 +INSTALL = /usr/bin/install -c
129944 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
129945 +
129946 +.SUFFIXES:
129947 +.SUFFIXES: .S .c .cc .o .s
129948 +
129949 +.c.o:
129950 +       $(COMPILE) -c $<
129951 +.s.o:
129952 +       $(COMPILE) -c $<
129953 +.S.o:
129954 +       $(COMPILE) -c $<
129955 +.cc.o:
129956 +       $(CXXCOMPILE) -c $<
129957 +
129958 +
129959 +OBJS = click-check.o
129960 +
129961 +CPPFLAGS =  -DCLICK_TOOL
129962 +CFLAGS = -g -O2
129963 +CXXFLAGS = -g -O2
129964 +DEPCFLAGS = -MD
129965 +
129966 +DEFS = -DHAVE_CONFIG_H
129967 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
129968 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
129969 +LDFLAGS = 
129970 +LIBS =  $(DL_LIBS)
129971 +
129972 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
129973 +CXXLD = $(CXX)
129974 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
129975 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
129976 +CCLD = $(CC)
129977 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
129978 +
129979 +all: $(LIBCLICKTOOL) all-local
129980 +all-local: click-check
129981 +
129982 +$(LIBCLICKTOOL):
129983 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
129984 +
129985 +click-check: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
129986 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
129987 +
129988 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
129989 +       cd $(top_builddir) \
129990 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
129991 +
129992 +DEPFILES := $(wildcard *.d)
129993 +ifneq ($(DEPFILES),)
129994 +include $(DEPFILES)
129995 +endif
129996 +
129997 +install: $(LIBCLICKTOOL) install-local
129998 +install-local: all-local
129999 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130000 +       $(INSTALL) click-check $(DESTDIR)$(bindir)/click-check
130001 +uninstall:
130002 +       /bin/rm -f $(DESTDIR)$(bindir)/click-check
130003 +
130004 +clean:
130005 +       rm -f *.d *.o click-check
130006 +distclean: clean
130007 +       -rm -f Makefile
130008 +
130009 +.PHONY: all all-local clean distclean \
130010 +       install install-local uninstall $(LIBCLICKTOOL)
130011 diff -Nurb click-1.6.0/tools/click-combine/Makefile click-1.6.0-27/tools/click-combine/Makefile
130012 --- click-1.6.0/tools/click-combine/Makefile    1969-12-31 19:00:00.000000000 -0500
130013 +++ click-1.6.0-27/tools/click-combine/Makefile 2009-01-28 16:15:43.000000000 -0500
130014 @@ -0,0 +1,99 @@
130015 +SHELL = /bin/sh
130016 +
130017 +
130018 +top_srcdir = ../..
130019 +srcdir = .
130020 +top_builddir = ../..
130021 +subdir = tools/click-combine
130022 +conf_auxdir = $(top_srcdir)
130023 +
130024 +prefix = /d/click/click-1.6.0-27/inst
130025 +bindir = /d/click/click-1.6.0-27/inst/bin
130026 +HOST_TOOLS = host
130027 +
130028 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130029 +
130030 +ifeq ($(HOST_TOOLS),build)
130031 +CC = 
130032 +CXX = 
130033 +LIBCLICKTOOL = libclicktool_build.a
130034 +DL_LIBS = 
130035 +else
130036 +CC = gcc -W -Wall
130037 +CXX = g++ -W -Wall 
130038 +LIBCLICKTOOL = libclicktool.a
130039 +DL_LIBS = -ldl
130040 +endif
130041 +INSTALL = /usr/bin/install -c
130042 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130043 +
130044 +.SUFFIXES:
130045 +.SUFFIXES: .S .c .cc .o .s
130046 +
130047 +.c.o:
130048 +       $(COMPILE) -c $<
130049 +.s.o:
130050 +       $(COMPILE) -c $<
130051 +.S.o:
130052 +       $(COMPILE) -c $<
130053 +.cc.o:
130054 +       $(CXXCOMPILE) -c $<
130055 +
130056 +
130057 +OBJS = click-combine.o
130058 +UNOBJS = click-uncombine.o
130059 +
130060 +CPPFLAGS =  -DCLICK_TOOL
130061 +CFLAGS = -g -O2
130062 +CXXFLAGS = -g -O2
130063 +DEPCFLAGS = -MD
130064 +
130065 +DEFS = -DHAVE_CONFIG_H
130066 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130067 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130068 +LDFLAGS = 
130069 +LIBS =  $(DL_LIBS)
130070 +
130071 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130072 +CXXLD = $(CXX)
130073 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130074 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130075 +CCLD = $(CC)
130076 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130077 +
130078 +all: $(LIBCLICKTOOL) all-local
130079 +all-local: click-combine click-uncombine
130080 +
130081 +$(LIBCLICKTOOL):
130082 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130083 +
130084 +click-combine: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130085 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130086 +
130087 +click-uncombine: Makefile $(UNOBJS) ../lib/$(LIBCLICKTOOL)
130088 +       $(CXXLINK) -rdynamic $(UNOBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130089 +
130090 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130091 +       cd $(top_builddir) \
130092 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130093 +
130094 +DEPFILES := $(wildcard *.d)
130095 +ifneq ($(DEPFILES),)
130096 +include $(DEPFILES)
130097 +endif
130098 +
130099 +install: $(LIBCLICKTOOL) install-local
130100 +install-local: all-local
130101 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130102 +       $(INSTALL) click-combine $(DESTDIR)$(bindir)/click-combine
130103 +       $(INSTALL) click-uncombine $(DESTDIR)$(bindir)/click-uncombine
130104 +uninstall:
130105 +       /bin/rm -f $(DESTDIR)$(bindir)/click-combine $(DESTDIR)$(bindir)/click-uncombine
130106 +
130107 +clean:
130108 +       rm -f *.d *.o click-combine click-uncombine
130109 +distclean: clean
130110 +       -rm -f Makefile
130111 +
130112 +.PHONY: all all-local clean distclean \
130113 +       install install-local uninstall $(LIBCLICKTOOL)
130114 diff -Nurb click-1.6.0/tools/click-devirtualize/Makefile click-1.6.0-27/tools/click-devirtualize/Makefile
130115 --- click-1.6.0/tools/click-devirtualize/Makefile       1969-12-31 19:00:00.000000000 -0500
130116 +++ click-1.6.0-27/tools/click-devirtualize/Makefile    2009-01-28 16:15:43.000000000 -0500
130117 @@ -0,0 +1,94 @@
130118 +SHELL = /bin/sh
130119 +
130120 +
130121 +top_srcdir = ../..
130122 +srcdir = .
130123 +top_builddir = ../..
130124 +subdir = tools/click-devirtualize
130125 +conf_auxdir = $(top_srcdir)
130126 +
130127 +prefix = /d/click/click-1.6.0-27/inst
130128 +bindir = /d/click/click-1.6.0-27/inst/bin
130129 +HOST_TOOLS = host
130130 +
130131 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130132 +
130133 +ifeq ($(HOST_TOOLS),build)
130134 +CC = 
130135 +CXX = 
130136 +LIBCLICKTOOL = libclicktool_build.a
130137 +DL_LIBS = 
130138 +else
130139 +CC = gcc -W -Wall
130140 +CXX = g++ -W -Wall 
130141 +LIBCLICKTOOL = libclicktool.a
130142 +DL_LIBS = -ldl
130143 +endif
130144 +INSTALL = /usr/bin/install -c
130145 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130146 +
130147 +.SUFFIXES:
130148 +.SUFFIXES: .S .c .cc .o .s
130149 +
130150 +.c.o:
130151 +       $(COMPILE) -c $<
130152 +.s.o:
130153 +       $(COMPILE) -c $<
130154 +.S.o:
130155 +       $(COMPILE) -c $<
130156 +.cc.o:
130157 +       $(CXXCOMPILE) -c $<
130158 +
130159 +
130160 +OBJS = cxxclass.o specializer.o signature.o click-devirtualize.o
130161 +
130162 +CPPFLAGS =  -DCLICK_TOOL
130163 +CFLAGS = -g -O2
130164 +CXXFLAGS = -g -O2
130165 +DEPCFLAGS = -MD
130166 +
130167 +DEFS = -DHAVE_CONFIG_H
130168 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130169 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130170 +LDFLAGS = 
130171 +LIBS =  $(DL_LIBS)
130172 +
130173 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130174 +CXXLD = $(CXX)
130175 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130176 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130177 +CCLD = $(CC)
130178 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130179 +
130180 +all: $(LIBCLICKTOOL) all-local
130181 +all-local: click-devirtualize
130182 +
130183 +$(LIBCLICKTOOL):
130184 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130185 +
130186 +click-devirtualize: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130187 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130188 +
130189 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130190 +       cd $(top_builddir) \
130191 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130192 +
130193 +DEPFILES := $(wildcard *.d)
130194 +ifneq ($(DEPFILES),)
130195 +include $(DEPFILES)
130196 +endif
130197 +
130198 +install: $(LIBCLICKTOOL) install-local
130199 +install-local: all-local
130200 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130201 +       $(INSTALL) click-devirtualize $(DESTDIR)$(bindir)/click-devirtualize
130202 +uninstall:
130203 +       /bin/rm -f $(DESTDIR)$(bindir)/click-devirtualize
130204 +
130205 +clean:
130206 +       rm -f *.d *.o click-devirtualize
130207 +distclean: clean
130208 +       -rm -f Makefile
130209 +
130210 +.PHONY: all all-local clean distclean \
130211 +       install install-local uninstall $(LIBCLICKTOOL)
130212 diff -Nurb click-1.6.0/tools/click-fastclassifier/Makefile click-1.6.0-27/tools/click-fastclassifier/Makefile
130213 --- click-1.6.0/tools/click-fastclassifier/Makefile     1969-12-31 19:00:00.000000000 -0500
130214 +++ click-1.6.0-27/tools/click-fastclassifier/Makefile  2009-01-28 16:15:43.000000000 -0500
130215 @@ -0,0 +1,94 @@
130216 +SHELL = /bin/sh
130217 +
130218 +
130219 +top_srcdir = ../..
130220 +srcdir = .
130221 +top_builddir = ../..
130222 +subdir = tools/click-fastclassifier
130223 +conf_auxdir = $(top_srcdir)
130224 +
130225 +prefix = /d/click/click-1.6.0-27/inst
130226 +bindir = /d/click/click-1.6.0-27/inst/bin
130227 +HOST_TOOLS = host
130228 +
130229 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130230 +
130231 +ifeq ($(HOST_TOOLS),build)
130232 +CC = 
130233 +CXX = 
130234 +LIBCLICKTOOL = libclicktool_build.a
130235 +DL_LIBS = 
130236 +else
130237 +CC = gcc -W -Wall
130238 +CXX = g++ -W -Wall 
130239 +LIBCLICKTOOL = libclicktool.a
130240 +DL_LIBS = -ldl
130241 +endif
130242 +INSTALL = /usr/bin/install -c
130243 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130244 +
130245 +.SUFFIXES:
130246 +.SUFFIXES: .S .c .cc .o .s
130247 +
130248 +.c.o:
130249 +       $(COMPILE) -c $<
130250 +.s.o:
130251 +       $(COMPILE) -c $<
130252 +.S.o:
130253 +       $(COMPILE) -c $<
130254 +.cc.o:
130255 +       $(CXXCOMPILE) -c $<
130256 +
130257 +
130258 +OBJS = click-fastclassifier.o fc_classifier.o fc_ipclassifier.o
130259 +
130260 +CPPFLAGS =  -DCLICK_TOOL
130261 +CFLAGS = -g -O2
130262 +CXXFLAGS = -g -O2
130263 +DEPCFLAGS = -MD
130264 +
130265 +DEFS = -DHAVE_CONFIG_H
130266 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130267 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130268 +LDFLAGS = 
130269 +LIBS =  $(DL_LIBS)
130270 +
130271 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130272 +CXXLD = $(CXX)
130273 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130274 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130275 +CCLD = $(CC)
130276 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130277 +
130278 +all: $(LIBCLICKTOOL) all-local
130279 +all-local: click-fastclassifier
130280 +
130281 +$(LIBCLICKTOOL):
130282 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130283 +
130284 +click-fastclassifier: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130285 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130286 +
130287 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130288 +       cd $(top_builddir) \
130289 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130290 +
130291 +DEPFILES := $(wildcard *.d)
130292 +ifneq ($(DEPFILES),)
130293 +include $(DEPFILES)
130294 +endif
130295 +
130296 +install: $(LIBCLICKTOOL) install-local
130297 +install-local: all-local
130298 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130299 +       $(INSTALL) click-fastclassifier $(DESTDIR)$(bindir)/click-fastclassifier
130300 +uninstall:
130301 +       /bin/rm -f $(DESTDIR)$(bindir)/click-fastclassifier
130302 +
130303 +clean:
130304 +       rm -f *.d *.o click-fastclassifier
130305 +distclean: clean
130306 +       -rm -f Makefile
130307 +
130308 +.PHONY: all all-local clean distclean \
130309 +       install install-local uninstall $(LIBCLICKTOOL)
130310 diff -Nurb click-1.6.0/tools/click-flatten/Makefile click-1.6.0-27/tools/click-flatten/Makefile
130311 --- click-1.6.0/tools/click-flatten/Makefile    1969-12-31 19:00:00.000000000 -0500
130312 +++ click-1.6.0-27/tools/click-flatten/Makefile 2009-01-28 16:15:43.000000000 -0500
130313 @@ -0,0 +1,94 @@
130314 +SHELL = /bin/sh
130315 +
130316 +
130317 +top_srcdir = ../..
130318 +srcdir = .
130319 +top_builddir = ../..
130320 +subdir = tools/click-flatten
130321 +conf_auxdir = $(top_srcdir)
130322 +
130323 +prefix = /d/click/click-1.6.0-27/inst
130324 +bindir = /d/click/click-1.6.0-27/inst/bin
130325 +HOST_TOOLS = host
130326 +
130327 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130328 +
130329 +ifeq ($(HOST_TOOLS),build)
130330 +CC = 
130331 +CXX = 
130332 +LIBCLICKTOOL = libclicktool_build.a
130333 +DL_LIBS = 
130334 +else
130335 +CC = gcc -W -Wall
130336 +CXX = g++ -W -Wall 
130337 +LIBCLICKTOOL = libclicktool.a
130338 +DL_LIBS = -ldl
130339 +endif
130340 +INSTALL = /usr/bin/install -c
130341 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130342 +
130343 +.SUFFIXES:
130344 +.SUFFIXES: .S .c .cc .o .s
130345 +
130346 +.c.o:
130347 +       $(COMPILE) -c $<
130348 +.s.o:
130349 +       $(COMPILE) -c $<
130350 +.S.o:
130351 +       $(COMPILE) -c $<
130352 +.cc.o:
130353 +       $(CXXCOMPILE) -c $<
130354 +
130355 +
130356 +OBJS = click-flatten.o
130357 +
130358 +CPPFLAGS =  -DCLICK_TOOL
130359 +CFLAGS = -g -O2
130360 +CXXFLAGS = -g -O2
130361 +DEPCFLAGS = -MD
130362 +
130363 +DEFS = -DHAVE_CONFIG_H
130364 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130365 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130366 +LDFLAGS = 
130367 +LIBS =  $(DL_LIBS)
130368 +
130369 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130370 +CXXLD = $(CXX)
130371 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130372 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130373 +CCLD = $(CC)
130374 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130375 +
130376 +all: $(LIBCLICKTOOL) all-local
130377 +all-local: click-flatten
130378 +
130379 +$(LIBCLICKTOOL):
130380 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130381 +
130382 +click-flatten: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130383 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130384 +
130385 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130386 +       cd $(top_builddir) \
130387 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130388 +
130389 +DEPFILES := $(wildcard *.d)
130390 +ifneq ($(DEPFILES),)
130391 +include $(DEPFILES)
130392 +endif
130393 +
130394 +install: $(LIBCLICKTOOL) install-local
130395 +install-local: all-local
130396 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130397 +       $(INSTALL) click-flatten $(DESTDIR)$(bindir)/click-flatten
130398 +uninstall:
130399 +       /bin/rm -f $(DESTDIR)$(bindir)/click-flatten
130400 +
130401 +clean:
130402 +       rm -f *.d *.o click-flatten
130403 +distclean: clean
130404 +       -rm -f Makefile
130405 +
130406 +.PHONY: all all-local clean distclean \
130407 +       install install-local uninstall $(LIBCLICKTOOL)
130408 diff -Nurb click-1.6.0/tools/click-install/Makefile click-1.6.0-27/tools/click-install/Makefile
130409 --- click-1.6.0/tools/click-install/Makefile    1969-12-31 19:00:00.000000000 -0500
130410 +++ click-1.6.0-27/tools/click-install/Makefile 2009-01-28 16:15:43.000000000 -0500
130411 @@ -0,0 +1,99 @@
130412 +SHELL = /bin/sh
130413 +
130414 +
130415 +top_srcdir = ../..
130416 +srcdir = .
130417 +top_builddir = ../..
130418 +subdir = tools/click-install
130419 +conf_auxdir = $(top_srcdir)
130420 +
130421 +prefix = /d/click/click-1.6.0-27/inst
130422 +sbindir = /d/click/click-1.6.0-27/inst/sbin
130423 +HOST_TOOLS = host
130424 +
130425 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130426 +
130427 +ifeq ($(HOST_TOOLS),build)
130428 +CC = 
130429 +CXX = 
130430 +LIBCLICKTOOL = libclicktool_build.a
130431 +DL_LIBS = 
130432 +else
130433 +CC = gcc -W -Wall
130434 +CXX = g++ -W -Wall 
130435 +LIBCLICKTOOL = libclicktool.a
130436 +DL_LIBS = -ldl
130437 +endif
130438 +INSTALL = /usr/bin/install -c
130439 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130440 +
130441 +.SUFFIXES:
130442 +.SUFFIXES: .S .c .cc .o .s
130443 +
130444 +.c.o:
130445 +       $(COMPILE) -c $<
130446 +.s.o:
130447 +       $(COMPILE) -c $<
130448 +.S.o:
130449 +       $(COMPILE) -c $<
130450 +.cc.o:
130451 +       $(CXXCOMPILE) -c $<
130452 +
130453 +
130454 +OBJS = common.o click-install.o
130455 +UN_OBJS = common.o click-uninstall.o
130456 +
130457 +CPPFLAGS =  -DCLICK_TOOL
130458 +CFLAGS = -g -O2
130459 +CXXFLAGS = -g -O2
130460 +DEPCFLAGS = -MD
130461 +
130462 +DEFS = -DHAVE_CONFIG_H
130463 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130464 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130465 +LDFLAGS = 
130466 +LIBS =  $(DL_LIBS)
130467 +
130468 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130469 +CXXLD = $(CXX)
130470 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130471 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130472 +CCLD = $(CC)
130473 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130474 +
130475 +all: $(LIBCLICKTOOL) all-local
130476 +all-local: click-install click-uninstall
130477 +
130478 +$(LIBCLICKTOOL):
130479 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130480 +
130481 +click-install: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130482 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130483 +
130484 +click-uninstall: Makefile $(UN_OBJS) ../lib/$(LIBCLICKTOOL)
130485 +       $(CXXLINK) -rdynamic $(UN_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130486 +
130487 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130488 +       cd $(top_builddir) \
130489 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130490 +
130491 +DEPFILES := $(wildcard *.d)
130492 +ifneq ($(DEPFILES),)
130493 +include $(DEPFILES)
130494 +endif
130495 +
130496 +install: $(LIBCLICKTOOL) install-local
130497 +install-local: all-local
130498 +       $(mkinstalldirs) $(DESTDIR)$(sbindir)
130499 +       $(INSTALL) click-install $(DESTDIR)$(sbindir)/click-install
130500 +       $(INSTALL) click-uninstall $(DESTDIR)$(sbindir)/click-uninstall
130501 +uninstall:
130502 +       /bin/rm -f $(DESTDIR)$(sbindir)/click-install $(DESTDIR)$(sbindir)/click-uninstall
130503 +
130504 +clean:
130505 +       rm -f *.d *.o click-install click-uninstall
130506 +distclean: clean
130507 +       -rm -f Makefile
130508 +
130509 +.PHONY: all all-local clean distclean \
130510 +       install install-local uninstall $(LIBCLICKTOOL)
130511 diff -Nurb click-1.6.0/tools/click-mkmindriver/Makefile click-1.6.0-27/tools/click-mkmindriver/Makefile
130512 --- click-1.6.0/tools/click-mkmindriver/Makefile        1969-12-31 19:00:00.000000000 -0500
130513 +++ click-1.6.0-27/tools/click-mkmindriver/Makefile     2009-01-28 16:15:43.000000000 -0500
130514 @@ -0,0 +1,94 @@
130515 +SHELL = /bin/sh
130516 +
130517 +
130518 +top_srcdir = ../..
130519 +srcdir = .
130520 +top_builddir = ../..
130521 +subdir = tools/click-mkmindriver
130522 +conf_auxdir = $(top_srcdir)
130523 +
130524 +prefix = /d/click/click-1.6.0-27/inst
130525 +bindir = /d/click/click-1.6.0-27/inst/bin
130526 +HOST_TOOLS = host
130527 +
130528 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130529 +
130530 +ifneq ($(HOST_TOOLS),host)
130531 +CC = 
130532 +CXX = 
130533 +LIBCLICKTOOL = libclicktool_build.a
130534 +DL_LIBS = 
130535 +else
130536 +CC = gcc -W -Wall
130537 +CXX = g++ -W -Wall 
130538 +LIBCLICKTOOL = libclicktool.a
130539 +DL_LIBS = -ldl
130540 +endif
130541 +INSTALL = /usr/bin/install -c
130542 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130543 +
130544 +.SUFFIXES:
130545 +.SUFFIXES: .S .c .cc .o .s
130546 +
130547 +.c.o:
130548 +       $(COMPILE) -c $<
130549 +.s.o:
130550 +       $(COMPILE) -c $<
130551 +.S.o:
130552 +       $(COMPILE) -c $<
130553 +.cc.o:
130554 +       $(CXXCOMPILE) -c $<
130555 +
130556 +
130557 +OBJS = click-mkmindriver.o
130558 +
130559 +CPPFLAGS =  -DCLICK_TOOL
130560 +CFLAGS = -g -O2
130561 +CXXFLAGS = -g -O2
130562 +DEPCFLAGS = -MD
130563 +
130564 +DEFS = -DHAVE_CONFIG_H
130565 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130566 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130567 +LDFLAGS = 
130568 +LIBS =  $(DL_LIBS)
130569 +
130570 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130571 +CXXLD = $(CXX)
130572 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130573 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130574 +CCLD = $(CC)
130575 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130576 +
130577 +all: $(LIBCLICKTOOL) all-local
130578 +all-local: click-mkmindriver
130579 +
130580 +$(LIBCLICKTOOL):
130581 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130582 +
130583 +click-mkmindriver: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130584 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130585 +
130586 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130587 +       cd $(top_builddir) \
130588 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130589 +
130590 +DEPFILES := $(wildcard *.d)
130591 +ifneq ($(DEPFILES),)
130592 +include $(DEPFILES)
130593 +endif
130594 +
130595 +install: $(LIBCLICKTOOL) install-local
130596 +install-local: all-local
130597 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130598 +       $(INSTALL) click-mkmindriver $(DESTDIR)$(bindir)/click-mkmindriver
130599 +uninstall:
130600 +       /bin/rm -f $(DESTDIR)$(bindir)/click-mkmindriver
130601 +
130602 +clean:
130603 +       rm -f *.d *.o click-mkmindriver
130604 +distclean: clean
130605 +       -rm -f Makefile
130606 +
130607 +.PHONY: all all-local clean distclean \
130608 +       install install-local uninstall $(LIBCLICKTOOL)
130609 diff -Nurb click-1.6.0/tools/click-pretty/Makefile click-1.6.0-27/tools/click-pretty/Makefile
130610 --- click-1.6.0/tools/click-pretty/Makefile     1969-12-31 19:00:00.000000000 -0500
130611 +++ click-1.6.0-27/tools/click-pretty/Makefile  2009-01-28 16:15:43.000000000 -0500
130612 @@ -0,0 +1,94 @@
130613 +SHELL = /bin/sh
130614 +
130615 +
130616 +top_srcdir = ../..
130617 +srcdir = .
130618 +top_builddir = ../..
130619 +subdir = tools/click-pretty
130620 +conf_auxdir = $(top_srcdir)
130621 +
130622 +prefix = /d/click/click-1.6.0-27/inst
130623 +bindir = /d/click/click-1.6.0-27/inst/bin
130624 +HOST_TOOLS = host
130625 +
130626 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130627 +
130628 +ifeq ($(HOST_TOOLS),build)
130629 +CC = 
130630 +CXX = 
130631 +LIBCLICKTOOL = libclicktool_build.a
130632 +DL_LIBS = 
130633 +else
130634 +CC = gcc -W -Wall
130635 +CXX = g++ -W -Wall 
130636 +LIBCLICKTOOL = libclicktool.a
130637 +DL_LIBS = -ldl
130638 +endif
130639 +INSTALL = /usr/bin/install -c
130640 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130641 +
130642 +.SUFFIXES:
130643 +.SUFFIXES: .S .c .cc .o .s
130644 +
130645 +.c.o:
130646 +       $(COMPILE) -c $<
130647 +.s.o:
130648 +       $(COMPILE) -c $<
130649 +.S.o:
130650 +       $(COMPILE) -c $<
130651 +.cc.o:
130652 +       $(CXXCOMPILE) -c $<
130653 +
130654 +
130655 +OBJS = click-pretty.o html.o
130656 +
130657 +CPPFLAGS =  -DCLICK_TOOL
130658 +CFLAGS = -g -O2
130659 +CXXFLAGS = -g -O2
130660 +DEPCFLAGS = -MD
130661 +
130662 +DEFS = -DHAVE_CONFIG_H
130663 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130664 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130665 +LDFLAGS = 
130666 +LIBS =  $(DL_LIBS)
130667 +
130668 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130669 +CXXLD = $(CXX)
130670 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130671 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130672 +CCLD = $(CC)
130673 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130674 +
130675 +all: $(LIBCLICKTOOL) all-local
130676 +all-local: click-pretty
130677 +
130678 +$(LIBCLICKTOOL):
130679 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130680 +
130681 +click-pretty: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130682 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130683 +
130684 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130685 +       cd $(top_builddir) \
130686 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130687 +
130688 +DEPFILES := $(wildcard *.d)
130689 +ifneq ($(DEPFILES),)
130690 +include $(DEPFILES)
130691 +endif
130692 +
130693 +install: $(LIBCLICKTOOL) install-local
130694 +install-local: all-local
130695 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130696 +       $(INSTALL) click-pretty $(DESTDIR)$(bindir)/click-pretty
130697 +uninstall:
130698 +       /bin/rm -f $(DESTDIR)$(bindir)/click-pretty
130699 +
130700 +clean:
130701 +       rm -f *.d *.o click-pretty
130702 +distclean: clean
130703 +       -rm -f Makefile
130704 +
130705 +.PHONY: all all-local clean distclean \
130706 +       install install-local uninstall $(LIBCLICKTOOL)
130707 diff -Nurb click-1.6.0/tools/click-undead/Makefile click-1.6.0-27/tools/click-undead/Makefile
130708 --- click-1.6.0/tools/click-undead/Makefile     1969-12-31 19:00:00.000000000 -0500
130709 +++ click-1.6.0-27/tools/click-undead/Makefile  2009-01-28 16:15:43.000000000 -0500
130710 @@ -0,0 +1,94 @@
130711 +SHELL = /bin/sh
130712 +
130713 +
130714 +top_srcdir = ../..
130715 +srcdir = .
130716 +top_builddir = ../..
130717 +subdir = tools/click-undead
130718 +conf_auxdir = $(top_srcdir)
130719 +
130720 +prefix = /d/click/click-1.6.0-27/inst
130721 +bindir = /d/click/click-1.6.0-27/inst/bin
130722 +HOST_TOOLS = host
130723 +
130724 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130725 +
130726 +ifeq ($(HOST_TOOLS),build)
130727 +CC = 
130728 +CXX = 
130729 +LIBCLICKTOOL = libclicktool_build.a
130730 +DL_LIBS = 
130731 +else
130732 +CC = gcc -W -Wall
130733 +CXX = g++ -W -Wall 
130734 +LIBCLICKTOOL = libclicktool.a
130735 +DL_LIBS = -ldl
130736 +endif
130737 +INSTALL = /usr/bin/install -c
130738 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130739 +
130740 +.SUFFIXES:
130741 +.SUFFIXES: .S .c .cc .o .s
130742 +
130743 +.c.o:
130744 +       $(COMPILE) -c $<
130745 +.s.o:
130746 +       $(COMPILE) -c $<
130747 +.S.o:
130748 +       $(COMPILE) -c $<
130749 +.cc.o:
130750 +       $(CXXCOMPILE) -c $<
130751 +
130752 +
130753 +OBJS = click-undead.o
130754 +
130755 +CPPFLAGS =  -DCLICK_TOOL
130756 +CFLAGS = -g -O2
130757 +CXXFLAGS = -g -O2
130758 +DEPCFLAGS = -MD
130759 +
130760 +DEFS = -DHAVE_CONFIG_H
130761 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130762 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130763 +LDFLAGS = 
130764 +LIBS =  $(DL_LIBS)
130765 +
130766 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130767 +CXXLD = $(CXX)
130768 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130769 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130770 +CCLD = $(CC)
130771 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130772 +
130773 +all: $(LIBCLICKTOOL) all-local
130774 +all-local: click-undead
130775 +
130776 +$(LIBCLICKTOOL):
130777 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130778 +
130779 +click-undead: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130780 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130781 +
130782 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130783 +       cd $(top_builddir) \
130784 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130785 +
130786 +DEPFILES := $(wildcard *.d)
130787 +ifneq ($(DEPFILES),)
130788 +include $(DEPFILES)
130789 +endif
130790 +
130791 +install: $(LIBCLICKTOOL) install-local
130792 +install-local: all-local
130793 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130794 +       $(INSTALL) click-undead $(DESTDIR)$(bindir)/click-undead
130795 +uninstall:
130796 +       /bin/rm -f $(DESTDIR)$(bindir)/click-undead
130797 +
130798 +clean:
130799 +       rm -f *.d *.o click-undead
130800 +distclean: clean
130801 +       -rm -f Makefile
130802 +
130803 +.PHONY: all all-local clean distclean \
130804 +       install install-local uninstall $(LIBCLICKTOOL)
130805 diff -Nurb click-1.6.0/tools/click-xform/Makefile click-1.6.0-27/tools/click-xform/Makefile
130806 --- click-1.6.0/tools/click-xform/Makefile      1969-12-31 19:00:00.000000000 -0500
130807 +++ click-1.6.0-27/tools/click-xform/Makefile   2009-01-28 16:15:43.000000000 -0500
130808 @@ -0,0 +1,94 @@
130809 +SHELL = /bin/sh
130810 +
130811 +
130812 +top_srcdir = ../..
130813 +srcdir = .
130814 +top_builddir = ../..
130815 +subdir = tools/click-xform
130816 +conf_auxdir = $(top_srcdir)
130817 +
130818 +prefix = /d/click/click-1.6.0-27/inst
130819 +bindir = /d/click/click-1.6.0-27/inst/bin
130820 +HOST_TOOLS = host
130821 +
130822 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130823 +
130824 +ifeq ($(HOST_TOOLS),build)
130825 +CC = 
130826 +CXX = 
130827 +LIBCLICKTOOL = libclicktool_build.a
130828 +DL_LIBS = 
130829 +else
130830 +CC = gcc -W -Wall
130831 +CXX = g++ -W -Wall 
130832 +LIBCLICKTOOL = libclicktool.a
130833 +DL_LIBS = -ldl
130834 +endif
130835 +INSTALL = /usr/bin/install -c
130836 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130837 +
130838 +.SUFFIXES:
130839 +.SUFFIXES: .S .c .cc .o .s
130840 +
130841 +.c.o:
130842 +       $(COMPILE) -c $<
130843 +.s.o:
130844 +       $(COMPILE) -c $<
130845 +.S.o:
130846 +       $(COMPILE) -c $<
130847 +.cc.o:
130848 +       $(CXXCOMPILE) -c $<
130849 +
130850 +
130851 +OBJS = adjacency.o click-xform.o
130852 +
130853 +CPPFLAGS =  -DCLICK_TOOL
130854 +CFLAGS = -g -O2
130855 +CXXFLAGS = -g -O2
130856 +DEPCFLAGS = -MD
130857 +
130858 +DEFS = -DHAVE_CONFIG_H
130859 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130860 +       -I$(top_srcdir)/tools/lib -I$(srcdir)
130861 +LDFLAGS = 
130862 +LIBS =  $(DL_LIBS)
130863 +
130864 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130865 +CXXLD = $(CXX)
130866 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130867 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130868 +CCLD = $(CC)
130869 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130870 +
130871 +all: $(LIBCLICKTOOL) all-local
130872 +all-local: click-xform
130873 +
130874 +$(LIBCLICKTOOL):
130875 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130876 +
130877 +click-xform: Makefile $(OBJS) ../lib/$(LIBCLICKTOOL)
130878 +       $(CXXLINK) -rdynamic $(OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130879 +
130880 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130881 +       cd $(top_builddir) \
130882 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130883 +
130884 +DEPFILES := $(wildcard *.d)
130885 +ifneq ($(DEPFILES),)
130886 +include $(DEPFILES)
130887 +endif
130888 +
130889 +install: $(LIBCLICKTOOL) install-local
130890 +install-local: all-local
130891 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130892 +       $(INSTALL) click-xform $(DESTDIR)$(bindir)/click-xform
130893 +uninstall:
130894 +       /bin/rm -f $(DESTDIR)$(bindir)/click-xform
130895 +
130896 +clean:
130897 +       rm -f *.d *.o click-xform
130898 +distclean: clean
130899 +       -rm -f Makefile
130900 +
130901 +.PHONY: all all-local clean distclean \
130902 +       install install-local uninstall $(LIBCLICKTOOL)
130903 diff -Nurb click-1.6.0/tools/click2xml/Makefile click-1.6.0-27/tools/click2xml/Makefile
130904 --- click-1.6.0/tools/click2xml/Makefile        1969-12-31 19:00:00.000000000 -0500
130905 +++ click-1.6.0-27/tools/click2xml/Makefile     2009-01-28 16:15:43.000000000 -0500
130906 @@ -0,0 +1,100 @@
130907 +SHELL = /bin/sh
130908 +
130909 +
130910 +top_srcdir = ../..
130911 +srcdir = .
130912 +top_builddir = ../..
130913 +subdir = tools/click2xml
130914 +conf_auxdir = $(top_srcdir)
130915 +
130916 +prefix = /d/click/click-1.6.0-27/inst
130917 +bindir = /d/click/click-1.6.0-27/inst/bin
130918 +HOST_TOOLS = host
130919 +
130920 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/include
130921 +
130922 +ifeq ($(HOST_TOOLS),build)
130923 +CC = 
130924 +CXX = 
130925 +LIBCLICKTOOL = libclicktool_build.a
130926 +DL_LIBS = 
130927 +else
130928 +CC = gcc -W -Wall
130929 +CXX = g++ -W -Wall 
130930 +LIBCLICKTOOL = libclicktool.a
130931 +DL_LIBS = -ldl
130932 +endif
130933 +INSTALL = /usr/bin/install -c
130934 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
130935 +
130936 +.SUFFIXES:
130937 +.SUFFIXES: .S .c .cc .o .s
130938 +
130939 +.c.o:
130940 +       $(COMPILE) -c $<
130941 +.s.o:
130942 +       $(COMPILE) -c $<
130943 +.S.o:
130944 +       $(COMPILE) -c $<
130945 +.cc.o:
130946 +       $(CXXCOMPILE) -c $<
130947 +
130948 +
130949 +CLICK2XML_OBJS = click2xml.o
130950 +XML2CLICK_OBJS = xml2click.o
130951 +
130952 +CPPFLAGS =  -DCLICK_TOOL
130953 +CFLAGS = -g -O2
130954 +CXXFLAGS = -g -O2
130955 +DEPCFLAGS = -MD
130956 +
130957 +DEFS = -DHAVE_CONFIG_H
130958 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
130959 +       -I$(top_srcdir)/tools/lib -I$(srcdir) 
130960 +LDFLAGS = 
130961 +LIBS =   -lexpat $(DL_LIBS)
130962 +
130963 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
130964 +CXXLD = $(CXX)
130965 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
130966 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
130967 +CCLD = $(CC)
130968 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
130969 +
130970 +all: $(LIBCLICKTOOL) all-local
130971 +all-local: click2xml xml2click
130972 +
130973 +$(LIBCLICKTOOL):
130974 +       @cd ../lib; $(MAKE) $(LIBCLICKTOOL)
130975 +
130976 +click2xml: Makefile $(CLICK2XML_OBJS) ../lib/$(LIBCLICKTOOL)
130977 +       $(CXXLINK) -rdynamic $(CLICK2XML_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130978 +
130979 +xml2click: Makefile $(XML2CLICK_OBJS) ../lib/$(LIBCLICKTOOL)
130980 +       $(CXXLINK) -rdynamic $(XML2CLICK_OBJS) ../lib/$(LIBCLICKTOOL) $(LIBS)
130981 +
130982 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
130983 +       cd $(top_builddir) \
130984 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
130985 +
130986 +DEPFILES := $(wildcard *.d)
130987 +ifneq ($(DEPFILES),)
130988 +include $(DEPFILES)
130989 +endif
130990 +
130991 +install: $(LIBCLICKTOOL) install-local
130992 +install-local: all-local
130993 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
130994 +       $(INSTALL) click2xml $(DESTDIR)$(bindir)/click2xml
130995 +       test -z "xml2click" || $(INSTALL) xml2click $(DESTDIR)$(bindir)/xml2click
130996 +uninstall:
130997 +       /bin/rm -f $(DESTDIR)$(bindir)/click2xml
130998 +       test -z "xml2click" || /bin/rm -f $(DESTDIR)$(bindir)/xml2click
130999 +
131000 +clean:
131001 +       rm -f *.d *.o click2xml xml2click
131002 +distclean: clean
131003 +       -rm -f Makefile
131004 +
131005 +.PHONY: all all-local clean distclean \
131006 +       install install-local uninstall $(LIBCLICKTOOL)
131007 diff -Nurb click-1.6.0/tools/lib/Makefile click-1.6.0-27/tools/lib/Makefile
131008 --- click-1.6.0/tools/lib/Makefile      1969-12-31 19:00:00.000000000 -0500
131009 +++ click-1.6.0-27/tools/lib/Makefile   2009-01-28 16:15:43.000000000 -0500
131010 @@ -0,0 +1,124 @@
131011 +SHELL = /bin/sh
131012 +
131013 +
131014 +top_srcdir = ../..
131015 +srcdir = .
131016 +top_builddir = ../..
131017 +subdir = tools/lib
131018 +conf_auxdir = $(top_srcdir)
131019 +
131020 +prefix = /d/click/click-1.6.0-27/inst
131021 +bindir = /d/click/click-1.6.0-27/inst/bin
131022 +libdir = /d/click/click-1.6.0-27/inst/lib
131023 +includedir = /d/click/click-1.6.0-27/inst/include
131024 +toolincludedir = $(includedir)/clicktool
131025 +HOST_TOOLS = host
131026 +
131027 +VPATH = .:$(top_srcdir)/$(subdir):$(top_srcdir)/tools/lib:$(top_srcdir)/lib
131028 +
131029 +CC = gcc -W -Wall
131030 +CXX = g++ -W -Wall 
131031 +AR_CREATE = ar cru
131032 +RANLIB = ranlib
131033 +BUILD_CC = 
131034 +BUILD_CXX = 
131035 +BUILD_AR_CREATE =  cru
131036 +BUILD_RANLIB = 
131037 +INSTALL = /usr/bin/install -c
131038 +INSTALL_DATA = /usr/bin/install -c -m 644
131039 +INSTALL_DATA_IF_CHANGED = $(top_builddir)/installch -m 644
131040 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
131041 +
131042 +.SUFFIXES:
131043 +.SUFFIXES: .S .c .cc .o .bo .s
131044 +
131045 +.c.o:
131046 +       $(COMPILE) -c $<
131047 +       @-/bin/mv $*.d $*.hd
131048 +.s.o:
131049 +       $(COMPILE) -c $<
131050 +       @-/bin/mv $*.d $*.hd
131051 +.S.o:
131052 +       $(COMPILE) -c $<
131053 +       @-/bin/mv $*.d $*.hd
131054 +.cc.o:
131055 +       $(CXXCOMPILE) -c $<
131056 +       @-/bin/mv $*.d $*.hd
131057 +.c.bo:
131058 +       $(BUILD_COMPILE) -c $< -o $@
131059 +       @-sed 's/\.o:/\.bo:/' < $*.d > $*.bd; /bin/rm -f $*.d
131060 +.cc.bo:
131061 +       $(BUILD_CXXCOMPILE) -c $< -o $@
131062 +       @-sed 's/\.o:/\.bo:/' < $*.d > $*.bd; /bin/rm -f $*.d
131063 +
131064 +
131065 +OBJS = string.o straccum.o \
131066 +       bitvector.o vectorv.o vectori.o hashmapi.o bighashmap_arena.o \
131067 +       ipaddress.o etheraddress.o \
131068 +       timestamp.o error.o \
131069 +       elementt.o eclasst.o routert.o runparse.o variableenv.o \
131070 +       lexert.o lexertinfo.o driver.o \
131071 +       confparse.o archive.o processingt.o etraits.o elementmap.o \
131072 +       userutils.o md5.o toolutils.o clp.o  
131073 +BUILDOBJS = $(patsubst %.o,%.bo,$(OBJS))
131074 +
131075 +CPPFLAGS =  -DCLICK_TOOL
131076 +CFLAGS = -g -O2
131077 +CXXFLAGS = -g -O2
131078 +DEPCFLAGS = -MD
131079 +
131080 +DEFS = -DHAVE_CONFIG_H
131081 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
131082 +       -I$(srcdir)
131083 +LDFLAGS = 
131084 +LIBS = 
131085 +
131086 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
131087 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
131088 +BUILD_CXXCOMPILE = $(BUILD_CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
131089 +BUILD_COMPILE = $(BUILD_CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
131090 +
131091 +ifeq ($(HOST_TOOLS),mixed)
131092 +all: libclicktool.a libclicktool_build.a
131093 +endif
131094 +ifeq ($(HOST_TOOLS),build)
131095 +all: libclicktool_build.a
131096 +endif
131097 +ifeq ($(HOST_TOOLS),host)
131098 +all: libclicktool.a
131099 +endif
131100 +
131101 +libclicktool.a: Makefile $(OBJS)
131102 +       $(AR_CREATE) libclicktool.a $(OBJS)
131103 +       $(RANLIB) libclicktool.a
131104 +libclicktool_build.a: Makefile $(BUILDOBJS)
131105 +       $(BUILD_AR_CREATE) libclicktool_build.a $(BUILDOBJS)
131106 +       $(BUILD_RANLIB) libclicktool_build.a
131107 +
131108 +Makefile: $(srcdir)/Makefile.in
131109 +       cd $(top_builddir) \
131110 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_ELEMLISTS=no CONFIG_HEADERS= $(SHELL) ./config.status
131111 +
131112 +DEPFILES := $(wildcard *.hd *.bd)
131113 +ifneq ($(DEPFILES),)
131114 +include $(DEPFILES)
131115 +endif
131116 +
131117 +install: install-local
131118 +install-lib install-local: libclicktool.a install-include
131119 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
131120 +       $(INSTALL) libclicktool.a $(DESTDIR)$(libdir)/libclicktool.a
131121 +install-include:
131122 +       $(mkinstalldirs) $(DESTDIR)$(toolincludedir)
131123 +       $(INSTALL_DATA_IF_CHANGED) $(srcdir)/*.hh $(DESTDIR)$(toolincludedir)
131124 +uninstall:
131125 +       /bin/rm -f $(DESTDIR)$(libdir)/libclicktool.a
131126 +       cd $(srcdir); for i in *.hh; do /bin/rm -f $(DESTDIR)$(toolincludedir)/$$i; done
131127 +
131128 +clean:
131129 +       rm -f *.d *.hd *.bd *.o *.bo libclicktool.a libclicktool_build.a
131130 +distclean: clean
131131 +       -rm -f Makefile
131132 +
131133 +.PHONY: all clean distclean \
131134 +       install install-lib install-local install-include uninstall
131135 diff -Nurb click-1.6.0/userlevel/Makefile click-1.6.0-27/userlevel/Makefile
131136 --- click-1.6.0/userlevel/Makefile      1969-12-31 19:00:00.000000000 -0500
131137 +++ click-1.6.0-27/userlevel/Makefile   2009-01-28 16:15:43.000000000 -0500
131138 @@ -0,0 +1,152 @@
131139 +## The following line supports click-mkmindriver and should not be changed.
131140 +## Click userlevel driver Makefile ##
131141 +SHELL = /bin/sh
131142 +
131143 +top_srcdir := ..
131144 +srcdir := .
131145 +top_builddir := ..
131146 +subdir := userlevel
131147 +conf_auxdir := $(top_srcdir)
131148 +
131149 +prefix = /d/click/click-1.6.0-27/inst
131150 +bindir = /d/click/click-1.6.0-27/inst/bin
131151 +sbindir = /d/click/click-1.6.0-27/inst/sbin
131152 +libdir = /d/click/click-1.6.0-27/inst/lib
131153 +
131154 +VPATH = .:$(top_srcdir)/lib:$(top_srcdir)/$(subdir):$(top_srcdir)/elements/standard
131155 +
131156 +CC = gcc -W -Wall
131157 +CPP = gcc -W -Wall -E
131158 +CXX = g++ -W -Wall 
131159 +CXXCPP = g++ -W -Wall  -E
131160 +AR_CREATE = ar cru
131161 +RANLIB = ranlib
131162 +INSTALL = /usr/bin/install -c
131163 +mkinstalldirs = $(conf_auxdir)/mkinstalldirs
131164 +
131165 +ifeq ($(V),1)
131166 +ccompile = $(COMPILE) $(1)
131167 +cxxcompile = $(CXXCOMPILE) $(1)
131168 +else
131169 +ccompile = @/bin/echo ' ' $(2) $< && $(COMPILE) $(1)
131170 +cxxcompile = @/bin/echo ' ' $(2) $< && $(CXXCOMPILE) $(1)
131171 +endif
131172 +
131173 +.SUFFIXES:
131174 +.SUFFIXES: .S .c .cc .o .s .ii
131175 +
131176 +.c.o:
131177 +       $(call ccompile,-c $< -o $@,CC)
131178 +.s.o:
131179 +       $(call ccompile,-c $< -o $@,ASM)
131180 +.S.o:
131181 +       $(call ccompile,-c $< -o $@,ASM)
131182 +.cc.o:
131183 +       $(call cxxcompile,-c $< -o $@,CXX)
131184 +.cc.s:
131185 +       $(call cxxcompile,-S $< -o $@,CXX -S)
131186 +.cc.ii:
131187 +       $(call cxxcompile,-E $< > $@,CXXCPP)
131188 +
131189 +
131190 +GENERIC_OBJS = string.o straccum.o nameinfo.o \
131191 +       bitvector.o vectorv.o templatei.o bighashmap_arena.o \
131192 +       ipaddress.o ipflowid.o etheraddress.o \
131193 +       packet.o \
131194 +       error.o timestamp.o glue.o task.o timer.o atomic.o gaprate.o \
131195 +       element.o \
131196 +       confparse.o variableenv.o lexer.o elemfilter.o \
131197 +       routerthread.o router.o master.o handlercall.o notifier.o \
131198 +       integers.o md5.o crc32.o in_cksum.o iptable.o \
131199 +       archive.o userutils.o driver.o \
131200 +       $(EXTRA_DRIVER_OBJS)
131201 +
131202 +EXTRA_DRIVER_OBJS = 
131203 +
131204 +LIBOBJS = $(GENERIC_OBJS) $(STD_ELEMENT_OBJS) clp.o exportstub.o
131205 +STD_ELEMENT_OBJS = addressinfo.o alignmentinfo.o \
131206 +       errorelement.o portinfo.o scheduleinfo.o
131207 +OBJS = $(ELEMENT_OBJS) $(ELEMENTSCONF).o click.o
131208 +
131209 +CPPFLAGS =  -DCLICK_USERLEVEL
131210 +CFLAGS = -g -O2
131211 +CXXFLAGS = -g -O2
131212 +DEPCFLAGS = -MD
131213 +
131214 +DEFS = -DHAVE_CONFIG_H
131215 +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include \
131216 +       -I$(srcdir) -I$(top_srcdir)  
131217 +LDFLAGS = 
131218 +LIBS =  `$(top_builddir)/click-compile --otherlibs` $(ELEMENT_LIBS)
131219 +
131220 +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS) $(DEPCFLAGS)
131221 +CXXLD = $(CXX)
131222 +CXXLINK = $(CXXLD) $(CXXFLAGS) $(LDFLAGS) -o $@
131223 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(DEPCFLAGS)
131224 +CCLD = $(CC)
131225 +LINK = $(CCLD) $(CFLAGS) $(LDFLAGS) -o $@
131226 +
131227 +ifndef MINDRIVER
131228 +DRIVER = click
131229 +ELEMENTSCONF = elements
131230 +INSTALLLIBS = libclick.a
131231 +else
131232 +DRIVER = $(MINDRIVER)click
131233 +ELEMENTSCONF = elements_$(MINDRIVER)
131234 +endif
131235 +INSTALLPROGS = $(DRIVER)
131236 +
131237 +all: $(INSTALLPROGS) $(INSTALLLIBS)
131238 +
131239 +ifneq ($(MAKECMDGOALS),clean)
131240 +-include $(ELEMENTSCONF).mk
131241 +endif
131242 +
131243 +$(DRIVER): Makefile libclick.a $(OBJS)
131244 +       $(CXXLINK) -rdynamic $(OBJS) libclick.a $(LIBS)
131245 +
131246 +libclick.a: Makefile $(LIBOBJS)
131247 +       $(AR_CREATE) libclick.a $(LIBOBJS)
131248 +       $(RANLIB) libclick.a
131249 +
131250 +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
131251 +       cd $(top_builddir) \
131252 +         && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
131253 +
131254 +elemlist:
131255 +       @rm -f elements.conf
131256 +       @$(MAKE) elements.conf
131257 +elements.conf: $(top_builddir)/config.status $(top_builddir)/click-buildtool
131258 +       echo "userlevel  app aqm ethernet icmp ip standard tcpudp" | $(top_builddir)/click-buildtool findelem -r userlevel -p $(top_srcdir) > elements.conf
131259 +$(ELEMENTSCONF).mk: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
131260 +       $(top_builddir)/click-buildtool elem2make -x "$(STD_ELEMENT_OBJS)" < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).mk
131261 +$(ELEMENTSCONF).cc: $(ELEMENTSCONF).conf $(top_builddir)/click-buildtool
131262 +       $(top_builddir)/click-buildtool elem2export < $(ELEMENTSCONF).conf > $(ELEMENTSCONF).cc
131263 +       @rm -f $(ELEMENTSCONF).d
131264 +
131265 +DEPFILES := $(wildcard *.d)
131266 +ifneq ($(DEPFILES),)
131267 +include $(DEPFILES)
131268 +endif
131269 +
131270 +install: $(INSTALLPROGS) install-lib
131271 +       $(mkinstalldirs) $(DESTDIR)$(bindir)
131272 +       for i in $(INSTALLPROGS); do $(INSTALL) $$i $(DESTDIR)$(bindir)/$$i; done
131273 +install-lib: $(INSTALLLIBS)
131274 +       $(mkinstalldirs) $(DESTDIR)$(libdir)
131275 +       for i in $(INSTALLLIBS); do $(INSTALL) $$i $(DESTDIR)$(libdir)/$$i; done
131276 +install-man:
131277 +       :
131278 +uninstall:
131279 +       for i in $(INSTALLLIBS); do rm -f $(DESTDIR)$(libdir)/$$i; done
131280 +       for i in $(INSTALLPROGS); do rm -f $(DESTDIR)$(bindir)/$$i; done
131281 +
131282 +clean:
131283 +       rm -f *.d *.o $(INSTALLPROGS) $(ELEMENTSCONF).mk $(ELEMENTSCONF).cc elements.conf libclick.a
131284 +clean-lib:
131285 +       rm -f $(LIBOBJS) libclick.a
131286 +distclean: clean
131287 +       -rm -f Makefile
131288 +
131289 +.PHONY: all clean clean-lib distclean elemlist \
131290 +       install install-lib uninstall