diff --git a/doc/packages-list.txt b/doc/packages-list.txt index 5e4e43c22..4b13b1e66 100644 --- a/doc/packages-list.txt +++ b/doc/packages-list.txt @@ -74,7 +74,7 @@ * iana-etc-2.00 * ibod * inetutils-1.4.2 -* ipac-ng-1.28 +* ipac-ng-1.31 * ipaddr-1.2 * iproute2-2.4.7-now-ss010824 * iptables-1.3.5 diff --git a/doc/updated-sources.txt b/doc/updated-sources.txt deleted file mode 100644 index 65042b770..000000000 --- a/doc/updated-sources.txt +++ /dev/null @@ -1,124 +0,0 @@ -Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/general-functions.pl und ipfire-1.4.11/config/cfgroot/general-functions.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/header-menu.pl und ipfire-1.4.11/config/cfgroot/header-menu.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/cfgroot/proxy-acl und ipfire-1.4.11/config/cfgroot/proxy-acl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/etc/inittab und ipfire-1.4.11/config/etc/inittab sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.alpha und ipfire-1.4.11/config/kernel/kernel.config.alpha sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386 und ipfire-1.4.11/config/kernel/kernel.config.i386 sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.installer und ipfire-1.4.11/config/kernel/kernel.config.i386.installer sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/kernel/kernel.config.i386.smp und ipfire-1.4.11/config/kernel/kernel.config.i386.smp sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/config/ssl/openssl.cnf und ipfire-1.4.11/config/ssl/openssl.cnf sind verschieden. -Nur in ipfire-1.4.11/doc: make.sh-usage. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/aliases.cgi und ipfire-1.4.11/html/cgi-bin/aliases.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/backup.cgi und ipfire-1.4.11/html/cgi-bin/backup.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/credits.cgi und ipfire-1.4.11/html/cgi-bin/credits.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/ddns.cgi und ipfire-1.4.11/html/cgi-bin/ddns.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/dhcp.cgi und ipfire-1.4.11/html/cgi-bin/dhcp.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/logs.cgi/log.dat und ipfire-1.4.11/html/cgi-bin/logs.cgi/log.dat sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/pppsetup.cgi und ipfire-1.4.11/html/cgi-bin/pppsetup.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/proxy.cgi und ipfire-1.4.11/html/cgi-bin/proxy.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/shutdown.cgi und ipfire-1.4.11/html/cgi-bin/shutdown.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/updates.cgi und ipfire-1.4.11/html/cgi-bin/updates.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/home/httpd/cgi-bin/vpnmain.cgi und ipfire-1.4.11/html/cgi-bin/vpnmain.cgi sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/bz/install/lang_bz.c und ipfire-1.4.11/langs/bz/install/lang_bz.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/cs/install/lang_cs.c und ipfire-1.4.11/langs/cs/install/lang_cs.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/da/cgi-bin/da.pl und ipfire-1.4.11/langs/da/cgi-bin/da.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/da/install/lang_da.c und ipfire-1.4.11/langs/da/install/lang_da.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/de/cgi-bin/de.pl und ipfire-1.4.11/langs/de/cgi-bin/de.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/de/install/lang_de.c und ipfire-1.4.11/langs/de/install/lang_de.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/el/cgi-bin/el.pl und ipfire-1.4.11/langs/el/cgi-bin/el.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/el/install/lang_el.c und ipfire-1.4.11/langs/el/install/lang_el.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/en/cgi-bin/en.pl und ipfire-1.4.11/langs/en/cgi-bin/en.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/en/install/lang_en.c und ipfire-1.4.11/langs/en/install/lang_en.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/es/cgi-bin/es.pl und ipfire-1.4.11/langs/es/cgi-bin/es.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/es/install/lang_es.c und ipfire-1.4.11/langs/es/install/lang_es.c sind verschieden. -Nur in ipfire-1.4.11/langs: fa. -Dateien IPCOP_v1_4_10_FINAL/langs/fi/cgi-bin/fi.pl und ipfire-1.4.11/langs/fi/cgi-bin/fi.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/fi/install/lang_fi.c und ipfire-1.4.11/langs/fi/install/lang_fi.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/fr/cgi-bin/fr.pl und ipfire-1.4.11/langs/fr/cgi-bin/fr.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/fr/install/lang_fr.c und ipfire-1.4.11/langs/fr/install/lang_fr.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/hu/install/lang_hu.c und ipfire-1.4.11/langs/hu/install/lang_hu.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/it/install/lang_it.c und ipfire-1.4.11/langs/it/install/lang_it.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/la/install/lang_la.c und ipfire-1.4.11/langs/la/install/lang_la.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/list und ipfire-1.4.11/langs/list sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/nl/cgi-bin/nl.pl und ipfire-1.4.11/langs/nl/cgi-bin/nl.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/nl/install/lang_nl.c und ipfire-1.4.11/langs/nl/install/lang_nl.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/no/cgi-bin/no.pl und ipfire-1.4.11/langs/no/cgi-bin/no.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/no/install/lang_no.c und ipfire-1.4.11/langs/no/install/lang_no.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/pl/install/lang_pl.c und ipfire-1.4.11/langs/pl/install/lang_pl.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/pt/install/lang_pt.c und ipfire-1.4.11/langs/pt/install/lang_pt.c sind verschieden. -Nur in ipfire-1.4.11/langs: sk. -Dateien IPCOP_v1_4_10_FINAL/langs/so/install/lang_so.c und ipfire-1.4.11/langs/so/install/lang_so.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/sv/cgi-bin/sv.pl und ipfire-1.4.11/langs/sv/cgi-bin/sv.pl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/sv/install/lang_sv.c und ipfire-1.4.11/langs/sv/install/lang_sv.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/tr/install/lang_tr.c und ipfire-1.4.11/langs/tr/install/lang_tr.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/langs/vi/install/lang_vi.c und ipfire-1.4.11/langs/vi/install/lang_vi.c sind verschieden. -Nur in ipfire-1.4.11/lfs: as86. -Dateien IPCOP_v1_4_10_FINAL/lfs/boot.img und ipfire-1.4.11/lfs/boot.img sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/cdrom und ipfire-1.4.11/lfs/cdrom sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/Config und ipfire-1.4.11/lfs/Config sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/configroot und ipfire-1.4.11/lfs/configroot sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/coreutils und ipfire-1.4.11/lfs/coreutils sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/driver.img und ipfire-1.4.11/lfs/driver.img sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/eciadsl und ipfire-1.4.11/lfs/eciadsl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/gcc und ipfire-1.4.11/lfs/gcc sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/hdparm und ipfire-1.4.11/lfs/hdparm sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/iana-etc und ipfire-1.4.11/lfs/iana-etc sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/initrd und ipfire-1.4.11/lfs/initrd sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/installer und ipfire-1.4.11/lfs/installer sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/ipac-ng und ipfire-1.4.11/lfs/ipac-ng sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/iptables und ipfire-1.4.11/lfs/iptables sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/linux und ipfire-1.4.11/lfs/linux sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/man-pages und ipfire-1.4.11/lfs/man-pages sind verschieden. -Nur in ipfire-1.4.11/lfs: mbr. -Nur in ipfire-1.4.11/lfs: ndiswrapper. -Dateien IPCOP_v1_4_10_FINAL/lfs/openssl und ipfire-1.4.11/lfs/openssl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/openswan und ipfire-1.4.11/lfs/openswan sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/rrdtool und ipfire-1.4.11/lfs/rrdtool sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/scsi.img und ipfire-1.4.11/lfs/scsi.img sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/setup und ipfire-1.4.11/lfs/setup sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/stage2 und ipfire-1.4.11/lfs/stage2 sind verschieden. -Nur in ipfire-1.4.11/lfs: strip. -Dateien IPCOP_v1_4_10_FINAL/lfs/tar und ipfire-1.4.11/lfs/tar sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/tcl und ipfire-1.4.11/lfs/tcl sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/util-linux und ipfire-1.4.11/lfs/util-linux sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/vlan und ipfire-1.4.11/lfs/vlan sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/lfs/wireless und ipfire-1.4.11/lfs/wireless sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/make.sh und ipfire-1.4.11/make.sh sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/config.c und ipfire-1.4.11/src/install+setup/install/config.c sind verschieden. -Nur in ipfire-1.4.11/src/install+setup/install: install2.c. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/install.h und ipfire-1.4.11/src/install+setup/install/install.h sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/main.c und ipfire-1.4.11/src/install+setup/install/main.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/Makefile und ipfire-1.4.11/src/install+setup/install/Makefile sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/nic.c und ipfire-1.4.11/src/install+setup/install/nic.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/pcmcia.c und ipfire-1.4.11/src/install+setup/install/pcmcia.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/scsi.c und ipfire-1.4.11/src/install+setup/install/scsi.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/install/usb.c und ipfire-1.4.11/src/install+setup/install/usb.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/main.c und ipfire-1.4.11/src/install+setup/libsmooth/main.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/libsmooth/Makefile und ipfire-1.4.11/src/install+setup/libsmooth/Makefile sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/main.c und ipfire-1.4.11/src/install+setup/setup/main.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/install+setup/setup/networking.c und ipfire-1.4.11/src/install+setup/setup/networking.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbackup.c und ipfire-1.4.11/src/misc-progs/ipcopbackup.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcopbkcfg.c und ipfire-1.4.11/src/misc-progs/ipcopbkcfg.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/ipcoprscfg.c und ipfire-1.4.11/src/misc-progs/ipcoprscfg.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/Makefile und ipfire-1.4.11/src/misc-progs/Makefile sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setfilters.c und ipfire-1.4.11/src/misc-progs/setfilters.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.c und ipfire-1.4.11/src/misc-progs/setuid.c sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/misc-progs/setuid.h und ipfire-1.4.11/src/misc-progs/setuid.h sind verschieden. -Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-fetchcounter.patch. -Nur in ipfire-1.4.11/src/patches: ipac-ng-1.31-iptables-1.3.1.patch. -Nur in ipfire-1.4.11/src/patches: iptables-1.3.4-old-string.patch. -Nur in ipfire-1.4.11/src/patches: linux-2.4-seg-4.patch. -Dateien IPCOP_v1_4_10_FINAL/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch und ipfire-1.4.11/src/patches/patch-o-matic-ng-20040621_nf-log_2.4.29.patch sind verschieden. -Nur in IPCOP_v1_4_10_FINAL/src/patches: pomng.fix. -Nur in ipfire-1.4.11/src/patches: pom-ng_proc-net-conntrack-permissions.patch. -Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.firewall und ipfire-1.4.11/src/rc.d/rc.firewall sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.red und ipfire-1.4.11/src/rc.d/rc.red sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.sysinit und ipfire-1.4.11/src/rc.d/rc.sysinit sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/etc/rc.d/rc.updatered und ipfire-1.4.11/src/rc.d/rc.updatered sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.alpha und ipfire-1.4.11/src/ROOTFILES.alpha sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/ROOTFILES.i386 und ipfire-1.4.11/src/ROOTFILES.i386 sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/scripts/httpscert und ipfire-1.4.11/src/scripts/httpscert sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/scripts/makegraphs und ipfire-1.4.11/src/scripts/makegraphs sind verschieden. -Dateien IPCOP_v1_4_10_FINAL/src/scripts/setddns.pl und ipfire-1.4.11/src/scripts/setddns.pl sind verschieden. -Nur in ipfire-1.4.11/src/scripts: upgrade. -Nur in ipfire-1.4.11/updates: 1.4.11. diff --git a/html/cgi-bin/connections.cgi b/html/cgi-bin/connections.cgi index 36bbaf0de..838425350 100644 --- a/html/cgi-bin/connections.cgi +++ b/html/cgi-bin/connections.cgi @@ -4,7 +4,9 @@ # # (c) 2003 Dave Roberts - colour coded netfilter/iptables rewrite for 1.3 # -# $Id: connections.cgi,v 1.6.2.11 2005/02/24 07:44:35 gespinasse Exp $ +# (c) 2006 Franck - add sorting+filtering capability +# +# $Id: connections.cgi,v 1.6.2.12 2006/02/27 19:48:46 franck78 Exp $ # # Setup GREEN, ORANGE, IPCOP, VPN CIDR networks, masklengths and colours only once @@ -39,7 +41,8 @@ my @active = ; close (ACTIVE); my @vpn = ('none'); -open (ACTIVE, "/proc/net/ipsec_eroute") and @vpn = ; close (ACTIVE); +open (ACTIVE, "/proc/net/ipsec_eroute") and @vpn = ; +close (ACTIVE); my $aliasfile = "${General::swroot}/ethernet/aliases"; open(ALIASES, $aliasfile) or die 'Unable to open aliases file.'; @@ -140,42 +143,37 @@ if (open(IP, "${General::swroot}/red/local-ipaddress")) { push(@colour, ${Header::colourfw} ); } -&Header::showhttpheaders(); -&Header::openpage($Lang::tr{'connections'}, 1, ''); -&Header::openbigbox('100%', 'left'); -&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'}); -print < -$Lang::tr{'legend'} : - $Lang::tr{'lan'} - $Lang::tr{'internet'} - $Lang::tr{'dmz'} - $Lang::tr{'wireless'} - IPCop - $Lang::tr{'vpn'} - - -
- - - - - - - - - - - -END -; +#Establish simple filtering&sorting boxes on top of table -foreach my $line (@active) -{ +our %cgiparams; +&Header::getcgihash(\%cgiparams); + +my @list_proto = ($Lang::tr{'all'}, 'icmp', 'udp', 'tcp'); +my @list_state = ($Lang::tr{'all'}, 'SYN_SENT', 'SYN_RECV', 'ESTABLISHED', 'FIN_WAIT', + 'CLOSE_WAIT', 'LAST_ACK', 'TIME_WAIT', 'CLOSE', 'LISTEN'); +my @list_mark = ($Lang::tr{'all'}, '[ASSURED]', '[UNREPLIED]'); +my @list_sort = ('orgsip','protocol', 'expires', 'status', 'orgdip', 'orgsp', + 'orgdp', 'exsip', 'exdip', 'exsp', 'exdp'); + +# init or silently correct unknown value... +if ( ! grep ( /^$cgiparams{'SEE_PROTO'}$/ , @list_proto )) { $cgiparams{'SEE_PROTO'} = $list_proto[0] }; +if ( ! grep ( /^$cgiparams{'SEE_STATE'}$/ , @list_state )) { $cgiparams{'SEE_STATE'} = $list_state[0] }; +if ( ! grep ( /^$cgiparams{'SEE_MARK'}$/ , @list_mark )) { $cgiparams{'SEE_MARK'} = $list_mark[0] }; +if ( ! grep ( /^$cgiparams{'SEE_SORT'}$/ , @list_sort )) { $cgiparams{'SEE_SORT'} = $list_sort[0] }; +# *.*.*.* or a valid IP +if ( $cgiparams{'SEE_SRC'} !~ /^(\*\.\*\.\*\.\*\.|\d+\.\d+\.\d+\.\d+)$/) { $cgiparams{'SEE_SRC'} = '*.*.*.*' }; +if ( $cgiparams{'SEE_DEST'} !~ /^(\*\.\*\.\*\.\*\.|\d+\.\d+\.\d+\.\d+)$/) { $cgiparams{'SEE_DEST'} = '*.*.*.*' }; + + +our %entries = (); # will hold the lines analyzed correctly +my $unknownlines = ''; # should be empty all the time... +my $index = 0; # just a counter to make unique entryies in entries + +foreach my $line (@active) { my $protocol=''; my $expires=''; - my $connstatus=''; + my $status=''; my $orgsip=''; my $orgdip=''; my $orgsp=''; @@ -186,56 +184,93 @@ foreach my $line (@active) my $exdp=''; my $marked=''; my $use=''; - my $orgsipcolour=''; - my $orgdipcolour=''; - my $exsipcolour=''; - my $exdipcolour=''; chomp($line); my @temp = split(' ',$line); - print "\n"; + + if ($temp[0] eq 'icmp') { + $protocol = $temp[0]; + $status = $Lang::tr{'all'}; + $orgsip = substr $temp[3], 4; + $orgdip = substr $temp[4], 4; + $marked = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : ' '; + } + if ($temp[0] eq 'udp') { + $protocol = $temp[0]; + $status = $Lang::tr{'all'}; + $orgsip = substr $temp[3], 4; + $orgdip = substr $temp[4], 4; + $marked = $temp[7] eq '[UNREPLIED]' ? '[UNREPLIED]' : defined ($temp[12]) ? $temp[11] : ' '; + } + if ($temp[0] eq 'tcp') { + $protocol = $temp[0]; + $status = $temp[3]; + $orgsip = substr $temp[4], 4; + $orgdip = substr $temp[5], 4; + $marked = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : defined ($temp[13]) ? $temp[12] : ' '; + } + + # filter the line if we found a known proto + next if( !( + (($cgiparams{'SEE_PROTO'} eq $Lang::tr{'all'}) || ($protocol eq $cgiparams{'SEE_PROTO'} )) + && (($cgiparams{'SEE_STATE'} eq $Lang::tr{'all'}) || ($status eq $cgiparams{'SEE_STATE'} )) + && (($cgiparams{'SEE_MARK'} eq $Lang::tr{'all'}) || ($marked eq $cgiparams{'SEE_MARK'} )) + && (($cgiparams{'SEE_SRC'} eq "*.*.*.*") || ($orgsip eq $cgiparams{'SEE_SRC'} )) + && (($cgiparams{'SEE_DEST'} eq "*.*.*.*") || ($orgdip eq $cgiparams{'SEE_DEST'} )) + )); + + if ($temp[0] eq 'icmp') { + my $offset = 0; + $protocol = $temp[0] . " (" . $temp[1] . ")"; + $expires = $temp[2]; + $status = ' '; + if ($temp[8] eq '[UNREPLIED]' ) { + $offset = +1; + } + $orgsip = substr $temp[3], 4; + $orgdip = substr $temp[4], 4; + $orgsp = &General::GetIcmpDescription(substr( $temp[5], 5)) . "/" . substr( $temp[6], 5);; + $orgdp = 'id=' . substr( $temp[7], 3); + $exsip = substr $temp[8 + $offset], 4; + $exdip = substr $temp[9 + $offset], 4; + $exsp = &General::GetIcmpDescription(substr( $temp[10 + $offset], 5)). "/" . substr( $temp[11 + $offset], 5); + $exdp = 'id=' . substr( $temp[11 + $offset], 5); + $marked = $temp[8] eq '[UNREPLIED]' ? '[UNREPLIED]' : ' '; + $use = substr( $temp[13 + $offset], 4 ); + } if ($temp[0] eq 'udp') { my $offset = 0; $marked = ''; $protocol = $temp[0] . " (" . $temp[1] . ")"; $expires = $temp[2]; - $connstatus = ' '; + $status = ' '; $orgsip = substr $temp[3], 4; $orgdip = substr $temp[4], 4; $orgsp = substr $temp[5], 6; $orgdp = substr $temp[6], 6; if ($temp[7] eq '[UNREPLIED]') { - $marked = $temp[7]; - $offset = 1; - } - else { - $connstatus = ' '; - } - + $offset = 1; + $marked = $temp[7]; + $use = substr $temp[12], 4; + } else { + if ((substr $temp[11], 0, 3) eq 'use' ) { + $marked = ''; + $use = substr $temp[11], 4; + } else { + $marked = $temp[11]; + $use = substr $temp[12], 4; + } + } $exsip = substr $temp[7 + $offset], 4; $exdip = substr $temp[8 + $offset], 4; $exsp = substr $temp[9 + $offset], 6; $exdp = substr $temp[10 + $offset], 6; - if ($marked eq '[UNREPLIED]') { - $use = substr $temp[11 + $offset], 4; - } - else { - $marked = $temp[11 + $offset]; - $use = substr $marked, 0, 3; - if ($use eq 'use' ) { - $marked = ''; - $use = substr $temp[11 + $offset], 4; - } - else { - $use = substr $temp[12 + $offset], 4; - } - } } if ($temp[0] eq 'tcp') { my $offset = 0; $protocol = $temp[0] . " (" . $temp[1] . ")"; $expires = $temp[2]; - $connstatus = $temp[3]; + $status = $temp[3]; $orgsip = substr $temp[4], 4; $orgdip = substr $temp[5], 4; $orgsp = substr $temp[6], 6; @@ -243,25 +278,22 @@ foreach my $line (@active) if ($temp[8] eq '[UNREPLIED]') { $marked = $temp[8]; $offset = 1; - $use = substr $temp[13], 4; - } - else { + } else { $marked = $temp[12]; - $use = substr $temp[13], 4; } - $exsip = substr $temp[8 + $offset], 4; $exdip = substr $temp[9 + $offset], 4; $exsp = substr $temp[10 + $offset], 6; $exdp = substr $temp[11 + $offset], 6; + $use = substr $temp[13], 4; } if ($temp[0] eq 'unknown') { my $offset = 0; $protocol = "??? (" . $temp[1] . ")"; $protocol = "esp (" . $temp[1] . ")" if ($temp[1] == 50); - $protocol = " ah (" . $temp[1] . ")" if ($temp[1] == 51); + $protocol = "ah (" . $temp[1] . ")" if ($temp[1] == 51); $expires = $temp[2]; - $connstatus = ' '; + $status = ' '; $orgsip = substr $temp[3], 4; $orgdip = substr $temp[4], 4; $orgsp = ' '; @@ -288,24 +320,119 @@ foreach my $line (@active) $marked = $temp[17]; $use = $temp[18]; } - $orgsipcolour = &ipcolour($orgsip); - $orgdipcolour = &ipcolour($orgdip); - $exsipcolour = &ipcolour($exsip); - $exdipcolour = &ipcolour($exdip); + # Only from this point, lines have the same known format/field + # The floating fields [UNREPLIED] [ASSURED] etc are ok. + + # Store the line in a hash array for sorting + if ( $protocol ) { # line is decoded ? + my @record = ( 'index', $index++, + 'protocol', $protocol, + 'expires', $expires, + 'status', $status, + 'orgsip', $orgsip, + 'orgdip', $orgdip, + 'orgsp', $orgsp, + 'orgdp', $orgdp, + 'exsip', $exsip, + 'exdip', $exdip, + 'exsp', $exsp, + 'exdp', $exdp, + 'marked', $marked, + 'use', $use); + my $record = {}; # create a reference to empty hash + %{$record} = @record; # populate that hash with @record + $entries{$record->{index}} = $record; # add this to a hash of hashes + } else { # it was not a known line + $unknownlines .= ""; + $unknownlines .= ""; + } +} + +# Build listbox objects +my $menu_proto = &make_select ('SEE_PROTO', $cgiparams{'SEE_PROTO'}, @list_proto); +my $menu_state = &make_select ('SEE_STATE', $cgiparams{'SEE_STATE'}, @list_state); +my $menu_src = &make_select ('SEE_SRC', $cgiparams{'SEE_SRC'}, &get_known_ips('orgsip')); +my $menu_dest = &make_select ('SEE_DEST', $cgiparams{'SEE_DEST'}, &get_known_ips('orgdip')); +my $menu_mark = &make_select ('SEE_MARK', $cgiparams{'SEE_MARK'}, @list_mark); +my $menu_sort = &make_select ('SEE_SORT', $cgiparams{'SEE_SORT'}, @list_sort); + +&Header::showhttpheaders(); +&Header::openpage($Lang::tr{'connections'}, 1, ''); +&Header::openbigbox('100%', 'left'); +&Header::openbox('100%', 'left', $Lang::tr{'connection tracking'}); + +print < + + + + + + + + +
$Lang::tr{'protocol'}$Lang::tr{'expires'}
($Lang::tr{'seconds'})
$Lang::tr{'connection'}
$Lang::tr{'status'}
$Lang::tr{'original'}
$Lang::tr{'source ip and port'}
$Lang::tr{'original'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'source ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'marked'}$Lang::tr{'use'}
unknown:$line>
$Lang::tr{'legend'} : $Lang::tr{'lan'}$Lang::tr{'internet'}$Lang::tr{'dmz'}$Lang::tr{'wireless'}IPCop$Lang::tr{'vpn'}
+
+ + + + + + + + + + + + + + + + + + + + + + +END +; + +foreach my $entry (sort sort_entries keys %entries) { + + print ""; + my $orgsipcolour = &ipcolour( $entries{$entry}->{orgsip} ); + my $orgdipcolour = &ipcolour( $entries{$entry}->{orgdip} ); + my $exsipcolour = &ipcolour( $entries{$entry}->{exsip} ); + my $exdipcolour = &ipcolour( $entries{$entry}->{exdip} ); print <$protocol - - - - - - - + + + + + + + + + END - ; +; } -print "
$Lang::tr{'protocol'}$Lang::tr{'expires'}
($Lang::tr{'seconds'})
$Lang::tr{'connection'}
$Lang::tr{'status'}
$Lang::tr{'original'}
$Lang::tr{'source ip and port'}
$Lang::tr{'original'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'source ip and port'}
$Lang::tr{'expected'}
$Lang::tr{'dest ip and port'}
$Lang::tr{'marked'}$Lang::tr{'use'}
$menu_proto$menu_state$menu_src$menu_dest$Lang::tr{'sort ascending'}:$menu_sort $menu_mark
$expires$connstatus$orgsip:$orgsp$orgdip:$orgdp$exsip:$exsp$exdip:$exdp$marked$use$entries{$entry}->{protocol}$entries{$entry}->{expires}$entries{$entry}->{status} + + $entries{$entry}->{orgsip} + :$entries{$entry}->{orgsp} + + $entries{$entry}->{orgdip} + :$entries{$entry}->{orgdp} + + $entries{$entry}->{exsip} + :$entries{$entry}->{exsp} + + $entries{$entry}->{exdip} + :$entries{$entry}->{exdp}$entries{$entry}->{marked}$entries{$entry}->{use}
\n"; + +print "$unknownlines"; &Header::closebox(); &Header::closebigbox(); @@ -316,10 +443,9 @@ sub ipcolour($) { my $line; my $colour = ${Header::colourred}; my ($ip) = $_[0]; - my $found = 0; - foreach $line (@network) - { - if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) { + my $found = 0; + foreach $line (@network) { + if (!$found && ipv4_in_network( $network[$id] , $masklen[$id], $ip) ) { $found = 1; $colour = $colour[$id]; } @@ -327,3 +453,55 @@ sub ipcolour($) { } return $colour } + +# Create a string containing a complete SELECT html object +# param1: name +# param2: current value selected +# param3: field list +sub make_select ($,$,$) { + my $select_name = shift; + my $selected = shift; + my $select = ""; + return $select; +} + +# Build a list of IP obtained from the %entries hash +# param1: IP field name +sub get_known_ips ($) { + my $field = shift; + my $qs = $cgiparams{'SEE_SORT'}; # switch the sort order + $cgiparams{'SEE_SORT'} = $field; + + my @liste=('*.*.*.*'); + foreach my $entry ( sort sort_entries keys %entries) { + push (@liste, $entries{$entry}->{$field}) if (! grep (/^$entries{$entry}->{$field}$/,@liste) ); + } + + $cgiparams{'SEE_SORT'} = $qs; #restore sort order + return @liste; +} + +# Used to sort the table containing the lines displayed. +sub sort_entries { #Reverse is not implemented + my $qs=$cgiparams{'SEE_SORT'}; + if ($qs =~ /orgsip|orgdip|exsip|exdip/) { + my @a = split(/\./,$entries{$a}->{$qs}); + my @b = split(/\./,$entries{$b}->{$qs}); + ($a[0]<=>$b[0]) || + ($a[1]<=>$b[1]) || + ($a[2]<=>$b[2]) || + ($a[3]<=>$b[3]); + } elsif ($qs =~ /expire|orgsp|orgdp|exsp|exdp/) { + $entries{$a}->{$qs} <=> $entries{$b}->{$qs}; + } else { + $entries{$a}->{$qs} cmp $entries{$b}->{$qs}; + } +} + +1; diff --git a/html/html/images/background.gif b/html/html/images/background.gif new file mode 100644 index 000000000..a511572eb Binary files /dev/null and b/html/html/images/background.gif differ diff --git a/html/html/images/boxbottom1.png b/html/html/images/boxbottom1.png index ac30c9657..58d269c30 100644 Binary files a/html/html/images/boxbottom1.png and b/html/html/images/boxbottom1.png differ diff --git a/html/html/images/boxbottom2.png b/html/html/images/boxbottom2.png index f8bff5470..139baa594 100644 Binary files a/html/html/images/boxbottom2.png and b/html/html/images/boxbottom2.png differ diff --git a/html/html/images/boxbottom3.png b/html/html/images/boxbottom3.png index 44bebe16f..c03dd92be 100644 Binary files a/html/html/images/boxbottom3.png and b/html/html/images/boxbottom3.png differ diff --git a/html/html/images/boxleft.png b/html/html/images/boxleft.png index 6ed550ae0..c238f7069 100644 Binary files a/html/html/images/boxleft.png and b/html/html/images/boxleft.png differ diff --git a/html/html/images/boxright.png b/html/html/images/boxright.png index b2bb53473..73da0250b 100644 Binary files a/html/html/images/boxright.png and b/html/html/images/boxright.png differ diff --git a/html/html/images/boxtop1.png b/html/html/images/boxtop1.png index 1e41b2424..08ab7a3ac 100644 Binary files a/html/html/images/boxtop1.png and b/html/html/images/boxtop1.png differ diff --git a/html/html/images/boxtop2.png b/html/html/images/boxtop2.png index 01ebb03de..a1f3f8e86 100644 Binary files a/html/html/images/boxtop2.png and b/html/html/images/boxtop2.png differ diff --git a/html/html/images/boxtop3.png b/html/html/images/boxtop3.png index 77374ea6e..b279db296 100644 Binary files a/html/html/images/boxtop3.png and b/html/html/images/boxtop3.png differ diff --git a/html/html/images/forward.gif b/html/html/images/forward.gif index d8e09bff0..33d18b571 100644 Binary files a/html/html/images/forward.gif and b/html/html/images/forward.gif differ diff --git a/html/html/images/header.png b/html/html/images/header.png index bbf8902c9..64aed7e8d 100644 Binary files a/html/html/images/header.png and b/html/html/images/header.png differ diff --git a/html/html/images/header_icons.gif b/html/html/images/header_icons.gif new file mode 100644 index 000000000..a9485385a Binary files /dev/null and b/html/html/images/header_icons.gif differ diff --git a/html/html/images/heading-back.gif b/html/html/images/heading-back.gif new file mode 100644 index 000000000..69c4d0e51 Binary files /dev/null and b/html/html/images/heading-back.gif differ diff --git a/html/html/images/help.gif b/html/html/images/help.gif new file mode 100644 index 000000000..83a464554 Binary files /dev/null and b/html/html/images/help.gif differ diff --git a/html/html/images/logo_ipfire.gif b/html/html/images/logo_ipfire.gif new file mode 100644 index 000000000..86fdba358 Binary files /dev/null and b/html/html/images/logo_ipfire.gif differ diff --git a/html/html/images/logo_ipfire2.gif b/html/html/images/logo_ipfire2.gif new file mode 100644 index 000000000..8ad1664c2 Binary files /dev/null and b/html/html/images/logo_ipfire2.gif differ diff --git a/html/html/images/logout.gif b/html/html/images/logout.gif new file mode 100644 index 000000000..8d7b78e44 Binary files /dev/null and b/html/html/images/logout.gif differ diff --git a/html/html/images/menu_item.gif b/html/html/images/menu_item.gif new file mode 100644 index 000000000..529f46220 Binary files /dev/null and b/html/html/images/menu_item.gif differ diff --git a/html/html/images/menu_left_bottom.gif b/html/html/images/menu_left_bottom.gif new file mode 100644 index 000000000..3c446b7d9 Binary files /dev/null and b/html/html/images/menu_left_bottom.gif differ diff --git a/html/html/images/menu_left_selected.gif b/html/html/images/menu_left_selected.gif new file mode 100644 index 000000000..8ef83342b Binary files /dev/null and b/html/html/images/menu_left_selected.gif differ diff --git a/html/html/images/menu_left_top.gif b/html/html/images/menu_left_top.gif new file mode 100644 index 000000000..cc33f1a6e Binary files /dev/null and b/html/html/images/menu_left_top.gif differ diff --git a/html/html/images/menu_top_left.gif b/html/html/images/menu_top_left.gif new file mode 100644 index 000000000..cd8c23b7d Binary files /dev/null and b/html/html/images/menu_top_left.gif differ diff --git a/html/html/images/menu_top_left_selected.gif b/html/html/images/menu_top_left_selected.gif new file mode 100644 index 000000000..3d3ff42a3 Binary files /dev/null and b/html/html/images/menu_top_left_selected.gif differ diff --git a/html/html/images/menu_top_right.gif b/html/html/images/menu_top_right.gif new file mode 100644 index 000000000..49a97bdeb Binary files /dev/null and b/html/html/images/menu_top_right.gif differ diff --git a/html/html/images/menu_top_right_selected.gif b/html/html/images/menu_top_right_selected.gif new file mode 100644 index 000000000..1c9320679 Binary files /dev/null and b/html/html/images/menu_top_right_selected.gif differ diff --git a/html/html/images/sflogo.png b/html/html/images/sflogo.png new file mode 100644 index 000000000..503b97490 Binary files /dev/null and b/html/html/images/sflogo.png differ diff --git a/html/html/images/stock_down-16.png b/html/html/images/stock_down-16.png new file mode 100644 index 000000000..1b278a5cb Binary files /dev/null and b/html/html/images/stock_down-16.png differ diff --git a/html/html/images/stock_ok.png b/html/html/images/stock_ok.png new file mode 100644 index 000000000..d92d88d8a Binary files /dev/null and b/html/html/images/stock_ok.png differ diff --git a/html/html/images/stock_stop.png b/html/html/images/stock_stop.png new file mode 100644 index 000000000..89c212493 Binary files /dev/null and b/html/html/images/stock_stop.png differ diff --git a/html/html/images/stock_up-16.png b/html/html/images/stock_up-16.png new file mode 100644 index 000000000..bef754282 Binary files /dev/null and b/html/html/images/stock_up-16.png differ diff --git a/html/html/images/table-header.gif b/html/html/images/table-header.gif new file mode 100644 index 000000000..ac9bde594 Binary files /dev/null and b/html/html/images/table-header.gif differ diff --git a/lfs/apache b/lfs/apache index a4a40ba16..346c6b2f8 100644 --- a/lfs/apache +++ b/lfs/apache @@ -120,7 +120,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) # Copy all html/cgi-bin files cp -aR $(DIR_SRC)/html/* /home/httpd - -find /home/httpd -name CVS -exec rm -rf {} \; + -find /home/httpd -name .svn -exec rm -rf {} \; cp $(DIR_DL)/sflogo.png /home/httpd/html/images/ # Change CONFIG_ROOT in cgi-scripts diff --git a/lfs/berkeley-DB b/lfs/berkeley-DB index 376423f19..431184f34 100644 --- a/lfs/berkeley-DB +++ b/lfs/berkeley-DB @@ -78,7 +78,7 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) - cd $(DIR_APP)/build_unix && ../dist/configure --prefix=/usr/local/db-4.4 + cd $(DIR_APP)/build_unix && ../dist/configure --prefix=/usr cd $(DIR_APP)/build_unix && make cd $(DIR_APP)/build_unix && make install @rm -rf $(DIR_APP) diff --git a/lfs/configroot b/lfs/configroot index f6351f13c..9fa12d3a1 100644 --- a/lfs/configroot +++ b/lfs/configroot @@ -58,7 +58,7 @@ $(TARGET) : # Create all directories for i in addon-lang alcatelusb auth backup backup/sets ca certs cnx_pci crls ddns dhcp dhcpc dmzholes \ eagle-usb eciadsl ethernet isdn key langs logging main modem optionsfw patches portfw \ - ppp private proxy red remote shaping snort time vpn wireless xtaccess ; do \ + ppp private proxy red remote shaping snort time uplinks vpn wireless xtaccess ; do \ mkdir -p $(CONFIG_ROOT)/$$i; \ done diff --git a/lfs/ipac-ng b/lfs/ipac-ng index abb037dbd..6754995cf 100644 --- a/lfs/ipac-ng +++ b/lfs/ipac-ng @@ -22,7 +22,7 @@ # ??-12-2003 Mark Wormgoor < mark@wormgoor.com> # # - Modified Makefile for IPCop build # # # -# $Id: ipac-ng,v 1.5.2.5 2005/02/05 15:38:15 gespinasse Exp $ +# $Id: ipac-ng,v 1.5.2.6 2006/01/14 16:41:15 gespinasse Exp $ # # ############################################################################### @@ -32,12 +32,12 @@ include Config -VER = 1.28 +VER = 1.31 THISAPP = ipac-ng-$(VER) DL_FILE = $(THISAPP).tar.gz DL_FROM = $(URL_SFNET)/ipac-ng -DIR_APP = $(DIR_SRC)/ipac-ng-1.28 +DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP) ############################################################################### @@ -48,7 +48,7 @@ objects = $(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_MD5 = fc3c701ec20baa36a2865860f97fd03b +$(DL_FILE)_MD5 = 0c010550adfc140bb3990eb02f1604d0 install : $(TARGET) @@ -78,6 +78,8 @@ $(subst %,%_MD5,$(objects)) : $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-iptables-1.3.1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/$(THISAPP)-fetchcounter.patch cd $(DIR_APP) && sed -i -e 's%/var/lib/ipac%/var/log/ip-acct%g' configure cd $(DIR_APP) && chmod 755 configure cd $(DIR_APP) && ./configure --prefix=/usr --disable-nls --enable-default-storage=gdbm diff --git a/make.sh b/make.sh index d825ef6cc..c72ff8c03 100644 --- a/make.sh +++ b/make.sh @@ -693,7 +693,7 @@ buildpackages() { cd $BASEDIR fi - # Create update for this version +# Create update for this version # echo "`date -u '+%b %e %T'`: Building update $VERSION tgz" | tee -a $LOGFILE # tar -cz -C $BASEDIR/build --files-from=$BASEDIR/updates/$VERSION/ROOTFILES.$MACHINE-$VERSION -f $BASEDIR/updates/$VERSION/patch.tar.gz --exclude='#*'; # chmod 755 $BASEDIR/updates/$VERSION/setup diff --git a/src/ROOTFILES.i386 b/src/ROOTFILES.i386 index 9e25ead26..4764565b5 100644 --- a/src/ROOTFILES.i386 +++ b/src/ROOTFILES.i386 @@ -24626,6 +24626,5325 @@ usr/bin/stund ## XAMPP ## opt/lampp +#opt/lampp/ +#opt/lampp/lib/ +#opt/lampp/lib/libgdbm.a +#opt/lampp/lib/libform.a +#opt/lampp/lib/libfreetype.la +#opt/lampp/lib/libintl.a +#opt/lampp/lib/libsqlite.a +#opt/lampp/lib/libapr-0.la +#opt/lampp/lib/libapr-1.la +#opt/lampp/lib/libmenu.a +#opt/lampp/lib/libsybdb.la +#opt/lampp/lib/libc-client.a +opt/lampp/lib/mysql/ +opt/lampp/lib/mysql/libheap.a +opt/lampp/lib/mysql/libmysqlclient_r.a +opt/lampp/lib/mysql/libmysqlclient.a +opt/lampp/lib/mysql/libmysys.a +opt/lampp/lib/mysql/libmysqlclient.la +opt/lampp/lib/mysql/libmyisam.a +opt/lampp/lib/mysql/libmystrings.a +opt/lampp/lib/mysql/libmysqlclient_r.la +opt/lampp/lib/mysql/libmyisammrg.a +opt/lampp/lib/mysql/libvio.a +#opt/lampp/lib/mysql/libdbug.a +#opt/lampp/lib/libexpat.a +#opt/lampp/lib/libexslt.a +#opt/lampp/lib/libapreq2.a +#opt/lampp/lib/libgdbm.la +#opt/lampp/lib/libtds.la +#opt/lampp/lib/libsybdb.a +#opt/lampp/lib/libzzip.la +#opt/lampp/lib/libxml2.a +#opt/lampp/lib/libct.a +#opt/lampp/lib/libgd.a +#opt/lampp/lib/libxslt.a +#opt/lampp/lib/libzzip.a +#opt/lampp/lib/libaprutil-0.la +#opt/lampp/lib/libaprutil-1.la +#opt/lampp/lib/libldap_r.la +#opt/lampp/lib/libpanel.a +#opt/lampp/lib/libapr-0.a +#opt/lampp/lib/libapr-1.a +#opt/lampp/lib/libgettextlib.la +#opt/lampp/lib/libzzipwrap.a +#opt/lampp/lib/libgettextsrc.la +#opt/lampp/lib/libz.a +#opt/lampp/lib/libintl.la +#opt/lampp/lib/libpng12.a +#opt/lampp/lib/libsablot.a +#opt/lampp/lib/libmenu_g.a +#opt/lampp/lib/libtdssrv.la +#opt/lampp/lib/libpanel_g.a +#opt/lampp/lib/libexslt.la +#opt/lampp/lib/libcrypto.a +#opt/lampp/lib/libapreq2.la +#opt/lampp/lib/libncurses++.a +#opt/lampp/lib/libaprutil-0.a +#opt/lampp/lib/libaprutil-1.a +#opt/lampp/lib/libxml2.la +#opt/lampp/lib/libncurses_g.a +#opt/lampp/lib/libsablot.la +#opt/lampp/lib/libapr.a +#opt/lampp/lib/libbz2.a +#opt/lampp/lib/libct.la +#opt/lampp/lib/libcurl.la +#opt/lampp/lib/libpng.a +#opt/lampp/lib/libtds.a +#opt/lampp/lib/libssl.a +#opt/lampp/lib/libxslt.la +#opt/lampp/lib/libsqlite.la +#opt/lampp/lib/liblber.la +#opt/lampp/lib/libtdssrv.a +#opt/lampp/lib/libldap.la +#opt/lampp/lib/libncurses.a +#opt/lampp/lib/libzzipwrap.la +#opt/lampp/lib/libfreetype.a +#opt/lampp/lib/libmhash.la +#opt/lampp/lib/libaprutil.a +#opt/lampp/lib/libmcrypt.la +#opt/lampp/lib/libcurl.a +#opt/lampp/lib/libform_g.a +#opt/lampp/man/ +#opt/lampp/man/man1/ +#opt/lampp/man/man1/ldapadd.1 +#opt/lampp/man/man1/ca.1 +#opt/lampp/man/man1/ec.1 +#opt/lampp/man/man1/dbish.1 +#opt/lampp/man/man1/ud.1 +#opt/lampp/man/man1/safe_mysqld.1 +#opt/lampp/man/man1/perl570delta.1 +#opt/lampp/man/man1/rdjpgcom.1 +#opt/lampp/man/man1/mysql_fix_privilege_tables.1 +#opt/lampp/man/man1/bzcmp.1 +#opt/lampp/man/man1/perlartistic.1 +#opt/lampp/man/man1/perllocale.1 +#opt/lampp/man/man1/bzegrep.1 +#opt/lampp/man/man1/bzip2.1 +#opt/lampp/man/man1/htdigest.1 +#opt/lampp/man/man1/mysqladmin.1 +#opt/lampp/man/man1/HEAD.1 +#opt/lampp/man/man1/ftptop.1 +#opt/lampp/man/man1/perlmodstyle.1 +#opt/lampp/man/man1/ftpwho.1 +#opt/lampp/man/man1/perl561delta.1 +#opt/lampp/man/man1/perlembed.1 +#opt/lampp/man/man1/xsltproc.1 +#opt/lampp/man/man1/perlmacos.1 +#opt/lampp/man/man1/perlnewmod.1 +#opt/lampp/man/man1/crl2pkcs7.1 +#opt/lampp/man/man1/ftpcount.1 +#opt/lampp/man/man1/msgmerge.1 +#opt/lampp/man/man1/ldapmodify.1 +#opt/lampp/man/man1/gettextize.1 +#opt/lampp/man/man1/ldapmodrdn.1 +#opt/lampp/man/man1/GET.1 +#opt/lampp/man/man1/curl-config.1 +#opt/lampp/man/man1/mysqld_multi.1 +#opt/lampp/man/man1/perlthrtut.1 +#opt/lampp/man/man1/a2p.1 +#opt/lampp/man/man1/djpeg.1 +#opt/lampp/man/man1/crl.1 +#opt/lampp/man/man1/dsa.1 +#opt/lampp/man/man1/enc.1 +#opt/lampp/man/man1/tiffmedian.1 +#opt/lampp/man/man1/perldbmfilter.1 +#opt/lampp/man/man1/tiff2rgba.1 +#opt/lampp/man/man1/md2.1 +#opt/lampp/man/man1/md4.1 +#opt/lampp/man/man1/md5.1 +#opt/lampp/man/man1/captoinfo.1.gz +#opt/lampp/man/man1/s2p.1 +#opt/lampp/man/man1/php.1 +#opt/lampp/man/man1/req.1 +#opt/lampp/man/man1/sha.1 +#opt/lampp/man/man1/rsa.1 +#opt/lampp/man/man1/ldappasswd.1 +#opt/lampp/man/man1/perlothrtut.1 +#opt/lampp/man/man1/infotocap.1.gz +#opt/lampp/man/man1/perlpodspec.1 +#opt/lampp/man/man1/tiff2bw.1 +#opt/lampp/man/man1/POST.1 +#opt/lampp/man/man1/tiff2ps.1 +#opt/lampp/man/man1/perl586delta.1 +#opt/lampp/man/man1/bzfgrep.1 +#opt/lampp/man/man1/ripemd160.1 +#opt/lampp/man/man1/errstr.1 +#opt/lampp/man/man1/perl581delta.1 +#opt/lampp/man/man1/pod2html.1 +#opt/lampp/man/man1/dprofpp.1 +#opt/lampp/man/man1/msgfilter.1 +#opt/lampp/man/man1/mysqlaccess.1 +#opt/lampp/man/man1/perlcygwin.1 +#opt/lampp/man/man1/perlstyle.1 +#opt/lampp/man/man1/perl572delta.1 +#opt/lampp/man/man1/perlfreebsd.1 +#opt/lampp/man/man1/tiffcmp.1 +#opt/lampp/man/man1/replace.1 +#opt/lampp/man/man1/perlrequick.1 +#opt/lampp/man/man1/perlnumber.1 +#opt/lampp/man/man1/pstruct.1 +#opt/lampp/man/man1/splain.1 +#opt/lampp/man/man1/perlmpeix.1 +#opt/lampp/man/man1/perlopenbsd.1 +#opt/lampp/man/man1/asn1parse.1 +#opt/lampp/man/man1/tset.1.gz +#opt/lampp/man/man1/ldapwhoami.1 +#opt/lampp/man/man1/find2perl.1 +#opt/lampp/man/man1/perlopentut.1 +#opt/lampp/man/man1/msql2mysql.1 +#opt/lampp/man/man1/perltootc.1 +#opt/lampp/man/man1/ldapsearch.1 +#opt/lampp/man/man1/perl5004delta.1 +#opt/lampp/man/man1/fax2ps.1 +#opt/lampp/man/man1/defncopy.1 +#opt/lampp/man/man1/isamchk.1 +#opt/lampp/man/man1/xmlcatalog.1 +#opt/lampp/man/man1/enc2xs.1 +#opt/lampp/man/man1/perlapio.1 +#opt/lampp/man/man1/perlbeos.1 +#opt/lampp/man/man1/perltru64.1 +#opt/lampp/man/man1/htpasswd.1 +#opt/lampp/man/man1/wrjpgcom.1 +#opt/lampp/man/man1/isamlog.1 +#opt/lampp/man/man1/perlnetware.1 +#opt/lampp/man/man1/perlcall.1 +#opt/lampp/man/man1/perlreftut.1 +#opt/lampp/man/man1/perlintern.1 +#opt/lampp/man/man1/piconv.1 +#opt/lampp/man/man1/sess_id.1 +#opt/lampp/man/man1/perlbook.1 +#opt/lampp/man/man1/perlboot.1 +#opt/lampp/man/man1/pod2text.1 +#opt/lampp/man/man1/libnetcfg.1 +#opt/lampp/man/man1/msgcomm.1 +#opt/lampp/man/man1/perlclib.1 +#opt/lampp/man/man1/msgconv.1 +#opt/lampp/man/man1/perldata.1 +#opt/lampp/man/man1/smime.1 +#opt/lampp/man/man1/php-config.1 +#opt/lampp/man/man1/perldgux.1 +#opt/lampp/man/man1/perldiag.1 +#opt/lampp/man/man1/phpize.1 +#opt/lampp/man/man1/msgunfmt.1 +#opt/lampp/man/man1/bzdiff.1 +#opt/lampp/man/man1/ldapdelete.1 +#opt/lampp/man/man1/perlfaq1.1 +#opt/lampp/man/man1/perlfaq2.1 +#opt/lampp/man/man1/perlfaq3.1 +#opt/lampp/man/man1/perlfaq4.1 +#opt/lampp/man/man1/perlfaq5.1 +#opt/lampp/man/man1/perlfaq6.1 +#opt/lampp/man/man1/perlfaq7.1 +#opt/lampp/man/man1/perlfaq8.1 +#opt/lampp/man/man1/perlfaq9.1 +#opt/lampp/man/man1/s_server.1 +#opt/lampp/man/man1/perlepoc.1 +#opt/lampp/man/man1/lwp-request.1 +#opt/lampp/man/man1/pal2rgb.1 +#opt/lampp/man/man1/ppm2tiff.1 +#opt/lampp/man/man1/mysqlmanager.1 +#opt/lampp/man/man1/mysqlcheck.1 +#opt/lampp/man/man1/msgexec.1 +#opt/lampp/man/man1/speed.1 +#opt/lampp/man/man1/perl583delta.1 +#opt/lampp/man/man1/spkac.1 +#opt/lampp/man/man1/c2ph.1 +#opt/lampp/man/man1/perlfork.1 +#opt/lampp/man/man1/perlform.1 +#opt/lampp/man/man1/passwd.1 +#opt/lampp/man/man1/perlaix.1 +#opt/lampp/man/man1/perlfunc.1 +#opt/lampp/man/man1/perlapi.1 +#opt/lampp/man/man1/perlhack.1 +#opt/lampp/man/man1/perlbot.1 +#opt/lampp/man/man1/perlbug.1 +#opt/lampp/man/man1/perldoc.1 +#opt/lampp/man/man1/perldos.1 +#opt/lampp/man/man1/perldsc.1 +#opt/lampp/man/man1/msggrep.1 +#opt/lampp/man/man1/perlfaq.1 +#opt/lampp/man/man1/perlgpl.1 +#opt/lampp/man/man1/perliol.1 +#opt/lampp/man/man1/perlipc.1 +#opt/lampp/man/man1/perlivp.1 +#opt/lampp/man/man1/perlhist.1 +#opt/lampp/man/man1/bzgrep.1 +#opt/lampp/man/man1/perllol.1 +#opt/lampp/man/man1/lwp-rget.1 +#opt/lampp/man/man1/perlguts.1 +#opt/lampp/man/man1/perlmod.1 +#opt/lampp/man/man1/perlobj.1 +#opt/lampp/man/man1/perlos2.1 +#opt/lampp/man/man1/gendsa.1 +#opt/lampp/man/man1/perlpod.1 +#opt/lampp/man/man1/perlqnx.1 +#opt/lampp/man/man1/perlref.1 +#opt/lampp/man/man1/perlsec.1 +#opt/lampp/man/man1/perlhpux.1 +#opt/lampp/man/man1/perlrun.1 +#opt/lampp/man/man1/perltie.1 +#opt/lampp/man/man1/perlsub.1 +#opt/lampp/man/man1/perltoc.1 +#opt/lampp/man/man1/perlsyn.1 +#opt/lampp/man/man1/perlvar.1 +#opt/lampp/man/man1/perluts.1 +#opt/lampp/man/man1/perlvms.1 +#opt/lampp/man/man1/perlvos.1 +#opt/lampp/man/man1/msginit.1 +#opt/lampp/man/man1/perlhurd.1 +#opt/lampp/man/man1/genrsa.1 +#opt/lampp/man/man1/mysqlman.1 +#opt/lampp/man/man1/perlirix.1 +#opt/lampp/man/man1/ngettext.1 +#opt/lampp/man/man1/ecparam.1 +#opt/lampp/man/man1/pod2latex.1 +#opt/lampp/man/man1/dbiprof.1 +#opt/lampp/man/man1/webalizer.1 +#opt/lampp/man/man1/h2ph.1 +#opt/lampp/man/man1/h2xs.1 +#opt/lampp/man/man1/bzless.1 +#opt/lampp/man/man1/cpan.1 +#opt/lampp/man/man1/dgst.1 +#opt/lampp/man/man1/curl.1 +#opt/lampp/man/man1/perlmint.1 +#opt/lampp/man/man1/perlamiga.1 +#opt/lampp/man/man1/bzmore.1 +#opt/lampp/man/man1/freebcp.1 +#opt/lampp/man/man1/tiffdump.1 +#opt/lampp/man/man1/bsqldb.1 +#opt/lampp/man/man1/infocmp.1.gz +#opt/lampp/man/man1/perlport.1 +#opt/lampp/man/man1/perlos390.1 +#opt/lampp/man/man1/perlos400.1 +#opt/lampp/man/man1/sgi2tiff.1 +#opt/lampp/man/man1/myisamchk.1 +#opt/lampp/man/man1/verify.1 +#opt/lampp/man/man1/toe.1.gz +#opt/lampp/man/man1/perlvmesa.1 +#opt/lampp/man/man1/myisamlog.1 +#opt/lampp/man/man1/lwp-mirror.1 +#opt/lampp/man/man1/msgen.1 +#opt/lampp/man/man1/openssl.1 +#opt/lampp/man/man1/mysql_zap.1 +#opt/lampp/man/man1/tiffdither.1 +#opt/lampp/man/man1/tiffinfo.1 +#opt/lampp/man/man1/perlpacktut.1 +#opt/lampp/man/man1/reset.1.gz +#opt/lampp/man/man1/pod2man.1 +#opt/lampp/man/man1/perltodo.1 +#opt/lampp/man/man1/perltooc.1 +#opt/lampp/man/man1/perltoot.1 +#opt/lampp/man/man1/perltrap.1 +#opt/lampp/man/man1/perlmodinstall.1 +#opt/lampp/man/man1/perl585delta.1 +#opt/lampp/man/man1/mdc2.1 +#opt/lampp/man/man1/msguniq.1 +#opt/lampp/man/man1/gettext.1 +#opt/lampp/man/man1/perlutil.1 +#opt/lampp/man/man1/tiffsplit.1 +#opt/lampp/man/man1/s_client.1 +#opt/lampp/man/man1/ocsp.1 +#opt/lampp/man/man1/ldapcompare.1 +#opt/lampp/man/man1/nseq.1 +#opt/lampp/man/man1/mysqld_safe.1 +#opt/lampp/man/man1/mysqldump.1 +#opt/lampp/man/man1/mysqlimport.1 +#opt/lampp/man/man1/perl571delta.1 +#opt/lampp/man/man1/perlmacosx.1 +#opt/lampp/man/man1/perl.1 +#opt/lampp/man/man1/pkcs12.1 +#opt/lampp/man/man1/thumbnail.1 +#opt/lampp/man/man1/perlwin32.1 +#opt/lampp/man/man1/tic.1.gz +#opt/lampp/man/man1/psed.1 +#opt/lampp/man/man1/mysql.1 +#opt/lampp/man/man1/rand.1 +#opt/lampp/man/man1/perlplan9.1 +#opt/lampp/man/man1/dsaparam.1 +#opt/lampp/man/man1/x509.1 +#opt/lampp/man/man1/perlmodlib.1 +#opt/lampp/man/man1/sha1.1 +#opt/lampp/man/man1/clear.1.gz +#opt/lampp/man/man1/tack.1 +#opt/lampp/man/man1/perlintro.1 +#opt/lampp/man/man1/dbmmanage.1 +#opt/lampp/man/man1/rgb2ycbcr.1 +#opt/lampp/man/man1/tsql.1 +#opt/lampp/man/man1/CA.pl.1 +#opt/lampp/man/man1/perlcheat.1 +#opt/lampp/man/man1/perlmachten.1 +#opt/lampp/man/man1/perlfilter.1 +#opt/lampp/man/man1/perl56delta.1 +#opt/lampp/man/man1/tiffcp.1 +#opt/lampp/man/man1/tiffgt.1 +#opt/lampp/man/man1/tiffsv.1 +#opt/lampp/man/man1/autopoint.1 +#opt/lampp/man/man1/podselect.1 +#opt/lampp/man/man1/jpegtran.1 +#opt/lampp/man/man1/perl587delta.1 +#opt/lampp/man/man1/perllexwarn.1 +#opt/lampp/man/man1/perl582delta.1 +#opt/lampp/man/man1/xsubpp.1 +#opt/lampp/man/man1/mysqlshow.1 +#opt/lampp/man/man1/perlsolaris.1 +#opt/lampp/man/man1/perlapollo.1 +#opt/lampp/man/man1/perldebug.1 +#opt/lampp/man/man1/gif2tiff.1 +#opt/lampp/man/man1/tput.1.gz +#opt/lampp/man/man1/perl573delta.1 +#opt/lampp/man/man1/mysqlhotcopy.1 +#opt/lampp/man/man1/perldelta.1 +#opt/lampp/man/man1/perldebtut.1 +#opt/lampp/man/man1/htdbm.1 +#opt/lampp/man/man1/mysqlbinlog.1 +#opt/lampp/man/man1/pl2pm.1 +#opt/lampp/man/man1/perldebguts.1 +#opt/lampp/man/man1/mysql_config.1 +#opt/lampp/man/man1/xmllint.1 +#opt/lampp/man/man1/dhparam.1 +#opt/lampp/man/man1/fax2tiff.1 +#opt/lampp/man/man1/perlreref.1 +#opt/lampp/man/man1/perlretut.1 +#opt/lampp/man/man1/pkcs7.1 +#opt/lampp/man/man1/pkcs8.1 +#opt/lampp/man/man1/s_time.1 +#opt/lampp/man/man1/lwp-download.1 +#opt/lampp/man/man1/perl5005delta.1 +#opt/lampp/man/man1/dbiproxy.1 +#opt/lampp/man/man1/version.1 +#opt/lampp/man/man1/showtable.1 +#opt/lampp/man/man1/podchecker.1 +#opt/lampp/man/man1/xml2-config.1 +#opt/lampp/man/man1/perlunicode.1 +#opt/lampp/man/man1/perlxstut.1 +#opt/lampp/man/man1/perl58delta.1 +#opt/lampp/man/man1/msgattrib.1 +#opt/lampp/man/man1/myisampack.1 +#opt/lampp/man/man1/sabcmd.1 +#opt/lampp/man/man1/ras2tiff.1 +#opt/lampp/man/man1/msgcat.1 +#opt/lampp/man/man1/perlcompile.1 +#opt/lampp/man/man1/msgcmp.1 +#opt/lampp/man/man1/perlbs2000.1 +#opt/lampp/man/man1/msgfmt.1 +#opt/lampp/man/man1/perlcc.1 +#opt/lampp/man/man1/perlce.1 +#opt/lampp/man/man1/perlcn.1 +#opt/lampp/man/man1/perljp.1 +#opt/lampp/man/man1/perlko.1 +#opt/lampp/man/man1/perlop.1 +#opt/lampp/man/man1/perlre.1 +#opt/lampp/man/man1/perltw.1 +#opt/lampp/man/man1/perlxs.1 +#opt/lampp/man/man1/perror.1 +#opt/lampp/man/man1/ciphers.1 +#opt/lampp/man/man1/pod2usage.1 +#opt/lampp/man/man1/rsautl.1 +#opt/lampp/man/man1/perlebcdic.1 +#opt/lampp/man/man1/perl584delta.1 +#opt/lampp/man/man1/cjpeg.1 +#opt/lampp/man/man1/mysql.server.1 +#opt/lampp/man/man1/prove.1 +#opt/lampp/man/man1/mysqld.1 +#opt/lampp/man/man1/perluniintro.1 +#opt/lampp/man/man1/xgettext.1 +#opt/lampp/man/man3/ +#opt/lampp/man/man3/EVP_PKEY_assign_RSA.3 +#opt/lampp/man/man3/wvline.3ncurses.gz +#opt/lampp/man/man3/B.3 +#opt/lampp/man/man3/bkgrndset.3ncurses.gz +#opt/lampp/man/man3/O.3 +#opt/lampp/man/man3/vw_printw.3ncurses.gz +#opt/lampp/man/man3/set_fieldtype_choice.3form.gz +#opt/lampp/man/man3/SSL_use_certificate_file.3 +#opt/lampp/man/man3/wnoutrefresh.3ncurses.gz +#opt/lampp/man/man3/EVP_EncryptInit.3 +#opt/lampp/man/man3/ERR_PACK.3 +#opt/lampp/man/man3/field_index.3form.gz +#opt/lampp/man/man3/mvwaddch.3ncurses.gz +#opt/lampp/man/man3/EVP_SignUpdate.3 +#opt/lampp/man/man3/d2i_X509_NAME.3 +#opt/lampp/man/man3/sigtrap.3 +#opt/lampp/man/man3/ldap_ufn_timeout.3 +#opt/lampp/man/man3/menu_driver.3menu.gz +#opt/lampp/man/man3/SSL_CTX_set_mode.3 +#opt/lampp/man/man3/mvin_wchnstr.3ncurses.gz +#opt/lampp/man/man3/pad.3ncurses.gz +#opt/lampp/man/man3/lh_node_stats.3 +#opt/lampp/man/man3/RAND_SSLeay.3 +#opt/lampp/man/man3/mod_perl.3 +#opt/lampp/man/man3/RSA_new.3 +#opt/lampp/man/man3/SSL_CTX_ctrl.3 +#opt/lampp/man/man3/TIFFCheckTile.3t +#opt/lampp/man/man3/DB.3 +#opt/lampp/man/man3/set_menu_spacing.3menu.gz +#opt/lampp/man/man3/IO.3 +#opt/lampp/man/man3/TIFFmemcmp.3t +#opt/lampp/man/man3/clear.3ncurses.gz +#opt/lampp/man/man3/has_ic.3ncurses.gz +#opt/lampp/man/man3/BN_sub_word.3 +#opt/lampp/man/man3/Net::libnetFAQ.3 +#opt/lampp/man/man3/wclear.3ncurses.gz +#opt/lampp/man/man3/ldap_parse_result.3 +#opt/lampp/man/man3/scrollok.3ncurses.gz +#opt/lampp/man/man3/SSL_want.3 +#opt/lampp/man/man3/BIO_get_retry_reason.3 +#opt/lampp/man/man3/bn.3 +#opt/lampp/man/man3/dh.3 +#opt/lampp/man/man3/ldap_dn2str.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_get_object.3 +#opt/lampp/man/man3/if.3 +#opt/lampp/man/man3/libcurl-tutorial.3 +#opt/lampp/man/man3/cldap_close.3 +#opt/lampp/man/man3/ldap_dn2ufn.3 +#opt/lampp/man/man3/re.3 +#opt/lampp/man/man3/TIFFmemcpy.3t +#opt/lampp/man/man3/ui.3 +#opt/lampp/man/man3/qiflush.3ncurses.gz +#opt/lampp/man/man3/Encode::JP::JIS7.3 +#opt/lampp/man/man3/ldap_sasl_bind_s.3 +#opt/lampp/man/man3/DES_ofb_encrypt.3 +#opt/lampp/man/man3/Apache::RequestRec.3 +#opt/lampp/man/man3/EVP_MD_CTX_copy_ex EVP_MD_CTX_copy.3 +#opt/lampp/man/man3/Apache2::HookRun.3 +#opt/lampp/man/man3/pos_menu_cursor.3menu.gz +#opt/lampp/man/man3/Carp.3 +#opt/lampp/man/man3/APR::Request::Parser.3 +#opt/lampp/man/man3/BIO_get_conn_ip.3 +#opt/lampp/man/man3/TIFFVGetField.3t +#opt/lampp/man/man3/DES_quad_cksum.3 +#opt/lampp/man/man3/SelectSaver.3 +#opt/lampp/man/man3/SSL_pending.3 +#opt/lampp/man/man3/MDC2_Init.3 +#opt/lampp/man/man3/SSL_get_options.3 +#opt/lampp/man/man3/XS::Typemap.3 +#opt/lampp/man/man3/opts.3menu.gz +#opt/lampp/man/man3/ncurses.3ncurses.gz +#opt/lampp/man/man3/DES_cfb_encrypt.3 +#opt/lampp/man/man3/ldap_set_cache_options.3 +#opt/lampp/man/man3/newterm.3ncurses.gz +#opt/lampp/man/man3/i2d_PKCS8PrivateKey_nid_bio.3 +#opt/lampp/man/man3/IO::Select.3 +#opt/lampp/man/man3/SSL_want_read.3 +#opt/lampp/man/man3/Apache::TestConfig.3 +#opt/lampp/man/man3/Text::Tabs.3 +#opt/lampp/man/man3/SSL_get_error.3 +#opt/lampp/man/man3/ldap_result.3 +#opt/lampp/man/man3/BIO_do_accept.3 +#opt/lampp/man/man3/encoding.3 +#opt/lampp/man/man3/form_userptr.3form.gz +#opt/lampp/man/man3/update_panels.3curses.gz +#opt/lampp/man/man3/MD5_Update.3 +#opt/lampp/man/man3/URI::Split.3 +#opt/lampp/man/man3/slk_attr_off.3ncurses.gz +#opt/lampp/man/man3/X509_NAME_add_entry_by_NID.3 +#opt/lampp/man/man3/X509_NAME_add_entry_by_OBJ.3 +#opt/lampp/man/man3/can_change_color.3ncurses.gz +#opt/lampp/man/man3/OBJ_nid2ln.3 +#opt/lampp/man/man3/ERR_GET_LIB.3 +#opt/lampp/man/man3/OBJ_nid2sn.3 +#opt/lampp/man/man3/TIFFRGBAImageEnd.3t +#opt/lampp/man/man3/ldap_abandon.3 +#opt/lampp/man/man3/BIO_s_accept.3 +#opt/lampp/man/man3/SSL_CTX_set_verify_depth.3 +#opt/lampp/man/man3/new_field.3form.gz +#opt/lampp/man/man3/savetty.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::Liblist.3 +#opt/lampp/man/man3/BF_options.3 +#opt/lampp/man/man3/curl_easy_strerror.3 +#opt/lampp/man/man3/ERR_free_strings.3 +#opt/lampp/man/man3/SSL_CTX_get_verify_callback.3 +#opt/lampp/man/man3/ldap_entry2html_search.3 +#opt/lampp/man/man3/winchnstr.3ncurses.gz +#opt/lampp/man/man3/DES_crypt.3 +#opt/lampp/man/man3/DH_set_ex_data.3 +#opt/lampp/man/man3/BIO_get_accept_port.3 +#opt/lampp/man/man3/bytes.3 +#opt/lampp/man/man3/BIO_new_buffer_ssl_connect.3 +#opt/lampp/man/man3/d2i_PKCS8PrivateKey.3 +#opt/lampp/man/man3/BIO_get_write_buf_size.3 +#opt/lampp/man/man3/wtimeout.3ncurses.gz +#opt/lampp/man/man3/mitem_value.3menu.gz +#opt/lampp/man/man3/ModPerl::RegistryLoader.3 +#opt/lampp/man/man3/DES_string_to_2keys.3 +#opt/lampp/man/man3/subwin.3ncurses.gz +#opt/lampp/man/man3/Search::Dict.3 +#opt/lampp/man/man3/touchwin.3ncurses.gz +#opt/lampp/man/man3/ASN1_OBJECT_new.3 +#opt/lampp/man/man3/wsetscrreg.3ncurses.gz +#opt/lampp/man/man3/DBI::Const::GetInfoReturn.3 +#opt/lampp/man/man3/vline_set.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_free.3 +#opt/lampp/man/man3/File::DosGlob.3 +#opt/lampp/man/man3/menu.3menu.gz +#opt/lampp/man/man3/vwprintw.3ncurses.gz +#opt/lampp/man/man3/mvwinchstr.3ncurses.gz +#opt/lampp/man/man3/hide_panel.3curses.gz +#opt/lampp/man/man3/TIFFRGBAImageGet.3t +#opt/lampp/man/man3/d2i_PKCS8PrivateKey_fp.3 +#opt/lampp/man/man3/cursor.3form.gz +#opt/lampp/man/man3/extensions.3ncurses.gz +#opt/lampp/man/man3/BIO_set_callback_arg.3 +#opt/lampp/man/man3/getpary.3ncurses.gz +#opt/lampp/man/man3/DES_ede3_cbcm_encrypt.3 +#opt/lampp/man/man3/diagnostics.3 +#opt/lampp/man/man3/SSL_get_accept_state.3 +#opt/lampp/man/man3/File::Copy.3 +#opt/lampp/man/man3/ModPerl::PerlRun.3 +#opt/lampp/man/man3/winsertln.3ncurses.gz +#opt/lampp/man/man3/HMAC.3 +#opt/lampp/man/man3/set_menu_items.3menu.gz +#opt/lampp/man/man3/BN_BLINDING_convert.3 +#opt/lampp/man/man3/mvgetn_wstr.3ncurses.gz +#opt/lampp/man/man3/form_field_validation.3form.gz +#opt/lampp/man/man3/delscreen.3ncurses.gz +#opt/lampp/man/man3/MIME::QuotedPrint.3 +#opt/lampp/man/man3/BIO_set_ssl.3 +#opt/lampp/man/man3/is_wintouched.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_set_default_passwd_cb.3 +#opt/lampp/man/man3/SSL_CTX_sess_timeouts.3 +#opt/lampp/man/man3/SSL_has_matching_session_id.3 +#opt/lampp/man/man3/SSL_CTX_sess_cb_hits.3 +#opt/lampp/man/man3/mousemask.3ncurses.gz +#opt/lampp/man/man3/curl_share_strerror.3 +#opt/lampp/man/man3/EVP_DigestInit_ex.3 +#opt/lampp/man/man3/Term::Complete.3 +#opt/lampp/man/man3/reset_shell_mode.3ncurses.gz +#opt/lampp/man/man3/vid_puts.3ncurses.gz +#opt/lampp/man/man3/HTTP::Response.3 +#opt/lampp/man/man3/tputs.3ncurses.gz +#opt/lampp/man/man3/new_menu.3menu.gz +#opt/lampp/man/man3/ldap_next_entry.3 +#opt/lampp/man/man3/ldap_modrdn2_s.3 +#opt/lampp/man/man3/lwptut.3 +#opt/lampp/man/man3/flash.3ncurses.gz +#opt/lampp/man/man3/erasechar.3ncurses.gz +#opt/lampp/man/man3/slk_attr_set.3ncurses.gz +#opt/lampp/man/man3/curs_set.3ncurses.gz +#opt/lampp/man/man3/DBM_Filter::int32.3 +#opt/lampp/man/man3/bn_sqr_comba4.3 +#opt/lampp/man/man3/bn_sqr_comba8.3 +#opt/lampp/man/man3/Math::BigInt::Trace.3 +#opt/lampp/man/man3/delwin.3ncurses.gz +#opt/lampp/man/man3/BIO_rw_filename.3 +#opt/lampp/man/man3/UI_ctrl.3 +#opt/lampp/man/man3/ldap_sort_entries.3 +#opt/lampp/man/man3/echo_wchar.3ncurses.gz +#opt/lampp/man/man3/Time::gmtime.3 +#opt/lampp/man/man3/i2d_DHparams.3 +#opt/lampp/man/man3/menu_win.3menu.gz +#opt/lampp/man/man3/APR::Bucket.3 +#opt/lampp/man/man3/ber_put_string.3 +#opt/lampp/man/man3/lh_doall_arg.3 +#opt/lampp/man/man3/mitem_current.3menu.gz +#opt/lampp/man/man3/ldap_dn2dcedn.3 +#opt/lampp/man/man3/ldap_free_templates.3 +#opt/lampp/man/man3/mod_perl2.3 +#opt/lampp/man/man3/printw.3ncurses.gz +#opt/lampp/man/man3/ldap_msgtype.3 +#opt/lampp/man/man3/SSL_CIPHER_description.3 +#opt/lampp/man/man3/ldap_vals2text.3 +#opt/lampp/man/man3/BN_is_bit_set.3 +#opt/lampp/man/man3/ASN1_STRING_cmp.3 +#opt/lampp/man/man3/mvwadd_wchnstr.3ncurses.gz +#opt/lampp/man/man3/ldap_parse_extended_result.3 +#opt/lampp/man/man3/crypto.3 +#opt/lampp/man/man3/ASN1_STRING_dup.3 +#opt/lampp/man/man3/DHparams_print.3 +#opt/lampp/man/man3/IPC::Semaphore.3 +#opt/lampp/man/man3/EVP_PKEY_free.3 +#opt/lampp/man/man3/BIO_find_type.3 +#opt/lampp/man/man3/Pod::Plainer.3 +#opt/lampp/man/man3/X509_NAME_add_entry_by_txt.3 +#opt/lampp/man/man3/killchar.3ncurses.gz +#opt/lampp/man/man3/BIO_write.3 +#opt/lampp/man/man3/UI_construct_prompt UI_add_user_data.3 +#opt/lampp/man/man3/Encode.3 +#opt/lampp/man/man3/ModPerl::RegistryBB.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_key_length.3 +#opt/lampp/man/man3/ldap_explode_dns.3 +#opt/lampp/man/man3/SSL_CTX_sess_connect.3 +#opt/lampp/man/man3/set_form_page.3form.gz +#opt/lampp/man/man3/ASN1_STRING_type.3 +#opt/lampp/man/man3/curl_easy_setopt.3 +#opt/lampp/man/man3/ldap_ufn_search_c.3 +#opt/lampp/man/man3/ldap_free_searchprefs.3 +#opt/lampp/man/man3/ldap_ufn_search_s.3 +#opt/lampp/man/man3/BN_BLINDING_invert_ex.3 +#opt/lampp/man/man3/wprintw.3ncurses.gz +#opt/lampp/man/man3/keybound.3ncurses.gz +#opt/lampp/man/man3/File::Find.3 +#opt/lampp/man/man3/wins_wch.3ncurses.gz +#opt/lampp/man/man3/HMAC_Final.3 +#opt/lampp/man/man3/Text::Wrap.3 +#opt/lampp/man/man3/TIFFReadDirectory.3t +#opt/lampp/man/man3/bkgd.3ncurses.gz +#opt/lampp/man/man3/Test::Harness::Point.3 +#opt/lampp/man/man3/APR.3 +#opt/lampp/man/man3/BN_BLINDING_new.3 +#opt/lampp/man/man3/mvwscanw.3ncurses.gz +#opt/lampp/man/man3/ASN1_STRING_new.3 +#opt/lampp/man/man3/CGI.3 +#opt/lampp/man/man3/SSL_CTX_sess_misses.3 +#opt/lampp/man/man3/regex.3 +#opt/lampp/man/man3/DBI.3 +#opt/lampp/man/man3/DSA_get_ex_new_index.3 +#opt/lampp/man/man3/OPENSSL_no_config.3 +#opt/lampp/man/man3/APR::Table.3 +#opt/lampp/man/man3/BIO_ptr_ctrl.3 +#opt/lampp/man/man3/overwrite.3ncurses.gz +#opt/lampp/man/man3/set_menu_win.3menu.gz +#opt/lampp/man/man3/SSL_set_verify_result.3 +#opt/lampp/man/man3/lh_retrieve.3 +#opt/lampp/man/man3/TIFFReadRawStrip.3t +#opt/lampp/man/man3/EVP_DigestInit.3 +#opt/lampp/man/man3/mitem_visible.3menu.gz +#opt/lampp/man/man3/RSA_set_method.3 +#opt/lampp/man/man3/mvwaddnstr.3ncurses.gz +#opt/lampp/man/man3/EVP_MD_CTX_md.3 +#opt/lampp/man/man3/i2d_PKCS8PrivateKey_nid_fp.3 +#opt/lampp/man/man3/deleteln.3ncurses.gz +#opt/lampp/man/man3/ERR_reason_error_string.3 +#opt/lampp/man/man3/unpost_form.3form.gz +#opt/lampp/man/man3/SMIME_read_PKCS7.3 +#opt/lampp/man/man3/SSL_get_info_callback.3 +#opt/lampp/man/man3/Cwd.3 +#opt/lampp/man/man3/CGI::Carp.3 +#opt/lampp/man/man3/ASN1_STRING_set.3 +#opt/lampp/man/man3/panel_hidden.3curses.gz +#opt/lampp/man/man3/syncok.3ncurses.gz +#opt/lampp/man/man3/_tracef.3ncurses.gz +#opt/lampp/man/man3/File::Spec::Unix.3 +#opt/lampp/man/man3/Env.3 +#opt/lampp/man/man3/Sys::Syslog.3 +#opt/lampp/man/man3/BIO_should_write.3 +#opt/lampp/man/man3/Memoize::ExpireFile.3 +#opt/lampp/man/man3/Pod::ParseLink.3 +#opt/lampp/man/man3/ldap_explode_rdn.3 +#opt/lampp/man/man3/getsyx.3ncurses.gz +#opt/lampp/man/man3/BN_mask_bits.3 +#opt/lampp/man/man3/DBI::Profile.3 +#opt/lampp/man/man3/Encode::CN::HZ.3 +#opt/lampp/man/man3/ldap_modrdn2.3 +#opt/lampp/man/man3/ldap_modrdn2_s +#opt/lampp/man/man3/field_back.3form.gz +#opt/lampp/man/man3/set_form_opts.3form.gz +#opt/lampp/man/man3/MD2.3 +#opt/lampp/man/man3/Tie::IxHash.3 +#opt/lampp/man/man3/MD4.3 +#opt/lampp/man/man3/MD5.3 +#opt/lampp/man/man3/curl_multi_fdset.3 +#opt/lampp/man/man3/menu_userptr.3menu.gz +#opt/lampp/man/man3/File::Glob.3 +#opt/lampp/man/man3/ldap_modrdn_s.3 +#opt/lampp/man/man3/LWP.3 +#opt/lampp/man/man3/SSL_CIPHER_get_bits.3 +#opt/lampp/man/man3/ExtUtils::Command.3 +#opt/lampp/man/man3/RAND_write_file.3 +#opt/lampp/man/man3/UI_free.3 +#opt/lampp/man/man3/wresize.3ncurses.gz +#opt/lampp/man/man3/mvaddchstr.3ncurses.gz +#opt/lampp/man/man3/TIFFNumberOfStrips.3t +#opt/lampp/man/man3/ungetmouse.3ncurses.gz +#opt/lampp/man/man3/PEM.3 +#opt/lampp/man/man3/hook.3menu.gz +#opt/lampp/man/man3/menu_request_name.3menu.gz +#opt/lampp/man/man3/DES_ncbc_encrypt.3 +#opt/lampp/man/man3/ODBM_File.3 +#opt/lampp/man/man3/B::Concise.3 +#opt/lampp/man/man3/RC4.3 +#opt/lampp/man/man3/ldap_translate_to_t61.3 +#opt/lampp/man/man3/ldap_next_tmplcol.3 +#opt/lampp/man/man3/Net::servent.3 +#opt/lampp/man/man3/SSL_get_msg_callback_arg.3 +#opt/lampp/man/man3/MDC2.3 +#opt/lampp/man/man3/ungetch.3ncurses.gz +#opt/lampp/man/man3/RSA_generate_key.3 +#opt/lampp/man/man3/SSL.3 +#opt/lampp/man/man3/items.3menu.gz +#opt/lampp/man/man3/SSL_COMP_add_compression_method.3 +#opt/lampp/man/man3/unget_wch.3ncurses.gz +#opt/lampp/man/man3/curl_formadd.3 +#opt/lampp/man/man3/URI.3 +#opt/lampp/man/man3/add_wchstr.3ncurses.gz +#opt/lampp/man/man3/item_visible.3menu.gz +#opt/lampp/man/man3/init_color.3ncurses.gz +#opt/lampp/man/man3/des_read_2passwords.3 +#opt/lampp/man/man3/nocbreak.3ncurses.gz +#opt/lampp/man/man3/B::Disassembler.3 +#opt/lampp/man/man3/mvhline_set.3ncurses.gz +#opt/lampp/man/man3/field_fore.3form.gz +#opt/lampp/man/man3/ldap_url_search_st.3 +#opt/lampp/man/man3/post.3menu.gz +#opt/lampp/man/man3/EVP_CIPHER_block_size.3 +#opt/lampp/man/man3/curl_multi_strerror.3 +#opt/lampp/man/man3/ldap_oc2template.3 +#opt/lampp/man/man3/slk_attr_on.3ncurses.gz +#opt/lampp/man/man3/MD2_Final.3 +#opt/lampp/man/man3/CRYPTO_set_id_callback.3 +#opt/lampp/man/man3/Encode::PerlIO.3 +#opt/lampp/man/man3/BIO_get_conn_int_port.3 +#opt/lampp/man/man3/DH_new_method.3 +#opt/lampp/man/man3/BN_BLINDING_update.3 +#opt/lampp/man/man3/HTML::HeadParser.3 +#opt/lampp/man/man3/curses_version.3ncurses.gz +#opt/lampp/man/man3/ldap_next_tmplrow.3 +#opt/lampp/man/man3/page.3form.gz +#opt/lampp/man/man3/BN_mod_word.3 +#opt/lampp/man/man3/cldap_search_s.3 +#opt/lampp/man/man3/TIFFWriteTile.3t +#opt/lampp/man/man3/NEXT.3 +#opt/lampp/man/man3/inopts.3ncurses.gz +#opt/lampp/man/man3/Digest::MD5.3 +#opt/lampp/man/man3/File::Compare.3 +#opt/lampp/man/man3/BIO_read_filename.3 +#opt/lampp/man/man3/libtiff.3t +#opt/lampp/man/man3/Apache2::Module.3 +#opt/lampp/man/man3/bindtextdomain.3 +#opt/lampp/man/man3/bio.3 +#opt/lampp/man/man3/SSL_get_current_cipher.3 +#opt/lampp/man/man3/meta.3ncurses.gz +#opt/lampp/man/man3/ldap_dn2ad_canonical.3 +#opt/lampp/man/man3/Test::Harness.3 +#opt/lampp/man/man3/EVP_MD_CTX_copy.3 +#opt/lampp/man/man3/ExtUtils::MM.3 +#opt/lampp/man/man3/ExtUtils::MY.3 +#opt/lampp/man/man3/des.3 +#opt/lampp/man/man3/ldap_init_searchprefs_buf.3 +#opt/lampp/man/man3/bn_print.3 +#opt/lampp/man/man3/item_opts_on.3menu.gz +#opt/lampp/man/man3/dsa.3 +#opt/lampp/man/man3/CGI::Fast.3 +#opt/lampp/man/man3/err.3 +#opt/lampp/man/man3/ber_get_boolean.3 +#opt/lampp/man/man3/evp.3 +#opt/lampp/man/man3/SSL_want_nothing.3 +#opt/lampp/man/man3/DES_ede2_cbc_encrypt.3 +#opt/lampp/man/man3/BIO_append_filename.3 +#opt/lampp/man/man3/WWW::RobotRules.3 +#opt/lampp/man/man3/TIFFWriteEncodedStrip.3t +#opt/lampp/man/man3/DES_set_key_unchecked.3 +#opt/lampp/man/man3/APR::Request::Cookie.3 +#opt/lampp/man/man3/Bundle::Apache2.3 +#opt/lampp/man/man3/kernel.3ncurses.gz +#opt/lampp/man/man3/BIO_get_ssl.3 +#opt/lampp/man/man3/lib.3 +#opt/lampp/man/man3/md5.3 +#opt/lampp/man/man3/DSA_print_fp.3 +#opt/lampp/man/man3/ber_next_element.3 +#opt/lampp/man/man3/mvwinnwstr.3ncurses.gz +#opt/lampp/man/man3/opts.3form.gz +#opt/lampp/man/man3/IPC::Msg.3 +#opt/lampp/man/man3/wadd_wchnstr.3ncurses.gz +#opt/lampp/man/man3/new_page.3form.gz +#opt/lampp/man/man3/lber-types.3 +#opt/lampp/man/man3/form_new.3form.gz +#opt/lampp/man/man3/curl_global_init.3 +#opt/lampp/man/man3/Hash::Util.3 +#opt/lampp/man/man3/ops.3 +#opt/lampp/man/man3/pem.3 +#opt/lampp/man/man3/nodelay.3ncurses.gz +#opt/lampp/man/man3/APR::Error.3 +#opt/lampp/man/man3/rc4.3 +#opt/lampp/man/man3/BIO_set_conn_port.3 +#opt/lampp/man/man3/RAND_screen.3 +#opt/lampp/man/man3/SSL_set_quiet_shutdown.3 +#opt/lampp/man/man3/RSA_sign.3 +#opt/lampp/man/man3/menu_opts.3menu.gz +#opt/lampp/man/man3/SSL_get_verify_callback.3 +#opt/lampp/man/man3/ber_alloc_t.3 +#opt/lampp/man/man3/sha.3 +#opt/lampp/man/man3/rsa.3 +#opt/lampp/man/man3/BIO_make_bio_pair.3 +#opt/lampp/man/man3/RSA_size.3 +#opt/lampp/man/man3/ssl.3 +#opt/lampp/man/man3/TIFFPrintDirectory.3t +#opt/lampp/man/man3/Attribute::Handlers::demo::Demo.3 +#opt/lampp/man/man3/DSA_print.3 +#opt/lampp/man/man3/set_field_type.3form.gz +#opt/lampp/man/man3/BIO_set_ssl_mode.3 +#opt/lampp/man/man3/BN_copy.3 +#opt/lampp/man/man3/mvvline.3ncurses.gz +#opt/lampp/man/man3/attr_get.3ncurses.gz +#opt/lampp/man/man3/DH_get_ex_data.3 +#opt/lampp/man/man3/SSL_get_default_timeout.3 +#opt/lampp/man/man3/DHparams_print_fp.3 +#opt/lampp/man/man3/DSA_set_method.3 +#opt/lampp/man/man3/use_default_colors.3ncurses.gz +#opt/lampp/man/man3/use_extended_names.3ncurses.gz +#opt/lampp/man/man3/libexslt.3 +#opt/lampp/man/man3/SSL_CTX_get_max_cert_list.3 +#opt/lampp/man/man3/ldap_kerberos_bind_s.3 +#opt/lampp/man/man3/win_wchstr.3ncurses.gz +#opt/lampp/man/man3/ber_flush.3 +#opt/lampp/man/man3/i2d_X509_CRL_fp.3 +#opt/lampp/man/man3/ldap_unbind_ext_s.3 +#opt/lampp/man/man3/SSL_use_RSAPrivateKey_ASN1.3 +#opt/lampp/man/man3/APR::Date.3 +#opt/lampp/man/man3/APR::Status.3 +#opt/lampp/man/man3/SSL_SESSION_free.3 +#opt/lampp/man/man3/ldap_syntax2name.3 +#opt/lampp/man/man3/ecdsa.3 +#opt/lampp/man/man3/UI_add_input_boolean.3 +#opt/lampp/man/man3/baudrate.3ncurses.gz +#opt/lampp/man/man3/ldap_matchingrule_free.3 +#opt/lampp/man/man3/BN_clear_bit.3 +#opt/lampp/man/man3/wdeleteln.3ncurses.gz +#opt/lampp/man/man3/ERR_print_errors_fp.3 +#opt/lampp/man/man3/set_new_page.3form.gz +#opt/lampp/man/man3/APR::Request::Error.3 +#opt/lampp/man/man3/BN_mod_inverse.3 +#opt/lampp/man/man3/URI::Escape.3 +#opt/lampp/man/man3/TIFFDefaultTileSize.3t +#opt/lampp/man/man3/Encode::Unicode.3 +#opt/lampp/man/man3/Term::ReadKey.3 +#opt/lampp/man/man3/RSA_set_default_method.3 +#opt/lampp/man/man3/Config.3 +#opt/lampp/man/man3/APR::Finfo.3 +#opt/lampp/man/man3/ERR_peek_last_error_line_data.3 +#opt/lampp/man/man3/menu_name.3menu.gz +#opt/lampp/man/man3/ldap_schema.3 +#opt/lampp/man/man3/TIFFCurrentStrip.3t +#opt/lampp/man/man3/X509_NAME_print.3 +#opt/lampp/man/man3/d2i_SSL_SESSION.3 +#opt/lampp/man/man3/TIFFComputeStrip.3t +#opt/lampp/man/man3/ExtUtils::XSBuilder.3 +#opt/lampp/man/man3/SSL_new.3 +#opt/lampp/man/man3/TIFFmemory.3t +#opt/lampp/man/man3/curl_multi_cleanup.3 +#opt/lampp/man/man3/DH_generate_parameters.3 +#opt/lampp/man/man3/menu_spacing.3menu.gz +#opt/lampp/man/man3/SSL_rstate_string_long.3 +#opt/lampp/man/man3/SSL_get_ssl_method.3 +#opt/lampp/man/man3/ERR_load_crypto_strings.3 +#opt/lampp/man/man3/has_key.3ncurses.gz +#opt/lampp/man/man3/Archive::Tar::File.3 +#opt/lampp/man/man3/wsyncdown.3ncurses.gz +#opt/lampp/man/man3/wborder_set.3ncurses.gz +#opt/lampp/man/man3/ldap_modify.3 +#opt/lampp/man/man3/ldap_search_s.3 +#opt/lampp/man/man3/form_field_info.3form.gz +#opt/lampp/man/man3/I18N::LangTags::Detect.3 +#opt/lampp/man/man3/ripoffline.3ncurses.gz +#opt/lampp/man/man3/Apache2::Filter.3 +#opt/lampp/man/man3/DES_ecb_encrypt.3 +#opt/lampp/man/man3/_nc_tracebits.3ncurses.gz +#opt/lampp/man/man3/TIFFVStripSize.3t +#opt/lampp/man/man3/warnings.3 +#opt/lampp/man/man3/Text::Balanced.3 +#opt/lampp/man/man3/ModPerl::Util.3 +#opt/lampp/man/man3/set_menu_grey.3menu.gz +#opt/lampp/man/man3/bn_expand2.3 +#opt/lampp/man/man3/touchline.3ncurses.gz +#opt/lampp/man/man3/Pod::Perldoc::ToNroff.3 +#opt/lampp/man/man3/TIFFReverseBits.3t +#opt/lampp/man/man3/SSL_SESSION_get_time.3 +#opt/lampp/man/man3/EVP_get_cipherbyname.3 +#opt/lampp/man/man3/ldap_first_attribute.3 +#opt/lampp/man/man3/SSL_CTX_set_ex_data.3 +#opt/lampp/man/man3/ldap_build_filter.3 +#opt/lampp/man/man3/TIFFComputeTile.3t +#opt/lampp/man/man3/bn_sub_words.3 +#opt/lampp/man/man3/mvwinsch.3ncurses.gz +#opt/lampp/man/man3/menu_requestname.3menu.gz +#opt/lampp/man/man3/DBM_Filter::encode.3 +#opt/lampp/man/man3/scale_menu.3menu.gz +#opt/lampp/man/man3/Apache2::Access.3 +#opt/lampp/man/man3/flushinp.3ncurses.gz +#opt/lampp/man/man3/RAND_set_rand_method.3 +#opt/lampp/man/man3/ldap_modrdn.3 +#opt/lampp/man/man3/ldap_modrdn_s +#opt/lampp/man/man3/set_menu_mark.3menu.gz +#opt/lampp/man/man3/RSA_padding_add_none.3 +#opt/lampp/man/man3/RSA_padding_check_SSLv23.3 +#opt/lampp/man/man3/BIO_reset.3 +#opt/lampp/man/man3/SSL_CTX_set_tmp_dh_callback.3 +#opt/lampp/man/man3/DH_set_default_method.3 +#opt/lampp/man/man3/SHA1.3 +#opt/lampp/man/man3/Apache::TestUtil.3 +#opt/lampp/man/man3/IO::File.3 +#opt/lampp/man/man3/curl_version_info.3 +#opt/lampp/man/man3/Apache2::MPM.3 +#opt/lampp/man/man3/EVP_PKEY_new.3 +#opt/lampp/man/man3/BN_free.3 +#opt/lampp/man/man3/set_field_status.3form.gz +#opt/lampp/man/man3/BF_ecb_encrypt.3 +#opt/lampp/man/man3/ldap_8859_to_t61.3 +#opt/lampp/man/man3/SSL_CTX_add_client_CA.3 +#opt/lampp/man/man3/TIFFSwabShort.3t +#opt/lampp/man/man3/free_menu.3menu.gz +#opt/lampp/man/man3/Net::FTP::A.3 +#opt/lampp/man/man3/Net::FTP::E.3 +#opt/lampp/man/man3/Net::FTP::I.3 +#opt/lampp/man/man3/Net::FTP::L.3 +#opt/lampp/man/man3/Apache2::Log.3 +#opt/lampp/man/man3/mvaddnwstr.3ncurses.gz +#opt/lampp/man/man3/panel_below.3curses.gz +#opt/lampp/man/man3/mvadd_wchstr.3ncurses.gz +#opt/lampp/man/man3/DBI::PurePerl.3 +#opt/lampp/man/man3/DSA_do_verify.3 +#opt/lampp/man/man3/curl_share_init.3 +#opt/lampp/man/man3/SSL_want_write.3 +#opt/lampp/man/man3/DH_OpenSSL.3 +#opt/lampp/man/man3/SSL_CTX_use_certificate.3 +#opt/lampp/man/man3/GDBM_File.3 +#opt/lampp/man/man3/format.3menu.gz +#opt/lampp/man/man3/ldap_first_reference.3 +#opt/lampp/man/man3/Win32.3 +#opt/lampp/man/man3/Apache2::URI.3 +#opt/lampp/man/man3/User::grent.3 +#opt/lampp/man/man3/move.3ncurses.gz +#opt/lampp/man/man3/ASN1_STRING_length.3 +#opt/lampp/man/man3/getyx.3ncurses.gz +#opt/lampp/man/man3/Bundle::DBI.3 +#opt/lampp/man/man3/File::Path.3 +#opt/lampp/man/man3/EVP_MD_CTX_init.3 +#opt/lampp/man/man3/TIFFOpen.3t +#opt/lampp/man/man3/BN_RECP_CTX_new.3 +#opt/lampp/man/man3/wgetbkgrnd.3ncurses.gz +#opt/lampp/man/man3/set_form_init.3form.gz +#opt/lampp/man/man3/setterm.3ncurses.gz +#opt/lampp/man/man3/SSL_alert_desc_string_long.3 +#opt/lampp/man/man3/mvwgetnstr.3ncurses.gz +#opt/lampp/man/man3/ber_put_int.3 +#opt/lampp/man/man3/TIFFmemset.3t +#opt/lampp/man/man3/BIO_should_retry.3 +#opt/lampp/man/man3/Net::HTTP::NB.3 +#opt/lampp/man/man3/ldap_unbind_s.3 +#opt/lampp/man/man3/BN_RECP_CTX_free.3 +#opt/lampp/man/man3/getch.3ncurses.gz +#opt/lampp/man/man3/lh_delete.3 +#opt/lampp/man/man3/keyname.3ncurses.gz +#opt/lampp/man/man3/wgetch.3ncurses.gz +#opt/lampp/man/man3/APR::URI.3 +#opt/lampp/man/man3/del_panel.3curses.gz +#opt/lampp/man/man3/RSA_padding_add_PKCS1_OAEP.3 +#opt/lampp/man/man3/BN_RECP_CTX_set.3 +#opt/lampp/man/man3/PerlIO::scalar.3 +#opt/lampp/man/man3/bottom_panel.3curses.gz +#opt/lampp/man/man3/SSL_CTX_set_default_passwd_cb_userdata.3 +#opt/lampp/man/man3/Getopt::Long.3 +#opt/lampp/man/man3/endwin.3ncurses.gz +#opt/lampp/man/man3/des_read_pw.3 +#opt/lampp/man/man3/d2i_X509_fp.3 +#opt/lampp/man/man3/HTML::Tagset.3 +#opt/lampp/man/man3/Bundle::LWP.3 +#opt/lampp/man/man3/lh_stats_bio.3 +#opt/lampp/man/man3/ldap_next_searchobj.3 +#opt/lampp/man/man3/ber_put_seq.3 +#opt/lampp/man/man3/ber_put_set.3 +#opt/lampp/man/man3/SSL_CTX_use_PrivateKey_file.3 +#opt/lampp/man/man3/ERR_pop_to_mark.3 +#opt/lampp/man/man3/OBJ_txt2nid.3 +#opt/lampp/man/man3/panel.3curses.gz +#opt/lampp/man/man3/OBJ_txt2obj.3 +#opt/lampp/man/man3/RSA_padding_add_PKCS1_type_1.3 +#opt/lampp/man/man3/RSA_padding_add_PKCS1_type_2.3 +#opt/lampp/man/man3/BF_ofb64_encrypt.3 +#opt/lampp/man/man3/Encode::MIME::Header.3 +#opt/lampp/man/man3/hook.3form.gz +#opt/lampp/man/man3/ber_put_ostring.3 +#opt/lampp/man/man3/AutoSplit.3 +#opt/lampp/man/man3/wattr_get.3ncurses.gz +#opt/lampp/man/man3/EVP_MD_CTX_block_size.3 +#opt/lampp/man/man3/UI_construct_prompt.3 +#opt/lampp/man/man3/mvwinchnstr.3ncurses.gz +#opt/lampp/man/man3/ldap_init_templates_buf.3 +#opt/lampp/man/man3/BN_MONT_CTX_copy.3 +#opt/lampp/man/man3/Safe.3 +#opt/lampp/man/man3/ldap_str2attributetype.3 +#opt/lampp/man/man3/init_pair.3ncurses.gz +#opt/lampp/man/man3/BIO_get_bind_mode.3 +#opt/lampp/man/man3/CRYPTO_lock.3 +#opt/lampp/man/man3/SSL_CTX_use_certificate_ASN1.3 +#opt/lampp/man/man3/BN_bn2bin.3 +#opt/lampp/man/man3/SSL_CTX_sess_set_get_cb.3 +#opt/lampp/man/man3/BIO_f_base64.3 +#opt/lampp/man/man3/X509_NAME_get_index_by_NID.3 +#opt/lampp/man/man3/X509_NAME_get_index_by_OBJ.3 +#opt/lampp/man/man3/BIO_set_cipher.3 +#opt/lampp/man/man3/APR::ThreadMutex.3 +#opt/lampp/man/man3/Win32::DBIODBC.3 +#opt/lampp/man/man3/menu_hook.3menu.gz +#opt/lampp/man/man3/Devel::PPPort.3 +#opt/lampp/man/man3/APR::Request::Hook.3 +#opt/lampp/man/man3/BN_bn2dec.3 +#opt/lampp/man/man3/SSL_CTX_flush_sessions.3 +#opt/lampp/man/man3/SSL_get_ex_new_index.3 +#opt/lampp/man/man3/BN_init.3 +#opt/lampp/man/man3/mvvline_set.3ncurses.gz +#opt/lampp/man/man3/ERR_print_errors.3 +#opt/lampp/man/man3/BIO_set_write_buf_size.3 +#opt/lampp/man/man3/ERR_put_error.3 +#opt/lampp/man/man3/Pod::Find.3 +#opt/lampp/man/man3/CGI::Switch.3 +#opt/lampp/man/man3/post.3form.gz +#opt/lampp/man/man3/termname.3ncurses.gz +#opt/lampp/man/man3/Benchmark.3 +#opt/lampp/man/man3/SSL_shutdown.3 +#opt/lampp/man/man3/BN_bn2hex.3 +#opt/lampp/man/man3/SSL_get_client_CA_list.3 +#opt/lampp/man/man3/BIO_s_bio.3 +#opt/lampp/man/man3/post_form.3form.gz +#opt/lampp/man/man3/menu_cursor.3menu.gz +#opt/lampp/man/man3/SSL_accept.3 +#opt/lampp/man/man3/Test::Harness::TAP.3 +#opt/lampp/man/man3/BN_bin2bn.3 +#opt/lampp/man/man3/SSL_CTX_set_options.3 +#opt/lampp/man/man3/tparm.3ncurses.gz +#opt/lampp/man/man3/SSL_set_tmp_rsa.3 +#opt/lampp/man/man3/ExtUtils::MM_DOS.3 +#opt/lampp/man/man3/ExtUtils::MM_Any.3 +#opt/lampp/man/man3/lhash.3 +#opt/lampp/man/man3/menu_post.3menu.gz +#opt/lampp/man/man3/SSL_CTX_get_session_cache_mode.3 +#opt/lampp/man/man3/SSL_CTX_set_info_callback.3 +#opt/lampp/man/man3/longname.3ncurses.gz +#opt/lampp/man/man3/BN_bn2mpi.3 +#opt/lampp/man/man3/form_win.3form.gz +#opt/lampp/man/man3/TIFFGetField.3t +#opt/lampp/man/man3/BN_div_recp.3 +#opt/lampp/man/man3/CGI::Apache.3 +#opt/lampp/man/man3/ldap_attributetype2name.3 +#opt/lampp/man/man3/BIO_shutdown_wr.3 +#opt/lampp/man/man3/i2d_X509_REQ_bio.3 +#opt/lampp/man/man3/ExtUtils::testlib.3 +#opt/lampp/man/man3/BIO_set_conn_hostname.3 +#opt/lampp/man/man3/delch.3ncurses.gz +#opt/lampp/man/man3/Test.3 +#opt/lampp/man/man3/OBJ_cmp.3 +#opt/lampp/man/man3/BN_RECP_CTX_init.3 +#opt/lampp/man/man3/APR::IpSubnet.3 +#opt/lampp/man/man3/wdelch.3ncurses.gz +#opt/lampp/man/man3/EVP_MD_CTX_cleanup.3 +#opt/lampp/man/man3/SSL_CIPHER_get_name.3 +#opt/lampp/man/man3/SSL_get_peer_cert_chain.3 +#opt/lampp/man/man3/mvwin_wchstr.3ncurses.gz +#opt/lampp/man/man3/OBJ_sn2nid.3 +#opt/lampp/man/man3/mvwadd_wch.3ncurses.gz +#opt/lampp/man/man3/OBJ_dup.3 +#opt/lampp/man/man3/BIO_s_mem.3 +#opt/lampp/man/man3/mvwaddwstr.3ncurses.gz +#opt/lampp/man/man3/EVP_CipherInit.3 +#opt/lampp/man/man3/SSL_SESSION_set_time.3 +#opt/lampp/man/man3/panel_window.3curses.gz +#opt/lampp/man/man3/has_il.3ncurses.gz +#opt/lampp/man/man3/newpad.3ncurses.gz +#opt/lampp/man/man3/idcok.3ncurses.gz +#opt/lampp/man/man3/Encode::Encoder.3 +#opt/lampp/man/man3/File::CheckTree.3 +#opt/lampp/man/man3/EVP_PKEY_assign_EC_KEY.3 +#opt/lampp/man/man3/ERR_remove_state.3 +#opt/lampp/man/man3/mvinchstr.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::MM_NW5.3 +#opt/lampp/man/man3/HTTP::Cookies::Microsoft.3 +#opt/lampp/man/man3/ExtUtils::MM_OS2.3 +#opt/lampp/man/man3/MD4_Final.3 +#opt/lampp/man/man3/Apache2::Upload.3 +#opt/lampp/man/man3/EVP_OpenInit.3 +#opt/lampp/man/man3/Apache2::ServerUtil.3 +#opt/lampp/man/man3/BIO_ssl_shutdown.3 +#opt/lampp/man/man3/libxslt.3 +#opt/lampp/man/man3/LWP::MediaTypes.3 +#opt/lampp/man/man3/BN_lshift1.3 +#opt/lampp/man/man3/Tie::File.3 +#opt/lampp/man/man3/set_top_row.3menu.gz +#opt/lampp/man/man3/resetty.3ncurses.gz +#opt/lampp/man/man3/TIFFRegisterCODEC.3t +#opt/lampp/man/man3/instr.3ncurses.gz +#opt/lampp/man/man3/initscr.3ncurses.gz +#opt/lampp/man/man3/TIFFClientOpen.3t +#opt/lampp/man/man3/ldap_delete_s.3 +#opt/lampp/man/man3/winstr.3ncurses.gz +#opt/lampp/man/man3/BIO_get_write_guarantee.3 +#opt/lampp/man/man3/move_field.3form.gz +#opt/lampp/man/man3/setscrreg.3ncurses.gz +#opt/lampp/man/man3/ERR_get_next_error_library.3 +#opt/lampp/man/man3/File::Spec.3 +#opt/lampp/man/man3/ExtUtils::MM_VMS.3 +#opt/lampp/man/man3/ERR_GET_FUNC.3 +#opt/lampp/man/man3/SSL_set_session_id_context.3 +#opt/lampp/man/man3/Symbol.3 +#opt/lampp/man/man3/DBI::ProxyServer.3 +#opt/lampp/man/man3/File::Temp.3 +#opt/lampp/man/man3/SSL_get_version.3 +#opt/lampp/man/man3/set_form_win.3form.gz +#opt/lampp/man/man3/EVP_MD_CTX_create.3 +#opt/lampp/man/man3/EVP_CipherFinal.3 +#opt/lampp/man/man3/BN_MONT_CTX_free.3 +#opt/lampp/man/man3/DBM_Filter::compress.3 +#opt/lampp/man/man3/ber_put_enum.3 +#opt/lampp/man/man3/box.3ncurses.gz +#opt/lampp/man/man3/ldap_t61_to_8859.3 +#opt/lampp/man/man3/BIO_set_mem_buf.3 +#opt/lampp/man/man3/bn_mul_recursive.3 +#opt/lampp/man/man3/TIFFcodec.3t +#opt/lampp/man/man3/_tracemouse.3ncurses.gz +#opt/lampp/man/man3/Tie::Array.3 +#opt/lampp/man/man3/EVP_PKEY_type.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_ctrl.3 +#opt/lampp/man/man3/ASN1_STRING_print_ex_fp.3 +#opt/lampp/man/man3/ASN1_generate_v3.3 +#opt/lampp/man/man3/Pod::Html.3 +#opt/lampp/man/man3/TIFFWriteEncodedTile.3t +#opt/lampp/man/man3/DES_enc_read.3 +#opt/lampp/man/man3/SSL_CTX_set_generate_session_id.3 +#opt/lampp/man/man3/MDC2_Update.3 +#opt/lampp/man/man3/SSL_CTX_sessions.3 +#opt/lampp/man/man3/Tie::Hash.3 +#opt/lampp/man/man3/tigetstr.3ncurses.gz +#opt/lampp/man/man3/Memoize::ExpireTest.3 +#opt/lampp/man/man3/Apache::Reload.3 +#opt/lampp/man/man3/free_fieldtype.3form.gz +#opt/lampp/man/man3/Apache2::Request.3 +#opt/lampp/man/man3/ByteLoader.3 +#opt/lampp/man/man3/File::Spec::Win32.3 +#opt/lampp/man/man3/ldap_init_searchprefs.3 +#opt/lampp/man/man3/Unicode::UCD.3 +#opt/lampp/man/man3/MD2_Update.3 +#opt/lampp/man/man3/fields.3 +#opt/lampp/man/man3/DH_compute_key.3 +#opt/lampp/man/man3/RSA_public_encrypt.3 +#opt/lampp/man/man3/wredrawln.3ncurses.gz +#opt/lampp/man/man3/Sys::Hostname.3 +#opt/lampp/man/man3/ExtUtils::MakeMaker::bytes.3 +#opt/lampp/man/man3/RSA_get_method.3 +#opt/lampp/man/man3/DBD::Sponge.3 +#opt/lampp/man/man3/ldap_compare_s.3 +#opt/lampp/man/man3/field_userptr.3form.gz +#opt/lampp/man/man3/attroff.3ncurses.gz +#opt/lampp/man/man3/Apache::TestRun.3 +#opt/lampp/man/man3/addch.3ncurses.gz +#opt/lampp/man/man3/DES_ofb64_encrypt.3 +#opt/lampp/man/man3/COLOR_PAIR.3ncurses.gz +#opt/lampp/man/man3/waddch.3ncurses.gz +#opt/lampp/man/man3/ldap_add_ext_s.3 +#opt/lampp/man/man3/form_field_userptr.3form.gz +#opt/lampp/man/man3/BN_nnmod.3 +#opt/lampp/man/man3/bn_mul_part_recursive.3 +#opt/lampp/man/man3/UI_new.3 +#opt/lampp/man/man3/TIFFWriteScanline.3t +#opt/lampp/man/man3/B::Debug.3 +#opt/lampp/man/man3/TIFFIsMSB2LSB.3t +#opt/lampp/man/man3/Apache2::Cookie.3 +#opt/lampp/man/man3/CGI::Push.3 +#opt/lampp/man/man3/TIFFReadEncodedTile.3t +#opt/lampp/man/man3/item_opts.3menu.gz +#opt/lampp/man/man3/Bundle::CPAN.3 +#opt/lampp/man/man3/ERR_get_error_line.3 +#opt/lampp/man/man3/Term::Cap.3 +#opt/lampp/man/man3/SSLeay.3 +#opt/lampp/man/man3/Net::netent.3 +#opt/lampp/man/man3/menu_back.3menu.gz +#opt/lampp/man/man3/d2i_X509_ALGOR.3 +#opt/lampp/man/man3/SSL_state_string_long.3 +#opt/lampp/man/man3/DES_ede3_cbc_encrypt.3 +#opt/lampp/man/man3/form.3form.gz +#opt/lampp/man/man3/BN_from_montgomery.3 +#opt/lampp/man/man3/Apache::Log.3 +#opt/lampp/man/man3/EVP_MAX_MD_SIZE.3 +#opt/lampp/man/man3/BIO_get_mem_data.3 +#opt/lampp/man/man3/IO::String.3 +#opt/lampp/man/man3/XSLoader.3 +#opt/lampp/man/man3/SSL_CTX_need_tmp_rsa.3 +#opt/lampp/man/man3/RAND_event.3 +#opt/lampp/man/man3/tgoto.3ncurses.gz +#opt/lampp/man/man3/Apache2::SizeLimit.3 +#opt/lampp/man/man3/mvaddnstr.3ncurses.gz +#opt/lampp/man/man3/Time::HiRes.3 +#opt/lampp/man/man3/Apache::TestRunPerl.3 +#opt/lampp/man/man3/curl_global_init_mem.3 +#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey_file.3 +#opt/lampp/man/man3/SSL_library_init.3 +#opt/lampp/man/man3/has_colors.3ncurses.gz +#opt/lampp/man/man3/BN_MONT_CTX_init.3 +#opt/lampp/man/man3/Exporter::Heavy.3 +#opt/lampp/man/man3/EVP_SealInit.3 +#opt/lampp/man/man3/SSL_CTX_get_ex_data.3 +#opt/lampp/man/man3/HTTP::Cookies::Netscape.3 +#opt/lampp/man/man3/menu_value.3menu.gz +#opt/lampp/man/man3/bn_internal.3 +#opt/lampp/man/man3/ldap_url_parse.3 +#opt/lampp/man/man3/BIO_do_connect.3 +#opt/lampp/man/man3/SSL_set_tmp_dh_callback.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_nid.3 +#opt/lampp/man/man3/BF_cfb64_encrypt.3 +#opt/lampp/man/man3/cbreak.3ncurses.gz +#opt/lampp/man/man3/default_colors.3ncurses.gz +#opt/lampp/man/man3/item_name.3menu.gz +#opt/lampp/man/man3/menu_fore.3menu.gz +#opt/lampp/man/man3/TIFFReadEncodedStrip.3t +#opt/lampp/man/man3/curl_multi_remove_handle.3 +#opt/lampp/man/man3/leaveok.3ncurses.gz +#opt/lampp/man/man3/new_form.3form.gz +#opt/lampp/man/man3/curl_formfree.3 +#opt/lampp/man/man3/Apache2::PerlSections.3 +#opt/lampp/man/man3/ldap_count_entries.3 +#opt/lampp/man/man3/mvinnstr.3ncurses.gz +#opt/lampp/man/man3/EVP_CIPHER_mode.3 +#opt/lampp/man/man3/B::Asmdata.3 +#opt/lampp/man/man3/ldap_result2error.3 +#opt/lampp/man/man3/UI_OpenSSL.3 +#opt/lampp/man/man3/bn_mul_comba4.3 +#opt/lampp/man/man3/bn_mul_comba8.3 +#opt/lampp/man/man3/DES_xcbc_encrypt.3 +#opt/lampp/man/man3/SSL_CTX_use_PrivateKey.3 +#opt/lampp/man/man3/Pod::Text::Termcap.3 +#opt/lampp/man/man3/URI::Heuristic.3 +#opt/lampp/man/man3/Apache2::Util.3 +#opt/lampp/man/man3/ModPerl::RegistryPrefork.3 +#opt/lampp/man/man3/EVP_DecryptInit_ex.3 +#opt/lampp/man/man3/BIO_new_socket.3 +#opt/lampp/man/man3/SSL_get_ciphers.3 +#opt/lampp/man/man3/BIO_ctrl_wpending.3 +#opt/lampp/man/man3/termcap.3ncurses.gz +#opt/lampp/man/man3/attrset.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::MakeMaker::Tutorial.3 +#opt/lampp/man/man3/BF_cbc_encrypt.3 +#opt/lampp/man/man3/Attribute::Handlers.3 +#opt/lampp/man/man3/RSA_print_fp.3 +#opt/lampp/man/man3/BN_div_word.3 +#opt/lampp/man/man3/TIFFFlushData.3t +#opt/lampp/man/man3/tigetnum.3ncurses.gz +#opt/lampp/man/man3/SSL_set_verify_depth.3 +#opt/lampp/man/man3/BIO_free_all.3 +#opt/lampp/man/man3/ExtUtils::Constant::Base.3 +#opt/lampp/man/man3/SSL_get_fd.3 +#opt/lampp/man/man3/EVP_DecryptFinal_ex.3 +#opt/lampp/man/man3/OBJ_nid2obj.3 +#opt/lampp/man/man3/IO::Pipe.3 +#opt/lampp/man/man3/PKCS7_sign.3 +#opt/lampp/man/man3/replace_panel.3curses.gz +#opt/lampp/man/man3/EVP_CIPHER_CTX_flags.3 +#opt/lampp/man/man3/DBI::ProfileDumper::Apache.3 +#opt/lampp/man/man3/Pod::LaTeX.3 +#opt/lampp/man/man3/menu_request_by_name.3menu.gz +#opt/lampp/man/man3/mvcur.3ncurses.gz +#opt/lampp/man/man3/Apache2::RequestUtil.3 +#opt/lampp/man/man3/libcurl-errors.3 +#opt/lampp/man/man3/DSA_SIG_free.3 +#opt/lampp/man/man3/_tracechtype.3ncurses.gz +#opt/lampp/man/man3/Apache2::Directive.3 +#opt/lampp/man/man3/EVP_OpenFinal.3 +#opt/lampp/man/man3/erasewchar.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::MM_Cygwin.3 +#opt/lampp/man/man3/SSL_use_PrivateKey_file.3 +#opt/lampp/man/man3/IO::Poll.3 +#opt/lampp/man/man3/BN_rand.3 +#opt/lampp/man/man3/APR::Pool.3 +#opt/lampp/man/man3/UI_new_method.3 +#opt/lampp/man/man3/SSL_CTX_sess_number.3 +#opt/lampp/man/man3/_tracedump.3ncurses.gz +#opt/lampp/man/man3/get_wstr.3ncurses.gz +#opt/lampp/man/man3/EVP_MD_CTX_size.3 +#opt/lampp/man/man3/RSA_print.3 +#opt/lampp/man/man3/panel_above.3curses.gz +#opt/lampp/man/man3/menu_sub.3menu.gz +#opt/lampp/man/man3/TIFFSwabArrayOfShort.3t +#opt/lampp/man/man3/dngettext.3 +#opt/lampp/man/man3/set_field_just.3form.gz +#opt/lampp/man/man3/CRYPTO_get_new_dynlockid.3 +#opt/lampp/man/man3/BUF_MEM_new.3 +#opt/lampp/man/man3/standend.3ncurses.gz +#opt/lampp/man/man3/RSA_public_decrypt.3 +#opt/lampp/man/man3/SSL_write.3 +#opt/lampp/man/man3/form_fields.3form.gz +#opt/lampp/man/man3/SSL_clear.3 +#opt/lampp/man/man3/BN_rshift.3 +#opt/lampp/man/man3/EVP_CIPHER_param_to_asn1.3 +#opt/lampp/man/man3/HTTP::Headers.3 +#opt/lampp/man/man3/ldap_set_rebind_proc.3 +#opt/lampp/man/man3/I18N::LangTags.3 +#opt/lampp/man/man3/I18N::Collate.3 +#opt/lampp/man/man3/d2i_DSA_PUBKEY.3 +#opt/lampp/man/man3/_tracechar.3ncurses.gz +#opt/lampp/man/man3/DBD::Proxy.3 +#opt/lampp/man/man3/ldap_get_dn.3 +#opt/lampp/man/man3/bn_set_max.3 +#opt/lampp/man/man3/ld_errno.3 +#opt/lampp/man/man3/ldap_abandon_ext.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_init.3 +#opt/lampp/man/man3/bn_set_low.3 +#opt/lampp/man/man3/DSA_do_sign.3 +#opt/lampp/man/man3/tigetflag.3ncurses.gz +#opt/lampp/man/man3/ber_get_int.3 +#opt/lampp/man/man3/attr.3ncurses.gz +#opt/lampp/man/man3/BIO_new_mem_buf.3 +#opt/lampp/man/man3/RSA_padding_check_PKCS1_OAEP.3 +#opt/lampp/man/man3/EVP_md_null.3 +#opt/lampp/man/man3/Apache::Test.3 +#opt/lampp/man/man3/ldap_search_ext_s.3 +#opt/lampp/man/man3/Opcode.3 +#opt/lampp/man/man3/SSL_alert_type_string.3 +#opt/lampp/man/man3/mvinnwstr.3ncurses.gz +#opt/lampp/man/man3/d2i_X509_CRL.3 +#opt/lampp/man/man3/ber_bvarray_free.3 +#opt/lampp/man/man3/CGI::Util.3 +#opt/lampp/man/man3/wins_nwstr.3ncurses.gz +#opt/lampp/man/man3/current_field.3form.gz +#opt/lampp/man/man3/BN_BLINDING_create_param.3 +#opt/lampp/man/man3/APR::Base64.3 +#opt/lampp/man/man3/ModPerl::BuildMM.3 +#opt/lampp/man/man3/EVP_PKEY_get1_DSA.3 +#opt/lampp/man/man3/X509_new.3 +#opt/lampp/man/man3/SSL_CTX_get_options.3 +#opt/lampp/man/man3/dupwin.3ncurses.gz +#opt/lampp/man/man3/Encode::JP::H2Z.3 +#opt/lampp/man/man3/set_menu_sub.3menu.gz +#opt/lampp/man/man3/BIO_s_connect.3 +#opt/lampp/man/man3/HTTP::Status.3 +#opt/lampp/man/man3/threads.3 +#opt/lampp/man/man3/ldap_is_dns_dn.3 +#opt/lampp/man/man3/i2d_X509_ALGOR.3 +#opt/lampp/man/man3/BIO_f_ssl.3 +#opt/lampp/man/man3/ASN1_STRING_type_new.3 +#opt/lampp/man/man3/HTML::TokeParser.3 +#opt/lampp/man/man3/ModPerl::Const.3 +#opt/lampp/man/man3/field_status.3form.gz +#opt/lampp/man/man3/IO::Socket.3 +#opt/lampp/man/man3/assume_default_colors.3ncurses.gz +#opt/lampp/man/man3/wenclose.3ncurses.gz +#opt/lampp/man/man3/APR::UUID.3 +#opt/lampp/man/man3/ldap_error.3 +#opt/lampp/man/man3/TIFFSwabArrayOfLong.3t +#opt/lampp/man/man3/slk_attron.3ncurses.gz +#opt/lampp/man/man3/NDBM_File.3 +#opt/lampp/man/man3/mvwget_wch.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_get_verify_mode.3 +#opt/lampp/man/man3/BUF_strdup.3 +#opt/lampp/man/man3/EVP_MD_CTX_type.3 +#opt/lampp/man/man3/d2i_X509_REQ.3 +#opt/lampp/man/man3/ASN1_OBJECT_free.3 +#opt/lampp/man/man3/mvgetch.3ncurses.gz +#opt/lampp/man/man3/BN_mod_mul_reciprocal.3 +#opt/lampp/man/man3/set_current_item.3menu.gz +#opt/lampp/man/man3/Net::Domain.3 +#opt/lampp/man/man3/d2i_X509_SIG.3 +#opt/lampp/man/man3/SSL_CTX_sess_get_cache_size.3 +#opt/lampp/man/man3/DES_cfb64_encrypt.3 +#opt/lampp/man/man3/border.3ncurses.gz +#opt/lampp/man/man3/ldap_friendly.3 +#opt/lampp/man/man3/scanw.3ncurses.gz +#opt/lampp/man/man3/RSA_get_ex_new_index.3 +#opt/lampp/man/man3/wscanw.3ncurses.gz +#opt/lampp/man/man3/APR::String.3 +#opt/lampp/man/man3/TIFFRGBAImageOK.3t +#opt/lampp/man/man3/ExtUtils::Packlist.3 +#opt/lampp/man/man3/form_request_by_name.3form.gz +#opt/lampp/man/man3/BN_hex2bn.3 +#opt/lampp/man/man3/ExtUtils::MakeMaker.3 +#opt/lampp/man/man3/BN_swap.3 +#opt/lampp/man/man3/ldap_simple_bind.3 +#opt/lampp/man/man3/set_max_field.3form.gz +#opt/lampp/man/man3/EVP_PKEY_get1_RSA.3 +#opt/lampp/man/man3/I18N::LangTags::List.3 +#opt/lampp/man/man3/Archive::Tar.3 +#opt/lampp/man/man3/OPENSSL_config.3 +#opt/lampp/man/man3/OpenSSL_add_all_ciphers.3 +#opt/lampp/man/man3/lber-memory.3 +#opt/lampp/man/man3/SSL_CTX_set_cipher_list.3 +#opt/lampp/man/man3/d2i_RSA_PUBKEY.3 +#opt/lampp/man/man3/BN_ucmp.3 +#opt/lampp/man/man3/ldap_count_values.3 +#opt/lampp/man/man3/bn_sqr_words.3 +#opt/lampp/man/man3/clrtoeol.3ncurses.gz +#opt/lampp/man/man3/wborder.3ncurses.gz +#opt/lampp/man/man3/in_wchstr.3ncurses.gz +#opt/lampp/man/man3/File::Spec::Cygwin.3 +#opt/lampp/man/man3/ldap_search.3 +#opt/lampp/man/man3/set_menu_opts.3menu.gz +#opt/lampp/man/man3/APR::OS.3 +#opt/lampp/man/man3/SSL_SESSION_get_timeout.3 +#opt/lampp/man/man3/SSL_set_tmp_dh.3 +#opt/lampp/man/man3/RAND_add.3 +#opt/lampp/man/man3/wattroff.3ncurses.gz +#opt/lampp/man/man3/BIO_ctrl_pending.3 +#opt/lampp/man/man3/vidattr.3ncurses.gz +#opt/lampp/man/man3/scr_set.3ncurses.gz +#opt/lampp/man/man3/PKCS7_verify.3 +#opt/lampp/man/man3/DES_pcbc_encrypt.3 +#opt/lampp/man/man3/inchstr.3ncurses.gz +#opt/lampp/man/man3/i2d_X509_REQ_fp.3 +#opt/lampp/man/man3/ldap_syntax2str.3 +#opt/lampp/man/man3/slk.3ncurses.gz +#opt/lampp/man/man3/ber_bvarray_add.3 +#opt/lampp/man/man3/DH_set_method.3 +#opt/lampp/man/man3/mhash.3 +#opt/lampp/man/man3/termattrs.3ncurses.gz +#opt/lampp/man/man3/RAND_egd.3 +#opt/lampp/man/man3/SSL_remove_session.3 +#opt/lampp/man/man3/form_opts_on.3form.gz +#opt/lampp/man/man3/ModPerl::PerlRunPrefork.3 +#opt/lampp/man/man3/SSL_get_max_cert_list.3 +#opt/lampp/man/man3/RSA_null_method.3 +#opt/lampp/man/man3/i2d_DSA_SIG.3 +#opt/lampp/man/man3/LWP::ConnCache.3 +#opt/lampp/man/man3/ber_get_stringa.3 +#opt/lampp/man/man3/ber_get_stringb.3 +#opt/lampp/man/man3/d2i_X509_bio.3 +#opt/lampp/man/man3/MD5_Init.3 +#opt/lampp/man/man3/SHA1_Update.3 +#opt/lampp/man/man3/APR::PerlIO.3 +#opt/lampp/man/man3/TIFFsize.3t +#opt/lampp/man/man3/BIO_get_info_callback.3 +#opt/lampp/man/man3/BN_MONT_CTX_new.3 +#opt/lampp/man/man3/TIFFVTileSize.3t +#opt/lampp/man/man3/ber_put_null.3 +#opt/lampp/man/man3/attributes.3 +#opt/lampp/man/man3/SSL_CTX_set_msg_callback_arg.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_mode.3 +#opt/lampp/man/man3/_traceattr.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_get_quiet_shutdown.3 +#opt/lampp/man/man3/RSA_check_key.3 +#opt/lampp/man/man3/box_set.3ncurses.gz +#opt/lampp/man/man3/DBI::ProfileDumper.3 +#opt/lampp/man/man3/APR::BucketAlloc.3 +#opt/lampp/man/man3/ldap_translate_from_t61.3 +#opt/lampp/man/man3/BN_MONT_CTX_set.3 +#opt/lampp/man/man3/ins_wstr.3ncurses.gz +#opt/lampp/man/man3/mvdelch.3ncurses.gz +#opt/lampp/man/man3/BN_BLINDING_set_flags.3 +#opt/lampp/man/man3/BIO_get_mem_ptr.3 +#opt/lampp/man/man3/wget_wstr.3ncurses.gz +#opt/lampp/man/man3/APR::Util.3 +#opt/lampp/man/man3/BN_mul_word.3 +#opt/lampp/man/man3/bn_sqr_recursive.3 +#opt/lampp/man/man3/_traceattr2.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::Constant::XS.3 +#opt/lampp/man/man3/BIO_get_retry_BIO.3 +#opt/lampp/man/man3/B::Lint.3 +#opt/lampp/man/man3/EVP_dss1.3 +#opt/lampp/man/man3/bn_wexpand.3 +#opt/lampp/man/man3/lh_doall.3 +#opt/lampp/man/man3/wstandend.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::MakeMaker::vmsish.3 +#opt/lampp/man/man3/i2d_DSA_PUBKEY.3 +#opt/lampp/man/man3/SSL_use_certificate.3 +#opt/lampp/man/man3/Test::Simple.3 +#opt/lampp/man/man3/DBI::DBD.3 +#opt/lampp/man/man3/new.3menu.gz +#opt/lampp/man/man3/EVP_ripemd160.3 +#opt/lampp/man/man3/ldap_errlist.3 +#opt/lampp/man/man3/List::Util.3 +#opt/lampp/man/man3/mvaddstr.3ncurses.gz +#opt/lampp/man/man3/DBI::FAQ.3 +#opt/lampp/man/man3/set_form_fields.3form.gz +#opt/lampp/man/man3/mvinstr.3ncurses.gz +#opt/lampp/man/man3/Pod::Text.3 +#opt/lampp/man/man3/set_item_value.3menu.gz +#opt/lampp/man/man3/Pod::PlainText.3 +#opt/lampp/man/man3/curl_version.3 +#opt/lampp/man/man3/ldap_objectclass_free.3 +#opt/lampp/man/man3/ldap_set_string_translators.3 +#opt/lampp/man/man3/Test::Builder.3 +#opt/lampp/man/man3/HTML::PullParser.3 +#opt/lampp/man/man3/File::Basename.3 +#opt/lampp/man/man3/mvgetnstr.3ncurses.gz +#opt/lampp/man/man3/wattrset.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::Miniperl.3 +#opt/lampp/man/man3/MIME::Base64.3 +#opt/lampp/man/man3/form_data.3form.gz +#opt/lampp/man/man3/d2i_X509.3 +#opt/lampp/man/man3/CRYPTO_set_dynlock_lock_callback.3 +#opt/lampp/man/man3/RAND_status.3 +#opt/lampp/man/man3/menu_current.3menu.gz +#opt/lampp/man/man3/ModPerl::Registry.3 +#opt/lampp/man/man3/EVP_CIPHER_type.3 +#opt/lampp/man/man3/EVP_CIPHER_iv_length.3 +#opt/lampp/man/man3/SSL_CTX_sess_get_get_cb.3 +#opt/lampp/man/man3/EVP_CIPHER_flags.3 +#opt/lampp/man/man3/EVP_SealUpdate.3 +#opt/lampp/man/man3/EVP_PKEY_set1_DSA.3 +#opt/lampp/man/man3/wtouchln.3ncurses.gz +#opt/lampp/man/man3/mvwhline.3ncurses.gz +#opt/lampp/man/man3/BIO_set_close.3 +#opt/lampp/man/man3/pechochar.3ncurses.gz +#opt/lampp/man/man3/DSA_free.3 +#opt/lampp/man/man3/TIFFbuffer.3t +#opt/lampp/man/man3/ExtUtils::Installed.3 +#opt/lampp/man/man3/curl_escape.3 +#opt/lampp/man/man3/SSL_set_generate_session_id.3 +#opt/lampp/man/man3/ber_first_element.3 +#opt/lampp/man/man3/B::Stackobj.3 +#opt/lampp/man/man3/ngettext.3 +#opt/lampp/man/man3/base.3 +#opt/lampp/man/man3/DBD::DBM.3 +#opt/lampp/man/man3/winch.3ncurses.gz +#opt/lampp/man/man3/RIPEMD160_Update.3 +#opt/lampp/man/man3/SSL_CTX_check_private_key.3 +#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey.3 +#opt/lampp/man/man3/SSL_CTX_sess_accept_good.3 +#opt/lampp/man/man3/getbkgrnd.3ncurses.gz +#opt/lampp/man/man3/ldap_disptmpl.3 +#opt/lampp/man/man3/Apache::ServerUtil.3 +#opt/lampp/man/man3/SSL_set_client_CA_list.3 +#opt/lampp/man/man3/addnstr.3ncurses.gz +#opt/lampp/man/man3/TIFFReadTile.3t +#opt/lampp/man/man3/TIFFReadRGBATile.3t +#opt/lampp/man/man3/pair_content.3ncurses.gz +#opt/lampp/man/man3/engine.3 +#opt/lampp/man/man3/Text::ParseWords.3 +#opt/lampp/man/man3/SSL_alert_type_string_long.3 +#opt/lampp/man/man3/refresh.3ncurses.gz +#opt/lampp/man/man3/Memoize::NDBM_File.3 +#opt/lampp/man/man3/is_linetouched.3ncurses.gz +#opt/lampp/man/man3/ldap_sort_strcasecmp.3 +#opt/lampp/man/man3/SSL_add_session.3 +#opt/lampp/man/man3/BN_is_word.3 +#opt/lampp/man/man3/EVP_EncryptFinal_ex.3 +#opt/lampp/man/man3/BN_value_one.3 +#opt/lampp/man/man3/Encode::Guess.3 +#opt/lampp/man/man3/charnames.3 +#opt/lampp/man/man3/Bundle::DBD::mysql.3 +#opt/lampp/man/man3/BIO_get_md_ctx.3 +#opt/lampp/man/man3/ldap_simple_bind_s.3 +#opt/lampp/man/man3/cldap_setretryinfo.3 +#opt/lampp/man/man3/scale_form.3form.gz +#opt/lampp/man/man3/BN_CTX_start.3 +#opt/lampp/man/man3/form_field_just.3form.gz +#opt/lampp/man/man3/EVP_PKEY_set1_RSA.3 +#opt/lampp/man/man3/menu_visible.3menu.gz +#opt/lampp/man/man3/blib.3 +#opt/lampp/man/man3/APR::Socket.3 +#opt/lampp/man/man3/curl_multi_perform.3 +#opt/lampp/man/man3/curl_multi_add_handle.3 +#opt/lampp/man/man3/mvaddch.3ncurses.gz +#opt/lampp/man/man3/EVP_CipherFinal_ex.3 +#opt/lampp/man/man3/TIFFSwabLong.3t +#opt/lampp/man/man3/mvwins_nwstr.3ncurses.gz +#opt/lampp/man/man3/RSA_verify_ASN1_OCTET_STRING.3 +#opt/lampp/man/man3/Apache::Build.3 +#opt/lampp/man/man3/i2d_RSA_PUBKEY.3 +#opt/lampp/man/man3/bn_check_top.3 +#opt/lampp/man/man3/UI_dup_input_string.3 +#opt/lampp/man/man3/waddchnstr.3ncurses.gz +#opt/lampp/man/man3/SSL_set_shutdown.3 +#opt/lampp/man/man3/curl_slist_free_all.3 +#opt/lampp/man/man3/BN_zero.3 +#opt/lampp/man/man3/Archive::Tar::Win32.3 +#opt/lampp/man/man3/nl.3ncurses.gz +#opt/lampp/man/man3/English.3 +#opt/lampp/man/man3/TIFFRewriteDirectory.3t +#opt/lampp/man/man3/ERR_peek_error.3 +#opt/lampp/man/man3/DES_ecb3_encrypt.3 +#opt/lampp/man/man3/free_form.3form.gz +#opt/lampp/man/man3/ASN1_STRING_length_set.3 +#opt/lampp/man/man3/SSL_CTX_sess_set_new_cb.3 +#opt/lampp/man/man3/Encode::Alias.3 +#opt/lampp/man/man3/EVP_SignInit.3 +#opt/lampp/man/man3/field_opts_off.3form.gz +#opt/lampp/man/man3/CRYPTO_set_ex_data.3 +#opt/lampp/man/man3/wclrtoeol.3ncurses.gz +#opt/lampp/man/man3/set_field_userptr.3form.gz +#opt/lampp/man/man3/ldap_next_disptmpl.3 +#opt/lampp/man/man3/File::Spec::Mac.3 +#opt/lampp/man/man3/File::Spec::OS2.3 +#opt/lampp/man/man3/mvinsstr.3ncurses.gz +#opt/lampp/man/man3/PerlIO::encoding.3 +#opt/lampp/man/man3/Thread.3 +#opt/lampp/man/man3/Memoize::Storable.3 +#opt/lampp/man/man3/SMIME_write_PKCS7.3 +#opt/lampp/man/man3/RSA_padding_check_PKCS1_type_1.3 +#opt/lampp/man/man3/RSA_padding_check_PKCS1_type_2.3 +#opt/lampp/man/man3/term_attrs.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_get_cert_store.3 +#opt/lampp/man/man3/set_fieldtype_arg.3form.gz +#opt/lampp/man/man3/pattern.3menu.gz +#opt/lampp/man/man3/Math::BigInt.3 +#opt/lampp/man/man3/SSL_set_verify.3 +#opt/lampp/man/man3/Tie::Scalar.3 +#opt/lampp/man/man3/d2i_509_CRL_fp.3 +#opt/lampp/man/man3/insdelln.3ncurses.gz +#opt/lampp/man/man3/ldap_delete.3 +#opt/lampp/man/man3/wcolor_set.3ncurses.gz +#opt/lampp/man/man3/constant.3 +#opt/lampp/man/man3/link_field.3form.gz +#opt/lampp/man/man3/HMAC_cleanup.3 +#opt/lampp/man/man3/RSA_private_encrypt.3 +#opt/lampp/man/man3/RSA_sign_ASN1_OCTET_STRING.3 +#opt/lampp/man/man3/EVP_SignFinal.3 +#opt/lampp/man/man3/mvadd_wch.3ncurses.gz +#opt/lampp/man/man3/HTTP::Headers::Util.3 +#opt/lampp/man/man3/File::Spec::VMS.3 +#opt/lampp/man/man3/TIFFNumberOfTiles.3t +#opt/lampp/man/man3/mvaddwstr.3ncurses.gz +#opt/lampp/man/man3/Locale::Maketext::TPJ13.3 +#opt/lampp/man/man3/ldap_disable_cache.3 +#opt/lampp/man/man3/menu_opts_on.3menu.gz +#opt/lampp/man/man3/Net::SSLeay::Handle.3 +#opt/lampp/man/man3/Test::Tutorial.3 +#opt/lampp/man/man3/IO::Zlib.3 +#opt/lampp/man/man3/B::CC.3 +#opt/lampp/man/man3/RAND_seed.3 +#opt/lampp/man/man3/UI_dup_verify_string.3 +#opt/lampp/man/man3/Math::BigRat.3 +#opt/lampp/man/man3/ldap_add_ext.3 +#opt/lampp/man/man3/ldap_friendly_name.3 +#opt/lampp/man/man3/BN_is_zero.3 +#opt/lampp/man/man3/SSLeay_add_ssl_algorithms.3 +#opt/lampp/man/man3/BIO_get_fd.3 +#opt/lampp/man/man3/BIO_get_fp.3 +#opt/lampp/man/man3/X509_NAME_print_ex.3 +#opt/lampp/man/man3/BIO_get_md.3 +#opt/lampp/man/man3/Apache2::Process.3 +#opt/lampp/man/man3/RC4_set_key.3 +#opt/lampp/man/man3/mvwin_wchnstr.3ncurses.gz +#opt/lampp/man/man3/ldap_modrdn2 +#opt/lampp/man/man3/overlay.3ncurses.gz +#opt/lampp/man/man3/insch.3ncurses.gz +#opt/lampp/man/man3/EVP_get_cipherbynid.3 +#opt/lampp/man/man3/EVP_get_cipherbyobj.3 +#opt/lampp/man/man3/untouchwin.3ncurses.gz +#opt/lampp/man/man3/SSL_alert_desc_string.3 +#opt/lampp/man/man3/winsch.3ncurses.gz +#opt/lampp/man/man3/BIO_ctrl.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_NID.3 +#opt/lampp/man/man3/ldap_get_values.3 +#opt/lampp/man/man3/mvin_wch.3ncurses.gz +#opt/lampp/man/man3/util.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_set_ssl_version.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_OBJ.3 +#opt/lampp/man/man3/BIO_get_conn_port.3 +#opt/lampp/man/man3/Apache2::SubRequest.3 +#opt/lampp/man/man3/SSL_CTX_sess_accept_renegotiate.3 +#opt/lampp/man/man3/mvinwstr.3ncurses.gz +#opt/lampp/man/man3/slk_noutrefresh.3ncurses.gz +#opt/lampp/man/man3/wins_wstr.3ncurses.gz +#opt/lampp/man/man3/SSL_set_info_callback.3 +#opt/lampp/man/man3/BIO_callback_ctrl.3 +#opt/lampp/man/man3/win_wchnstr.3ncurses.gz +#opt/lampp/man/man3/lwpcook.3 +#opt/lampp/man/man3/des_read_password.3 +#opt/lampp/man/man3/mvwinnstr.3ncurses.gz +#opt/lampp/man/man3/ldap_err2string.3 +#opt/lampp/man/man3/DES_ede2_ofb64_encrypt.3 +#opt/lampp/man/man3/SSL_get_SSL_CTX.3 +#opt/lampp/man/man3/CGI::Cookie.3 +#opt/lampp/man/man3/SSL_use_certificate_ASN1.3 +#opt/lampp/man/man3/bn_mul_high.3 +#opt/lampp/man/man3/URI::data.3 +#opt/lampp/man/man3/innwstr.3ncurses.gz +#opt/lampp/man/man3/SSL_get_peer_certificate.3 +#opt/lampp/man/man3/winchstr.3ncurses.gz +#opt/lampp/man/man3/move_panel.3curses.gz +#opt/lampp/man/man3/vidputs.3ncurses.gz +#opt/lampp/man/man3/DSA_verify.3 +#opt/lampp/man/man3/def_prog_mode.3ncurses.gz +#opt/lampp/man/man3/ERR_func_error_string.3 +#opt/lampp/man/man3/BIO_f_md.3 +#opt/lampp/man/man3/SSL_SESSION_get_ex_new_index.3 +#opt/lampp/man/man3/LWP::Protocol.3 +#opt/lampp/man/man3/wsyncup.3ncurses.gz +#opt/lampp/man/man3/APR::Request.3 +#opt/lampp/man/man3/EVP_DigestFinal_ex.3 +#opt/lampp/man/man3/BN_set_bit.3 +#opt/lampp/man/man3/mvwinsnstr.3ncurses.gz +#opt/lampp/man/man3/Locale::Script.3 +#opt/lampp/man/man3/ldap_ufn_setfilter.3 +#opt/lampp/man/man3/set_menu_init.3menu.gz +#opt/lampp/man/man3/EVP_dss.3 +#opt/lampp/man/man3/noecho.3ncurses.gz +#opt/lampp/man/man3/EVP_PKEY_set1_DH.3 +#opt/lampp/man/man3/DES_cbc_cksum.3 +#opt/lampp/man/man3/i2d_X509_CRL.3 +#opt/lampp/man/man3/ERR_get_error_line_data.3 +#opt/lampp/man/man3/DSA_set_ex_data.3 +#opt/lampp/man/man3/setsyx.3ncurses.gz +#opt/lampp/man/man3/gdbm.3 +#opt/lampp/man/man3/SSL_CTX_sess_hits.3 +#opt/lampp/man/man3/subpad.3ncurses.gz +#opt/lampp/man/man3/set_form_term.3form.gz +#opt/lampp/man/man3/SSL_CTX_set_msg_callback.3 +#opt/lampp/man/man3/define_key.3ncurses.gz +#opt/lampp/man/man3/CPAN::WAIT.3 +#opt/lampp/man/man3/RSA_padding_add_SSLv23.3 +#opt/lampp/man/man3/EVP_md2.3 +#opt/lampp/man/man3/EVP_md5.3 +#opt/lampp/man/man3/Tie::Memoize.3 +#opt/lampp/man/man3/menu_items.3menu.gz +#opt/lampp/man/man3/tgetstr.3ncurses.gz +#opt/lampp/man/man3/d2i_X509_CRL_bio.3 +#opt/lampp/man/man3/d2i_DSAPublicKey.3 +#opt/lampp/man/man3/Class::ISA.3 +#opt/lampp/man/man3/SSLeay_version.3 +#opt/lampp/man/man3/BIO_set_conn_int_port.3 +#opt/lampp/man/man3/killwchar.3ncurses.gz +#opt/lampp/man/man3/ldap_value_free_len.3 +#opt/lampp/man/man3/TIFFWriteBufferSetup.3t +#opt/lampp/man/man3/EVP_CIPHER_CTX_type.3 +#opt/lampp/man/man3/BIO_set_callback.3 +#opt/lampp/man/man3/attron.3ncurses.gz +#opt/lampp/man/man3/Apache2::Status.3 +#opt/lampp/man/man3/set_field_opts.3form.gz +#opt/lampp/man/man3/wscrl.3ncurses.gz +#opt/lampp/man/man3/new_item.3menu.gz +#opt/lampp/man/man3/blowfish.3 +#opt/lampp/man/man3/Apache2::CmdParms.3 +#opt/lampp/man/man3/BIO_gets.3 +#opt/lampp/man/man3/EVP_sha.3 +#opt/lampp/man/man3/BIO_free.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_set_key_length.3 +#opt/lampp/man/man3/Test::Harness::Iterator.3 +#opt/lampp/man/man3/bn_cmp_words.3 +#opt/lampp/man/man3/EVP_mdc2.3 +#opt/lampp/man/man3/i2d_X509_REQ.3 +#opt/lampp/man/man3/slk_restore.3ncurses.gz +#opt/lampp/man/man3/i2d_X509_SIG.3 +#opt/lampp/man/man3/EVP_EncryptInit_ex.3 +#opt/lampp/man/man3/BIO_write_filename.3 +#opt/lampp/man/man3/win.3menu.gz +#opt/lampp/man/man3/form_sub.3form.gz +#opt/lampp/man/man3/wattron.3ncurses.gz +#opt/lampp/man/man3/DBI::Const::GetInfo::ANSI.3 +#opt/lampp/man/man3/immedok.3ncurses.gz +#opt/lampp/man/man3/menu_format.3menu.gz +#opt/lampp/man/man3/Text::Soundex.3 +#opt/lampp/man/man3/BIO_set_accept_bios.3 +#opt/lampp/man/man3/RSA_private_decrypt.3 +#opt/lampp/man/man3/curl_unescape.3 +#opt/lampp/man/man3/RAND_get_rand_method.3 +#opt/lampp/man/man3/free_field.3form.gz +#opt/lampp/man/man3/URI::file.3 +#opt/lampp/man/man3/new_fieldtype.3form.gz +#opt/lampp/man/man3/reset_prog_mode.3ncurses.gz +#opt/lampp/man/man3/field_attributes.3form.gz +#opt/lampp/man/man3/RSA_verify.3 +#opt/lampp/man/man3/hmac.3 +#opt/lampp/man/man3/SSL_CTX_set_tmp_rsa_callback.3 +#opt/lampp/man/man3/set_current_field.3form.gz +#opt/lampp/man/man3/TIFFReadBufferSetup.3t +#opt/lampp/man/man3/mvwchgat.3ncurses.gz +#opt/lampp/man/man3/delay_output.3ncurses.gz +#opt/lampp/man/man3/SSL_add_client_CA.3 +#opt/lampp/man/man3/TIFFtile.3t +#opt/lampp/man/man3/d2i_PKCS8PrivateKey_bio.3 +#opt/lampp/man/man3/set_item_opts.3menu.gz +#opt/lampp/man/man3/SSL_want_x509_lookup.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_create_by_txt.3 +#opt/lampp/man/man3/SSL_CTX_callback_ctrl.3 +#opt/lampp/man/man3/BIO_pending.3 +#opt/lampp/man/man3/B::Showlex.3 +#opt/lampp/man/man3/ldap_url_search.3 +#opt/lampp/man/man3/Encode::CN.3 +#opt/lampp/man/man3/set_menu_back.3menu.gz +#opt/lampp/man/man3/winsdelln.3ncurses.gz +#opt/lampp/man/man3/beep.3ncurses.gz +#opt/lampp/man/man3/Encode::JP.3 +#opt/lampp/man/man3/Encode::KR.3 +#opt/lampp/man/man3/DES_set_odd_parity.3 +#opt/lampp/man/man3/ldap_msgid.3 +#opt/lampp/man/man3/CRYPTO_destroy_dynlockid.3 +#opt/lampp/man/man3/mvscanw.3ncurses.gz +#opt/lampp/man/man3/Encode::TW.3 +#opt/lampp/man/man3/requestname.3menu.gz +#opt/lampp/man/man3/mvinchnstr.3ncurses.gz +#opt/lampp/man/man3/field_info.3form.gz +#opt/lampp/man/man3/waddnstr.3ncurses.gz +#opt/lampp/man/man3/SSL_set_bio.3 +#opt/lampp/man/man3/curl_easy_cleanup.3 +#opt/lampp/man/man3/Memoize.3 +#opt/lampp/man/man3/EVP_EncryptFinal.3 +#opt/lampp/man/man3/del_curterm.3ncurses.gz +#opt/lampp/man/man3/ASN1_generate_nconf.3 +#opt/lampp/man/man3/is_term_resized.3ncurses.gz +#opt/lampp/man/man3/ERR_clear_error.3 +#opt/lampp/man/man3/curl_share_cleanup.3 +#opt/lampp/man/man3/wrefresh.3ncurses.gz +#opt/lampp/man/man3/Pod::ParseUtils.3 +#opt/lampp/man/man3/i2d_X509_bio.3 +#opt/lampp/man/man3/new.3form.gz +#opt/lampp/man/man3/mvinch.3ncurses.gz +#opt/lampp/man/man3/TIFFFindCODEC.3t +#opt/lampp/man/man3/show_panel.3curses.gz +#opt/lampp/man/man3/BIO_set_nbio.3 +#opt/lampp/man/man3/set_form_sub.3form.gz +#opt/lampp/man/man3/DSAparams_print.3 +#opt/lampp/man/man3/current_item.3menu.gz +#opt/lampp/man/man3/curl_share_setopt.3 +#opt/lampp/man/man3/mvwaddchnstr.3ncurses.gz +#opt/lampp/man/man3/Storable.3 +#opt/lampp/man/man3/BIO_flush.3 +#opt/lampp/man/man3/SSL_get_ex_data_X509_STORE_CTX_idx.3 +#opt/lampp/man/man3/ldap_init_templates.3 +#opt/lampp/man/man3/SSL_CTX_sess_connect_renegotiate.3 +#opt/lampp/man/man3/bn_mul_add_words.3 +#opt/lampp/man/man3/SSL_CTX_set_max_cert_list.3 +#opt/lampp/man/man3/use_env.3ncurses.gz +#opt/lampp/man/man3/UI_dup_info_string.3 +#opt/lampp/man/man3/addchstr.3ncurses.gz +#opt/lampp/man/man3/set_menu_fore.3menu.gz +#opt/lampp/man/man3/SelfLoader.3 +#opt/lampp/man/man3/APR::Request::Param.3 +#opt/lampp/man/man3/ldap_setfilteraffixes.3 +#opt/lampp/man/man3/keypad.3ncurses.gz +#opt/lampp/man/man3/EVP_DecryptFinal.3 +#opt/lampp/man/man3/Math::Complex.3 +#opt/lampp/man/man3/ldap_tmplattrs.3 +#opt/lampp/man/man3/ber_get_bitstring.3 +#opt/lampp/man/man3/vw_scanw.3ncurses.gz +#opt/lampp/man/man3/ber_printf.3 +#opt/lampp/man/man3/getbegx.3ncurses.gz +#opt/lampp/man/man3/ldap_getfirstfilter.3 +#opt/lampp/man/man3/tgetnum.3ncurses.gz +#opt/lampp/man/man3/TIFFReadRGBAImage.3t +#opt/lampp/man/man3/ldap_objectclass2str.3 +#opt/lampp/man/man3/TIFFswab.3t +#opt/lampp/man/man3/BIO_ctrl_reset_read_request.3 +#opt/lampp/man/man3/ExtUtils::MM_Win32.3 +#opt/lampp/man/man3/SSL_CTX_load_verify_locations.3 +#opt/lampp/man/man3/ldap_first_entry.3 +#opt/lampp/man/man3/ExtUtils::MM_Win95.3 +#opt/lampp/man/man3/getnstr.3ncurses.gz +#opt/lampp/man/man3/TIFFCurrentTile.3t +#opt/lampp/man/man3/Term::ANSIColor.3 +#opt/lampp/man/man3/TIFFrealloc.3t +#opt/lampp/man/man3/BIO_new_ssl.3 +#opt/lampp/man/man3/ModPerl::MM.3 +#opt/lampp/man/man3/curl_strequal.3 +#opt/lampp/man/man3/Roadmap.3 +#opt/lampp/man/man3/pnoutrefresh.3ncurses.gz +#opt/lampp/man/man3/i2d_X509_NAME.3 +#opt/lampp/man/man3/Pod::Parser.3 +#opt/lampp/man/man3/BN_add.3 +#opt/lampp/man/man3/Pod::InputObjects.3 +#opt/lampp/man/man3/BN_cmp.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_iv_length.3 +#opt/lampp/man/man3/filter.3ncurses.gz +#opt/lampp/man/man3/BN_div.3 +#opt/lampp/man/man3/echo.3ncurses.gz +#opt/lampp/man/man3/new_panel.3curses.gz +#opt/lampp/man/man3/CONF_modules_unload.3 +#opt/lampp/man/man3/ModPerl::MethodLookup.3 +#opt/lampp/man/man3/form_driver.3form.gz +#opt/lampp/man/man3/BN_dup.3 +#opt/lampp/man/man3/link_fieldtype.3form.gz +#opt/lampp/man/man3/ldap.3 +#opt/lampp/man/man3/BN_gcd.3 +#opt/lampp/man/man3/BN_exp.3 +#opt/lampp/man/man3/TIFFFlush.3t +#opt/lampp/man/man3/DES_ede2_cfb64_encrypt.3 +#opt/lampp/man/man3/ERR_peek_error_line_data.3 +#opt/lampp/man/man3/less.3 +#opt/lampp/man/man3/filetest.3 +#opt/lampp/man/man3/ldap_scherr2str.3 +#opt/lampp/man/man3/CRYPTO_get_ex_data.3 +#opt/lampp/man/man3/SHA1_Init.3 +#opt/lampp/man/man3/TIFFGetMode.3t +#opt/lampp/man/man3/Apache::TestMB.3 +#opt/lampp/man/man3/Apache::TestMM.3 +#opt/lampp/man/man3/BIO_set_mem_eof_return.3 +#opt/lampp/man/man3/BN_mod.3 +#opt/lampp/man/man3/mvin_wchstr.3ncurses.gz +#opt/lampp/man/man3/BN_new.3 +#opt/lampp/man/man3/BN_mul.3 +#opt/lampp/man/man3/getcurx.3ncurses.gz +#opt/lampp/man/man3/BN_one.3 +#opt/lampp/man/man3/RSA_PKCS1_SSLeay.3 +#opt/lampp/man/man3/Net::Telnet.3 +#opt/lampp/man/man3/Pod::Man.3 +#opt/lampp/man/man3/halfdelay.3ncurses.gz +#opt/lampp/man/man3/pos_form_cursor.3form.gz +#opt/lampp/man/man3/mdc2.3 +#opt/lampp/man/man3/slk_label.3ncurses.gz +#opt/lampp/man/man3/ldap_uncache_request.3 +#opt/lampp/man/man3/Apache2::compat.3 +#opt/lampp/man/man3/ins_nwstr.3ncurses.gz +#opt/lampp/man/man3/SSL_get_verify_mode.3 +#opt/lampp/man/man3/EVP_PKEY_get1_DH.3 +#opt/lampp/man/man3/mvget_wch.3ncurses.gz +#opt/lampp/man/man3/mcprint.3ncurses.gz +#opt/lampp/man/man3/EVP_CIPHER_CTX_set_padding.3 +#opt/lampp/man/man3/BN_sqr.3 +#opt/lampp/man/man3/SSL_CTX_set_tmp_rsa.3 +#opt/lampp/man/man3/BN_sub.3 +#opt/lampp/man/man3/mvwaddstr.3ncurses.gz +#opt/lampp/man/man3/EVP_CIPHER_key_length.3 +#opt/lampp/man/man3/B::Xref.3 +#opt/lampp/man/man3/DSAparams_print_fp.3 +#opt/lampp/man/man3/TIFFFileName.3t +#opt/lampp/man/man3/winnwstr.3ncurses.gz +#opt/lampp/man/man3/HTTP::Daemon.3 +#opt/lampp/man/man3/getparyx.3ncurses.gz +#opt/lampp/man/man3/ber_start_set.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_get_data.3 +#opt/lampp/man/man3/ldap_add_s.3 +#opt/lampp/man/man3/EVP_VerifyInit.3 +#opt/lampp/man/man3/TIFFLastDirectory.3t +#opt/lampp/man/man3/UI_add_input_string.3 +#opt/lampp/man/man3/Apache::TestRequest.3 +#opt/lampp/man/man3/gettext.3 +#opt/lampp/man/man3/bn_mul_words.3 +#opt/lampp/man/man3/AnyDBM_File.3 +#opt/lampp/man/man3/mvwinch.3ncurses.gz +#opt/lampp/man/man3/prefresh.3ncurses.gz +#opt/lampp/man/man3/ldap_parse_reference.3 +#opt/lampp/man/man3/curl_easy_reset.3 +#opt/lampp/man/man3/SSL_set_cipher_list.3 +#opt/lampp/man/man3/DSA_sign.3 +#opt/lampp/man/man3/SSL_set_session.3 +#opt/lampp/man/man3/OBJ_obj2nid.3 +#opt/lampp/man/man3/User::pwent.3 +#opt/lampp/man/man3/ldap_str2objectclass.3 +#opt/lampp/man/man3/B::Bytecode.3 +#opt/lampp/man/man3/DSA_size.3 +#opt/lampp/man/man3/ldap_next_attribute.3 +#opt/lampp/man/man3/add_wch.3ncurses.gz +#opt/lampp/man/man3/URI::ldap.3 +#opt/lampp/man/man3/addwstr.3ncurses.gz +#opt/lampp/man/man3/Test::Harness::Straps.3 +#opt/lampp/man/man3/set_menu_format.3menu.gz +#opt/lampp/man/man3/TIFFfree.3t +#opt/lampp/man/man3/BN_CTX_free.3 +#opt/lampp/man/man3/Apache2::FilterRec.3 +#opt/lampp/man/man3/PKCS12_parse.3 +#opt/lampp/man/man3/libcurl-easy.3 +#opt/lampp/man/man3/SSL_set_fd.3 +#opt/lampp/man/man3/SSL_CTX_set_quiet_shutdown.3 +#opt/lampp/man/man3/EVP_sha1.3 +#opt/lampp/man/man3/TIFFmalloc.3t +#opt/lampp/man/man3/dup_field.3form.gz +#opt/lampp/man/man3/Carp::Heavy.3 +#opt/lampp/man/man3/form_new_page.3form.gz +#opt/lampp/man/man3/OBJ_obj2txt.3 +#opt/lampp/man/man3/BN_CTX_end.3 +#opt/lampp/man/man3/mvwget_wstr.3ncurses.gz +#opt/lampp/man/man3/Net::HTTP.3 +#opt/lampp/man/man3/File::Listing.3 +#opt/lampp/man/man3/BF_set_key.3 +#opt/lampp/man/man3/BN_CTX_get.3 +#opt/lampp/man/man3/lh_insert.3 +#opt/lampp/man/man3/i2d_ASN1_OBJECT.3 +#opt/lampp/man/man3/innstr.3ncurses.gz +#opt/lampp/man/man3/BIO_next.3 +#opt/lampp/man/man3/SSL_need_tmp_rsa.3 +#opt/lampp/man/man3/field_type.3form.gz +#opt/lampp/man/man3/MD2_Init.3 +#opt/lampp/man/man3/HTTP::Cookies.3 +#opt/lampp/man/man3/SSL_set_ssl_method.3 +#opt/lampp/man/man3/dcgettext.3 +#opt/lampp/man/man3/menu_attributes.3menu.gz +#opt/lampp/man/man3/UI_set_method.3 +#opt/lampp/man/man3/Apache2::Resource.3 +#opt/lampp/man/man3/BN_get_word.3 +#opt/lampp/man/man3/menu_opts_off.3menu.gz +#opt/lampp/man/man3/set_item_userptr.3menu.gz +#opt/lampp/man/man3/EVP_MD_block_size.3 +#opt/lampp/man/man3/ExtUtils::MakeMaker::FAQ.3 +#opt/lampp/man/man3/URI::WithBase.3 +#opt/lampp/man/man3/form_field_opts.3form.gz +#opt/lampp/man/man3/OpenSSL_add_all_digests.3 +#opt/lampp/man/man3/form_opts_off.3form.gz +#opt/lampp/man/man3/BN_CTX_new.3 +#opt/lampp/man/man3/Shell.3 +#opt/lampp/man/man3/BIO_set_ssl_renegotiate_timeout.3 +#opt/lampp/man/man3/ldap_next_reference.3 +#opt/lampp/man/man3/mvgetstr.3ncurses.gz +#opt/lampp/man/man3/lh_node_usage_stats_bio.3 +#opt/lampp/man/man3/winnstr.3ncurses.gz +#opt/lampp/man/man3/TIFFSetWarningHandler.3t +#opt/lampp/man/man3/field_arg.3form.gz +#opt/lampp/man/man3/waddchstr.3ncurses.gz +#opt/lampp/man/man3/ber_bvecadd.3 +#opt/lampp/man/man3/DSA_get_ex_data.3 +#opt/lampp/man/man3/field_pad.3form.gz +#opt/lampp/man/man3/EVP_CIPHER_CTX_cipher.3 +#opt/lampp/man/man3/mvwinsstr.3ncurses.gz +#opt/lampp/man/man3/ldap_getfilter_free.3 +#opt/lampp/man/man3/libpngpf.3 +#opt/lampp/man/man3/border_set.3ncurses.gz +#opt/lampp/man/man3/set_field_init.3form.gz +#opt/lampp/man/man3/open.3 +#opt/lampp/man/man3/ldap_count_references.3 +#opt/lampp/man/man3/Test::Harness::Assert.3 +#opt/lampp/man/man3/HTML::Entities.3 +#opt/lampp/man/man3/lh_error.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_block_size.3 +#opt/lampp/man/man3/BIO_destroy_bio_pair.3 +#opt/lampp/man/man3/BN_mod_add.3 +#opt/lampp/man/man3/SSL_CTX_get_client_cert_cb.3 +#opt/lampp/man/man3/TIFFTileSize.3t +#opt/lampp/man/man3/BN_pseudo_rand.3 +#opt/lampp/man/man3/ExtUtils::Constant::Utils.3 +#opt/lampp/man/man3/Apache2::porting.3 +#opt/lampp/man/man3/getmaxx.3ncurses.gz +#opt/lampp/man/man3/EVP_CIPHER_CTX_set_app_data.3 +#opt/lampp/man/man3/dcngettext.3 +#opt/lampp/man/man3/BN_mod_exp.3 +#opt/lampp/man/man3/DES_is_weak_key.3 +#opt/lampp/man/man3/ldap_compare_ext.3 +#opt/lampp/man/man3/DBM_Filter.3 +#opt/lampp/man/man3/Pod::Perldoc::ToText.3 +#opt/lampp/man/man3/BN_CTX_init.3 +#opt/lampp/man/man3/mvinsch.3ncurses.gz +#opt/lampp/man/man3/BIO_s_socket.3 +#opt/lampp/man/man3/EVP_OpenUpdate.3 +#opt/lampp/man/man3/ldap_syntax_free.3 +#opt/lampp/man/man3/getbkgd.3ncurses.gz +#opt/lampp/man/man3/i2d_RSAPrivateKey.3 +#opt/lampp/man/man3/SSL_SESSION_set_ex_data.3 +#opt/lampp/man/man3/Locale::Language.3 +#opt/lampp/man/man3/wecho_wchar.3ncurses.gz +#opt/lampp/man/man3/wbkgd.3ncurses.gz +#opt/lampp/man/man3/ber_bvfree.3 +#opt/lampp/man/man3/win.3form.gz +#opt/lampp/man/man3/set_item_init.3menu.gz +#opt/lampp/man/man3/SSL_CTX_get_verify_depth.3 +#opt/lampp/man/man3/Thread::Queue.3 +#opt/lampp/man/man3/PerlIO.3 +#opt/lampp/man/man3/EVP_BytesToKey.3 +#opt/lampp/man/man3/Time::localtime.3 +#opt/lampp/man/man3/TIFFReadRawTile.3t +#opt/lampp/man/man3/SSL_connect.3 +#opt/lampp/man/man3/i2d_DSAPrivateKey.3 +#opt/lampp/man/man3/BN_mod_mul.3 +#opt/lampp/man/man3/mvwin_wch.3ncurses.gz +#opt/lampp/man/man3/d2i_X509_REQ_fp.3 +#opt/lampp/man/man3/Fatal.3 +#opt/lampp/man/man3/I18N::Langinfo.3 +#opt/lampp/man/man3/mvwinwstr.3ncurses.gz +#opt/lampp/man/man3/ldap_first_message.3 +#opt/lampp/man/man3/addnwstr.3ncurses.gz +#opt/lampp/man/man3/BN_BLINDING_set_thread_id.3 +#opt/lampp/man/man3/BN_print.3 +#opt/lampp/man/man3/Devel::SelfStubber.3 +#opt/lampp/man/man3/X509_NAME_get_entry.3 +#opt/lampp/man/man3/BIO_get_cipher_status.3 +#opt/lampp/man/man3/rand.3 +#opt/lampp/man/man3/OBJ_cleanup.3 +#opt/lampp/man/man3/bn_mul_low_normal.3 +#opt/lampp/man/man3/B::Terse.3 +#opt/lampp/man/man3/lh_new.3 +#opt/lampp/man/man3/SSL_CTX_sess_get_new_cb.3 +#opt/lampp/man/man3/free_item.3menu.gz +#opt/lampp/man/man3/BN_mod_sqr.3 +#opt/lampp/man/man3/wgetn_wstr.3ncurses.gz +#opt/lampp/man/man3/TIFFquery.3t +#opt/lampp/man/man3/BN_mod_sub.3 +#opt/lampp/man/man3/attr_on.3ncurses.gz +#opt/lampp/man/man3/ldap_explode_dn.3 +#opt/lampp/man/man3/IO::Socket::INET.3 +#opt/lampp/man/man3/SSL_load_error_strings.3 +#opt/lampp/man/man3/libcurl-share.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_set_data.3 +#opt/lampp/man/man3/APR::Request::CGI.3 +#opt/lampp/man/man3/BIO_push.3 +#opt/lampp/man/man3/scroll.3ncurses.gz +#opt/lampp/man/man3/BIO_puts.3 +#opt/lampp/man/man3/mvwins_wch.3ncurses.gz +#opt/lampp/man/man3/field_opts_on.3form.gz +#opt/lampp/man/man3/wgetnstr.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_new.3 +#opt/lampp/man/man3/requestname.3form.gz +#opt/lampp/man/man3/SSL_CIPHER_get_version.3 +#opt/lampp/man/man3/Math::BigInt::CalcEmu.3 +#opt/lampp/man/man3/ldap_kerberos_bind1.3 +#opt/lampp/man/man3/ldap_kerberos_bind2.3 +#opt/lampp/man/man3/set_term.3ncurses.gz +#opt/lampp/man/man3/BIO_ctrl_get_write_guarantee.3 +#opt/lampp/man/man3/buffer.3 +#opt/lampp/man/man3/BIO_read.3 +#opt/lampp/man/man3/BIO_get_callback_arg.3 +#opt/lampp/man/man3/set_field_back.3form.gz +#opt/lampp/man/man3/getmaxyx.3ncurses.gz +#opt/lampp/man/man3/ExtUtils::Command::MM.3 +#opt/lampp/man/man3/Encode::Config.3 +#opt/lampp/man/man3/IPC::Open2.3 +#opt/lampp/man/man3/IPC::Open3.3 +#opt/lampp/man/man3/BUF_MEM_free.3 +#opt/lampp/man/man3/BN_clear.3 +#opt/lampp/man/man3/SSL_CTX_sess_set_remove_cb.3 +#opt/lampp/man/man3/ERR_load_strings.3 +#opt/lampp/man/man3/Fcntl.3 +#opt/lampp/man/man3/TIFFStripSize.3t +#opt/lampp/man/man3/TIFFScanlineSize.3t +#opt/lampp/man/man3/BIO_s_fd.3 +#opt/lampp/man/man3/TIFFDefaultStripSize.3t +#opt/lampp/man/man3/CRYPTO_num_locks.3 +#opt/lampp/man/man3/x509.3 +#opt/lampp/man/man3/getcchar.3ncurses.gz +#opt/lampp/man/man3/Math::BigFloat.3 +#opt/lampp/man/man3/Bundle::ApacheTest.3 +#opt/lampp/man/man3/BN_lshift.3 +#opt/lampp/man/man3/ldap_dcedn2dn.3 +#opt/lampp/man/man3/bn_div_words.3 +#opt/lampp/man/man3/Tie::Handle.3 +#opt/lampp/man/man3/DBD::mysql.3 +#opt/lampp/man/man3/Apache2::SubProcess.3 +#opt/lampp/man/man3/ldap_value_free.3 +#opt/lampp/man/man3/SSL_check_private_key.3 +#opt/lampp/man/man3/LWP::MemberMixin.3 +#opt/lampp/man/man3/SSL_use_RSAPrivateKey.3 +#opt/lampp/man/man3/print.3ncurses.gz +#opt/lampp/man/man3/DynaLoader.3 +#opt/lampp/man/man3/data_ahead.3form.gz +#opt/lampp/man/man3/mvwins_wstr.3ncurses.gz +#opt/lampp/man/man3/Getopt::Std.3 +#opt/lampp/man/man3/EVP_DigestUpdate.3 +#opt/lampp/man/man3/BIO_seek.3 +#opt/lampp/man/man3/SSL_CTX_set_session_cache_mode.3 +#opt/lampp/man/man3/ERR_set_mark.3 +#opt/lampp/man/man3/lh_stats.3 +#opt/lampp/man/man3/UI_dup_input_boolean.3 +#opt/lampp/man/man3/set_panel_userptr.3curses.gz +#opt/lampp/man/man3/ldap_attributetype2str.3 +#opt/lampp/man/man3/form_field_new.3form.gz +#opt/lampp/man/man3/TIFFReadScanline.3t +#opt/lampp/man/man3/CGI::Pretty.3 +#opt/lampp/man/man3/set_field_fore.3form.gz +#opt/lampp/man/man3/mvwadd_wchstr.3ncurses.gz +#opt/lampp/man/man3/slk_init.3ncurses.gz +#opt/lampp/man/man3/addchnstr.3ncurses.gz +#opt/lampp/man/man3/BN_set_word.3 +#opt/lampp/man/man3/setupterm.3ncurses.gz +#opt/lampp/man/man3/BUF_MEM_grow.3 +#opt/lampp/man/man3/Apache::TestReport.3 +#opt/lampp/man/man3/IPC::SysV.3 +#opt/lampp/man/man3/Net::NNTP.3 +#opt/lampp/man/man3/sort.3 +#opt/lampp/man/man3/X509_NAME_entry_count.3 +#opt/lampp/man/man3/mitem_new.3menu.gz +#opt/lampp/man/man3/getmouse.3ncurses.gz +#opt/lampp/man/man3/UNIVERSAL.3 +#opt/lampp/man/man3/ExtUtils::MM_BeOS.3 +#opt/lampp/man/man3/ldap_str2syntax.3 +#opt/lampp/man/man3/EVP_PKEY_set1_EC_KEY.3 +#opt/lampp/man/man3/ldap_enable_cache.3 +#opt/lampp/man/man3/ber_str2bv.3 +#opt/lampp/man/man3/mvderwin.3ncurses.gz +#opt/lampp/man/man3/wadd_wchstr.3ncurses.gz +#opt/lampp/man/man3/B::Stash.3 +#opt/lampp/man/man3/Apache2::Response.3 +#opt/lampp/man/man3/SSL_rstate_string.3 +#opt/lampp/man/man3/subs.3 +#opt/lampp/man/man3/ERR_get_error.3 +#opt/lampp/man/man3/BIO_s_file.3 +#opt/lampp/man/man3/UI_get0_result.3 +#opt/lampp/man/man3/HTTP::Request.3 +#opt/lampp/man/man3/color_set.3ncurses.gz +#opt/lampp/man/man3/BIO_tell.3 +#opt/lampp/man/man3/ASN1_STRING_print_ex.3 +#opt/lampp/man/man3/i2d_X509.3 +#opt/lampp/man/man3/SSL_use_RSAPrivateKey_file.3 +#opt/lampp/man/man3/bn_mul_low_recursive.3 +#opt/lampp/man/man3/Socket.3 +#opt/lampp/man/man3/RAND_pseudo_bytes.3 +#opt/lampp/man/man3/SSL_CTX_get_client_CA_list.3 +#opt/lampp/man/man3/Encode::EBCDIC.3 +#opt/lampp/man/man3/d2i_RSAPublicKey.3 +#opt/lampp/man/man3/Pod::Perldoc::ToMan.3 +#opt/lampp/man/man3/Pod::Text::Overstrike.3 +#opt/lampp/man/man3/_tracechtype2.3ncurses.gz +#opt/lampp/man/man3/BIO_new_fd.3 +#opt/lampp/man/man3/BIO_new_fp.3 +#opt/lampp/man/man3/curl_slist_append.3 +#opt/lampp/man/man3/userptr.3menu.gz +#opt/lampp/man/man3/ripemd.3 +#opt/lampp/man/man3/DBI::Const::GetInfo::ODBC.3 +#opt/lampp/man/man3/Data::Dumper.3 +#opt/lampp/man/man3/SSL_CTX_set_tmp_dh.3 +#opt/lampp/man/man3/wadd_wch.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_sess_cache_full.3 +#opt/lampp/man/man3/Class::Struct.3 +#opt/lampp/man/man3/getwin.3ncurses.gz +#opt/lampp/man/man3/waddwstr.3ncurses.gz +#opt/lampp/man/man3/dynamic_field_info.3form.gz +#opt/lampp/man/man3/HMAC_Init.3 +#opt/lampp/man/man3/Pod::Perldoc::ToPod.3 +#opt/lampp/man/man3/def_shell_mode.3ncurses.gz +#opt/lampp/man/man3/idlok.3ncurses.gz +#opt/lampp/man/man3/d2i_Netscape_RSA.3 +#opt/lampp/man/man3/ber_bvdup.3 +#opt/lampp/man/man3/DH_check.3 +#opt/lampp/man/man3/bkgdset.3ncurses.gz +#opt/lampp/man/man3/Pod::Perldoc::ToRtf.3 +#opt/lampp/man/man3/TIFFClose.3t +#opt/lampp/man/man3/File::stat.3 +#opt/lampp/man/man3/TIFFUnRegisterCODEC.3t +#opt/lampp/man/man3/resizeterm.3ncurses.gz +#opt/lampp/man/man3/curl_strnequal.3 +#opt/lampp/man/man3/FileCache.3 +#opt/lampp/man/man3/vars.3 +#opt/lampp/man/man3/BIO_set_ssl_renegotiate_bytes.3 +#opt/lampp/man/man3/driver.3menu.gz +#opt/lampp/man/man3/File::Spec::Functions.3 +#opt/lampp/man/man3/B::Bblock.3 +#opt/lampp/man/man3/DES_random_key.3 +#opt/lampp/man/man3/BN_BLINDING_get_flags.3 +#opt/lampp/man/man3/EVP_CipherInit_ex.3 +#opt/lampp/man/man3/data.3form.gz +#opt/lampp/man/man3/ldap_compare.3 +#opt/lampp/man/man3/locale.3 +#opt/lampp/man/man3/ldap_kerberos_bind1_s.3 +#opt/lampp/man/man3/mvwin.3ncurses.gz +#opt/lampp/man/man3/Net::POP3.3 +#opt/lampp/man/man3/ldap_kerberos_bind2_s.3 +#opt/lampp/man/man3/field_new.3form.gz +#opt/lampp/man/man3/X509_NAME_print_ex_fp.3 +#opt/lampp/man/man3/Pod::Perldoc::ToXml.3 +#opt/lampp/man/man3/ldap_matchingrule2name.3 +#opt/lampp/man/man3/mvinsnstr.3ncurses.gz +#opt/lampp/man/man3/DBI::DBD::Metadata.3 +#opt/lampp/man/man3/putp.3ncurses.gz +#opt/lampp/man/man3/vmsish.3 +#opt/lampp/man/man3/BIO_get_cipher_ctx.3 +#opt/lampp/man/man3/addstr.3ncurses.gz +#opt/lampp/man/man3/DSA_OpenSSL.3 +#opt/lampp/man/man3/utf8.3 +#opt/lampp/man/man3/HTML::Form.3 +#opt/lampp/man/man3/SSL_CTX_use_PrivateKey_ASN1.3 +#opt/lampp/man/man3/mouse.3ncurses.gz +#opt/lampp/man/man3/set_menu_pattern.3menu.gz +#opt/lampp/man/man3/ber_peek_tag.3 +#opt/lampp/man/man3/color_content.3ncurses.gz +#opt/lampp/man/man3/whline_set.3ncurses.gz +#opt/lampp/man/man3/PerlIO::via::QuotedPrint.3 +#opt/lampp/man/man3/ldap_flush_cache.3 +#opt/lampp/man/man3/Pod::Checker.3 +#opt/lampp/man/man3/SSL_get_session.3 +#opt/lampp/man/man3/hline.3ncurses.gz +#opt/lampp/man/man3/Test::More.3 +#opt/lampp/man/man3/doupdate.3ncurses.gz +#opt/lampp/man/man3/whline.3ncurses.gz +#opt/lampp/man/man3/get_wch.3ncurses.gz +#opt/lampp/man/man3/DSA_get_default_method.3 +#opt/lampp/man/man3/BN_dec2bn.3 +#opt/lampp/man/man3/waddnwstr.3ncurses.gz +#opt/lampp/man/man3/ldap_bind.3 +#opt/lampp/man/man3/ber_bvstr.3 +#opt/lampp/man/man3/curl_free.3 +#opt/lampp/man/man3/waddstr.3ncurses.gz +#opt/lampp/man/man3/BIO_set_accept_port.3 +#opt/lampp/man/man3/SSL_get_verify_result.3 +#opt/lampp/man/man3/DES_ecb2_encrypt.3 +#opt/lampp/man/man3/Compress::Zlib.3 +#opt/lampp/man/man3/ldap_attributetype_free.3 +#opt/lampp/man/man3/Digest::base.3 +#opt/lampp/man/man3/BIO_get_close.3 +#opt/lampp/man/man3/TIFFWriteRawStrip.3t +#opt/lampp/man/man3/BF_encrypt.3 +#opt/lampp/man/man3/bn_sqr_normal.3 +#opt/lampp/man/man3/Errno.3 +#opt/lampp/man/man3/mvwvline.3ncurses.gz +#opt/lampp/man/man3/DBM_Filter::null.3 +#opt/lampp/man/man3/Encode::Supported.3 +#opt/lampp/man/man3/ldap_str2dn.3 +#opt/lampp/man/man3/panel_userptr.3curses.gz +#opt/lampp/man/man3/OPENSSL_Applink.3 +#opt/lampp/man/man3/EVP_MD_pkey_type.3 +#opt/lampp/man/man3/BIO_new_bio_pair.3 +#opt/lampp/man/man3/curl_formparse.3 +#opt/lampp/man/man3/SSL_set_connect_state.3 +#opt/lampp/man/man3/item_count.3menu.gz +#opt/lampp/man/man3/EVP_get_digestbynid.3 +#opt/lampp/man/man3/EVP_MD_size.3 +#opt/lampp/man/man3/item_description.3menu.gz +#opt/lampp/man/man3/EVP_get_digestbyobj.3 +#opt/lampp/man/man3/BIO_get_read_request.3 +#opt/lampp/man/man3/TIFFRGBAImageBegin.3t +#opt/lampp/man/man3/attributes.3menu.gz +#opt/lampp/man/man3/ERR_error_string.3 +#opt/lampp/man/man3/LWP::Debug.3 +#opt/lampp/man/man3/Net::Netrc.3 +#opt/lampp/man/man3/LWP::Authen::Ntlm.3 +#opt/lampp/man/man3/SSL_do_handshake.3 +#opt/lampp/man/man3/TIFFVSetField.3t +#opt/lampp/man/man3/BIO_set_fd.3 +#opt/lampp/man/man3/BIO_set_fp.3 +#opt/lampp/man/man3/EVP_DecryptInit.3 +#opt/lampp/man/man3/BIO_set_md.3 +#opt/lampp/man/man3/CRYPTO_set_dynlock_create_callback.3 +#opt/lampp/man/man3/mvwgetn_wstr.3ncurses.gz +#opt/lampp/man/man3/Net::Ping.3 +#opt/lampp/man/man3/DB_File.3 +#opt/lampp/man/man3/warnings::register.3 +#opt/lampp/man/man3/form_field_attributes.3form.gz +#opt/lampp/man/man3/UI_add_info_string.3 +#opt/lampp/man/man3/BIO_ctrl_get_read_request.3 +#opt/lampp/man/man3/ERR_lib_error_string.3 +#opt/lampp/man/man3/Net::SMTP.3 +#opt/lampp/man/man3/UI_get_default_method.3 +#opt/lampp/man/man3/ldap_unbind_ext.3 +#opt/lampp/man/man3/ExtUtils::Mkbootstrap.3 +#opt/lampp/man/man3/insstr.3ncurses.gz +#opt/lampp/man/man3/HTTP::Request::Common.3 +#opt/lampp/man/man3/ldap_url_search_s.3 +#opt/lampp/man/man3/TIFFIsUpSampled.3t +#opt/lampp/man/man3/ldap_free_urldesc.3 +#opt/lampp/man/man3/mouse_trafo.3ncurses.gz +#opt/lampp/man/man3/wattr_on.3ncurses.gz +#opt/lampp/man/man3/Encode::Unicode::UTF7.3 +#opt/lampp/man/man3/WWW::RobotRules::AnyDBM_File.3 +#opt/lampp/man/man3/IO::Dir.3 +#opt/lampp/man/man3/bn_set_high.3 +#opt/lampp/man/man3/ExtUtils::Manifest.3 +#opt/lampp/man/man3/Unicode::Normalize.3 +#opt/lampp/man/man3/bn_expand.3 +#opt/lampp/man/man3/BIO_should_read.3 +#opt/lampp/man/man3/Apache2::ServerRec.3 +#opt/lampp/man/man3/lh_node_stats_bio.3 +#opt/lampp/man/man3/winsstr.3ncurses.gz +#opt/lampp/man/man3/TIFFRGBAImage.3t +#opt/lampp/man/man3/ExtUtils::Embed.3 +#opt/lampp/man/man3/Exporter.3 +#opt/lampp/man/man3/SSL_SESSION_get_ex_data.3 +#opt/lampp/man/man3/Locale::Currency.3 +#opt/lampp/man/man3/OpenSSL_add_ssl_algorithms.3 +#opt/lampp/man/man3/curl_mprintf.3 +#opt/lampp/man/man3/SSL_get_shutdown.3 +#opt/lampp/man/man3/SSL_CTX_use_certificate_file.3 +#opt/lampp/man/man3/DH_free.3 +#opt/lampp/man/man3/Encode::Symbol.3 +#opt/lampp/man/man3/wmove.3ncurses.gz +#opt/lampp/man/man3/mitem_userptr.3menu.gz +#opt/lampp/man/man3/curl_multi_info_read.3 +#opt/lampp/man/man3/bkgrnd.3ncurses.gz +#opt/lampp/man/man3/EVP_CIPHER_asn1_to_param.3 +#opt/lampp/man/man3/EVP_MD_type.3 +#opt/lampp/man/man3/i2d_X509_CRL_bio.3 +#opt/lampp/man/man3/i2d_DSAPublicKey.3 +#opt/lampp/man/man3/BN_is_odd.3 +#opt/lampp/man/man3/SSL_get_cipher.3 +#opt/lampp/man/man3/DirHandle.3 +#opt/lampp/man/man3/FileHandle.3 +#opt/lampp/man/man3/EVP_CIPHER_nid.3 +#opt/lampp/man/man3/MDC2_Final.3 +#opt/lampp/man/man3/BN_is_one.3 +#opt/lampp/man/man3/in_wch.3ncurses.gz +#opt/lampp/man/man3/APR::BucketType.3 +#opt/lampp/man/man3/SSL_CTX_set_verify.3 +#opt/lampp/man/man3/TIFFCurrentRow.3t +#opt/lampp/man/man3/inwstr.3ncurses.gz +#opt/lampp/man/man3/tgetent.3ncurses.gz +#opt/lampp/man/man3/spacing.3menu.gz +#opt/lampp/man/man3/i2d_PKCS8PrivateKey_bio.3 +#opt/lampp/man/man3/ldap_entry2html.3 +#opt/lampp/man/man3/noraw.3ncurses.gz +#opt/lampp/man/man3/slk_attroff.3ncurses.gz +#opt/lampp/man/man3/wbkgrnd.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_add_extra_chain_cert.3 +#opt/lampp/man/man3/Apache::TestSmoke.3 +#opt/lampp/man/man3/slk_color.3ncurses.gz +#opt/lampp/man/man3/ber_get_enum.3 +#opt/lampp/man/man3/win_wch.3ncurses.gz +#opt/lampp/man/man3/Filter::Simple.3 +#opt/lampp/man/man3/CPAN::Nox.3 +#opt/lampp/man/man3/ldap_delete_ext.3 +#opt/lampp/man/man3/mvins_nwstr.3ncurses.gz +#opt/lampp/man/man3/BN_rshift1.3 +#opt/lampp/man/man3/SHA1_Final.3 +#opt/lampp/man/man3/HTML::LinkExtor.3 +#opt/lampp/man/man3/winwstr.3ncurses.gz +#opt/lampp/man/man3/BN_mpi2bn.3 +#opt/lampp/man/man3/LWP::UserAgent.3 +#opt/lampp/man/man3/top_panel.3curses.gz +#opt/lampp/man/man3/set_field_buffer.3form.gz +#opt/lampp/man/man3/ldap_ufn_setprefix.3 +#opt/lampp/man/man3/SSL_ctrl.3 +#opt/lampp/man/man3/LWP::Simple.3 +#opt/lampp/man/man3/napms.3ncurses.gz +#opt/lampp/man/man3/SSL_set_tmp_rsa_callback.3 +#opt/lampp/man/man3/BIO_eof.3 +#opt/lampp/man/man3/mvwgetstr.3ncurses.gz +#opt/lampp/man/man3/SSL_set_max_cert_list.3 +#opt/lampp/man/man3/Apache2::Build.3 +#opt/lampp/man/man3/item_userptr.3menu.gz +#opt/lampp/man/man3/echochar.3ncurses.gz +#opt/lampp/man/man3/BF_decrypt.3 +#opt/lampp/man/man3/SSL_CTX_add_session.3 +#opt/lampp/man/man3/lber-encode.3 +#opt/lampp/man/man3/Digest::file.3 +#opt/lampp/man/man3/i2d_X509_fp.3 +#opt/lampp/man/man3/BN_generate_prime.3 +#opt/lampp/man/man3/BIO_set_info_callback.3 +#opt/lampp/man/man3/PerlIO::via.3 +#opt/lampp/man/man3/color.3ncurses.gz +#opt/lampp/man/man3/BN_BLINDING_convert_ex.3 +#opt/lampp/man/man3/X509_NAME_add_entry.3 +#opt/lampp/man/man3/Scalar::Util.3 +#opt/lampp/man/man3/set_menu_term.3menu.gz +#opt/lampp/man/man3/wbkgrndset.3ncurses.gz +#opt/lampp/man/man3/putwin.3ncurses.gz +#opt/lampp/man/man3/MD4_Update.3 +#opt/lampp/man/man3/Attribute::Handlers::demo::MyClass.3 +#opt/lampp/man/man3/mcrypt.3 +#opt/lampp/man/man3/autouse.3 +#opt/lampp/man/man3/ldap_next_message.3 +#opt/lampp/man/man3/BIO_new.3 +#opt/lampp/man/man3/notimeout.3ncurses.gz +#opt/lampp/man/man3/ERR_load_UI_strings.3 +#opt/lampp/man/man3/SSL_get_cipher_bits.3 +#opt/lampp/man/man3/SSL_CTX_use_RSAPrivateKey_ASN1.3 +#opt/lampp/man/man3/wcursyncup.3ncurses.gz +#opt/lampp/man/man3/Time::tm.3 +#opt/lampp/man/man3/BIO_pop.3 +#opt/lampp/man/man3/clrtobot.3ncurses.gz +#opt/lampp/man/man3/BIO_vfree.3 +#opt/lampp/man/man3/Net::Time.3 +#opt/lampp/man/man3/RSA_set_ex_data.3 +#opt/lampp/man/man3/RSA_flags.3 +#opt/lampp/man/man3/curl_multi_init.3 +#opt/lampp/man/man3/Encode::CJKConstants.3 +#opt/lampp/man/man3/BIO_set.3 +#opt/lampp/man/man3/field_just.3form.gz +#opt/lampp/man/man3/TIFFSetDirectory.3t +#opt/lampp/man/man3/redrawwin.3ncurses.gz +#opt/lampp/man/man3/IO::Seekable.3 +#opt/lampp/man/man3/DES_ede3_ofb64_encrypt.3 +#opt/lampp/man/man3/CPAN::Admin.3 +#opt/lampp/man/man3/wbkgdset.3ncurses.gz +#opt/lampp/man/man3/mvprintw.3ncurses.gz +#opt/lampp/man/man3/form_fieldtype.3form.gz +#opt/lampp/man/man3/SSL_set_msg_callback.3 +#opt/lampp/man/man3/Locale::Maketext.3 +#opt/lampp/man/man3/ldap_count_messages.3 +#opt/lampp/man/man3/Net::Config.3 +#opt/lampp/man/man3/EVP_PKEY_get1_EC_KEY.3 +#opt/lampp/man/man3/ldap_count_values_len.3 +#opt/lampp/man/man3/threads::shared.3 +#opt/lampp/man/man3/attr_off.3ncurses.gz +#opt/lampp/man/man3/mvwhline_set.3ncurses.gz +#opt/lampp/man/man3/restartterm.3ncurses.gz +#opt/lampp/man/man3/UI_get_method.3 +#opt/lampp/man/man3/getbegyx.3ncurses.gz +#opt/lampp/man/man3/MD4_Init.3 +#opt/lampp/man/man3/form_cursor.3form.gz +#opt/lampp/man/man3/DBD::File.3 +#opt/lampp/man/man3/SSL_CTX_sess_set_cache_size.3 +#opt/lampp/man/man3/i2d_PKCS8PrivateKey_fp.3 +#opt/lampp/man/man3/SSL_flush_sessions.3 +#opt/lampp/man/man3/getbegy.3ncurses.gz +#opt/lampp/man/man3/EVP_EncryptUpdate.3 +#opt/lampp/man/man3/newwin.3ncurses.gz +#opt/lampp/man/man3/curl_easy_perform.3 +#opt/lampp/man/man3/BIO_s_null.3 +#opt/lampp/man/man3/ERR_GET_REASON.3 +#opt/lampp/man/man3/Encode::Byte.3 +#opt/lampp/man/man3/ExtUtils::XSBuilder::PODTemplate.3 +#opt/lampp/man/man3/slk_attrset.3ncurses.gz +#opt/lampp/man/man3/tgetflag.3ncurses.gz +#opt/lampp/man/man3/cldap_open.3 +#opt/lampp/man/man3/Attribute::Handlers::demo::Descriptions.3 +#opt/lampp/man/man3/form_field.3form.gz +#opt/lampp/man/man3/Encode::Encoding.3 +#opt/lampp/man/man3/slk_attr.3ncurses.gz +#opt/lampp/man/man3/APR::Brigade.3 +#opt/lampp/man/man3/getparx.3ncurses.gz +#opt/lampp/man/man3/X509_NAME_get_text_by_NID.3 +#opt/lampp/man/man3/Digest.3 +#opt/lampp/man/man3/mvwaddchstr.3ncurses.gz +#opt/lampp/man/man3/X509_NAME_get_text_by_OBJ.3 +#opt/lampp/man/man3/BN_BLINDING_invert.3 +#opt/lampp/man/man3/IO::Handle.3 +#opt/lampp/man/man3/TIFFError.3t +#opt/lampp/man/man3/clearok.3ncurses.gz +#opt/lampp/man/man3/standout.3ncurses.gz +#opt/lampp/man/man3/chgat.3ncurses.gz +#opt/lampp/man/man3/ldap_init_getfilter.3 +#opt/lampp/man/man3/IO::Socket::UNIX.3 +#opt/lampp/man/man3/SSL_free.3 +#opt/lampp/man/man3/userptr.3form.gz +#opt/lampp/man/man3/wchgat.3ncurses.gz +#opt/lampp/man/man3/wget_wch.3ncurses.gz +#opt/lampp/man/man3/DBM_Filter::utf8.3 +#opt/lampp/man/man3/ldap_init.3 +#opt/lampp/man/man3/BIO_get_callback.3 +#opt/lampp/man/man3/curl_getenv.3 +#opt/lampp/man/man3/RSA_blinding_off.3 +#opt/lampp/man/man3/ldap_sort_values.3 +#opt/lampp/man/man3/ldap_entry2text_search.3 +#opt/lampp/man/man3/DSA_sign_setup.3 +#opt/lampp/man/man3/APR::Const.3 +#opt/lampp/man/man3/UI_dup_error_string.3 +#opt/lampp/man/man3/driver.3form.gz +#opt/lampp/man/man3/Devel::Peek.3 +#opt/lampp/man/man3/X509_NAME_oneline.3 +#opt/lampp/man/man3/PKCS7_encrypt.3 +#opt/lampp/man/man3/POSIX.3 +#opt/lampp/man/man3/BIO_debug_callback.3 +#opt/lampp/man/man3/SSL_use_PrivateKey_ASN1.3 +#opt/lampp/man/man3/SSL_CTX_set_client_cert_cb.3 +#opt/lampp/man/man3/ldap_perror.3 +#opt/lampp/man/man3/Parse::RecDescent.3 +#opt/lampp/man/man3/ldap_first_searchobj.3 +#opt/lampp/man/man3/X509_NAME_ENTRY_set_object.3 +#opt/lampp/man/man3/field_count.3form.gz +#opt/lampp/man/man3/DBI::W32ODBC.3 +#opt/lampp/man/man3/ldap_charset.3 +#opt/lampp/man/man3/wvline_set.3ncurses.gz +#opt/lampp/man/man3/ERR_add_error_data.3 +#opt/lampp/man/man3/getcury.3ncurses.gz +#opt/lampp/man/man3/form_requestname.3form.gz +#opt/lampp/man/man3/fieldtype.3form.gz +#opt/lampp/man/man3/SSL_CTX_set_timeout.3 +#opt/lampp/man/man3/field.3form.gz +#opt/lampp/man/man3/BIO_ssl_copy_session_id.3 +#opt/lampp/man/man3/TIFFSetSubDirectory.3t +#opt/lampp/man/man3/ldap_str2matchingrule.3 +#opt/lampp/man/man3/SSL_CTX_remove_session.3 +#opt/lampp/man/man3/MD5_Final.3 +#opt/lampp/man/man3/SSL_CTX_sess_accept.3 +#opt/lampp/man/man3/ldap_modify_s.3 +#opt/lampp/man/man3/CONF_modules_free.3 +#opt/lampp/man/man3/ber_bvecfree.3 +#opt/lampp/man/man3/curl_easy_duphandle.3 +#opt/lampp/man/man3/RSA_new_method.3 +#opt/lampp/man/man3/ldap_init_getfilter_buf.3 +#opt/lampp/man/man3/BN_is_prime.3 +#opt/lampp/man/man3/attrs.3 +#opt/lampp/man/man3/SSL_get_cipher_version.3 +#opt/lampp/man/man3/insnstr.3ncurses.gz +#opt/lampp/man/man3/Pod::Select.3 +#opt/lampp/man/man3/attr_set.3ncurses.gz +#opt/lampp/man/man3/SSL_load_client_CA_file.3 +#opt/lampp/man/man3/libpng.3 +#opt/lampp/man/man3/ldap_free_friendlymap.3 +#opt/lampp/man/man3/ldap_cache.3 +#opt/lampp/man/man3/mark.3menu.gz +#opt/lampp/man/man3/d2i_DSA_SIG.3 +#opt/lampp/man/man3/X509_NAME_delete_entry.3 +#opt/lampp/man/man3/terminfo.3ncurses.gz +#opt/lampp/man/man3/outopts.3ncurses.gz +#opt/lampp/man/man3/ldap_delete_ext_s.3 +#opt/lampp/man/man3/Apache::SubProcess.3 +#opt/lampp/man/man3/scr_init.3ncurses.gz +#opt/lampp/man/man3/trace.3ncurses.gz +#opt/lampp/man/man3/BN_is_prime_fasttest.3 +#opt/lampp/man/man3/ui_compat.3 +#opt/lampp/man/man3/field_validation.3form.gz +#opt/lampp/man/man3/libxml.3 +#opt/lampp/man/man3/bn_fix_top.3 +#opt/lampp/man/man3/ldap_is_ldap_url.3 +#opt/lampp/man/man3/ASN1_STRING_data.3 +#opt/lampp/man/man3/Apache2::RequestRec.3 +#opt/lampp/man/man3/wechochar.3ncurses.gz +#opt/lampp/man/man3/DBI::Const::GetInfoType.3 +#opt/lampp/man/man3/unpost_menu.3menu.gz +#opt/lampp/man/man3/d2i_RSAPrivateKey.3 +#opt/lampp/man/man3/DH_get_ex_new_index.3 +#opt/lampp/man/man3/Apache2::Const.3 +#opt/lampp/man/man3/form_field_buffer.3form.gz +#opt/lampp/man/man3/Pod::Perldoc::ToChecker.3 +#opt/lampp/man/man3/SSL_session_reused.3 +#opt/lampp/man/man3/set_field_pad.3form.gz +#opt/lampp/man/man3/ldap_search_ext.3 +#opt/lampp/man/man3/des_read_pw_string.3 +#opt/lampp/man/man3/OBJ_create.3 +#opt/lampp/man/man3/ExtUtils::Constant.3 +#opt/lampp/man/man3/HTTP::Date.3 +#opt/lampp/man/man3/Data::ShowTable.3 +#opt/lampp/man/man3/d2i_ASN1_OBJECT.3 +#opt/lampp/man/man3/SSL_callback_ctrl.3 +#opt/lampp/man/man3/TIFFFdOpen.3t +#opt/lampp/man/man3/d2i_DSAPrivateKey.3 +#opt/lampp/man/man3/window.3ncurses.gz +#opt/lampp/man/man3/form_page.3form.gz +#opt/lampp/man/man3/Net::hostent.3 +#opt/lampp/man/man3/SSL_set_ex_data.3 +#opt/lampp/man/man3/ldap_getfilter.3 +#opt/lampp/man/man3/Memoize::AnyDBM_File.3 +#opt/lampp/man/man3/bind_textdomain_codeset.3 +#opt/lampp/man/man3/TIFFstrip.3t +#opt/lampp/man/man3/mitem_opts.3menu.gz +#opt/lampp/man/man3/setcchar.3ncurses.gz +#opt/lampp/man/man3/noqiflush.3ncurses.gz +#opt/lampp/man/man3/wclrtobot.3ncurses.gz +#opt/lampp/man/man3/mvins_wch.3ncurses.gz +#opt/lampp/man/man3/bn_dump.3 +#opt/lampp/man/man3/TIFFIsTiled.3t +#opt/lampp/man/man3/Term::ReadLine.3 +#opt/lampp/man/man3/DBD::mysql::INSTALL.3 +#opt/lampp/man/man3/intrflush.3ncurses.gz +#opt/lampp/man/man3/BIO_set_nbio_accept.3 +#opt/lampp/man/man3/ModPerl::RegistryCooker.3 +#opt/lampp/man/man3/mvaddchnstr.3ncurses.gz +#opt/lampp/man/man3/Apache2::Reload.3 +#opt/lampp/man/man3/X509_free.3 +#opt/lampp/man/man3/EVP_SealFinal.3 +#opt/lampp/man/man3/set_form_userptr.3form.gz +#opt/lampp/man/man3/RIPEMD160_Final.3 +#opt/lampp/man/man3/SSL_CTX_get_info_callback.3 +#opt/lampp/man/man3/mvhline.3ncurses.gz +#opt/lampp/man/man3/Net::protoent.3 +#opt/lampp/man/man3/getn_wstr.3ncurses.gz +#opt/lampp/man/man3/wattr_off.3ncurses.gz +#opt/lampp/man/man3/BN_print_fp.3 +#opt/lampp/man/man3/ldap_get_values_len.3 +#opt/lampp/man/man3/ldap_bind_s.3 +#opt/lampp/man/man3/item_value.3menu.gz +#opt/lampp/man/man3/BIO_get_conn_hostname.3 +#opt/lampp/man/man3/EVP_CIPHER_CTX_cleanup.3 +#opt/lampp/man/man3/Apache2::Connection.3 +#opt/lampp/man/man3/form_opts.3form.gz +#opt/lampp/man/man3/typeahead.3ncurses.gz +#opt/lampp/man/man3/scr_restore.3ncurses.gz +#opt/lampp/man/man3/ldap_first_disptmpl.3 +#opt/lampp/man/man3/menu_pattern.3menu.gz +#opt/lampp/man/man3/DH_generate_key.3 +#opt/lampp/man/man3/lber-decode.3 +#opt/lampp/man/man3/mitem_name.3menu.gz +#opt/lampp/man/man3/ERR_error_string_n.3 +#opt/lampp/man/man3/PKCS7_decrypt.3 +#opt/lampp/man/man3/BN_to_montgomery.3 +#opt/lampp/man/man3/DES_ede3_cfb64_encrypt.3 +#opt/lampp/man/man3/ber_get_next.3 +#opt/lampp/man/man3/TIFFReadRGBAStrip.3t +#opt/lampp/man/man3/BN_clear_free.3 +#opt/lampp/man/man3/wstandout.3ncurses.gz +#opt/lampp/man/man3/getmaxy.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_set_client_CA_list.3 +#opt/lampp/man/man3/Locale::Country.3 +#opt/lampp/man/man3/form_request_name.3form.gz +#opt/lampp/man/man3/BN_mod_mul_montgomery.3 +#opt/lampp/man/man3/ExtUtils::xsbuilder.osc2002.3 +#opt/lampp/man/man3/DBI::Shell.3 +#opt/lampp/man/man3/BN_BLINDING_free.3 +#opt/lampp/man/man3/SSL_CTX_set_cert_store.3 +#opt/lampp/man/man3/bn_add_words.3 +#opt/lampp/man/man3/ldap_msgfree.3 +#opt/lampp/man/man3/BN_num_bytes.3 +#opt/lampp/man/man3/curl_getdate.3 +#opt/lampp/man/man3/inch.3ncurses.gz +#opt/lampp/man/man3/SSL_use_PrivateKey.3 +#opt/lampp/man/man3/BIO_wpending.3 +#opt/lampp/man/man3/LWP::RobotUA.3 +#opt/lampp/man/man3/UI_process.3 +#opt/lampp/man/man3/TIFFCurrentDirectory.3t +#opt/lampp/man/man3/ldap_unbind.3 +#opt/lampp/man/man3/menu_pad.3menu.gz +#opt/lampp/man/man3/HMAC_Update.3 +#opt/lampp/man/man3/File::Spec::Epoc.3 +#opt/lampp/man/man3/SSL_CTX_set_session_id_context.3 +#opt/lampp/man/man3/ASN1_STRING_free.3 +#opt/lampp/man/man3/ExtUtils::Install.3 +#opt/lampp/man/man3/ldap_open.3 +#opt/lampp/man/man3/ldap_matchingrule2str.3 +#opt/lampp/man/man3/Pod::Text::Color.3 +#opt/lampp/man/man3/BN_add_word.3 +#opt/lampp/man/man3/DSA_new_method.3 +#opt/lampp/man/man3/SSL_state_string.3 +#opt/lampp/man/man3/ber_get_null.3 +#opt/lampp/man/man3/RSA_blinding_on.3 +#opt/lampp/man/man3/APR::SockAddr.3 +#opt/lampp/man/man3/Apache2::RequestIO.3 +#opt/lampp/man/man3/getstr.3ncurses.gz +#opt/lampp/man/man3/FindBin.3 +#opt/lampp/man/man3/SSL_CTX_use_certificate_chain_file.3 +#opt/lampp/man/man3/DH_new.3 +#opt/lampp/man/man3/top_row.3menu.gz +#opt/lampp/man/man3/Tie::RefHash.3 +#opt/lampp/man/man3/integer.3 +#opt/lampp/man/man3/RAND_cleanup.3 +#opt/lampp/man/man3/AutoLoader.3 +#opt/lampp/man/man3/slk_touch.3ncurses.gz +#opt/lampp/man/man3/ldap_parse_sasl_bind_result.3 +#opt/lampp/man/man3/ldap_mods_free.3 +#opt/lampp/man/man3/DES_set_key.3 +#opt/lampp/man/man3/mvwaddnwstr.3ncurses.gz +#opt/lampp/man/man3/DSA_generate_key.3 +#opt/lampp/man/man3/keyok.3ncurses.gz +#opt/lampp/man/man3/erase.3ncurses.gz +#opt/lampp/man/man3/Encode::KR::2022_KR.3 +#opt/lampp/man/man3/OPENSSL_VERSION_NUMBER.3 +#opt/lampp/man/man3/ldap_modify_ext.3 +#opt/lampp/man/man3/werase.3ncurses.gz +#opt/lampp/man/man3/mvget_wstr.3ncurses.gz +#opt/lampp/man/man3/BIO_set_conn_ip.3 +#opt/lampp/man/man3/CONF_modules_load.3 +#opt/lampp/man/man3/wattr_set.3ncurses.gz +#opt/lampp/man/man3/Pod::Usage.3 +#opt/lampp/man/man3/URI::QueryParam.3 +#opt/lampp/man/man3/wgetstr.3ncurses.gz +#opt/lampp/man/man3/DSA_set_default_method.3 +#opt/lampp/man/man3/ldap_entry2text.3 +#opt/lampp/man/man3/set_field_term.3form.gz +#opt/lampp/man/man3/EVP_CipherUpdate.3 +#opt/lampp/man/man3/RSA_get_ex_data.3 +#opt/lampp/man/man3/SSL_set_options.3 +#opt/lampp/man/man3/item_index.3menu.gz +#opt/lampp/man/man3/BIO_set_bind_mode.3 +#opt/lampp/man/man3/scr_dump.3ncurses.gz +#opt/lampp/man/man3/TIFFWarning.3t +#opt/lampp/man/man3/BIO_new_file.3 +#opt/lampp/man/man3/ber_bvstrdup.3 +#opt/lampp/man/man3/ExtUtils::MM_UWIN.3 +#opt/lampp/man/man3/set_menu_pad.3menu.gz +#opt/lampp/man/man3/lh_node_usage_stats.3 +#opt/lampp/man/man3/overload.3 +#opt/lampp/man/man3/touch.3ncurses.gz +#opt/lampp/man/man3/ERR_peek_error_line.3 +#opt/lampp/man/man3/OPENSSL_ia32cap.3 +#opt/lampp/man/man3/ldap_getnextfilter.3 +#opt/lampp/man/man3/mvwvline_set.3ncurses.gz +#opt/lampp/man/man3/slk_refresh.3ncurses.gz +#opt/lampp/man/man3/EVP_VerifyFinal.3 +#opt/lampp/man/man3/ber_scanf.3 +#opt/lampp/man/man3/DBI::ProfileData.3 +#opt/lampp/man/man3/in_wchnstr.3ncurses.gz +#opt/lampp/man/man3/curl_easy_getinfo.3 +#opt/lampp/man/man3/OpenSSL_add_all_algorithms.3 +#opt/lampp/man/man3/SSL_get_cipher_list.3 +#opt/lampp/man/man3/DH_size.3 +#opt/lampp/man/man3/vwscanw.3ncurses.gz +#opt/lampp/man/man3/SDBM_File.3 +#opt/lampp/man/man3/ldap_ufn_search_ct.3 +#opt/lampp/man/man3/slk_set.3ncurses.gz +#opt/lampp/man/man3/UI_add_user_data.3 +#opt/lampp/man/man3/mouseinterval.3ncurses.gz +#opt/lampp/man/man3/RSA_padding_check_none.3 +#opt/lampp/man/man3/set_curterm.3ncurses.gz +#opt/lampp/man/man3/bigint.3 +#opt/lampp/man/man3/CONF_modules_load_file.3 +#opt/lampp/man/man3/Net::SSLeay.3 +#opt/lampp/man/man3/strict.3 +#opt/lampp/man/man3/set_item_term.3menu.gz +#opt/lampp/man/man3/RAND_bytes.3 +#opt/lampp/man/man3/SSL_get_mode.3 +#opt/lampp/man/man3/i2d_SSL_SESSION.3 +#opt/lampp/man/man3/Locale::Constants.3 +#opt/lampp/man/man3/ERR_peek_last_error.3 +#opt/lampp/man/man3/bignum.3 +#opt/lampp/man/man3/hline_set.3ncurses.gz +#opt/lampp/man/man3/winsnstr.3ncurses.gz +#opt/lampp/man/man3/DSA_dup_DH.3 +#opt/lampp/man/man3/bigrat.3 +#opt/lampp/man/man3/TIFFTileRowSize.3t +#opt/lampp/man/man3/SSL_get_verify_depth.3 +#opt/lampp/man/man3/BIO_get_num_renegotiates.3 +#opt/lampp/man/man3/TIFFFileno.3t +#opt/lampp/man/man3/EVP_CIPHER_CTX_get_app_data.3 +#opt/lampp/man/man3/cursor.3menu.gz +#opt/lampp/man/man3/ExtUtils::Mksymlists.3 +#opt/lampp/man/man3/d2i_DHparams.3 +#opt/lampp/man/man3/ber_free.3 +#opt/lampp/man/man3/HTTP::Negotiate.3 +#opt/lampp/man/man3/mvwgetch.3ncurses.gz +#opt/lampp/man/man3/Apache2::Command.3 +#opt/lampp/man/man3/SSL_get_cipher_name.3 +#opt/lampp/man/man3/UI_set_default_method.3 +#opt/lampp/man/man3/wmouse_trafo.3ncurses.gz +#opt/lampp/man/man3/URI::URL.3 +#opt/lampp/man/man3/Apache::TestRunPHP.3 +#opt/lampp/man/man3/OPENSSL_load_builtin_modules.3 +#opt/lampp/man/man3/ldap_vals2html.3 +#opt/lampp/man/man3/set_menu_userptr.3menu.gz +#opt/lampp/man/man3/DES_fcrypt.3 +#opt/lampp/man/man3/DBI::SQL::Nano.3 +#opt/lampp/man/man3/BIO_f_null.3 +#opt/lampp/man/man3/field_buffer.3form.gz +#opt/lampp/man/man3/EVP_MD_CTX_destroy.3 +#opt/lampp/man/man3/i2d_RSAPublicKey.3 +#opt/lampp/man/man3/TIFFWriteDirectory.3t +#opt/lampp/man/man3/UI_get0_user_data.3 +#opt/lampp/man/man3/SSL_CTX_get_ex_new_index.3 +#opt/lampp/man/man3/ExtUtils::MM_Unix.3 +#opt/lampp/man/man3/ldap_searchprefs.3 +#opt/lampp/man/man3/SSL_CTX_get_mode.3 +#opt/lampp/man/man3/dgettext.3 +#opt/lampp/man/man3/ModPerl::Code.3 +#opt/lampp/man/man3/SSL_CTX_get_timeout.3 +#opt/lampp/man/man3/RIPEMD160_Init.3 +#opt/lampp/man/man3/Switch.3 +#opt/lampp/man/man3/timeout.3ncurses.gz +#opt/lampp/man/man3/ldap_sort.3 +#opt/lampp/man/man3/Math::BigFloat::Trace.3 +#opt/lampp/man/man3/ldap_modify_ext_s.3 +#opt/lampp/man/man3/Math::BigInt::Calc.3 +#opt/lampp/man/man3/curl_easy_init.3 +#opt/lampp/man/man3/i2d_Netscape_RSA.3 +#opt/lampp/man/man3/DES_string_to_key.3 +#opt/lampp/man/man3/EVP_MD_CTX_copy_ex.3 +#opt/lampp/man/man3/PKCS12_create.3 +#opt/lampp/man/man3/ldap_enable_translation.3 +#opt/lampp/man/man3/Devel::DProf.3 +#opt/lampp/man/man3/mvadd_wchnstr.3ncurses.gz +#opt/lampp/man/man3/DSA_SIG_new.3 +#opt/lampp/man/man3/Math::Trig.3 +#opt/lampp/man/man3/Net::FTP::dataconn.3 +#opt/lampp/man/man3/DES_key_sched.3 +#opt/lampp/man/man3/SSL_read.3 +#opt/lampp/man/man3/CPAN::FirstTime.3 +#opt/lampp/man/man3/EVP_get_digestbyname.3 +#opt/lampp/man/man3/Memoize::Expire.3 +#opt/lampp/man/man3/DES_enc_write.3 +#opt/lampp/man/man3/UI_add_error_string.3 +#opt/lampp/man/man3/form_hook.3form.gz +#opt/lampp/man/man3/raw.3ncurses.gz +#opt/lampp/man/man3/start_color.3ncurses.gz +#opt/lampp/man/man3/ModPerl::Global.3 +#opt/lampp/man/man3/B::C.3 +#opt/lampp/man/man3/libcurl-multi.3 +#opt/lampp/man/man3/ERR_peek_last_error_line.3 +#opt/lampp/man/man3/add_wchnstr.3ncurses.gz +#opt/lampp/man/man3/XS::APItest.3 +#opt/lampp/man/man3/mvwprintw.3ncurses.gz +#opt/lampp/man/man3/ldap_objectclass2name.3 +#opt/lampp/man/man3/CRYPTO_set_dynlock_destroy_callback.3 +#opt/lampp/man/man3/menu_grey.3menu.gz +#opt/lampp/man/man3/TIFFSetField.3t +#opt/lampp/man/man3/field_opts.3form.gz +#opt/lampp/man/man3/SSL_get_quiet_shutdown.3 +#opt/lampp/man/man3/Unicode::Collate.3 +#opt/lampp/man/man3/DSA_new.3 +#opt/lampp/man/man3/APR::Request::Apache2.3 +#opt/lampp/man/man3/BIO_retry_type.3 +#opt/lampp/man/man3/BIO_int_ctrl.3 +#opt/lampp/man/man3/RAND_load_file.3 +#opt/lampp/man/man3/Apache::TestTrace.3 +#opt/lampp/man/man3/BIO_f_cipher.3 +#opt/lampp/man/man3/menu_mark.3menu.gz +#opt/lampp/man/man3/derwin.3ncurses.gz +#opt/lampp/man/man3/Net::Cmd.3 +#opt/lampp/man/man3/mvchgat.3ncurses.gz +#opt/lampp/man/man3/Net::FTP.3 +#opt/lampp/man/man3/ExtUtils::Liblist::Kid.3 +#opt/lampp/man/man3/form_post.3form.gz +#opt/lampp/man/man3/EVP_DecryptUpdate.3 +#opt/lampp/man/man3/scrl.3ncurses.gz +#opt/lampp/man/man3/ldap_compare_ext_s.3 +#opt/lampp/man/man3/Dumpvalue.3 +#opt/lampp/man/man3/UI_add_verify_string.3 +#opt/lampp/man/man3/BN_BLINDING_get_thread_id.3 +#opt/lampp/man/man3/ldap_destroy_cache.3 +#opt/lampp/man/man3/ldap_first_tmplcol.3 +#opt/lampp/man/man3/vid_attr.3ncurses.gz +#opt/lampp/man/man3/SSL_CTX_set_cert_verify_callback.3 +#opt/lampp/man/man3/mvwdelch.3ncurses.gz +#opt/lampp/man/man3/TIFFWriteRawTile.3t +#opt/lampp/man/man3/resize_term.3ncurses.gz +#opt/lampp/man/man3/inchnstr.3ncurses.gz +#opt/lampp/man/man3/mvins_wstr.3ncurses.gz +#opt/lampp/man/man3/BIO_new_ssl_connect.3 +#opt/lampp/man/man3/TIFFIsByteSwapped.3t +#opt/lampp/man/man3/Filter::Util::Call.3 +#opt/lampp/man/man3/bn_mul_normal.3 +#opt/lampp/man/man3/CRYPTO_set_locking_callback.3 +#opt/lampp/man/man3/BN_num_bits.3 +#opt/lampp/man/man3/SSL_get_ex_data.3 +#opt/lampp/man/man3/copywin.3ncurses.gz +#opt/lampp/man/man3/OBJ_ln2nid.3 +#opt/lampp/man/man3/Mysql.3 +#opt/lampp/man/man3/menu_new.3menu.gz +#opt/lampp/man/man3/ldap_add.3 +#opt/lampp/man/man3/Pod::Perldoc::ToTk.3 +#opt/lampp/man/man3/SSL_get_rbio.3 +#opt/lampp/man/man3/RSA_get_default_method.3 +#opt/lampp/man/man3/ExtUtils::MM_MacOS.3 +#opt/lampp/man/man3/RIPEMD160.3 +#opt/lampp/man/man3/TIFFSetErrorHandler.3t +#opt/lampp/man/man3/Text::Abbrev.3 +#opt/lampp/man/man3/curl_global_cleanup.3 +#opt/lampp/man/man3/ldap_sasl_bind.3 +#opt/lampp/man/man3/HTML::Parser.3 +#opt/lampp/man/man3/nonl.3ncurses.gz +#opt/lampp/man/man3/lh_free.3 +#opt/lampp/man/man3/BIO_should_io_special.3 +#opt/lampp/man/man3/DSA_generate_parameters.3 +#opt/lampp/man/man3/mvwinstr.3ncurses.gz +#opt/lampp/man/man3/BIO_f_buffer.3 +#opt/lampp/man/man3/ModPerl::CScan.3 +#opt/lampp/man/man3/PAIR_NUMBER.3ncurses.gz +#opt/lampp/man/man3/B::Assembler.3 +#opt/lampp/man/man3/unctrl.3ncurses.gz +#opt/lampp/man/man3/DES_set_key_checked.3 +#opt/lampp/man/man3/SSL_CTX_sess_get_remove_cb.3 +#opt/lampp/man/man3/ber_dupbv.3 +#opt/lampp/man/man3/ldap_first_tmplrow.3 +#opt/lampp/man/man3/textdomain.3 +#opt/lampp/man/man3/RAND_file_name.3 +#opt/lampp/man/man3/Time::Local.3 +#opt/lampp/man/man3/ber_skip_tag.3 +#opt/lampp/man/man3/insertln.3ncurses.gz +#opt/lampp/man/man3/EVP_PKEY_assign_DSA.3 +#opt/lampp/man/man3/Tie::SubstrHash.3 +#opt/lampp/man/man3/Memoize::SDBM_File.3 +#opt/lampp/man/man3/libcurl.3 +#opt/lampp/man/man3/SSL_set_mode.3 +#opt/lampp/man/man3/Thread::Semaphore.3 +#opt/lampp/man/man3/ins_wch.3ncurses.gz +#opt/lampp/man/man3/ldap_search_st.3 +#opt/lampp/man/man3/B::Deparse.3 +#opt/lampp/man/man3/wunctrl.3ncurses.gz +#opt/lampp/man/man3/EVP_VerifyUpdate.3 +#opt/lampp/man/man3/HTML::Filter.3 +#opt/lampp/man/man3/RSA_free.3 +#opt/lampp/man/man3/post_menu.3menu.gz +#opt/lampp/man/man3/isendwin.3ncurses.gz +#opt/lampp/man/man3/ldap_uncache_entry.3 +#opt/lampp/man/man3/ModPerl::Config.3 +#opt/lampp/man/man3/cldap.3 +#opt/lampp/man/man3/CPAN.3 +#opt/lampp/man/man3/BN_num_bits_word.3 +#opt/lampp/man/man3/item_opts_off.3menu.gz +#opt/lampp/man/man3/d2i_X509_REQ_bio.3 +#opt/lampp/man/man3/DBI::Format.3 +#opt/lampp/man/man3/ldap_ufn.3 +#opt/lampp/man/man3/slk_clear.3ncurses.gz +#opt/lampp/man/man3/Apache::compat.3 +#opt/lampp/man/man3/SSL_CTX_sess_connect_good.3 +#opt/lampp/man/man3/ldap_url.3 +#opt/lampp/man/man3/LWP::DebugFile.3 +#opt/lampp/man/man3/HTTP::Message.3 +#opt/lampp/man/man3/EVP_PKEY_assign_DH.3 +#opt/lampp/man/man3/data_behind.3form.gz +#opt/lampp/man/man3/key_name.3ncurses.gz +#opt/lampp/man/man3/DH_get_default_method.3 +#opt/lampp/man/man3/vline.3ncurses.gz +#opt/lampp/man/man5/ +#opt/lampp/man/man5/slapo-retcode.5 +#opt/lampp/man/man5/ldapfilter.conf.5 +#opt/lampp/man/man5/slapd.plugin.5 +#opt/lampp/man/man5/slapd-monitor.5 +#opt/lampp/man/man5/png.5 +#opt/lampp/man/man5/slapo-syncprov.5 +#opt/lampp/man/man5/slapo-lastmod.5 +#opt/lampp/man/man5/slapo-dynlist.5 +#opt/lampp/man/man5/slapd.replog.5 +#opt/lampp/man/man5/slapo-refint.5 +#opt/lampp/man/man5/slapo-auditlog.5 +#opt/lampp/man/man5/slapd-ldap.5 +#opt/lampp/man/man5/slapd-ldbm.5 +#opt/lampp/man/man5/slapd-ldif.5 +#opt/lampp/man/man5/slapd-meta.5 +#opt/lampp/man/man5/slapo-rwm.5 +#opt/lampp/man/man5/ldapfriendly.5 +#opt/lampp/man/man5/slapd.conf.5 +#opt/lampp/man/man5/slapd-null.5 +#opt/lampp/man/man5/slapd-perl.5 +#opt/lampp/man/man5/slapo-unique.5 +#opt/lampp/man/man5/ldaptemplates.conf.5 +#opt/lampp/man/man5/config.5 +#opt/lampp/man/man5/slapd-relay.5 +#opt/lampp/man/man5/x509v3_config.5 +#opt/lampp/man/man5/slapd.access.5 +#opt/lampp/man/man5/ldif.5 +#opt/lampp/man/man5/slapd-dnssrv.5 +#opt/lampp/man/man5/ldap.conf.5 +#opt/lampp/man/man5/slapo-chain.5 +#opt/lampp/man/man5/term.5.gz +#opt/lampp/man/man5/ud.conf.5 +#opt/lampp/man/man5/slapo-translucent.5 +#opt/lampp/man/man5/slapd-shell.5 +#opt/lampp/man/man5/slapo-pcache.5 +#opt/lampp/man/man5/slapo-accesslog.5 +#opt/lampp/man/man5/xferlog.5 +#opt/lampp/man/man5/slapd-bdb.5 +#opt/lampp/man/man5/slapd-hdb.5 +#opt/lampp/man/man5/slapd-tcl.5 +#opt/lampp/man/man5/slapd-sql.5 +#opt/lampp/man/man5/ldapsearchprefs.conf.5 +#opt/lampp/man/man5/terminfo.5.gz +#opt/lampp/man/man5/slapo-ppolicy.5 +#opt/lampp/man/man5/slapo-valsort.5 +#opt/lampp/man/man5/slapd-passwd.5 +#opt/lampp/man/man7/ +#opt/lampp/man/man7/of.7 +#opt/lampp/man/man7/DES.7 +#opt/lampp/man/man7/des_modes.7 +#opt/lampp/man/man7/term.7.gz +#opt/lampp/man/man7/Modes_of_DES.7 +#opt/lampp/man/man7/Modes of DES.7 +#opt/lampp/man/man7/Modes.7 +#opt/lampp/man/man8/ +#opt/lampp/man/man8/ab.8 +#opt/lampp/man/man8/ldif2index.8 +#opt/lampp/man/man8/in.xfingerd.8 +#opt/lampp/man/man8/rcpt500.8 +#opt/lampp/man/man8/ldbmcat.8 +#opt/lampp/man/man8/apachectl.8 +#opt/lampp/man/man8/ldapd.8 +#opt/lampp/man/man8/ftpdctl.8 +#opt/lampp/man/man8/slappasswd.8 +#opt/lampp/man/man8/fax500.8 +#opt/lampp/man/man8/slapd.8 +#opt/lampp/man/man8/slapindex.8 +#opt/lampp/man/man8/chlog2replog.8 +#opt/lampp/man/man8/slapauth.8 +#opt/lampp/man/man8/go500gw.8 +#opt/lampp/man/man8/apxs.8 +#opt/lampp/man/man8/rotatelogs.8 +#opt/lampp/man/man8/ldif2id2entry.8 +#opt/lampp/man/man8/ftpshut.8 +#opt/lampp/man/man8/slapdn.8 +#opt/lampp/man/man8/go500.8 +#opt/lampp/man/man8/ldif.8 +#opt/lampp/man/man8/slaptest.8 +#opt/lampp/man/man8/centipede.8 +#opt/lampp/man/man8/proftpd.8 +#opt/lampp/man/man8/ldif2ldbm.8 +#opt/lampp/man/man8/ldif2id2children.8 +#opt/lampp/man/man8/logresolve.8 +#opt/lampp/man/man8/slurpd.8 +#opt/lampp/man/man8/mail500.8 +#opt/lampp/man/man8/httpd.8 +#opt/lampp/man/man8/slapacl.8 +#opt/lampp/man/man8/slapadd.8 +#opt/lampp/man/man8/slapcat.8 +#opt/lampp/man/man8/suexec.8 +#opt/lampp/man/man8/edb2ldif.8 +#opt/lampp/info/ +#opt/lampp/info/mysql.info +#opt/lampp/build/ +#opt/lampp/build/apr_rules.mk +#opt/lampp/build/libtool +#opt/lampp/build/make_var_export.awk +#opt/lampp/build/config_vars.mk +#opt/lampp/build/special.mk +#opt/lampp/build/rules.mk +#opt/lampp/build/program.mk +#opt/lampp/build/instdso.sh +#opt/lampp/build/ltlib.mk +#opt/lampp/build/config.nice +#opt/lampp/build/mkdir.sh +#opt/lampp/build/library.mk +#opt/lampp/build/make_exports.awk +#opt/lampp/share/ +#opt/lampp/share/doc/ +#opt/lampp/share/doc/freetds-0.63/ +#opt/lampp/share/doc/freetds-0.63/images/ +#opt/lampp/share/doc/freetds-0.63/images/note.gif +#opt/lampp/share/doc/freetds-0.63/images/important.gif +#opt/lampp/share/doc/freetds-0.63/images/tip.gif +#opt/lampp/share/doc/freetds-0.63/reference/ +#opt/lampp/share/doc/freetds-0.63/reference/a00377.html +#opt/lampp/share/doc/freetds-0.63/reference/a00378.html +#opt/lampp/share/doc/freetds-0.63/reference/a00064.html +#opt/lampp/share/doc/freetds-0.63/reference/a00379.html +#opt/lampp/share/doc/freetds-0.63/reference/a00310.html +#opt/lampp/share/doc/freetds-0.63/reference/a00380.html +#opt/lampp/share/doc/freetds-0.63/reference/a00194.html +#opt/lampp/share/doc/freetds-0.63/reference/a00381.html +#opt/lampp/share/doc/freetds-0.63/reference/a00382.html +#opt/lampp/share/doc/freetds-0.63/reference/a00255.html +#opt/lampp/share/doc/freetds-0.63/reference/a00383.html +#opt/lampp/share/doc/freetds-0.63/reference/a00197.html +#opt/lampp/share/doc/freetds-0.63/reference/a00384.html +#opt/lampp/share/doc/freetds-0.63/reference/a00198.html +#opt/lampp/share/doc/freetds-0.63/reference/a00385.html +#opt/lampp/share/doc/freetds-0.63/reference/a00386.html +#opt/lampp/share/doc/freetds-0.63/reference/a00387.html +#opt/lampp/share/doc/freetds-0.63/reference/a00388.html +#opt/lampp/share/doc/freetds-0.63/reference/a00389.html +#opt/lampp/share/doc/freetds-0.63/reference/a00075.html +#opt/lampp/share/doc/freetds-0.63/reference/a00391.html +#opt/lampp/share/doc/freetds-0.63/reference/a00393.html +#opt/lampp/share/doc/freetds-0.63/reference/a00394.html +#opt/lampp/share/doc/freetds-0.63/reference/a00395.html +#opt/lampp/share/doc/freetds-0.63/reference/a00081.html +#opt/lampp/share/doc/freetds-0.63/reference/a00396.html +#opt/lampp/share/doc/freetds-0.63/reference/a00082.html +#opt/lampp/share/doc/freetds-0.63/reference/a00397.html +#opt/lampp/share/doc/freetds-0.63/reference/doxygen.css +#opt/lampp/share/doc/freetds-0.63/reference/doxygen.png +#opt/lampp/share/doc/freetds-0.63/reference/a00083.html +#opt/lampp/share/doc/freetds-0.63/reference/a00398.html +#opt/lampp/share/doc/freetds-0.63/reference/functions.html +#opt/lampp/share/doc/freetds-0.63/reference/a00399.html +#opt/lampp/share/doc/freetds-0.63/reference/a00085.html +#opt/lampp/share/doc/freetds-0.63/reference/a00087.html +#opt/lampp/share/doc/freetds-0.63/reference/index.html +#opt/lampp/share/doc/freetds-0.63/reference/globals.html +#opt/lampp/share/doc/freetds-0.63/reference/a00336.html +#opt/lampp/share/doc/freetds-0.63/reference/a00337.html +#opt/lampp/share/doc/freetds-0.63/reference/a00338.html +#opt/lampp/share/doc/freetds-0.63/reference/a00339.html +#opt/lampp/share/doc/freetds-0.63/reference/a00340.html +#opt/lampp/share/doc/freetds-0.63/reference/a00213.html +#opt/lampp/share/doc/freetds-0.63/reference/files.html +#opt/lampp/share/doc/freetds-0.63/reference/a00341.html +#opt/lampp/share/doc/freetds-0.63/reference/a00342.html +#opt/lampp/share/doc/freetds-0.63/reference/a00156.html +#opt/lampp/share/doc/freetds-0.63/reference/a00343.html +#opt/lampp/share/doc/freetds-0.63/reference/pages.html +#opt/lampp/share/doc/freetds-0.63/reference/a00344.html +#opt/lampp/share/doc/freetds-0.63/reference/a00217.html +#opt/lampp/share/doc/freetds-0.63/reference/a00345.html +#opt/lampp/share/doc/freetds-0.63/reference/a00159.html +#opt/lampp/share/doc/freetds-0.63/reference/a00346.html +#opt/lampp/share/doc/freetds-0.63/reference/a00347.html +#opt/lampp/share/doc/freetds-0.63/reference/todo.html +#opt/lampp/share/doc/freetds-0.63/reference/a00348.html +#opt/lampp/share/doc/freetds-0.63/reference/a00349.html +#opt/lampp/share/doc/freetds-0.63/reference/bug.html +#opt/lampp/share/doc/freetds-0.63/reference/a00350.html +#opt/lampp/share/doc/freetds-0.63/reference/a00351.html +#opt/lampp/share/doc/freetds-0.63/reference/a00352.html +#opt/lampp/share/doc/freetds-0.63/reference/a00353.html +#opt/lampp/share/doc/freetds-0.63/reference/a00354.html +#opt/lampp/share/doc/freetds-0.63/reference/a00356.html +#opt/lampp/share/doc/freetds-0.63/reference/a00358.html +#opt/lampp/share/doc/freetds-0.63/reference/a00359.html +#opt/lampp/share/doc/freetds-0.63/reference/a00232.html +#opt/lampp/share/doc/freetds-0.63/reference/a00360.html +#opt/lampp/share/doc/freetds-0.63/reference/a00361.html +#opt/lampp/share/doc/freetds-0.63/reference/a00362.html +#opt/lampp/share/doc/freetds-0.63/reference/a00363.html +#opt/lampp/share/doc/freetds-0.63/reference/a00364.html +#opt/lampp/share/doc/freetds-0.63/reference/a00365.html +#opt/lampp/share/doc/freetds-0.63/reference/a00366.html +#opt/lampp/share/doc/freetds-0.63/reference/a00367.html +#opt/lampp/share/doc/freetds-0.63/reference/annotated.html +#opt/lampp/share/doc/freetds-0.63/reference/a00368.html +#opt/lampp/share/doc/freetds-0.63/reference/a00369.html +#opt/lampp/share/doc/freetds-0.63/reference/a00370.html +#opt/lampp/share/doc/freetds-0.63/reference/a00371.html +#opt/lampp/share/doc/freetds-0.63/reference/a00372.html +#opt/lampp/share/doc/freetds-0.63/reference/a00373.html +#opt/lampp/share/doc/freetds-0.63/reference/a00374.html +#opt/lampp/share/doc/freetds-0.63/reference/modules.html +#opt/lampp/share/doc/freetds-0.63/reference/a00375.html +#opt/lampp/share/doc/freetds-0.63/reference/a00307.html +#opt/lampp/share/doc/freetds-0.63/reference/a00376.html +#opt/lampp/share/doc/freetds-0.63/userguide/ +#opt/lampp/share/doc/freetds-0.63/userguide/unicodeutf.htm +#opt/lampp/share/doc/freetds-0.63/userguide/packages.htm +#opt/lampp/share/doc/freetds-0.63/userguide/freetdshistory.htm +#opt/lampp/share/doc/freetds-0.63/userguide/freetdsconf.htm +#opt/lampp/share/doc/freetds-0.63/userguide/confirminstall.htm +#opt/lampp/share/doc/freetds-0.63/userguide/odbcombo.htm +#opt/lampp/share/doc/freetds-0.63/userguide/odbcinionly.htm +#opt/lampp/share/doc/freetds-0.63/userguide/iso8859.htm +#opt/lampp/share/doc/freetds-0.63/userguide/acknowledgments.htm +#opt/lampp/share/doc/freetds-0.63/userguide/sybsql.htm +#opt/lampp/share/doc/freetds-0.63/userguide/install.htm +#opt/lampp/share/doc/freetds-0.63/userguide/aboutunicode.htm +#opt/lampp/share/doc/freetds-0.63/userguide/interfacesfile.htm +#opt/lampp/share/doc/freetds-0.63/userguide/software.htm +#opt/lampp/share/doc/freetds-0.63/userguide/stunnel.htm +#opt/lampp/share/doc/freetds-0.63/userguide/contributors.htm +#opt/lampp/share/doc/freetds-0.63/userguide/unicodegoodbad.htm +#opt/lampp/share/doc/freetds-0.63/userguide/interfacesformat.htm +#opt/lampp/share/doc/freetds-0.63/userguide/nonwestern.htm +#opt/lampp/share/doc/freetds-0.63/userguide/tdspool.htm +#opt/lampp/share/doc/freetds-0.63/userguide/choosingtdsprotocol.htm +#opt/lampp/share/doc/freetds-0.63/userguide/interfacespurpose.htm +#opt/lampp/share/doc/freetds-0.63/userguide/tdshistory.htm +#opt/lampp/share/doc/freetds-0.63/userguide/what.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-1.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-2.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-3.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-4.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-5.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-6.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-7.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-8.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-9.htm +#opt/lampp/share/doc/freetds-0.63/userguide/index.html +#opt/lampp/share/doc/freetds-0.63/userguide/config.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl.htm +#opt/lampp/share/doc/freetds-0.63/userguide/odbc.api.summary.htm +#opt/lampp/share/doc/freetds-0.63/userguide/contrib.htm +#opt/lampp/share/doc/freetds-0.63/userguide/dblib.api.summary.htm +#opt/lampp/share/doc/freetds-0.63/userguide/odbcdiagnose.htm +#opt/lampp/share/doc/freetds-0.63/userguide/envvar.htm +#opt/lampp/share/doc/freetds-0.63/userguide/advocacy.htm +#opt/lampp/share/doc/freetds-0.63/userguide/locales.htm +#opt/lampp/share/doc/freetds-0.63/userguide/programming.htm +#opt/lampp/share/doc/freetds-0.63/userguide/askingforhelp.htm +#opt/lampp/share/doc/freetds-0.63/userguide/python.htm +#opt/lampp/share/doc/freetds-0.63/userguide/index.htm +#opt/lampp/share/doc/freetds-0.63/userguide/osissues.htm +#opt/lampp/share/doc/freetds-0.63/userguide/dsnless.htm +#opt/lampp/share/doc/freetds-0.63/userguide/configs.htm +#opt/lampp/share/doc/freetds-0.63/userguide/about.htm +#opt/lampp/share/doc/freetds-0.63/userguide/build.htm +#opt/lampp/share/doc/freetds-0.63/userguide/samplecode.htm +#opt/lampp/share/doc/freetds-0.63/userguide/prepodbc.htm +#opt/lampp/share/doc/freetds-0.63/userguide/interfaceslocation.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-10.htm +#opt/lampp/share/doc/freetds-0.63/userguide/unicode.htm +#opt/lampp/share/doc/freetds-0.63/userguide/gfdl-11.htm +#opt/lampp/share/doc/freetds-0.63/userguide/mailinglist.htm +#opt/lampp/share/doc/freetds-0.63/userguide/serverthere.htm +#opt/lampp/share/doc/freetds-0.63/userguide/pagenodata.htm +#opt/lampp/share/doc/freetds-0.63/userguide/troubleshooting.htm +#opt/lampp/share/doc/freetds-0.63/userguide/projects.htm +#opt/lampp/share/doc/freetds-0.63/userguide/php.htm +#opt/lampp/share/doc/freetds-0.63/userguide/apireference.htm +#opt/lampp/share/doc/freetds-0.63/userguide/unicodefreetds.htm +#opt/lampp/share/doc/freetds-0.63/userguide/appendmode.htm +#opt/lampp/share/doc/freetds-0.63/userguide/domains.htm +#opt/lampp/share/doc/freetds-0.63/userguide/perl.htm +#opt/lampp/share/doc/freetds-0.63/userguide/seemtooslow.htm +#opt/lampp/share/doc/freetds-0.63/userguide/ctlib.api.summary.htm +#opt/lampp/share/doc/freetds-0.63/userguide/odbcconnattr.htm +#opt/lampp/share/doc/freetds-0.63/userguide/help.htm +#opt/lampp/share/doc/freetds-0.63/userguide/logging.htm +#opt/lampp/share/doc/freetds-0.63/userguide/configurations.htm +#opt/lampp/share/doc/freetds-0.62.4/ +#opt/lampp/share/doc/freetds-0.62.4/images/ +#opt/lampp/share/doc/freetds-0.62.4/images/note.gif +#opt/lampp/share/doc/freetds-0.62.4/images/important.gif +#opt/lampp/share/doc/freetds-0.62.4/images/tip.gif +#opt/lampp/share/doc/freetds-0.62.4/reference/ +#opt/lampp/share/doc/freetds-0.62.4/reference/a00309.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00310.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00065.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00311.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00066.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00312.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00067.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00313.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00068.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00314.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00315.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00129.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00317.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00072.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00319.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00132.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00320.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00321.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00322.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00323.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00324.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00325.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00326.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00327.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00328.html +#opt/lampp/share/doc/freetds-0.62.4/reference/doxygen.css +#opt/lampp/share/doc/freetds-0.62.4/reference/doxygen.png +#opt/lampp/share/doc/freetds-0.62.4/reference/a00200.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00329.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00270.html +#opt/lampp/share/doc/freetds-0.62.4/reference/functions.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00330.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00331.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00273.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00332.html +#opt/lampp/share/doc/freetds-0.62.4/reference/index.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00333.html +#opt/lampp/share/doc/freetds-0.62.4/reference/globals.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00334.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00335.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00336.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00337.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00338.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00339.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00340.html +#opt/lampp/share/doc/freetds-0.62.4/reference/files.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00341.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00342.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00343.html +#opt/lampp/share/doc/freetds-0.62.4/reference/pages.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00344.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00345.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00346.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00347.html +#opt/lampp/share/doc/freetds-0.62.4/reference/todo.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00348.html +#opt/lampp/share/doc/freetds-0.62.4/reference/bug.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00350.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00164.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00223.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00352.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00353.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00167.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00354.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00168.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00355.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00297.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00356.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00298.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00357.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00299.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00358.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00048.html +#opt/lampp/share/doc/freetds-0.62.4/reference/annotated.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00181.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00300.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00301.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00302.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00185.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00303.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00304.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00059.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00305.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00306.html +#opt/lampp/share/doc/freetds-0.62.4/reference/modules.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00307.html +#opt/lampp/share/doc/freetds-0.62.4/reference/a00308.html +#opt/lampp/share/doc/freetds-0.62.4/userguide/ +#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodeutf.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/packages.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/freetdshistory.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/freetdsconf.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/confirminstall.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcombo.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcinionly.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/iso8859.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/acknowledgments.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/sybsql.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/install.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/aboutunicode.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacesfile.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/software.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/stunnel.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/contributors.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodegoodbad.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacesformat.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/nonwestern.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/tdspool.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/choosingtdsprotocol.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/interfacespurpose.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/tdshistory.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/what.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-1.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-2.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-3.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-4.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-5.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-6.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-7.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-8.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-9.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/index.html +#opt/lampp/share/doc/freetds-0.62.4/userguide/config.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/odbc.api.summary.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/contrib.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/dblib.api.summary.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcdiagnose.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/envvar.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/advocacy.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/locales.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/programming.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/askingforhelp.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/python.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/index.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/osissues.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/dsnless.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/configs.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/about.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/build.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/samplecode.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/prepodbc.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/interfaceslocation.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-10.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/unicode.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/gfdl-11.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/mailinglist.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/serverthere.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/pagenodata.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/troubleshooting.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/projects.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/php.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/apireference.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/unicodefreetds.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/appendmode.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/domains.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/perl.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/seemtooslow.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/ctlib.api.summary.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/odbcconnattr.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/help.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/logging.htm +#opt/lampp/share/doc/freetds-0.62.4/userguide/configurations.htm +#opt/lampp/share/doc/libxslt-1.1.8/ +#opt/lampp/share/doc/libxslt-1.1.8/html/ +#opt/lampp/share/doc/libxslt-1.1.8/html/html/ +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-transform.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-extensions.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-attributes.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-templates.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/right.png +#opt/lampp/share/doc/libxslt-1.1.8/html/html/left.png +#opt/lampp/share/doc/libxslt-1.1.8/html/html/index.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/home.png +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-functions.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-preproc.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-lib.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-numbersInternals.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-extra.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-documents.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-variables.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/book1.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/up.png +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-keys.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltexports.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xslt.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-imports.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-namespaces.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-pattern.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-security.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltInternals.html +#opt/lampp/share/doc/libxslt-1.1.8/html/html/libxslt-xsltutils.html +#opt/lampp/share/doc/libxslt-1.1.8/html/EXSLT/ +#opt/lampp/share/doc/libxslt-1.1.8/html/EXSLT/exslt.html +#opt/lampp/share/doc/libxslt-1.1.8/html/templates.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk0.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk1.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk2.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk3.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk4.html +#opt/lampp/share/doc/libxslt-1.1.8/html/xsltproc.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk5.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk6.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIfunctions.html +#opt/lampp/share/doc/libxslt-1.1.8/html/internals.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk7.html +#opt/lampp/share/doc/libxslt-1.1.8/html/stylesheet.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk8.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIchunk9.html +#opt/lampp/share/doc/libxslt-1.1.8/html/python.html +#opt/lampp/share/doc/libxslt-1.1.8/html/Libxslt-Logo-90x34.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/docs.html +#opt/lampp/share/doc/libxslt-1.1.8/html/index.html +#opt/lampp/share/doc/libxslt-1.1.8/html/bugs.html +#opt/lampp/share/doc/libxslt-1.1.8/html/object.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/smallfootonly.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/contexts.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/downloads.html +#opt/lampp/share/doc/libxslt-1.1.8/html/xslt.html +#opt/lampp/share/doc/libxslt-1.1.8/html/contribs.html +#opt/lampp/share/doc/libxslt-1.1.8/html/processing.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/ +#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslt_tutorial.c +#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslttutorial.html +#opt/lampp/share/doc/libxslt-1.1.8/html/tutorial/libxslttutorial.xml +#opt/lampp/share/doc/libxslt-1.1.8/html/Libxslt-Logo-180x168.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/extensions.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIconstructors.html +#opt/lampp/share/doc/libxslt-1.1.8/html/redhat.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/intro.html +#opt/lampp/share/doc/libxslt-1.1.8/html/FAQ.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIfiles.html +#opt/lampp/share/doc/libxslt-1.1.8/html/help.html +#opt/lampp/share/doc/libxslt-1.1.8/html/xsltproc2.html +#opt/lampp/share/doc/libxslt-1.1.8/html/node.gif +#opt/lampp/share/doc/libxslt-1.1.8/html/API.html +#opt/lampp/share/doc/libxslt-1.1.8/html/news.html +#opt/lampp/share/doc/libxslt-1.1.8/html/docbook.html +#opt/lampp/share/doc/libxslt-1.1.8/html/APIsymbols.html +#opt/lampp/share/doc/libxml2-2.6.11/ +#opt/lampp/share/doc/libxml2-2.6.11/html/ +#opt/lampp/share/doc/libxml2-2.6.11/html/Libxml2-Logo-90x34.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/html/ +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-HTMLtree.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlwriter.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpathInternals.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-chvalid.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-parser.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-valid.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-uri.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlautomata.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/right.png +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-hash.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-nanoftp.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-SAX2.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/left.png +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlstring.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-globals.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-HTMLparser.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/index.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-tree.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlunicode.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlerror.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-lib.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-c14n.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-catalog.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlexports.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-SAX.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpath.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-parserInternals.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xinclude.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/home.png +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlschemas.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlversion.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-list.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-relaxng.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlIO.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-pattern.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-DOCBparser.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlregexp.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-dict.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlmemory.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/book1.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/up.png +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-threads.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-nanohttp.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-schemasInternals.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xpointer.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-debugXML.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlsave.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlschemastypes.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-entities.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xmlreader.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-encoding.html +#opt/lampp/share/doc/libxml2-2.6.11/html/html/libxml-xlink.html +#opt/lampp/share/doc/libxml2-2.6.11/html/DOM.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/encoding.html +#opt/lampp/share/doc/libxml2-2.6.11/html/xpath1.c +#opt/lampp/share/doc/libxml2-2.6.11/html/xpath2.c +#opt/lampp/share/doc/libxml2-2.6.11/html/io1.c +#opt/lampp/share/doc/libxml2-2.6.11/html/io2.c +#opt/lampp/share/doc/libxml2-2.6.11/html/w3c.png +#opt/lampp/share/doc/libxml2-2.6.11/html/testWriter.c +#opt/lampp/share/doc/libxml2-2.6.11/html/writer.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/parse1.c +#opt/lampp/share/doc/libxml2-2.6.11/html/parse2.c +#opt/lampp/share/doc/libxml2-2.6.11/html/parse3.c +#opt/lampp/share/doc/libxml2-2.6.11/html/parse4.c +#opt/lampp/share/doc/libxml2-2.6.11/html/structure.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/Libxml2-Logo-180x168.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/smallfootonly.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/tree1.res +#opt/lampp/share/doc/libxml2-2.6.11/html/tree2.res +#opt/lampp/share/doc/libxml2-2.6.11/html/tree1.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tree2.c +#opt/lampp/share/doc/libxml2-2.6.11/html/examples.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/examples.xsl +#opt/lampp/share/doc/libxml2-2.6.11/html/tst.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/xpath1.res +#opt/lampp/share/doc/libxml2-2.6.11/html/xpath2.res +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s02.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s03.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apa.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s04.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apb.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includexpath.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s05.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apc.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s06.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apd.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s07.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ape.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s08.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apf.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ar01s09.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/apg.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/aph.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/ix01.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/api.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/index.html +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeconvert.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/xmltutorial.pdf +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/ +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/warning.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-blank.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/blank.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/note.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-plus.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/ +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/1.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/2.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/3.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/4.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/5.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/6.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/7.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/8.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/9.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/callouts/10.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/important.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/tip.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/home.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/toc-minus.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/prev.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/up.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/next.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/draft.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/images/caution.png +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includekeyword.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includegetattribute.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeaddkeyword.c +#opt/lampp/share/doc/libxml2-2.6.11/html/tutorial/includeaddattribute.c +#opt/lampp/share/doc/libxml2-2.6.11/html/xml.html +#opt/lampp/share/doc/libxml2-2.6.11/html/libxml.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/redhat.gif +#opt/lampp/share/doc/libxml2-2.6.11/html/FAQ.html +#opt/lampp/share/doc/libxml2-2.6.11/html/io1.res +#opt/lampp/share/doc/libxml2-2.6.11/html/io2.res +#opt/lampp/share/doc/libxml2-2.6.11/html/test1.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/test2.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/test3.xml +#opt/lampp/share/doc/libxml2-2.6.11/html/reader1.c +#opt/lampp/share/doc/libxml2-2.6.11/html/reader2.c +#opt/lampp/share/doc/libxml2-2.6.11/html/reader3.c +#opt/lampp/share/doc/libxml2-2.6.11/html/reader1.res +#opt/lampp/share/doc/libxml2-2.6.11/html/reader3.res +#opt/lampp/share/doc/libxml2-2.6.11/Copyright +#opt/lampp/share/doc/libxml2-2.6.11/examples/ +#opt/lampp/share/doc/libxml2-2.6.11/examples/testXPath.c +#opt/lampp/share/doc/libxml2-2.6.11/examples/testHTML.c +#opt/lampp/share/doc/libxml2-2.6.11/examples/xmllint.c +#opt/lampp/share/doc/libxml2-2.6.11/examples/testSAX.c +#opt/lampp/modules/ +#opt/lampp/modules/mod_file_cache.la +#opt/lampp/modules/mod_setenvif.la +#opt/lampp/modules/mod_cern_meta.la +#opt/lampp/modules/mod_case_filter.la +#opt/lampp/modules/mod_expires.la +#opt/lampp/modules/mod_authn_default.a +#opt/lampp/modules/mod_authn_file.la +#opt/lampp/modules/mod_disk_cache.la +#opt/lampp/modules/mod_dav_fs.a +#opt/lampp/modules/mod_ident.a +#opt/lampp/modules/mod_authz_user.a +#opt/lampp/modules/mod_deflate.la +#opt/lampp/modules/mod_proxy_ftp.la +#opt/lampp/modules/mod_proxy_http.a +#opt/lampp/modules/mod_autoindex.a +#opt/lampp/modules/mod_asis.la +#opt/lampp/modules/mod_authz_groupfile.a +#opt/lampp/modules/mod_rewrite.a +#opt/lampp/modules/mod_negotiation.la +#opt/lampp/modules/mod_mem_cache.a +#opt/lampp/modules/mod_apreq2.la +#opt/lampp/modules/mod_file_cache.a +#opt/lampp/modules/mod_disk_cache.a +#opt/lampp/modules/mod_usertrack.a +#opt/lampp/modules/mod_proxy_balancer.a +#opt/lampp/modules/mod_cache.a +#opt/lampp/modules/mod_authn_default.la +#opt/lampp/modules/mod_usertrack.la +#opt/lampp/modules/mod_imagemap.a +#opt/lampp/modules/mod_info.la +#opt/lampp/modules/mod_bucketeer.a +#opt/lampp/modules/mod_authz_dbm.a +#opt/lampp/modules/mod_proxy_balancer.la +#opt/lampp/modules/mod_cache.la +#opt/lampp/modules/mod_dumpio.la +#opt/lampp/modules/mod_cgid.la +#opt/lampp/modules/mod_dav_fs.la +#opt/lampp/modules/mod_ident.la +#opt/lampp/modules/mod_authz_user.la +#opt/lampp/modules/mod_proxy.a +#opt/lampp/modules/mod_include.a +#opt/lampp/modules/mod_case_filter_in.a +#opt/lampp/modules/mod_filter.a +#opt/lampp/modules/mod_proxy_connect.la +#opt/lampp/modules/mod_cern_meta.a +#opt/lampp/modules/mod_negotiation.a +#opt/lampp/modules/mod_vhost_alias.a +#opt/lampp/modules/mod_authz_host.la +#opt/lampp/modules/mod_vhost_alias.la +#opt/lampp/modules/mod_actions.la +#opt/lampp/modules/mod_cgi.a +#opt/lampp/modules/mod_dbd.a +#opt/lampp/modules/mod_dav.a +#opt/lampp/modules/mod_dir.a +#opt/lampp/modules/mod_env.a +#opt/lampp/modules/mod_authn_anon.la +#opt/lampp/modules/mod_apreq2.a +#opt/lampp/modules/mod_log_config.la +#opt/lampp/modules/mod_authn_dbd.a +#opt/lampp/modules/mod_authn_dbm.a +#opt/lampp/modules/mod_authz_owner.a +#opt/lampp/modules/mod_unique_id.a +#opt/lampp/modules/mod_echo.la +#opt/lampp/modules/mod_charset_lite.la +#opt/lampp/modules/mod_ldap.la +#opt/lampp/modules/mod_setenvif.a +#opt/lampp/modules/mod_case_filter.a +#opt/lampp/modules/mod_deflate.a +#opt/lampp/modules/mod_authn_anon.a +#opt/lampp/modules/mod_authn_dbd.la +#opt/lampp/modules/mod_mime_magic.la +#opt/lampp/modules/mod_authn_dbm.la +#opt/lampp/modules/mod_example.la +#opt/lampp/modules/mod_status.la +#opt/lampp/modules/libphp4.la +#opt/lampp/modules/libphp5.la +#opt/lampp/modules/mod_authn_file.a +#opt/lampp/modules/mod_ext_filter.la +#opt/lampp/modules/mod_actions.a +#opt/lampp/modules/mod_mime_magic.a +#opt/lampp/modules/mod_status.a +#opt/lampp/modules/mod_logio.a +#opt/lampp/modules/mod_proxy_http.la +#opt/lampp/modules/mod_speling.a +#opt/lampp/modules/mod_userdir.a +#opt/lampp/modules/mod_imagemap.la +#opt/lampp/modules/mod_authz_owner.la +#opt/lampp/modules/mod_logio.la +#opt/lampp/modules/mod_alias.la +#opt/lampp/modules/mod_mime.la +#opt/lampp/modules/mod_auth_digest.la +#opt/lampp/modules/mod_speling.la +#opt/lampp/modules/mod_auth_basic.la +#opt/lampp/modules/mod_autoindex.la +#opt/lampp/modules/mod_userdir.la +#opt/lampp/modules/mod_unique_id.la +#opt/lampp/modules/mod_proxy.la +#opt/lampp/modules/mod_authz_groupfile.la +#opt/lampp/modules/mod_authz_default.a +#opt/lampp/modules/mod_bucketeer.la +#opt/lampp/modules/mod_suexec.la +#opt/lampp/modules/mod_proxy_connect.a +#opt/lampp/modules/mod_example.a +#opt/lampp/modules/mod_authz_dbm.la +#opt/lampp/modules/mod_ext_filter.a +#opt/lampp/modules/mod_suexec.a +#opt/lampp/modules/mod_asis.a +#opt/lampp/modules/mod_rewrite.la +#opt/lampp/modules/mod_cgi.la +#opt/lampp/modules/mod_dumpio.a +#opt/lampp/modules/mod_cgid.a +#opt/lampp/modules/mod_include.la +#opt/lampp/modules/mod_dbd.la +#opt/lampp/modules/mod_dav.la +#opt/lampp/modules/mod_authz_host.a +#opt/lampp/modules/mod_dir.la +#opt/lampp/modules/mod_log_config.a +#opt/lampp/modules/mod_echo.a +#opt/lampp/modules/mod_env.la +#opt/lampp/modules/mod_auth_digest.a +#opt/lampp/modules/mod_auth_basic.a +#opt/lampp/modules/mod_headers.a +#opt/lampp/modules/mod_proxy_ajp.a +#opt/lampp/modules/mod_mem_cache.la +#opt/lampp/modules/mod_expires.a +#opt/lampp/modules/mod_proxy_ftp.a +#opt/lampp/modules/mod_info.a +#opt/lampp/modules/mod_headers.la +#opt/lampp/modules/mod_authz_default.la +#opt/lampp/modules/mod_case_filter_in.la +#opt/lampp/modules/mod_charset_lite.a +#opt/lampp/modules/mod_proxy_ajp.la +#opt/lampp/modules/mod_ldap.a +#opt/lampp/modules/mod_filter.la +#opt/lampp/modules/mod_alias.a +#opt/lampp/modules/mod_mime.a +#opt/lampp/manual/ +#opt/lampp/manual/faq/ +#opt/lampp/manual/faq/support.html.en +#opt/lampp/manual/faq/all_in_one.html.ko.euc-kr +#opt/lampp/manual/faq/all_in_one.html.ja.euc-jp +#opt/lampp/manual/faq/all_in_one.html.en +#opt/lampp/manual/faq/support.html +#opt/lampp/manual/faq/error.html.ko.euc-kr +#opt/lampp/manual/faq/index.html +#opt/lampp/manual/faq/error.html.ja.euc-jp +#opt/lampp/manual/faq/all_in_one.html +#opt/lampp/manual/faq/background.html +#opt/lampp/manual/faq/index.html.ko.euc-kr +#opt/lampp/manual/faq/background.html.en +#opt/lampp/manual/faq/support.html.ko.euc-kr +#opt/lampp/manual/faq/index.html.ja.euc-jp +#opt/lampp/manual/faq/index.html.en +#opt/lampp/manual/faq/support.html.ja.euc-jp +#opt/lampp/manual/faq/error.html +#opt/lampp/manual/faq/error.html.en +#opt/lampp/manual/mod/ +#opt/lampp/manual/mod/mod_autoindex.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_file.html.en +#opt/lampp/manual/mod/mod_isapi.html.en +#opt/lampp/manual/mod/mod_dbd.html.en +#opt/lampp/manual/mod/module-dict.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authz_host.html +#opt/lampp/manual/mod/mod_authn_default.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authn_alias.html +#opt/lampp/manual/mod/mod_proxy.html.en +#opt/lampp/manual/mod/prefork.html +#opt/lampp/manual/mod/mod_auth_basic.html +#opt/lampp/manual/mod/mod_ext_filter.html.ja.euc-jp +#opt/lampp/manual/mod/beos.html.de +#opt/lampp/manual/mod/beos.html.en +#opt/lampp/manual/mod/beos.html.es +#opt/lampp/manual/mod/mod_suexec.html.en +#opt/lampp/manual/mod/mod_so.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cgi.html +#opt/lampp/manual/mod/mod_env.html.en +#opt/lampp/manual/mod/mod_authnz_ldap.html +#opt/lampp/manual/mod/mod_dir.html +#opt/lampp/manual/mod/mod_authn_anon.html +#opt/lampp/manual/mod/mod_autoindex.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authz_dbm.html.ko.euc-kr +#opt/lampp/manual/mod/mod_log_config.html.en +#opt/lampp/manual/mod/mod_proxy_balancer.html.ja.euc-jp +#opt/lampp/manual/mod/mod_autoindex.html.en +#opt/lampp/manual/mod/mod_cern_meta.html.en +#opt/lampp/manual/mod/mod_imagemap.html.ko.euc-kr +#opt/lampp/manual/mod/mod_dav.html.ko.euc-kr +#opt/lampp/manual/mod/mod_dav.html.en +#opt/lampp/manual/mod/mod_echo.html +#opt/lampp/manual/mod/module-dict.html.ja.euc-jp +#opt/lampp/manual/mod/mod_cache.html +#opt/lampp/manual/mod/mod_headers.html +#opt/lampp/manual/mod/worker.html +#opt/lampp/manual/mod/mod_log_forensic.html.ja.euc-jp +#opt/lampp/manual/mod/mod_actions.html.ko.euc-kr +#opt/lampp/manual/mod/mod_ldap.html.en +#opt/lampp/manual/mod/mod_dumpio.html.ja.euc-jp +#opt/lampp/manual/mod/mod_setenvif.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authz_groupfile.html.ko.euc-kr +#opt/lampp/manual/mod/mpmt_os2.html +#opt/lampp/manual/mod/mod_so.html.ja.euc-jp +#opt/lampp/manual/mod/mod_negotiation.html.en +#opt/lampp/manual/mod/mod_deflate.html +#opt/lampp/manual/mod/mod_authz_default.html +#opt/lampp/manual/mod/mod_dav.html.ja.euc-jp +#opt/lampp/manual/mod/mod_cache.html.en +#opt/lampp/manual/mod/mod_imagemap.html +#opt/lampp/manual/mod/mod_actions.html.ja.euc-jp +#opt/lampp/manual/mod/mod_filter.html.en +#opt/lampp/manual/mod/mod_proxy_balancer.html.en +#opt/lampp/manual/mod/mod_unique_id.html.en +#opt/lampp/manual/mod/mod_setenvif.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authz_groupfile.html.ja.euc-jp +#opt/lampp/manual/mod/mod_ext_filter.html.en +#opt/lampp/manual/mod/mod_cern_meta.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authz_default.html.en +#opt/lampp/manual/mod/mod_authz_owner.html +#opt/lampp/manual/mod/mod_dav_lock.html +#opt/lampp/manual/mod/mod_example.html.ko.euc-kr +#opt/lampp/manual/mod/mod_disk_cache.html.en +#opt/lampp/manual/mod/mod_expires.html +#opt/lampp/manual/mod/mod_dav_fs.html.ko.euc-kr +#opt/lampp/manual/mod/mod_suexec.html +#opt/lampp/manual/mod/directives.html +#opt/lampp/manual/mod/mod_dav_fs.html +#opt/lampp/manual/mod/mod_expires.html.en +#opt/lampp/manual/mod/mpm_common.html +#opt/lampp/manual/mod/mod_authn_file.html.ko.euc-kr +#opt/lampp/manual/mod/mod_file_cache.html.ko.euc-kr +#opt/lampp/manual/mod/prefork.html.ja.euc-jp +#opt/lampp/manual/mod/core.html.de +#opt/lampp/manual/mod/core.html.en +#opt/lampp/manual/mod/mod_example.html.en +#opt/lampp/manual/mod/mod_include.html +#opt/lampp/manual/mod/mod_dav_fs.html.ja.euc-jp +#opt/lampp/manual/mod/mod_userdir.html +#opt/lampp/manual/mod/mod_userdir.html.ko.euc-kr +#opt/lampp/manual/mod/directive-dict.html +#opt/lampp/manual/mod/mod_deflate.html.ko.euc-kr +#opt/lampp/manual/mod/mod_so.html.en +#opt/lampp/manual/mod/worker.html.ja.euc-jp +#opt/lampp/manual/mod/mod_cgid.html +#opt/lampp/manual/mod/mod_example.html +#opt/lampp/manual/mod/mod_headers.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cache.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_file.html.ja.euc-jp +#opt/lampp/manual/mod/index.html +#opt/lampp/manual/mod/mod_cgi.html.ko.euc-kr +#opt/lampp/manual/mod/mod_proxy_ftp.html +#opt/lampp/manual/mod/mod_cgi.html.en +#opt/lampp/manual/mod/mod_authz_owner.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_file.html +#opt/lampp/manual/mod/mod_authz_default.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cgid.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cgid.html.en +#opt/lampp/manual/mod/mod_disk_cache.html +#opt/lampp/manual/mod/mod_file_cache.html +#opt/lampp/manual/mod/mod_charset_lite.html +#opt/lampp/manual/mod/mod_userdir.html.ja.euc-jp +#opt/lampp/manual/mod/mod_info.html.ko.euc-kr +#opt/lampp/manual/mod/quickreference.html.de +#opt/lampp/manual/mod/quickreference.html.en +#opt/lampp/manual/mod/quickreference.html.es +#opt/lampp/manual/mod/mod_deflate.html.ja.euc-jp +#opt/lampp/manual/mod/mod_log_forensic.html +#opt/lampp/manual/mod/directive-dict.html.ko.euc-kr +#opt/lampp/manual/mod/mod_alias.html.ko.euc-kr +#opt/lampp/manual/mod/mod_headers.html.ja.euc-jp +#opt/lampp/manual/mod/mod_cache.html.ja.euc-jp +#opt/lampp/manual/mod/index.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cgi.html.ja.euc-jp +#opt/lampp/manual/mod/mod_actions.html.de +#opt/lampp/manual/mod/mod_actions.html.en +#opt/lampp/manual/mod/mod_proxy_http.html.en +#opt/lampp/manual/mod/mod_authz_owner.html.ja.euc-jp +#opt/lampp/manual/mod/mpm_netware.html.en +#opt/lampp/manual/mod/mod_env.html +#opt/lampp/manual/mod/mod_authz_default.html.ja.euc-jp +#opt/lampp/manual/mod/directives.html.de +#opt/lampp/manual/mod/directives.html.en +#opt/lampp/manual/mod/directives.html.es +#opt/lampp/manual/mod/mod_cgid.html.ja.euc-jp +#opt/lampp/manual/mod/mod_speling.html.ko.euc-kr +#opt/lampp/manual/mod/mod_file_cache.html.en +#opt/lampp/manual/mod/mod_authn_default.html +#opt/lampp/manual/mod/mod_auth_basic.html.ko.euc-kr +#opt/lampp/manual/mod/core.html.ja.euc-jp +#opt/lampp/manual/mod/mod_info.html.ja.euc-jp +#opt/lampp/manual/mod/directive-dict.html.ja.euc-jp +#opt/lampp/manual/mod/mod_asis.html.en +#opt/lampp/manual/mod/mod_alias.html.ja.euc-jp +#opt/lampp/manual/mod/mpm_winnt.html +#opt/lampp/manual/mod/mod_auth_basic.html.en +#opt/lampp/manual/mod/mpm_netware.html +#opt/lampp/manual/mod/index.html.ja.euc-jp +#opt/lampp/manual/mod/mod_ssl.html +#opt/lampp/manual/mod/mod_proxy_http.html +#opt/lampp/manual/mod/mod_env.html.ko.euc-kr +#opt/lampp/manual/mod/mod_speling.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authz_groupfile.html.en +#opt/lampp/manual/mod/mod_filter.html +#opt/lampp/manual/mod/mod_asis.html.ko.euc-kr +#opt/lampp/manual/mod/mod_headers.html.en +#opt/lampp/manual/mod/mod_authn_default.html.en +#opt/lampp/manual/mod/worker.html.de +#opt/lampp/manual/mod/worker.html.en +#opt/lampp/manual/mod/mod_dav_lock.html.en +#opt/lampp/manual/mod/mod_auth_basic.html.ja.euc-jp +#opt/lampp/manual/mod/mod_dir.html.ko.euc-kr +#opt/lampp/manual/mod/index.html.de +#opt/lampp/manual/mod/index.html.en +#opt/lampp/manual/mod/index.html.es +#opt/lampp/manual/mod/mod_deflate.html.en +#opt/lampp/manual/mod/mod_proxy_ajp.html.en +#opt/lampp/manual/mod/mod_expires.html.ko.euc-kr +#opt/lampp/manual/mod/mod_unique_id.html.ko.euc-kr +#opt/lampp/manual/mod/mod_so.html +#opt/lampp/manual/mod/quickreference.html.ko.euc-kr +#opt/lampp/manual/mod/mod_ident.html +#opt/lampp/manual/mod/mod_mime.html.en +#opt/lampp/manual/mod/mod_log_config.html +#opt/lampp/manual/mod/mod_ident.html.en +#opt/lampp/manual/mod/mod_env.html.ja.euc-jp +#opt/lampp/manual/mod/mod_logio.html.ko.euc-kr +#opt/lampp/manual/mod/mod_negotiation.html.ja.euc-jp +#opt/lampp/manual/mod/mod_status.html.ko.euc-kr +#opt/lampp/manual/mod/mod_alias.html +#opt/lampp/manual/mod/event.html.en +#opt/lampp/manual/mod/mod_asis.html.ja.euc-jp +#opt/lampp/manual/mod/mod_mime_magic.html.en +#opt/lampp/manual/mod/mod_authz_host.html.ko.euc-kr +#opt/lampp/manual/mod/mod_vhost_alias.html.en +#opt/lampp/manual/mod/mod_dir.html.ja.euc-jp +#opt/lampp/manual/mod/mod_expires.html.ja.euc-jp +#opt/lampp/manual/mod/mod_unique_id.html.ja.euc-jp +#opt/lampp/manual/mod/mod_setenvif.html +#opt/lampp/manual/mod/quickreference.html.ja.euc-jp +#opt/lampp/manual/mod/mod_info.html +#opt/lampp/manual/mod/mod_status.html.en +#opt/lampp/manual/mod/mod_alias.html.en +#opt/lampp/manual/mod/mpm_common.html.ja.euc-jp +#opt/lampp/manual/mod/mod_ext_filter.html +#opt/lampp/manual/mod/mod_ldap.html +#opt/lampp/manual/mod/mod_echo.html.en +#opt/lampp/manual/mod/mod_logio.html.ja.euc-jp +#opt/lampp/manual/mod/mod_status.html.ja.euc-jp +#opt/lampp/manual/mod/mod_setenvif.html.en +#opt/lampp/manual/mod/mod_asis.html +#opt/lampp/manual/mod/mod_vhost_alias.html +#opt/lampp/manual/mod/mod_authz_host.html.ja.euc-jp +#opt/lampp/manual/mod/mod_echo.html.ko.euc-kr +#opt/lampp/manual/mod/module-dict.html.en +#opt/lampp/manual/mod/mod_rewrite.html.en +#opt/lampp/manual/mod/mod_authn_anon.html.ko.euc-kr +#opt/lampp/manual/mod/mod_proxy.html.ja.euc-jp +#opt/lampp/manual/mod/core.html +#opt/lampp/manual/mod/mpm_winnt.html.de +#opt/lampp/manual/mod/mpm_winnt.html.en +#opt/lampp/manual/mod/mod_dav_lock.html.ja.euc-jp +#opt/lampp/manual/mod/mod_info.html.en +#opt/lampp/manual/mod/mpm_common.html.de +#opt/lampp/manual/mod/mpm_common.html.en +#opt/lampp/manual/mod/mod_authn_dbd.html +#opt/lampp/manual/mod/mod_mime_magic.html +#opt/lampp/manual/mod/mod_proxy_balancer.html +#opt/lampp/manual/mod/mod_echo.html.ja.euc-jp +#opt/lampp/manual/mod/mod_log_forensic.html.en +#opt/lampp/manual/mod/quickreference.html +#opt/lampp/manual/mod/mod_authz_dbm.html.en +#opt/lampp/manual/mod/mod_authz_groupfile.html +#opt/lampp/manual/mod/mod_authn_anon.html.ja.euc-jp +#opt/lampp/manual/mod/mod_rewrite.html +#opt/lampp/manual/mod/mod_disk_cache.html.ko.euc-kr +#opt/lampp/manual/mod/module-dict.html +#opt/lampp/manual/mod/mod_authn_dbd.html.en +#opt/lampp/manual/mod/mod_ssl.html.en +#opt/lampp/manual/mod/mod_authz_host.html.en +#opt/lampp/manual/mod/mod_authnz_ldap.html.en +#opt/lampp/manual/mod/mod_charset_lite.html.ko.euc-kr +#opt/lampp/manual/mod/mod_unique_id.html +#opt/lampp/manual/mod/mod_authz_user.html.ko.euc-kr +#opt/lampp/manual/mod/mod_dir.html.en +#opt/lampp/manual/mod/mod_proxy_ftp.html.en +#opt/lampp/manual/mod/mod_charset_lite.html.en +#opt/lampp/manual/mod/mod_mem_cache.html +#opt/lampp/manual/mod/mod_mime.html +#opt/lampp/manual/mod/mod_negotiation.html +#opt/lampp/manual/mod/mpm_winnt.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authz_user.html.en +#opt/lampp/manual/mod/mod_include.html.en +#opt/lampp/manual/mod/mod_auth_digest.html +#opt/lampp/manual/mod/mod_log_config.html.ko.euc-kr +#opt/lampp/manual/mod/mod_proxy_connect.html.en +#opt/lampp/manual/mod/mod_dumpio.html +#opt/lampp/manual/mod/mod_disk_cache.html.ja.euc-jp +#opt/lampp/manual/mod/event.html +#opt/lampp/manual/mod/mod_actions.html +#opt/lampp/manual/mod/directives.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_dbm.html +#opt/lampp/manual/mod/mod_dbd.html +#opt/lampp/manual/mod/mod_suexec.html.ko.euc-kr +#opt/lampp/manual/mod/mpmt_os2.html.en +#opt/lampp/manual/mod/mod_logio.html.en +#opt/lampp/manual/mod/mod_speling.html.en +#opt/lampp/manual/mod/mod_authn_dbm.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authz_user.html.ja.euc-jp +#opt/lampp/manual/mod/mod_nw_ssl.html +#opt/lampp/manual/mod/mod_version.html.ko.euc-kr +#opt/lampp/manual/mod/mod_status.html +#opt/lampp/manual/mod/mod_authn_dbm.html.en +#opt/lampp/manual/mod/mod_auth_digest.html.en +#opt/lampp/manual/mod/mod_nw_ssl.html.en +#opt/lampp/manual/mod/mod_log_config.html.ja.euc-jp +#opt/lampp/manual/mod/mod_dav_fs.html.en +#opt/lampp/manual/mod/prefork.html.de +#opt/lampp/manual/mod/prefork.html.en +#opt/lampp/manual/mod/mod_imagemap.html.en +#opt/lampp/manual/mod/mod_proxy_ajp.html +#opt/lampp/manual/mod/mod_mem_cache.html.ko.euc-kr +#opt/lampp/manual/mod/beos.html.ko.euc-kr +#opt/lampp/manual/mod/beos.html +#opt/lampp/manual/mod/mod_ident.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authz_user.html +#opt/lampp/manual/mod/mod_mime.html.ja.euc-jp +#opt/lampp/manual/mod/mod_authz_owner.html.en +#opt/lampp/manual/mod/mod_authz_dbm.html +#opt/lampp/manual/mod/mod_proxy.html +#opt/lampp/manual/mod/mod_usertrack.html.en +#opt/lampp/manual/mod/directives.html.ja.euc-jp +#opt/lampp/manual/mod/mod_suexec.html.ja.euc-jp +#opt/lampp/manual/mod/mod_version.html +#opt/lampp/manual/mod/mod_isapi.html +#opt/lampp/manual/mod/directive-dict.html.en +#opt/lampp/manual/mod/mod_speling.html +#opt/lampp/manual/mod/mod_authn_dbm.html.ja.euc-jp +#opt/lampp/manual/mod/mod_dumpio.html.en +#opt/lampp/manual/mod/mod_authn_default.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_alias.html.en +#opt/lampp/manual/mod/mod_proxy_connect.html +#opt/lampp/manual/mod/mod_logio.html +#opt/lampp/manual/mod/mod_mem_cache.html.en +#opt/lampp/manual/mod/mod_dav.html +#opt/lampp/manual/mod/mod_userdir.html.en +#opt/lampp/manual/mod/mod_version.html.ja.euc-jp +#opt/lampp/manual/mod/mod_ext_filter.html.ko.euc-kr +#opt/lampp/manual/mod/mod_cern_meta.html +#opt/lampp/manual/mod/mod_usertrack.html +#opt/lampp/manual/mod/mod_proxy_ajp.html.ja.euc-jp +#opt/lampp/manual/mod/mod_auth_digest.html.ko.euc-kr +#opt/lampp/manual/mod/mod_authn_anon.html.en +#opt/lampp/manual/mod/mod_autoindex.html +#opt/lampp/manual/mod/mod_isapi.html.ko.euc-kr +#opt/lampp/manual/mod/mod_include.html.ja.euc-jp +#opt/lampp/manual/mod/mod_mem_cache.html.ja.euc-jp +#opt/lampp/manual/mod/mod_version.html.en +#opt/lampp/manual/ssl/ +#opt/lampp/manual/ssl/ssl_faq.html +#opt/lampp/manual/ssl/ssl_faq.html.en +#opt/lampp/manual/ssl/ssl_intro.html.en +#opt/lampp/manual/ssl/ssl_howto.html +#opt/lampp/manual/ssl/index.html +#opt/lampp/manual/ssl/ssl_intro.html.ja.euc-jp +#opt/lampp/manual/ssl/index.html.ja.euc-jp +#opt/lampp/manual/ssl/index.html.en +#opt/lampp/manual/ssl/ssl_howto.html.en +#opt/lampp/manual/ssl/ssl_intro.html +#opt/lampp/manual/ssl/ssl_compat.html +#opt/lampp/manual/ssl/ssl_compat.html.en +#opt/lampp/manual/server-wide.html +#opt/lampp/manual/upgrading.html.ko.euc-kr +#opt/lampp/manual/filter.html.en +#opt/lampp/manual/filter.html.es +#opt/lampp/manual/filter.html.fr +#opt/lampp/manual/misc/ +#opt/lampp/manual/misc/perf-tuning.html.en +#opt/lampp/manual/misc/rewriteguide.html.en +#opt/lampp/manual/misc/security_tips.html.ko.euc-kr +#opt/lampp/manual/misc/perf-tuning.html.ko.euc-kr +#opt/lampp/manual/misc/relevant_standards.html.ko.euc-kr +#opt/lampp/manual/misc/security_tips.html +#opt/lampp/manual/misc/index.html +#opt/lampp/manual/misc/index.html.ko.euc-kr +#opt/lampp/manual/misc/index.html.en +#opt/lampp/manual/misc/relevant_standards.html +#opt/lampp/manual/misc/perf-tuning.html +#opt/lampp/manual/misc/relevant_standards.html.en +#opt/lampp/manual/misc/rewriteguide.html +#opt/lampp/manual/misc/security_tips.html.en +#opt/lampp/manual/misc/rewriteguide.html.ko.euc-kr +#opt/lampp/manual/new_features_2_2.html.pt-br +#opt/lampp/manual/handler.html.en +#opt/lampp/manual/handler.html.es +#opt/lampp/manual/suexec.html.ja.euc-jp +#opt/lampp/manual/upgrading.html.pt-br +#opt/lampp/manual/new_features_2_0.html.ko.euc-kr +#opt/lampp/manual/license.html +#opt/lampp/manual/stopping.html.ko.euc-kr +#opt/lampp/manual/upgrading.html.ja.euc-jp +#opt/lampp/manual/rewrite/ +#opt/lampp/manual/rewrite/rewrite_intro.html +#opt/lampp/manual/rewrite/rewrite_guide.html.en +#opt/lampp/manual/rewrite/rewrite_guide_advanced.html.en +#opt/lampp/manual/rewrite/index.html +#opt/lampp/manual/rewrite/rewrite_guide_advanced.html +#opt/lampp/manual/rewrite/rewrite_intro.html.en +#opt/lampp/manual/rewrite/index.html.en +#opt/lampp/manual/rewrite/rewrite_tech.html.en +#opt/lampp/manual/rewrite/rewrite_tech.html +#opt/lampp/manual/rewrite/rewrite_guide.html +#opt/lampp/manual/new_features_2_0.html.ja.euc-jp +#opt/lampp/manual/mpm.html.ko.euc-kr +#opt/lampp/manual/custom-error.html +#opt/lampp/manual/LICENSE +#opt/lampp/manual/stopping.html.ja.euc-jp +#opt/lampp/manual/configuring.html.de +#opt/lampp/manual/configuring.html.en +#opt/lampp/manual/new_features_2_2.html.en +#opt/lampp/manual/caching.html +#opt/lampp/manual/bind.html.de +#opt/lampp/manual/bind.html.en +#opt/lampp/manual/bind.html.fr +#opt/lampp/manual/howto/ +#opt/lampp/manual/howto/cgi.html.en +#opt/lampp/manual/howto/ssi.html.ja.euc-jp +#opt/lampp/manual/howto/cgi.html +#opt/lampp/manual/howto/cgi.html.ko.euc-kr +#opt/lampp/manual/howto/auth.html.ko.euc-kr +#opt/lampp/manual/howto/index.html +#opt/lampp/manual/howto/cgi.html.ja.euc-jp +#opt/lampp/manual/howto/auth.html.ja.euc-jp +#opt/lampp/manual/howto/public_html.html.ko.euc-kr +#opt/lampp/manual/howto/index.html.ko.euc-kr +#opt/lampp/manual/howto/htaccess.html +#opt/lampp/manual/howto/public_html.html.ja.euc-jp +#opt/lampp/manual/howto/htaccess.html.ko.euc-kr +#opt/lampp/manual/howto/index.html.ja.euc-jp +#opt/lampp/manual/howto/public_html.html.en +#opt/lampp/manual/howto/htaccess.html.en +#opt/lampp/manual/howto/index.html.en +#opt/lampp/manual/howto/htaccess.html.ja.euc-jp +#opt/lampp/manual/howto/auth.html.en +#opt/lampp/manual/howto/ssi.html +#opt/lampp/manual/howto/auth.html +#opt/lampp/manual/howto/htaccess.html.pt-br +#opt/lampp/manual/howto/public_html.html +#opt/lampp/manual/howto/ssi.html.en +#opt/lampp/manual/howto/ssi.html.ko.euc-kr +#opt/lampp/manual/style/ +#opt/lampp/manual/style/css/ +#opt/lampp/manual/style/css/manual.css +#opt/lampp/manual/style/css/manual-print.css +#opt/lampp/manual/style/css/manual-chm.css +#opt/lampp/manual/style/css/manual-zip.css +#opt/lampp/manual/style/css/manual-loose-100pc.css +#opt/lampp/manual/style/css/manual-zip-100pc.css +#opt/lampp/manual/style/xsl/ +#opt/lampp/manual/style/xsl/util/ +#opt/lampp/manual/style/xsl/util/modtrans.xsl +#opt/lampp/manual/style/xsl/quickreference.xsl +#opt/lampp/manual/style/xsl/sitemap.xsl +#opt/lampp/manual/style/xsl/indexpage.xsl +#opt/lampp/manual/style/xsl/faq.xsl +#opt/lampp/manual/style/xsl/maf.xsl +#opt/lampp/manual/style/xsl/manualpage.xsl +#opt/lampp/manual/style/xsl/nroff.xsl +#opt/lampp/manual/style/xsl/directiveindex.xsl +#opt/lampp/manual/style/xsl/hhc.xsl +#opt/lampp/manual/style/xsl/hhp.xsl +#opt/lampp/manual/style/xsl/moduleindex.xsl +#opt/lampp/manual/style/xsl/typemap.xsl +#opt/lampp/manual/style/xsl/language.xsl +#opt/lampp/manual/style/xsl/synopsis.xsl +#opt/lampp/manual/style/xsl/convmap.xsl +#opt/lampp/manual/style/xsl/common.xsl +#opt/lampp/manual/style/lang/ +#opt/lampp/manual/style/manual.de.xsl +#opt/lampp/manual/style/manual.en.xsl +#opt/lampp/manual/style/manual.es.xsl +#opt/lampp/manual/style/manual.fr.xsl +#opt/lampp/manual/style/latex/ +#opt/lampp/manual/style/latex/quickreference.xsl +#opt/lampp/manual/style/latex/html.xsl +#opt/lampp/manual/style/latex/atbeginend.sty +#opt/lampp/manual/style/latex/faq.xsl +#opt/lampp/manual/style/latex/manualpage.xsl +#opt/lampp/manual/style/latex/directiveindex.xsl +#opt/lampp/manual/style/latex/moduleindex.xsl +#opt/lampp/manual/style/latex/synopsis.xsl +#opt/lampp/manual/style/latex/latex.xsl +#opt/lampp/manual/style/latex/common.xsl +#opt/lampp/manual/style/manual.ja.xsl +#opt/lampp/manual/style/manual.ko.xsl +#opt/lampp/manual/style/sitemap.dtd +#opt/lampp/manual/style/manual.ru.xsl +#opt/lampp/manual/style/faq.dtd +#opt/lampp/manual/style/build.properties +#opt/lampp/manual/style/version.ent +#opt/lampp/manual/style/manualpage.dtd +#opt/lampp/manual/style/modulesynopsis.dtd +#opt/lampp/manual/style/manual.pt-br.xsl +#opt/lampp/manual/style/lang.dtd +#opt/lampp/manual/style/common.dtd +#opt/lampp/manual/logs.html.ko.euc-kr +#opt/lampp/manual/filter.html +#opt/lampp/manual/dns-caveats.html +#opt/lampp/manual/mpm.html.ja.euc-jp +#opt/lampp/manual/dso.html.en +#opt/lampp/manual/content-negotiation.html +#opt/lampp/manual/logs.html.ja.euc-jp +#opt/lampp/manual/handler.html.ko.euc-kr +#opt/lampp/manual/install.html.ko.euc-kr +#opt/lampp/manual/sections.html +#opt/lampp/manual/install.html.de +#opt/lampp/manual/install.html.en +#opt/lampp/manual/install.html.es +#opt/lampp/manual/install.html.fr +#opt/lampp/manual/index.html +#opt/lampp/manual/stopping.html.de +#opt/lampp/manual/stopping.html.en +#opt/lampp/manual/stopping.html.es +#opt/lampp/manual/install.html +#opt/lampp/manual/handler.html.ja.euc-jp +#opt/lampp/manual/sections.html.en +#opt/lampp/manual/logs.html +#opt/lampp/manual/install.html.ja.euc-jp +#opt/lampp/manual/index.html.ko.euc-kr +#opt/lampp/manual/urlmapping.html.ko.euc-kr +#opt/lampp/manual/env.html.ko.euc-kr +#opt/lampp/manual/dns-caveats.html.ko.euc-kr +#opt/lampp/manual/filter.html.ko.euc-kr +#opt/lampp/manual/glossary.html.de +#opt/lampp/manual/glossary.html.en +#opt/lampp/manual/glossary.html.es +#opt/lampp/manual/index.html.ja.euc-jp +#opt/lampp/manual/urlmapping.html.ja.euc-jp +#opt/lampp/manual/mpm.html +#opt/lampp/manual/sitemap.html +#opt/lampp/manual/env.html.ja.euc-jp +#opt/lampp/manual/images/ +#opt/lampp/manual/images/favicon.ico +#opt/lampp/manual/images/caching_fig1.gif +#opt/lampp/manual/images/caching_fig1.png +#opt/lampp/manual/images/down.gif +#opt/lampp/manual/images/right.gif +#opt/lampp/manual/images/feather.gif +#opt/lampp/manual/images/feather.png +#opt/lampp/manual/images/left.gif +#opt/lampp/manual/images/mod_filter_new.gif +#opt/lampp/manual/images/mod_filter_new.png +#opt/lampp/manual/images/sub.gif +#opt/lampp/manual/images/home.gif +#opt/lampp/manual/images/custom_errordocs.png +#opt/lampp/manual/images/pixel.gif +#opt/lampp/manual/images/index.gif +#opt/lampp/manual/images/mod_filter_old.gif +#opt/lampp/manual/images/filter_arch.png +#opt/lampp/manual/images/up.gif +#opt/lampp/manual/images/apache_header.gif +#opt/lampp/manual/images/mod_rewrite_fig1.gif +#opt/lampp/manual/images/mod_rewrite_fig1.png +#opt/lampp/manual/images/mod_rewrite_fig2.gif +#opt/lampp/manual/images/mod_rewrite_fig2.png +#opt/lampp/manual/images/ssl_intro_fig1.gif +#opt/lampp/manual/images/ssl_intro_fig1.png +#opt/lampp/manual/images/ssl_intro_fig2.gif +#opt/lampp/manual/images/ssl_intro_fig2.png +#opt/lampp/manual/images/ssl_intro_fig3.gif +#opt/lampp/manual/images/ssl_intro_fig3.png +#opt/lampp/manual/license.html.en +#opt/lampp/manual/custom-error.html.en +#opt/lampp/manual/custom-error.html.es +#opt/lampp/manual/dns-caveats.html.ja.euc-jp +#opt/lampp/manual/index.html.de +#opt/lampp/manual/index.html.en +#opt/lampp/manual/index.html.es +#opt/lampp/manual/index.html.fr +#opt/lampp/manual/bind.html.ko.euc-kr +#opt/lampp/manual/filter.html.ja.euc-jp +#opt/lampp/manual/new_features_2_2.html.ko.euc-kr +#opt/lampp/manual/index.html.pt-br +#opt/lampp/manual/env.html +#opt/lampp/manual/new_features_2_0.html +#opt/lampp/manual/invoking.html.de +#opt/lampp/manual/invoking.html.en +#opt/lampp/manual/invoking.html.es +#opt/lampp/manual/logs.html.en +#opt/lampp/manual/new_features_2_2.html +#opt/lampp/manual/sitemap.html.de +#opt/lampp/manual/sitemap.html.en +#opt/lampp/manual/sitemap.html.es +#opt/lampp/manual/configuring.html.ko.euc-kr +#opt/lampp/manual/dso.html +#opt/lampp/manual/content-negotiation.html.ko.euc-kr +#opt/lampp/manual/urlmapping.html +#opt/lampp/manual/bind.html.ja.euc-jp +#opt/lampp/manual/caching.html.en +#opt/lampp/manual/urlmapping.html.en +#opt/lampp/manual/content-negotiation.html.en +#opt/lampp/manual/configuring.html.ja.euc-jp +#opt/lampp/manual/content-negotiation.html.ja.euc-jp +#opt/lampp/manual/stopping.html +#opt/lampp/manual/vhosts/ +#opt/lampp/manual/vhosts/examples.html +#opt/lampp/manual/vhosts/ip-based.html +#opt/lampp/manual/vhosts/name-based.html.ko.euc-kr +#opt/lampp/manual/vhosts/fd-limits.html.ko.euc-kr +#opt/lampp/manual/vhosts/index.html +#opt/lampp/manual/vhosts/mass.html +#opt/lampp/manual/vhosts/name-based.html.ja.euc-jp +#opt/lampp/manual/vhosts/fd-limits.html.ja.euc-jp +#opt/lampp/manual/vhosts/details.html +#opt/lampp/manual/vhosts/fd-limits.html +#opt/lampp/manual/vhosts/mass.html.en +#opt/lampp/manual/vhosts/name-based.html +#opt/lampp/manual/vhosts/ip-based.html.en +#opt/lampp/manual/vhosts/ip-based.html.fr +#opt/lampp/manual/vhosts/index.html.ko.euc-kr +#opt/lampp/manual/vhosts/examples.html.ko.euc-kr +#opt/lampp/manual/vhosts/details.html.ko.euc-kr +#opt/lampp/manual/vhosts/index.html.ja.euc-jp +#opt/lampp/manual/vhosts/details.html.en +#opt/lampp/manual/vhosts/details.html.fr +#opt/lampp/manual/vhosts/name-based.html.de +#opt/lampp/manual/vhosts/name-based.html.en +#opt/lampp/manual/vhosts/name-based.html.fr +#opt/lampp/manual/vhosts/examples.html.ja.euc-jp +#opt/lampp/manual/vhosts/index.html.de +#opt/lampp/manual/vhosts/index.html.en +#opt/lampp/manual/vhosts/index.html.fr +#opt/lampp/manual/vhosts/mass.html.ko.euc-kr +#opt/lampp/manual/vhosts/fd-limits.html.en +#opt/lampp/manual/vhosts/fd-limits.html.fr +#opt/lampp/manual/vhosts/ip-based.html.ko.euc-kr +#opt/lampp/manual/vhosts/ip-based.html.ja.euc-jp +#opt/lampp/manual/vhosts/examples.html.en +#opt/lampp/manual/vhosts/examples.html.fr +#opt/lampp/manual/dns-caveats.html.en +#opt/lampp/manual/env.html.en +#opt/lampp/manual/upgrading.html +#opt/lampp/manual/platform/ +#opt/lampp/manual/platform/netware.html +#opt/lampp/manual/platform/perf-hp.html.ko.euc-kr +#opt/lampp/manual/platform/ebcdic.html.en +#opt/lampp/manual/platform/windows.html +#opt/lampp/manual/platform/ebcdic.html +#opt/lampp/manual/platform/index.html +#opt/lampp/manual/platform/ebcdic.html.ko.euc-kr +#opt/lampp/manual/platform/windows.html.ko.euc-kr +#opt/lampp/manual/platform/index.html.ko.euc-kr +#opt/lampp/manual/platform/win_compiling.html.en +#opt/lampp/manual/platform/windows.html.en +#opt/lampp/manual/platform/win_compiling.html.ko.euc-kr +#opt/lampp/manual/platform/index.html.en +#opt/lampp/manual/platform/win_compiling.html +#opt/lampp/manual/platform/netware.html.en +#opt/lampp/manual/platform/perf-hp.html +#opt/lampp/manual/platform/perf-hp.html.en +#opt/lampp/manual/platform/netware.html.ko.euc-kr +#opt/lampp/manual/glossary.html.ko.euc-kr +#opt/lampp/manual/upgrading.html.de +#opt/lampp/manual/upgrading.html.en +#opt/lampp/manual/upgrading.html.fr +#opt/lampp/manual/new_features_2_0.html.pt-br +#opt/lampp/manual/server-wide.html.ko.euc-kr +#opt/lampp/manual/programs/ +#opt/lampp/manual/programs/htdbm.html +#opt/lampp/manual/programs/configure.html +#opt/lampp/manual/programs/rotatelogs.html +#opt/lampp/manual/programs/configure.html.ko.euc-kr +#opt/lampp/manual/programs/httxt2dbm.html +#opt/lampp/manual/programs/dbmmanage.html.ko.euc-kr +#opt/lampp/manual/programs/logresolve.html +#opt/lampp/manual/programs/apachectl.html +#opt/lampp/manual/programs/apxs.html.ko.euc-kr +#opt/lampp/manual/programs/apxs.html.en +#opt/lampp/manual/programs/htdigest.html.en +#opt/lampp/manual/programs/htdbm.html.en +#opt/lampp/manual/programs/apxs.html +#opt/lampp/manual/programs/index.html +#opt/lampp/manual/programs/ab.html.en +#opt/lampp/manual/programs/htdigest.html.ko.euc-kr +#opt/lampp/manual/programs/dbmmanage.html.en +#opt/lampp/manual/programs/htdigest.html +#opt/lampp/manual/programs/index.html.ko.euc-kr +#opt/lampp/manual/programs/httpd.html.en +#opt/lampp/manual/programs/httxt2dbm.html.en +#opt/lampp/manual/programs/ab.html +#opt/lampp/manual/programs/configure.html.en +#opt/lampp/manual/programs/index.html.en +#opt/lampp/manual/programs/index.html.es +#opt/lampp/manual/programs/apachectl.html.en +#opt/lampp/manual/programs/httpd.html +#opt/lampp/manual/programs/rotatelogs.html.ko.euc-kr +#opt/lampp/manual/programs/logresolve.html.en +#opt/lampp/manual/programs/other.html +#opt/lampp/manual/programs/other.html.en +#opt/lampp/manual/programs/htpasswd.html.en +#opt/lampp/manual/programs/ab.html.ko.euc-kr +#opt/lampp/manual/programs/httpd.html.ko.euc-kr +#opt/lampp/manual/programs/htcacheclean.html.en +#opt/lampp/manual/programs/htpasswd.html.ko.euc-kr +#opt/lampp/manual/programs/logresolve.html.ko.euc-kr +#opt/lampp/manual/programs/suexec.html.en +#opt/lampp/manual/programs/htpasswd.html +#opt/lampp/manual/programs/suexec.html +#opt/lampp/manual/programs/other.html.ko.euc-kr +#opt/lampp/manual/programs/dbmmanage.html +#opt/lampp/manual/programs/htcacheclean.html +#opt/lampp/manual/programs/apachectl.html.ko.euc-kr +#opt/lampp/manual/programs/suexec.html.ko.euc-kr +#opt/lampp/manual/programs/rotatelogs.html.en +#opt/lampp/manual/programs/htcacheclean.html.ko.euc-kr +#opt/lampp/manual/handler.html +#opt/lampp/manual/server-wide.html.en +#opt/lampp/manual/upgrading.html.ru.koi8-r +#opt/lampp/manual/invoking.html.ko.euc-kr +#opt/lampp/manual/convenience.map +#opt/lampp/manual/server-wide.html.ja.euc-jp +#opt/lampp/manual/suexec.html.en +#opt/lampp/manual/new_features_2_0.html.ru.koi8-r +#opt/lampp/manual/custom-error.html.ko.euc-kr +#opt/lampp/manual/sections.html.ko.euc-kr +#opt/lampp/manual/dso.html.ko.euc-kr +#opt/lampp/manual/suexec.html +#opt/lampp/manual/sitemap.html.ko.euc-kr +#opt/lampp/manual/invoking.html.ja.euc-jp +#opt/lampp/manual/invoking.html +#opt/lampp/manual/configuring.html +#opt/lampp/manual/custom-error.html.ja.euc-jp +#opt/lampp/manual/glossary.html +#opt/lampp/manual/suexec.html.ko.euc-kr +#opt/lampp/manual/sections.html.ja.euc-jp +#opt/lampp/manual/bind.html +#opt/lampp/manual/developer/ +#opt/lampp/manual/developer/thread_safety.html.en +#opt/lampp/manual/developer/API.html.en +#opt/lampp/manual/developer/hooks.html +#opt/lampp/manual/developer/filters.html.en +#opt/lampp/manual/developer/debugging.html.en +#opt/lampp/manual/developer/hooks.html.en +#opt/lampp/manual/developer/modules.html.ja.euc-jp +#opt/lampp/manual/developer/index.html +#opt/lampp/manual/developer/documenting.html +#opt/lampp/manual/developer/thread_safety.html +#opt/lampp/manual/developer/debugging.html +#opt/lampp/manual/developer/index.html.en +#opt/lampp/manual/developer/documenting.html.en +#opt/lampp/manual/developer/modules.html.en +#opt/lampp/manual/developer/request.html +#opt/lampp/manual/developer/filters.html +#opt/lampp/manual/developer/API.html +#opt/lampp/manual/developer/request.html.en +#opt/lampp/manual/developer/modules.html +#opt/lampp/manual/mpm.html.de +#opt/lampp/manual/mpm.html.en +#opt/lampp/manual/mpm.html.es +#opt/lampp/manual/dso.html.ja.euc-jp +#opt/lampp/manual/sitemap.html.ja.euc-jp +#opt/lampp/manual/new_features_2_0.html.de +#opt/lampp/manual/new_features_2_0.html.en +#opt/lampp/manual/new_features_2_0.html.fr +#opt/lampp/include/ +#opt/lampp/include/apr_general.h +#opt/lampp/include/php/ +#opt/lampp/include/php/ext/ +#opt/lampp/include/php/ext/gd/ +#opt/lampp/include/php/ext/gd/libgd/ +#opt/lampp/include/php/ext/gd/libgd/gd.h +#opt/lampp/include/php/ext/gd/libgd/gdcache.h +#opt/lampp/include/php/ext/gd/libgd/gdhelpers.h +#opt/lampp/include/php/ext/gd/libgd/gd_io.h +#opt/lampp/include/php/ext/gd/libgd/jisx0208.h +#opt/lampp/include/php/ext/gd/libgd/wbmp.h +#opt/lampp/include/php/ext/gd/libgd/gdfontmb.h +#opt/lampp/include/php/ext/gd/libgd/gdfontg.h +#opt/lampp/include/php/ext/gd/libgd/gdfontl.h +#opt/lampp/include/php/ext/gd/libgd/gdfonts.h +#opt/lampp/include/php/ext/gd/libgd/gdfontt.h +#opt/lampp/include/php/ext/gd/gdcache.h +#opt/lampp/include/php/ext/gd/php_gd.h +#opt/lampp/include/php/ext/gd/gdttf.h +#opt/lampp/include/php/ext/dom/ +#opt/lampp/include/php/ext/dom/xml_common.h +#opt/lampp/include/php/ext/pdo/ +#opt/lampp/include/php/ext/pdo/php_pdo.h +#opt/lampp/include/php/ext/pdo/php_pdo_driver.h +#opt/lampp/include/php/ext/xml/ +#opt/lampp/include/php/ext/xml/expat_compat.h +#opt/lampp/include/php/ext/xml/php_xml.h +#opt/lampp/include/php/ext/date/ +#opt/lampp/include/php/ext/date/lib/ +#opt/lampp/include/php/ext/date/lib/timelib.h +#opt/lampp/include/php/ext/date/lib/timelib_structs.h +#opt/lampp/include/php/ext/date/lib/timelib_config.h +#opt/lampp/include/php/ext/date/php_date.h +#opt/lampp/include/php/ext/pcre/ +#opt/lampp/include/php/ext/pcre/php_pcre.h +#opt/lampp/include/php/ext/pcre/pcrelib/ +#opt/lampp/include/php/ext/pcre/pcrelib/internal.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcreposix.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcrecpp.h +#opt/lampp/include/php/ext/pcre/pcrelib/ucp.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcre_stringpiece.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcre_internal.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcre.h +#opt/lampp/include/php/ext/pcre/pcrelib/pcre_scanner.h +#opt/lampp/include/php/ext/pcre/pcrelib/ucpinternal.h +#opt/lampp/include/php/ext/iconv/ +#opt/lampp/include/php/ext/iconv/php_have_iconv.h +#opt/lampp/include/php/ext/iconv/php_have_bsd_iconv.h +#opt/lampp/include/php/ext/iconv/php_have_glibc_iconv.h +#opt/lampp/include/php/ext/iconv/php_iconv.h +#opt/lampp/include/php/ext/iconv/php_php_iconv_impl.h +#opt/lampp/include/php/ext/iconv/php_have_libiconv.h +#opt/lampp/include/php/ext/iconv/php_iconv_supports_errno.h +#opt/lampp/include/php/ext/iconv/php_php_iconv_h_path.h +#opt/lampp/include/php/ext/session/ +#opt/lampp/include/php/ext/session/mod_user.h +#opt/lampp/include/php/ext/session/php_session.h +#opt/lampp/include/php/ext/session/mod_files.h +#opt/lampp/include/php/ext/libxml/ +#opt/lampp/include/php/ext/libxml/php_libxml.h +#opt/lampp/include/php/ext/mbstring/ +#opt/lampp/include/php/ext/mbstring/libmbfl/ +#opt/lampp/include/php/ext/mbstring/libmbfl/config.h +#opt/lampp/include/php/ext/sqlite/ +#opt/lampp/include/php/ext/sqlite/libsqlite/ +#opt/lampp/include/php/ext/sqlite/libsqlite/src/ +#opt/lampp/include/php/ext/sqlite/libsqlite/src/sqlite.h +#opt/lampp/include/php/ext/standard/ +#opt/lampp/include/php/ext/standard/php_ftok.h +#opt/lampp/include/php/ext/standard/dl.h +#opt/lampp/include/php/ext/standard/php_http.h +#opt/lampp/include/php/ext/standard/php_iptc.h +#opt/lampp/include/php/ext/standard/crc32.h +#opt/lampp/include/php/ext/standard/php_link.h +#opt/lampp/include/php/ext/standard/php_mail.h +#opt/lampp/include/php/ext/standard/php_math.h +#opt/lampp/include/php/ext/standard/url_scanner_ex.h +#opt/lampp/include/php/ext/standard/uniqid.h +#opt/lampp/include/php/ext/standard/quot_print.h +#opt/lampp/include/php/ext/standard/css.h +#opt/lampp/include/php/ext/standard/dns.h +#opt/lampp/include/php/ext/standard/php_rand.h +#opt/lampp/include/php/ext/standard/md5.h +#opt/lampp/include/php/ext/standard/reg.h +#opt/lampp/include/php/ext/standard/url.h +#opt/lampp/include/php/ext/standard/basic_functions.h +#opt/lampp/include/php/ext/standard/flock_compat.h +#opt/lampp/include/php/ext/standard/php_type.h +#opt/lampp/include/php/ext/standard/scanf.h +#opt/lampp/include/php/ext/standard/php_versioning.h +#opt/lampp/include/php/ext/standard/php_ext_syslog.h +#opt/lampp/include/php/ext/standard/php_sunfuncs.h +#opt/lampp/include/php/ext/standard/php_browscap.h +#opt/lampp/include/php/ext/standard/php_array.h +#opt/lampp/include/php/ext/standard/php_uuencode.h +#opt/lampp/include/php/ext/standard/proc_open.h +#opt/lampp/include/php/ext/standard/php_image.h +#opt/lampp/include/php/ext/standard/php_metaphone.h +#opt/lampp/include/php/ext/standard/datetime.h +#opt/lampp/include/php/ext/standard/cyr_convert.h +#opt/lampp/include/php/ext/standard/credits_ext.h +#opt/lampp/include/php/ext/standard/pageinfo.h +#opt/lampp/include/php/ext/standard/php_smart_str.h +#opt/lampp/include/php/ext/standard/file.h +#opt/lampp/include/php/ext/standard/php_string.h +#opt/lampp/include/php/ext/standard/exec.h +#opt/lampp/include/php/ext/standard/php_assert.h +#opt/lampp/include/php/ext/standard/head.h +#opt/lampp/include/php/ext/standard/html.h +#opt/lampp/include/php/ext/standard/fsock.h +#opt/lampp/include/php/ext/standard/info.h +#opt/lampp/include/php/ext/standard/microtime.h +#opt/lampp/include/php/ext/standard/php_crypt.h +#opt/lampp/include/php/ext/standard/pack.h +#opt/lampp/include/php/ext/standard/sha1.h +#opt/lampp/include/php/ext/standard/php_filestat.h +#opt/lampp/include/php/ext/standard/php_dir.h +#opt/lampp/include/php/ext/standard/php_lcg.h +#opt/lampp/include/php/ext/standard/php_var.h +#opt/lampp/include/php/ext/standard/url_scanner.h +#opt/lampp/include/php/ext/standard/streamsfuncs.h +#opt/lampp/include/php/ext/standard/credits.h +#opt/lampp/include/php/ext/standard/php_smart_str_public.h +#opt/lampp/include/php/ext/standard/php_incomplete_class.h +#opt/lampp/include/php/ext/standard/php_standard.h +#opt/lampp/include/php/ext/standard/base64.h +#opt/lampp/include/php/ext/standard/credits_sapi.h +#opt/lampp/include/php/ext/standard/php_fopen_wrappers.h +#opt/lampp/include/php/TSRM/ +#opt/lampp/include/php/TSRM/tsrm_nw.h +#opt/lampp/include/php/TSRM/TSRM.h +#opt/lampp/include/php/TSRM/tsrm_win32.h +#opt/lampp/include/php/TSRM/tsrm_config.w32.h +#opt/lampp/include/php/TSRM/tsrm_virtual_cwd.h +#opt/lampp/include/php/TSRM/tsrm_strtok_r.h +#opt/lampp/include/php/TSRM/acconfig.h +#opt/lampp/include/php/TSRM/tsrm_config.h +#opt/lampp/include/php/TSRM/readdir.h +#opt/lampp/include/php/TSRM/tsrm_config_common.h +#opt/lampp/include/php/Zend/ +#opt/lampp/include/php/Zend/zend_operators.h +#opt/lampp/include/php/Zend/zend_constants.h +#opt/lampp/include/php/Zend/zend_errors.h +#opt/lampp/include/php/Zend/zend_API.h +#opt/lampp/include/php/Zend/zend_objects_API.h +#opt/lampp/include/php/Zend/zend_static_allocator.h +#opt/lampp/include/php/Zend/zend_ini.h +#opt/lampp/include/php/Zend/zend_ptr_stack.h +#opt/lampp/include/php/Zend/zend_execute.h +#opt/lampp/include/php/Zend/zend_qsort.h +#opt/lampp/include/php/Zend/zend_ini_scanner.h +#opt/lampp/include/php/Zend/FlexLexer.h +#opt/lampp/include/php/Zend/zend_vm_def.h +#opt/lampp/include/php/Zend/zend_language_parser.h +#opt/lampp/include/php/Zend/zend_hash.h +#opt/lampp/include/php/Zend/zend_modules.h +#opt/lampp/include/php/Zend/zend_config.h +#opt/lampp/include/php/Zend/zend_objects.h +#opt/lampp/include/php/Zend/zend_object_handlers.h +#opt/lampp/include/php/Zend/zend_mm.h +#opt/lampp/include/php/Zend/zend_vm.h +#opt/lampp/include/php/Zend/zend_llist.h +#opt/lampp/include/php/Zend/zend_list.h +#opt/lampp/include/php/Zend/zend_interfaces.h +#opt/lampp/include/php/Zend/zend_ini_parser.h +#opt/lampp/include/php/Zend/zend_vm_opcodes.h +#opt/lampp/include/php/Zend/zend_globals.h +#opt/lampp/include/php/Zend/zend_stack.h +#opt/lampp/include/php/Zend/zend_config.w32.h +#opt/lampp/include/php/Zend/zend_highlight.h +#opt/lampp/include/php/Zend/zend_iterators.h +#opt/lampp/include/php/Zend/zend_config.nw.h +#opt/lampp/include/php/Zend/zend_indent.h +#opt/lampp/include/php/Zend/zend_globals_macros.h +#opt/lampp/include/php/Zend/zend_dynamic_array.h +#opt/lampp/include/php/Zend/zend_vm_execute.h +#opt/lampp/include/php/Zend/zend_types.h +#opt/lampp/include/php/Zend/zend_extensions.h +#opt/lampp/include/php/Zend/zend.h +#opt/lampp/include/php/Zend/zend_alloc.h +#opt/lampp/include/php/Zend/zend_stream.h +#opt/lampp/include/php/Zend/zend_builtin_functions.h +#opt/lampp/include/php/Zend/zend_strtod.h +#opt/lampp/include/php/Zend/zend_language_scanner.h +#opt/lampp/include/php/Zend/zend_exceptions.h +#opt/lampp/include/php/Zend/zend_reflection_api.h +#opt/lampp/include/php/Zend/zend_multibyte.h +#opt/lampp/include/php/Zend/zend_fast_cache.h +#opt/lampp/include/php/Zend/zend_compile.h +#opt/lampp/include/php/Zend/acconfig.h +#opt/lampp/include/php/Zend/zend_multiply.h +#opt/lampp/include/php/Zend/zend_istdiostream.h +#opt/lampp/include/php/Zend/zend_variables.h +#opt/lampp/include/php/Zend/zend_ts_hash.h +#opt/lampp/include/php/main/ +#opt/lampp/include/php/main/php_compat.h +#opt/lampp/include/php/main/php_config.h +#opt/lampp/include/php/main/php_open_temporary_file.h +#opt/lampp/include/php/main/php_globals.h +#opt/lampp/include/php/main/php_main.h +#opt/lampp/include/php/main/rfc1867.h +#opt/lampp/include/php/main/php3_compat.h +#opt/lampp/include/php/main/php.h +#opt/lampp/include/php/main/php_output.h +#opt/lampp/include/php/main/php_version.h +#opt/lampp/include/php/main/SAPI.h +#opt/lampp/include/php/main/spprintf.h +#opt/lampp/include/php/main/php_syslog.h +#opt/lampp/include/php/main/fopen_wrappers.h +#opt/lampp/include/php/main/php_variables.h +#opt/lampp/include/php/main/safe_mode.h +#opt/lampp/include/php/main/logos.h +#opt/lampp/include/php/main/php_streams.h +#opt/lampp/include/php/main/config.w32.h +#opt/lampp/include/php/main/win95nt.h +#opt/lampp/include/php/main/streams/ +#opt/lampp/include/php/main/streams/php_streams_int.h +#opt/lampp/include/php/main/streams/php_stream_userspace.h +#opt/lampp/include/php/main/streams/php_stream_context.h +#opt/lampp/include/php/main/streams/php_stream_filter_api.h +#opt/lampp/include/php/main/streams/php_stream_mmap.h +#opt/lampp/include/php/main/streams/php_stream_transport.h +#opt/lampp/include/php/main/streams/php_stream_plain_wrapper.h +#opt/lampp/include/php/main/php_reentrancy.h +#opt/lampp/include/php/main/php_content_types.h +#opt/lampp/include/php/main/php_regex.h +#opt/lampp/include/php/main/php_ini.h +#opt/lampp/include/php/main/php_scandir.h +#opt/lampp/include/php/main/php_logos.h +#opt/lampp/include/php/main/php_network.h +#opt/lampp/include/php/main/php_ticks.h +#opt/lampp/include/php/main/build-defs.h +#opt/lampp/include/php/main/php_memory_streams.h +#opt/lampp/include/php/main/snprintf.h +#opt/lampp/include/php/regex/ +#opt/lampp/include/php/regex/cname.h +#opt/lampp/include/php/regex/regex_extra.h +#opt/lampp/include/php/regex/regex.h +#opt/lampp/include/php/regex/cclass.h +#opt/lampp/include/php/regex/utils.h +#opt/lampp/include/php/regex/regex2.h +#opt/lampp/include/php/include/ +#opt/lampp/include/mod_perl.h +#opt/lampp/include/curl/ +#opt/lampp/include/curl/mprintf.h +#opt/lampp/include/curl/stdcheaders.h +#opt/lampp/include/curl/curl.h +#opt/lampp/include/curl/easy.h +#opt/lampp/include/curl/multi.h +#opt/lampp/include/curl/curlver.h +#opt/lampp/include/curl/types.h +#opt/lampp/include/gd.h +#opt/lampp/include/apr_support.h +#opt/lampp/include/os.h +#opt/lampp/include/dblib.h +#opt/lampp/include/zzip/ +#opt/lampp/include/zzip/lib.h +#opt/lampp/include/zzip/format.h +#opt/lampp/include/zzip/_msvc.h +#opt/lampp/include/zzip/conf.h +#opt/lampp/include/zzip/file.h +#opt/lampp/include/zzip/wrap.h +#opt/lampp/include/zzip/stdint.h +#opt/lampp/include/zzip/zzip.h +#opt/lampp/include/zzip/_config.h +#opt/lampp/include/zzip/plugin.h +#opt/lampp/include/apu_want.h +#opt/lampp/include/apr_global_mutex.h +#opt/lampp/include/pcreposix.h +#opt/lampp/include/apr_hash.h +#opt/lampp/include/modperl_xs_typedefs.h +#opt/lampp/include/bzlib.h +#opt/lampp/include/ap_compat.h +#opt/lampp/include/ap_config.h +#opt/lampp/include/libintl.h +#opt/lampp/include/pngconf.h +#opt/lampp/include/apr_allocator.h +#opt/lampp/include/syberror.h +#opt/lampp/include/apr_ldap.h +#opt/lampp/include/ap_config_layout.h +#opt/lampp/include/ctlib.h +#opt/lampp/include/modperl_callback.h +#opt/lampp/include/apr_mmap.h +#opt/lampp/include/srchpref.h +#opt/lampp/include/modperl_io_apache.h +#opt/lampp/include/ap_config_auto.h +#opt/lampp/include/apr.h +#opt/lampp/include/apu.h +#opt/lampp/include/apr_strmatch.h +#opt/lampp/include/modperl_common_log.h +#opt/lampp/include/cxx_except.h +#opt/lampp/include/mpm.h +#opt/lampp/include/mysql/ +#opt/lampp/include/mysql/sql_state.h +#opt/lampp/include/mysql/my_global.h +#opt/lampp/include/mysql/my_config.h +#opt/lampp/include/mysql/my_getopt.h +#opt/lampp/include/mysql/errmsg.h +#opt/lampp/include/mysql/sslopt-case.h +#opt/lampp/include/mysql/mysql_embed.h +#opt/lampp/include/mysql/typelib.h +#opt/lampp/include/mysql/my_semaphore.h +#opt/lampp/include/mysql/my_pthread.h +#opt/lampp/include/mysql/sslopt-vars.h +#opt/lampp/include/mysql/mysql_com.h +#opt/lampp/include/mysql/readline.h +#opt/lampp/include/mysql/mysql.h +#opt/lampp/include/mysql/raid.h +#opt/lampp/include/mysql/my_dir.h +#opt/lampp/include/mysql/my_no_pthread.h +#opt/lampp/include/mysql/my_net.h +#opt/lampp/include/mysql/my_sys.h +#opt/lampp/include/mysql/my_xml.h +#opt/lampp/include/mysql/my_dbug.h +#opt/lampp/include/mysql/sql_common.h +#opt/lampp/include/mysql/sslopt-longopts.h +#opt/lampp/include/mysql/keycache.h +#opt/lampp/include/mysql/m_ctype.h +#opt/lampp/include/mysql/mysqld_ername.h +#opt/lampp/include/mysql/my_list.h +#opt/lampp/include/mysql/mysql_version.h +#opt/lampp/include/mysql/mysqld_error.h +#opt/lampp/include/mysql/mysql_time.h +#opt/lampp/include/mysql/my_alloc.h +#opt/lampp/include/mysql/m_string.h +#opt/lampp/include/png.h +#opt/lampp/include/tds.h +#opt/lampp/include/apr_poll.h +#opt/lampp/include/apr_ldap_init.h +#opt/lampp/include/apr_reslist.h +#opt/lampp/include/apr_errno.h +#opt/lampp/include/ldap_schema.h +#opt/lampp/include/apr_ring.h +#opt/lampp/include/apr_random.h +#opt/lampp/include/ap_provider.h +#opt/lampp/include/apr_sdbm.h +#opt/lampp/include/apr_getopt.h +#opt/lampp/include/apr_sha1.h +#opt/lampp/include/cspublic.h +#opt/lampp/include/mpm_common.h +#opt/lampp/include/apr_time.h +#opt/lampp/include/modperl_svptr_table.h +#opt/lampp/include/tdssrv.h +#opt/lampp/include/tdsver.h +#opt/lampp/include/apr_tables.h +#opt/lampp/include/sybfront.h +#opt/lampp/include/apr_user.h +#opt/lampp/include/modperl_perl_unembed.h +#opt/lampp/include/apr_uuid.h +#opt/lampp/include/apr_want.h +#opt/lampp/include/ap_regex.h +#opt/lampp/include/modperl_apache_compat.h +#opt/lampp/include/zconf.h +#opt/lampp/include/ap_mmn.h +#opt/lampp/include/ap_mpm.h +#opt/lampp/include/mod_proxy.h +#opt/lampp/include/modperl_module.h +#opt/lampp/include/gdcache.h +#opt/lampp/include/tdsodbc.h +#opt/lampp/include/mod_include.h +#opt/lampp/include/libxml2/ +#opt/lampp/include/libxml2/libxml/ +#opt/lampp/include/libxml2/libxml/encoding.h +#opt/lampp/include/libxml2/libxml/xmlregexp.h +#opt/lampp/include/libxml2/libxml/xmlmemory.h +#opt/lampp/include/libxml2/libxml/xlink.h +#opt/lampp/include/libxml2/libxml/xmlIO.h +#opt/lampp/include/libxml2/libxml/xpath.h +#opt/lampp/include/libxml2/libxml/SAX.h +#opt/lampp/include/libxml2/libxml/chvalid.h +#opt/lampp/include/libxml2/libxml/uri.h +#opt/lampp/include/libxml2/libxml/SAX2.h +#opt/lampp/include/libxml2/libxml/nanoftp.h +#opt/lampp/include/libxml2/libxml/schemasInternals.h +#opt/lampp/include/libxml2/libxml/threads.h +#opt/lampp/include/libxml2/libxml/parser.h +#opt/lampp/include/libxml2/libxml/c14n.h +#opt/lampp/include/libxml2/libxml/xmlerror.h +#opt/lampp/include/libxml2/libxml/pattern.h +#opt/lampp/include/libxml2/libxml/xmlwin32version.h +#opt/lampp/include/libxml2/libxml/DOCBparser.h +#opt/lampp/include/libxml2/libxml/dict.h +#opt/lampp/include/libxml2/libxml/xmlautomata.h +#opt/lampp/include/libxml2/libxml/xmlschemastypes.h +#opt/lampp/include/libxml2/libxml/xpointer.h +#opt/lampp/include/libxml2/libxml/hash.h +#opt/lampp/include/libxml2/libxml/nanohttp.h +#opt/lampp/include/libxml2/libxml/relaxng.h +#opt/lampp/include/libxml2/libxml/xpathInternals.h +#opt/lampp/include/libxml2/libxml/xmlversion.h +#opt/lampp/include/libxml2/libxml/list.h +#opt/lampp/include/libxml2/libxml/HTMLtree.h +#opt/lampp/include/libxml2/libxml/parserInternals.h +#opt/lampp/include/libxml2/libxml/entities.h +#opt/lampp/include/libxml2/libxml/HTMLparser.h +#opt/lampp/include/libxml2/libxml/valid.h +#opt/lampp/include/libxml2/libxml/catalog.h +#opt/lampp/include/libxml2/libxml/tree.h +#opt/lampp/include/libxml2/libxml/globals.h +#opt/lampp/include/libxml2/libxml/xmlunicode.h +#opt/lampp/include/libxml2/libxml/xmlexports.h +#opt/lampp/include/libxml2/libxml/xmlsave.h +#opt/lampp/include/libxml2/libxml/xinclude.h +#opt/lampp/include/libxml2/libxml/xmlreader.h +#opt/lampp/include/libxml2/libxml/debugXML.h +#opt/lampp/include/libxml2/libxml/xmlwriter.h +#opt/lampp/include/libxml2/libxml/xmlstring.h +#opt/lampp/include/libxml2/libxml/xmlschemas.h +#opt/lampp/include/libxslt/ +#opt/lampp/include/libxslt/functions.h +#opt/lampp/include/libxslt/xsltutils.h +#opt/lampp/include/libxslt/attributes.h +#opt/lampp/include/libxslt/pattern.h +#opt/lampp/include/libxslt/templates.h +#opt/lampp/include/libxslt/preproc.h +#opt/lampp/include/libxslt/extra.h +#opt/lampp/include/libxslt/namespaces.h +#opt/lampp/include/libxslt/security.h +#opt/lampp/include/libxslt/keys.h +#opt/lampp/include/libxslt/extensions.h +#opt/lampp/include/libxslt/xsltInternals.h +#opt/lampp/include/libxslt/transform.h +#opt/lampp/include/libxslt/xslt.h +#opt/lampp/include/libxslt/documents.h +#opt/lampp/include/libxslt/numbersInternals.h +#opt/lampp/include/libxslt/xsltexports.h +#opt/lampp/include/libxslt/imports.h +#opt/lampp/include/libxslt/variables.h +#opt/lampp/include/libxslt/xsltconfig.h +#opt/lampp/include/tds_configs.h +#opt/lampp/include/apr_dbd.h +#opt/lampp/include/apr_dbm.h +#opt/lampp/include/jerror.h +#opt/lampp/include/util_charset.h +#opt/lampp/include/apr_dso.h +#opt/lampp/include/apr_env.h +#opt/lampp/include/jconfig.h +#opt/lampp/include/apr_lib.h +#opt/lampp/include/modperl_error.h +#opt/lampp/include/apr_md4.h +#opt/lampp/include/apr_md5.h +#opt/lampp/include/apr_buckets.h +#opt/lampp/include/apr_rmm.h +#opt/lampp/include/apr_shm.h +#opt/lampp/include/apr_uri.h +#opt/lampp/include/bkpublic.h +#opt/lampp/include/apr_xml.h +#opt/lampp/include/modperl_common_types.h +#opt/lampp/include/lber_types.h +#opt/lampp/include/apr_ldap_url.h +#opt/lampp/include/modperl_filter.h +#opt/lampp/include/jmorecfg.h +#opt/lampp/include/modperl_flags.h +#opt/lampp/include/mod_cgi.h +#opt/lampp/include/mod_dbd.h +#opt/lampp/include/mod_dav.h +#opt/lampp/include/modperl_global.h +#opt/lampp/include/tdsutil.h +#opt/lampp/include/modperl_perl_includes.h +#opt/lampp/include/mod_ssl.h +#opt/lampp/include/http_protocol.h +#opt/lampp/include/apr_version.h +#opt/lampp/include/zzip-io.h +#opt/lampp/include/mhash.h +#opt/lampp/include/modperl_perl_global.h +#opt/lampp/include/modperl_config.h +#opt/lampp/include/sqldb.h +#opt/lampp/include/sqlite.h +#opt/lampp/include/ldap_features.h +#opt/lampp/include/apr_thread_rwlock.h +#opt/lampp/include/modperl_apr_perlio.h +#opt/lampp/include/apreq2/ +#opt/lampp/include/apreq2/apreq_module.h +#opt/lampp/include/apreq2/apreq_params.h +#opt/lampp/include/apreq2/apreq_parser.h +#opt/lampp/include/apreq2/apreq_cookie.h +#opt/lampp/include/apreq2/apreq_env.h +#opt/lampp/include/apreq2/apreq_error.h +#opt/lampp/include/apreq2/apreq.h +#opt/lampp/include/apreq2/apreq_version.h +#opt/lampp/include/apreq2/apreq_module_apache2.h +#opt/lampp/include/apreq2/apreq_util.h +#opt/lampp/include/apreq2/apreq_param.h +#opt/lampp/include/modperl_common_includes.h +#opt/lampp/include/apr_network_io.h +#opt/lampp/include/modperl_trace.h +#opt/lampp/include/util_ldap.h +#opt/lampp/include/expat.h +#opt/lampp/include/apr_portable.h +#opt/lampp/include/gd_io.h +#opt/lampp/include/zziplib.h +#opt/lampp/include/modperl_directives.h +#opt/lampp/include/sxpath.h +#opt/lampp/include/common.h +#opt/lampp/include/util_filter.h +#opt/lampp/include/http_config.h +#opt/lampp/include/zutil.h +#opt/lampp/include/freebcp.h +#opt/lampp/include/modperl_perl_pp.h +#opt/lampp/include/apr_thread_cond.h +#opt/lampp/include/ncurses/ +#opt/lampp/include/ncurses/cursesapp.h +#opt/lampp/include/ncurses/unctrl.h +#opt/lampp/include/ncurses/eti.h +#opt/lampp/include/ncurses/curses.h +#opt/lampp/include/ncurses/etip.h +#opt/lampp/include/ncurses/form.h +#opt/lampp/include/ncurses/ncurses.h +#opt/lampp/include/ncurses/menu.h +#opt/lampp/include/ncurses/cursesf.h +#opt/lampp/include/ncurses/cursesm.h +#opt/lampp/include/ncurses/cursesp.h +#opt/lampp/include/ncurses/cursesw.h +#opt/lampp/include/ncurses/term.h +#opt/lampp/include/ncurses/cursslk.h +#opt/lampp/include/ncurses/termcap.h +#opt/lampp/include/ncurses/panel.h +#opt/lampp/include/ncurses/ncurses_dll.h +#opt/lampp/include/sybdb.h +#opt/lampp/include/gdbm.h +#opt/lampp/include/apr_file_io.h +#opt/lampp/include/freetype2/ +#opt/lampp/include/freetype2/freetype/ +#opt/lampp/include/freetype2/freetype/ftsynth.h +#opt/lampp/include/freetype2/freetype/ftsysio.h +#opt/lampp/include/freetype2/freetype/ftwinfnt.h +#opt/lampp/include/freetype2/freetype/t1tables.h +#opt/lampp/include/freetype2/freetype/ftglyph.h +#opt/lampp/include/freetype2/freetype/ftsysmem.h +#opt/lampp/include/freetype2/freetype/ftsystem.h +#opt/lampp/include/freetype2/freetype/ftchapters.h +#opt/lampp/include/freetype2/freetype/ftxf86.h +#opt/lampp/include/freetype2/freetype/cache/ +#opt/lampp/include/freetype2/freetype/cache/ftcimage.h +#opt/lampp/include/freetype2/freetype/cache/ftcsbits.h +#opt/lampp/include/freetype2/freetype/cache/ftccmap.h +#opt/lampp/include/freetype2/freetype/cache/ftcmanag.h +#opt/lampp/include/freetype2/freetype/cache/ftlru.h +#opt/lampp/include/freetype2/freetype/cache/ftcglyph.h +#opt/lampp/include/freetype2/freetype/cache/ftccache.h +#opt/lampp/include/freetype2/freetype/fttypes.h +#opt/lampp/include/freetype2/freetype/ttunpat.h +#opt/lampp/include/freetype2/freetype/ftincrem.h +#opt/lampp/include/freetype2/freetype/ftsnames.h +#opt/lampp/include/freetype2/freetype/ftcache.h +#opt/lampp/include/freetype2/freetype/ftstroke.h +#opt/lampp/include/freetype2/freetype/ftimage.h +#opt/lampp/include/freetype2/freetype/ftoutln.h +#opt/lampp/include/freetype2/freetype/config/ +#opt/lampp/include/freetype2/freetype/config/ftstdlib.h +#opt/lampp/include/freetype2/freetype/config/ftheader.h +#opt/lampp/include/freetype2/freetype/config/ftoption.h +#opt/lampp/include/freetype2/freetype/config/ftmodule.h +#opt/lampp/include/freetype2/freetype/config/ftconfig.h +#opt/lampp/include/freetype2/freetype/ftmm.h +#opt/lampp/include/freetype2/freetype/ftrender.h +#opt/lampp/include/freetype2/freetype/ftbdf.h +#opt/lampp/include/freetype2/freetype/tttags.h +#opt/lampp/include/freetype2/freetype/tttables.h +#opt/lampp/include/freetype2/freetype/fttrigon.h +#opt/lampp/include/freetype2/freetype/ftmac.h +#opt/lampp/include/freetype2/freetype/ftpfr.h +#opt/lampp/include/freetype2/freetype/fterrdef.h +#opt/lampp/include/freetype2/freetype/fterrors.h +#opt/lampp/include/freetype2/freetype/freetype.h +#opt/lampp/include/freetype2/freetype/ftmodapi.h +#opt/lampp/include/freetype2/freetype/ftmoderr.h +#opt/lampp/include/freetype2/freetype/ftmodule.h +#opt/lampp/include/freetype2/freetype/ftsizes.h +#opt/lampp/include/freetype2/freetype/ftbbox.h +#opt/lampp/include/freetype2/freetype/ftgzip.h +#opt/lampp/include/freetype2/freetype/ftlist.h +#opt/lampp/include/freetype2/freetype/internal/ +#opt/lampp/include/freetype2/freetype/internal/ftobjs.h +#opt/lampp/include/freetype2/freetype/internal/internal.h +#opt/lampp/include/freetype2/freetype/internal/fttrace.h +#opt/lampp/include/freetype2/freetype/internal/ftserv.h +#opt/lampp/include/freetype2/freetype/internal/psnames.h +#opt/lampp/include/freetype2/freetype/internal/svgldict.h +#opt/lampp/include/freetype2/freetype/internal/tttypes.h +#opt/lampp/include/freetype2/freetype/internal/svsfnt.h +#opt/lampp/include/freetype2/freetype/internal/svpostnm.h +#opt/lampp/include/freetype2/freetype/internal/ftstream.h +#opt/lampp/include/freetype2/freetype/internal/pshints.h +#opt/lampp/include/freetype2/freetype/internal/pcftypes.h +#opt/lampp/include/freetype2/freetype/internal/autohint.h +#opt/lampp/include/freetype2/freetype/internal/ftmemory.h +#opt/lampp/include/freetype2/freetype/internal/svbdf.h +#opt/lampp/include/freetype2/freetype/internal/svpfr.h +#opt/lampp/include/freetype2/freetype/internal/ftextend.h +#opt/lampp/include/freetype2/freetype/internal/svwinfnt.h +#opt/lampp/include/freetype2/freetype/internal/ftdebug.h +#opt/lampp/include/freetype2/freetype/internal/fnttypes.h +#opt/lampp/include/freetype2/freetype/internal/sfnt.h +#opt/lampp/include/freetype2/freetype/internal/svpscmap.h +#opt/lampp/include/freetype2/freetype/internal/svmm.h +#opt/lampp/include/freetype2/freetype/internal/svpsinfo.h +#opt/lampp/include/freetype2/freetype/internal/t1types.h +#opt/lampp/include/freetype2/freetype/internal/cfftypes.h +#opt/lampp/include/freetype2/freetype/internal/ftcalc.h +#opt/lampp/include/freetype2/freetype/internal/psglobal.h +#opt/lampp/include/freetype2/freetype/internal/ftgloadr.h +#opt/lampp/include/freetype2/freetype/internal/ftdriver.h +#opt/lampp/include/freetype2/freetype/internal/svxf86nm.h +#opt/lampp/include/freetype2/freetype/internal/psaux.h +#opt/lampp/include/freetype2/freetype/ttnameid.h +#opt/lampp/include/http_request.h +#opt/lampp/include/util_script.h +#opt/lampp/include/mpm_default.h +#opt/lampp/include/modperl_bucket.h +#opt/lampp/include/modperl_apr_includes.h +#opt/lampp/include/apr_proc_mutex.h +#opt/lampp/include/modperl_types.h +#opt/lampp/include/apr_hooks.h +#opt/lampp/include/lber.h +#opt/lampp/include/apr_file_info.h +#opt/lampp/include/util_time.h +#opt/lampp/include/ldap.h +#opt/lampp/include/ft2build.h +#opt/lampp/include/ap_regkey.h +#opt/lampp/include/libpng +#opt/lampp/include/http_connection.h +#opt/lampp/include/mingpp.h +#opt/lampp/include/ming.h +#opt/lampp/include/apr_base64.h +#opt/lampp/include/apr_optional.h +#opt/lampp/include/proto-lber.h +#opt/lampp/include/mod_status.h +#opt/lampp/include/apu_version.h +#opt/lampp/include/jpeglib.h +#opt/lampp/include/apr_ldap_option.h +#opt/lampp/include/apr_strings.h +#opt/lampp/include/apr_fnmatch.h +#opt/lampp/include/pcre.h +#opt/lampp/include/http_log.h +#opt/lampp/include/ap_listen.h +#opt/lampp/include/jisx0208.h +#opt/lampp/include/apr_inherit.h +#opt/lampp/include/unixd.h +#opt/lampp/include/sqlfront.h +#opt/lampp/include/sdom.h +#opt/lampp/include/apr_anylock.h +#opt/lampp/include/apr_thread_proc.h +#opt/lampp/include/modperl_common_util.h +#opt/lampp/include/modperl_hooks.h +#opt/lampp/include/scoreboard.h +#opt/lampp/include/util_md5.h +#opt/lampp/include/util_xml.h +#opt/lampp/include/wbmp.h +#opt/lampp/include/apr_atomic.h +#opt/lampp/include/c-client/ +#opt/lampp/include/c-client/fs.h +#opt/lampp/include/c-client/nl.h +#opt/lampp/include/c-client/rfc822.h +#opt/lampp/include/c-client/env.h +#opt/lampp/include/c-client/ftl.h +#opt/lampp/include/c-client/tcp.h +#opt/lampp/include/c-client/env_unix.h +#opt/lampp/include/c-client/mail.h +#opt/lampp/include/c-client/misc.h +#opt/lampp/include/c-client/nntp.h +#opt/lampp/include/c-client/imap4r1.h +#opt/lampp/include/c-client/smtp.h +#opt/lampp/include/c-client/linkage.h +#opt/lampp/include/c-client/osdep.h +#opt/lampp/include/c-client/c-client.h +#opt/lampp/include/util_ebcdic.h +#opt/lampp/include/http_vhost.h +#opt/lampp/include/apr_pools.h +#opt/lampp/include/http_core.h +#opt/lampp/include/modperl_largefiles.h +#opt/lampp/include/modperl_constants.h +#opt/lampp/include/tds_sysdep_public.h +#opt/lampp/include/ctpublic.h +#opt/lampp/include/zlib.h +#opt/lampp/include/modperl_options.h +#opt/lampp/include/cxx_common.h +#opt/lampp/include/modperl_handler.h +#opt/lampp/include/zzip.h +#opt/lampp/include/mcrypt.h +#opt/lampp/include/gdfontmb.h +#opt/lampp/include/modperl_gtop.h +#opt/lampp/include/openssl/ +#opt/lampp/include/openssl/opensslv.h +#opt/lampp/include/openssl/bn.h +#opt/lampp/include/openssl/dh.h +#opt/lampp/include/openssl/ec.h +#opt/lampp/include/openssl/ui.h +#opt/lampp/include/openssl/crypto.h +#opt/lampp/include/openssl/txt_db.h +#opt/lampp/include/openssl/e_os2.h +#opt/lampp/include/openssl/aes.h +#opt/lampp/include/openssl/bio.h +#opt/lampp/include/openssl/des.h +#opt/lampp/include/openssl/dsa.h +#opt/lampp/include/openssl/dso.h +#opt/lampp/include/openssl/err.h +#opt/lampp/include/openssl/evp.h +#opt/lampp/include/openssl/fips_rand.h +#opt/lampp/include/openssl/md2.h +#opt/lampp/include/openssl/md4.h +#opt/lampp/include/openssl/md5.h +#opt/lampp/include/openssl/pem.h +#opt/lampp/include/openssl/rc2.h +#opt/lampp/include/openssl/rc4.h +#opt/lampp/include/openssl/rc5.h +#opt/lampp/include/openssl/sha.h +#opt/lampp/include/openssl/rsa.h +#opt/lampp/include/openssl/ssl.h +#opt/lampp/include/openssl/ecdsa.h +#opt/lampp/include/openssl/pq_compat.h +#opt/lampp/include/openssl/lhash.h +#opt/lampp/include/openssl/dtls1.h +#opt/lampp/include/openssl/conf_api.h +#opt/lampp/include/openssl/tmdiff.h +#opt/lampp/include/openssl/safestack.h +#opt/lampp/include/openssl/ssl23.h +#opt/lampp/include/openssl/stack.h +#opt/lampp/include/openssl/engine.h +#opt/lampp/include/openssl/asn1.h +#opt/lampp/include/openssl/cast.h +#opt/lampp/include/openssl/store.h +#opt/lampp/include/openssl/asn1_mac.h +#opt/lampp/include/openssl/comp.h +#opt/lampp/include/openssl/conf.h +#opt/lampp/include/openssl/e_os.h +#opt/lampp/include/openssl/des_old.h +#opt/lampp/include/openssl/ecdh.h +#opt/lampp/include/openssl/x509_vfy.h +#opt/lampp/include/openssl/fips.h +#opt/lampp/include/openssl/blowfish.h +#opt/lampp/include/openssl/hmac.h +#opt/lampp/include/openssl/idea.h +#opt/lampp/include/openssl/kssl.h +#opt/lampp/include/openssl/mdc2.h +#opt/lampp/include/openssl/ocsp.h +#opt/lampp/include/openssl/obj_mac.h +#opt/lampp/include/openssl/pem2.h +#opt/lampp/include/openssl/pkcs12.h +#opt/lampp/include/openssl/ossl_typ.h +#opt/lampp/include/openssl/ebcdic.h +#opt/lampp/include/openssl/rand.h +#opt/lampp/include/openssl/buffer.h +#opt/lampp/include/openssl/x509.h +#opt/lampp/include/openssl/ssl2.h +#opt/lampp/include/openssl/ssl3.h +#opt/lampp/include/openssl/objects.h +#opt/lampp/include/openssl/tls1.h +#opt/lampp/include/openssl/ripemd.h +#opt/lampp/include/openssl/pqueue.h +#opt/lampp/include/openssl/krb5_asn.h +#opt/lampp/include/openssl/x509v3.h +#opt/lampp/include/openssl/asn1t.h +#opt/lampp/include/openssl/ui_compat.h +#opt/lampp/include/openssl/symhacks.h +#opt/lampp/include/openssl/pkcs7.h +#opt/lampp/include/openssl/opensslconf.h +#opt/lampp/include/tdsconvert.h +#opt/lampp/include/slapi-plugin.h +#opt/lampp/include/modperl_tipool.h +#opt/lampp/include/modperl_io.h +#opt/lampp/include/libexslt/ +#opt/lampp/include/libexslt/exslt.h +#opt/lampp/include/libexslt/exsltconfig.h +#opt/lampp/include/libexslt/exsltexports.h +#opt/lampp/include/mod_auth.h +#opt/lampp/include/libpng12/ +#opt/lampp/include/libpng12/pngconf.h +#opt/lampp/include/libpng12/png.h +#opt/lampp/include/modperl_apache_includes.h +#opt/lampp/include/apr_xlate.h +#opt/lampp/include/httpd.h +#opt/lampp/include/shandler.h +#opt/lampp/include/http_main.h +#opt/lampp/include/mod_core.h +#opt/lampp/include/cstypes.h +#opt/lampp/include/mod_log_config.h +#opt/lampp/include/apr_signal.h +#opt/lampp/include/modperl_xs_util.h +#opt/lampp/include/modperl_xs_sv_convert.h +#opt/lampp/include/ldap_cdefs.h +#opt/lampp/include/modperl_perl.h +#opt/lampp/include/gdfontg.h +#opt/lampp/include/gdfontl.h +#opt/lampp/include/gdfonts.h +#opt/lampp/include/gdfontt.h +#opt/lampp/include/ap_release.h +#opt/lampp/include/apr_optional_hooks.h +#opt/lampp/include/modperl_interp.h +#opt/lampp/include/apr_thread_mutex.h +#opt/lampp/include/sabcfg.h +#opt/lampp/include/sabdbg.h +#opt/lampp/include/modperl_time.h +#opt/lampp/include/apr_queue.h +#opt/lampp/include/sablot.h +#opt/lampp/include/modperl_debug.h +#opt/lampp/include/modperl_const.h +#opt/lampp/include/modperl_apr_compat.h +#opt/lampp/include/disptmpl.h +#opt/lampp/include/modperl_util.h +#opt/lampp/include/ldap_utf8.h +#opt/lampp/include/modperl_cgi.h +#opt/lampp/include/util_cfgtree.h +#opt/lampp/include/modperl_cmd.h +#opt/lampp/include/modperl_env.h +#opt/lampp/include/apr_date.h +#opt/lampp/include/modperl_log.h +#opt/lampp/include/modperl_mgv.h +#opt/lampp/include/modperl_pcw.h +#opt/lampp/include/modperl_sys.h ## ## PARPORT & PRINTER modules ## diff --git a/src/patches/ipac-ng-1.31-fetchcounter.patch b/src/patches/ipac-ng-1.31-fetchcounter.patch new file mode 100644 index 000000000..eb6c0738a --- /dev/null +++ b/src/patches/ipac-ng-1.31-fetchcounter.patch @@ -0,0 +1,11 @@ +diff -ruw ipac-ng-1.31_iptables-1.3.1/agents/iptables/iptables.c ipac-ng-1.31/agents/iptables/iptables.c +--- ipac-ng-1.31_iptables-1.3.1/agents/iptables/iptables.c 2005-05-02 12:00:48.000000000 +0200 ++++ ipac-ng-1.31/agents/iptables/iptables.c 2005-05-11 22:15:59.558139120 +0200 +@@ -1144,6 +1144,7 @@ + rule = new_rule(); + + chain = new_rule(); ++ chain->pkts = 1; + + strncpy(rule->name, cp+1, MAX_RULE_NAME_LENGTH); + strncpy(chain->name, nextline->line, cp-nextline->line); diff --git a/src/patches/ipac-ng-1.31-iptables-1.3.1.patch b/src/patches/ipac-ng-1.31-iptables-1.3.1.patch new file mode 100644 index 000000000..a0225dd63 --- /dev/null +++ b/src/patches/ipac-ng-1.31-iptables-1.3.1.patch @@ -0,0 +1,4826 @@ +diff -Nur ipac-ng-1.31.orig/agents/iptables/iptables.c ipac-ng-1.31/agents/iptables/iptables.c +--- ipac-ng-1.31.orig/agents/iptables/iptables.c 2004-06-27 22:08:54.000000000 +0000 ++++ ipac-ng-1.31/agents/iptables/iptables.c 2006-01-11 21:49:40.000000000 +0000 +@@ -62,10 +62,6 @@ + #define FALSE 0 + #endif + +-#ifndef IPT_LIB_DIR +-#define IPT_LIB_DIR "/lib/iptables" +-#endif +- + #define FMT_NUMERIC 0x0001 + #define FMT_NOCOUNTS 0x0002 + #define FMT_KILOMEGAGIGA 0x0004 +@@ -91,7 +87,6 @@ + static struct option *opts = original_opts; + static unsigned int global_option_offset = 0; + +-extern char *authhost; + + /* - T.Mohan 5/7/2001 + * interface structure to pass to append rule +@@ -106,6 +101,14 @@ + typedef struct iface_struct s_iface; + + ++struct iptables_rule_match ++{ ++ struct iptables_rule_match *next; ++ ++ struct iptables_match *match; ++}; ++ ++ + /* Include file for additions: new matches and targets. */ + struct iptables_match + { +@@ -113,6 +116,9 @@ + + ipt_chainlabel name; + ++ /* Revision of match (0 by default). */ ++ u_int8_t revision; ++ + const char *version; + + /* Size of match data. */ +@@ -152,7 +158,6 @@ + unsigned int option_offset; + struct ipt_entry_match *m; + unsigned int mflags; +- unsigned int used; + }; + + struct iptables_target +@@ -161,6 +166,9 @@ + + ipt_chainlabel name; + ++ /* Revision of target (0 by default). */ ++ u_int8_t revision; ++ + const char *version; + + /* Size of target data. */ +@@ -202,6 +210,7 @@ + unsigned int used; + }; + ++ + enum ipt_tryload { + DONT_LOAD, + TRY_LOAD, +@@ -246,6 +255,9 @@ + * compiler warning. + */ + ++char *lib_dir = "/lib/iptables"; ++ ++ + void + exit_error(enum exittype status, char *msg, ...) + { +@@ -367,7 +379,7 @@ + * iptables-1.2.2 file:iptables.c + */ + +-void ++static void + parse_interface(const char *arg, char *vianame, unsigned char *mask) + { + int vialen = strlen(arg); +@@ -382,23 +394,25 @@ + " (%i)", arg, IFNAMSIZ-1); + + strcpy(vianame, arg); +- if (vialen == 0) ++ if ((vialen == 0) || (vialen == 1 && vianame[0] == '+')) + memset(mask, 0, IFNAMSIZ); + else if (vianame[vialen - 1] == '+') { + memset(mask, 0xFF, vialen - 1); + memset(mask + vialen - 1, 0, IFNAMSIZ - vialen + 1); ++ /* Don't remove `+' here! -HW */ + } else { + /* Include nul-terminator in match */ + memset(mask, 0xFF, vialen + 1); + memset(mask + vialen + 1, 0, IFNAMSIZ - vialen - 1); +- } + for (i = 0; vianame[i]; i++) { + if (!isalnum(vianame[i]) + && vianame[i] != '_' +- && vianame[i] != '+' + && vianame[i] != '.') { +- exit_error(PARAMETER_PROBLEM, "Warning: weird character in interface" +- " `%s' (No aliases, :, ! or *).\n", vianame); ++ printf("Warning: wierd character in interface" ++ " `%s' (No aliases, :, ! or *).\n", ++ vianame); ++ break; ++ } + } + } + } +@@ -429,20 +443,27 @@ + } + + int +-check_inverse(const char option[], int *invert) ++check_inverse(const char option[], int *invert, int *optind, int argc) + { + if (option && strcmp(option, "!") == 0) { + if (*invert) + exit_error(PARAMETER_PROBLEM, + "Multiple `!' flags not allowed"); +- + *invert = TRUE; ++ if (optind) { ++ *optind = *optind+1; ++ if (argc && *optind > argc) ++ exit_error(PARAMETER_PROBLEM, ++ "no argument following `!'"); ++ } ++ + return TRUE; + } + return FALSE; + } + + // --------------------------------------------------------------------- ++/* code copied from iptables 1.3.1 */ + // --------------------------------------------------------------------- + + static char * +@@ -509,7 +530,7 @@ + return addr_to_dotted(addr); + } + +-static char * ++char * + mask_to_dotted(const struct in_addr *mask) + { + int i; +@@ -535,22 +556,19 @@ + return buf; + } + ++ + static struct ipt_entry * + generate_entry(const struct ipt_entry *fw, +- struct iptables_match *matches, ++ struct iptables_rule_match *matches, + struct ipt_entry_target *target) + { + unsigned int size; +- struct iptables_match *m; ++ struct iptables_rule_match *matchp; + struct ipt_entry *e; + + size = sizeof(struct ipt_entry); +- for (m = matches; m; m = m->next) { +- if (!m->used) +- continue; +- +- size += m->m->u.match_size; +- } ++ for (matchp = matches; matchp; matchp = matchp->next) ++ size += matchp->match->m->u.match_size; + + e = xmalloc(size + target->u.target_size); + *e = *fw; +@@ -558,12 +576,9 @@ + e->next_offset = size + target->u.target_size; + + size = 0; +- for (m = matches; m; m = m->next) { +- if (!m->used) +- continue; +- +- memcpy(e->elems + size, m->m, m->m->u.match_size); +- size += m->m->u.match_size; ++ for (matchp = matches; matchp; matchp = matchp->next) { ++ memcpy(e->elems + size, matchp->match->m, matchp->match->m->u.match_size); ++ size += matchp->match->m->u.match_size; + } + memcpy(e->elems + size, target, target->u.target_size); + +@@ -575,15 +590,17 @@ + int procfile; + char *ret; + ++#define PROCFILE_BUFSIZ 1024 + procfile = open(PROC_SYS_MODPROBE, O_RDONLY); + if (procfile < 0) + return NULL; + +- ret = malloc(1024); ++ ret = (char *) malloc(PROCFILE_BUFSIZ); + if (ret) { +- switch (read(procfile, ret, 1024)) { ++ memset(ret, 0, PROCFILE_BUFSIZ); ++ switch (read(procfile, ret, PROCFILE_BUFSIZ)) { + case -1: goto fail; +- case 1024: goto fail; /* Partial read. Wierd */ ++ case PROCFILE_BUFSIZ: goto fail; /* Partial read. Wierd */ + } + if (ret[strlen(ret)-1]=='\n') + ret[strlen(ret)-1]=0; +@@ -618,22 +635,22 @@ + } + + if (!ptr && tryload != DONT_LOAD) { +- char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so") ++ char path[strlen(lib_dir) + sizeof("/libipt_.so") + + strlen(name)]; +- sprintf(path, IPT_LIB_DIR "/libipt_%s.so", name); ++ sprintf(path, "%s/libipt_%s.so", lib_dir, name); + if (dlopen(path, RTLD_NOW)) { + /* Found library. If it didn't register itself, + maybe they specified match as a target. */ + ptr = find_target(name, DONT_LOAD); + if (!ptr) { +- fprintf(stderr, "Couldn't load target `%s'\n", ++ exit_error(PARAMETER_PROBLEM, ++ "Couldn't load target `%s'\n", + name); +- exit(1); + } + } else if (tryload == LOAD_MUST_SUCCEED) { +- fprintf(stderr, "Couldn't load target `%s':%s\n", ++ exit_error(PARAMETER_PROBLEM, ++ "Couldn't load target `%s':%s\n", + name, dlerror()); +- exit(1); + } + } + +@@ -647,8 +664,9 @@ + { + char *buf = NULL; + char *argv[3]; ++ int status; + +-// If they don't explicitly set it, read out of kernel ++ /* If they don't explicitly set it, read out of kernel */ + if (!modprobe) { + buf = get_modprobe(); + if (!buf) +@@ -664,16 +682,18 @@ + execv(argv[0], argv); + + // not usually reached +- exit(0); ++ exit(1); + case -1: + return -1; + + default: // parent +- wait(NULL); ++ wait(&status); + } + + free(buf); ++ if (WIFEXITED(status) && WEXITSTATUS(status) == 0) + return 0; ++ return -1; + } + + void +@@ -687,7 +707,7 @@ + + if (me->size != IPT_ALIGN(me->size)) { + fprintf(stderr, "%s: target `%s' has invalid size %u.\n", +- "fddfgdsse", me->name, me->size); ++ "fddfgdsse", me->name, (unsigned int)me->size); + exit(1); + } + +@@ -698,20 +718,17 @@ + me->tflags = 0; + } + +-unsigned char * make_delete_mask(struct ipt_entry *fw) ++static unsigned char * ++make_delete_mask(struct ipt_entry *fw, struct iptables_rule_match *matches) + { + /* Establish mask for comparison */ + unsigned int size; +- struct iptables_match *m; ++ struct iptables_rule_match *matchp; + unsigned char *mask, *mptr; + + size = sizeof(struct ipt_entry); +- for (m = iptables_matches; m; m = m->next) { +- if (!m->used) +- continue; +- +- size += IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size; +- } ++ for (matchp = matches; matchp; matchp = matchp->next) ++ size += IPT_ALIGN(sizeof(struct ipt_entry_match)) + matchp->match->size; + + mask = xcalloc(1, size + + IPT_ALIGN(sizeof(struct ipt_entry_target)) +@@ -720,14 +737,11 @@ + memset(mask, 0xFF, sizeof(struct ipt_entry)); + mptr = mask + sizeof(struct ipt_entry); + +- for (m = iptables_matches; m; m = m->next) { +- if (!m->used) +- continue; +- ++ for (matchp = matches; matchp; matchp = matchp->next) { + memset(mptr, 0xFF, + IPT_ALIGN(sizeof(struct ipt_entry_match)) +- + m->userspacesize); +- mptr += IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size; ++ + matchp->match->userspacesize); ++ mptr += IPT_ALIGN(sizeof(struct ipt_entry_match)) + matchp->match->size; + } + + memset(mptr, 0xFF, +@@ -738,7 +752,7 @@ + } + + struct iptables_match * +-find_match(const char *name, enum ipt_tryload tryload) ++find_match(const char *name, enum ipt_tryload tryload, struct iptables_rule_match **matches) + { + struct iptables_match *ptr; + +@@ -748,28 +762,37 @@ + } + + if (!ptr && tryload != DONT_LOAD) { +- char path[sizeof(IPT_LIB_DIR) + sizeof("/libipt_.so") ++ char path[strlen(lib_dir) + sizeof("/libipt_.so") + + strlen(name)]; +- sprintf(path, IPT_LIB_DIR "/libipt_%s.so", name); ++ sprintf(path, "%s/libipt_%s.so", lib_dir, name); + if (dlopen(path, RTLD_NOW)) { + /* Found library. If it didn't register itself, + maybe they specified target as match. */ +- ptr = find_match(name, DONT_LOAD); ++ ptr = find_match(name, DONT_LOAD, NULL); + + if (!ptr) { +- fprintf(stderr, "Couldn't load match `%s'\n", ++ exit_error(PARAMETER_PROBLEM, ++ "Couldn't load match `%s'\n", + name); +- exit(1); + } + } else if (tryload == LOAD_MUST_SUCCEED) { +- fprintf(stderr, "Couldn't load match `%s':%s\n", ++ exit_error(PARAMETER_PROBLEM, ++ "Couldn't load match `%s':%s\n", + name, dlerror()); +- exit(1); + } + } + +- if (ptr) +- ptr->used = 1; ++ if (ptr && matches) { ++ struct iptables_rule_match **i; ++ struct iptables_rule_match *newentry; ++ ++ newentry = xmalloc(sizeof(struct iptables_rule_match)); ++ ++ for (i = matches; *i; i = &(*i)->next); ++ newentry->match = ptr; ++ newentry->next = NULL; ++ *i = newentry; ++ } + + return ptr; + } +@@ -779,7 +802,7 @@ + { + struct iptables_match **i; + +- if (find_match(me->name, DONT_LOAD)) { ++ if (find_match(me->name, DONT_LOAD, NULL)) { + fprintf(stderr, "%s: match `%s' already registered.\n", + "fetchipac??", me->name); + exit(1); +@@ -787,7 +810,7 @@ + + if (me->size != IPT_ALIGN(me->size)) { + fprintf(stderr, "%s: match `%s' has invalid size %u.\n", +- "fetchipac??", me->name, me->size); ++ "fetchipac??", me->name, (unsigned int)me->size); + exit(1); + } + +@@ -801,16 +824,21 @@ + } + + ++/* Christophe Burki wants `-p 6' to imply `-m tcp'. */ + static struct iptables_match * +-find_proto(const char *pname, enum ipt_tryload tryload, int nolookup) ++find_proto(const char *pname, enum ipt_tryload tryload, int nolookup, struct iptables_rule_match **matches) + { +- int proto; ++ unsigned int proto; + +- proto = string_to_number(pname, 0, 255); +- if (proto != -1) +- return find_match(proto_to_name(proto, nolookup), tryload); ++ if ((proto = string_to_number(pname, 0, 255)) != -1) { ++ char *protoname = proto_to_name(proto, nolookup); + +- return find_match(pname, tryload); ++ if (protoname) ++ return find_match(protoname, tryload, matches); ++ } else ++ return find_match(pname, tryload, matches); ++ ++ return NULL; + } + + static void +@@ -823,15 +851,19 @@ + number = (number + 500) / 1000; + if (number > 9999) { + number = (number + 500) / 1000; +- printf(FMT("%4lluG ","%lluG "),number); ++ if (number > 9999) { ++ number = (number + 500) / 1000; ++ printf(FMT("%4lluT ","%lluT "), (unsigned long long)number); + } +- else printf(FMT("%4lluM ","%lluM "), number); ++ else printf(FMT("%4lluG ","%lluG "), (unsigned long long)number); ++ } ++ else printf(FMT("%4lluM ","%lluM "), (unsigned long long)number); + } else +- printf(FMT("%4lluK ","%lluK "), number); ++ printf(FMT("%4lluK ","%lluK "), (unsigned long long)number); + } else +- printf(FMT("%5llu ","%llu "), number); ++ printf(FMT("%5llu ","%llu "), (unsigned long long)number); + } else +- printf(FMT("%8llu ","%llu "), number); ++ printf(FMT("%8llu ","%llu "), (unsigned long long)number); + } + + static int +@@ -839,7 +871,7 @@ + const struct ipt_ip *ip, + int numeric) + { +- struct iptables_match *match = find_match(m->u.user.name, TRY_LOAD); ++ struct iptables_match *match = find_match(m->u.user.name, TRY_LOAD, NULL); + + if (match) { + if (match->print) +@@ -867,9 +899,6 @@ + u_int8_t flags; + char buf[BUFSIZ]; + +- /* User creates a chain called "REJECT": this overrides the +- `REJECT' target module. Keep feeding them rope until the +- revolution... Bwahahahahah */ + if (!iptc_is_chain(targname, handle)) + target = find_target(targname, TRY_LOAD); + else +@@ -917,10 +946,6 @@ + + if (fw->ip.iniface[0] != '\0') { + strcat(iface, fw->ip.iniface); +- /* If it doesn't compare the nul-term, it's a +- wildcard. */ +- if (fw->ip.iniface_mask[strlen(fw->ip.iniface)] == 0) +- strcat(iface, "+"); + } + else if (format & FMT_NUMERIC) strcat(iface, "*"); + else strcat(iface, "any"); +@@ -934,10 +959,6 @@ + + if (fw->ip.outiface[0] != '\0') { + strcat(iface, fw->ip.outiface); +- /* If it doesn't compare the nul-term, it's a +- wildcard. */ +- if (fw->ip.outiface_mask[strlen(fw->ip.outiface)] == 0) +- strcat(iface, "+"); + } + else if (format & FMT_NUMERIC) strcat(iface, "*"); + else strcat(iface, "any"); +@@ -979,7 +1000,7 @@ + target->print(&fw->ip, t, format & FMT_NUMERIC); + } else if (t->u.target_size != sizeof(*t)) + printf("[%u bytes of unknown target data] ", +- t->u.target_size - sizeof(*t)); ++ (unsigned int)(t->u.target_size - sizeof(*t))); + + if (!(format & FMT_NONEWLINE)) + fputc('\n', stdout); +@@ -996,6 +1017,15 @@ + } + + ++static void set_revision(char *name, u_int8_t revision) ++{ ++ /* Old kernel sources don't have ".revision" field, ++ but we stole a byte from name. */ ++ name[IPT_FUNCTION_MAXNAMELEN - 2] = '\0'; ++ name[IPT_FUNCTION_MAXNAMELEN - 1] = revision; ++} ++ ++ + // --------------------------------------------------------------------- + + +@@ -1129,8 +1159,7 @@ + chain->pkts++; + continue; + } +- +- counters = iptc_read_counter(chain->name, chain->pkts, &handle); ++ counters = iptc_read_counter(chain->name, chain->pkts, &handle); // ???? why chain->pkts + if (counters) { + iptc_zero_counter(chain->name, chain->pkts, &handle); + chain->pkts++; +@@ -1192,7 +1221,7 @@ + * + */ + static int +-prepare_entry (raw_rule_type *d, struct ipt_entry **e) ++prepare_entry (raw_rule_type *d, struct ipt_entry **e, struct iptables_rule_match **matches) + { + struct ipt_entry fw; + unsigned int naddrs = 0; +@@ -1200,10 +1229,14 @@ + struct iptables_match *m; + struct iptables_target *target = NULL; + struct iptables_target *t; ++ ++ struct iptables_rule_match *matchp; ++ + size_t size; + int inverse; + int c,argc; + int invert = 0; ++ int proto_used = 0; + + bzero(&fw, sizeof(fw)); + +@@ -1233,7 +1266,6 @@ + + for (m = iptables_matches; m; m = m->next) { + m->mflags = 0; +- m->used = 0; + } + + for (t = iptables_targets; t; t = t->next) { +@@ -1279,6 +1311,8 @@ + target->t = xcalloc(1, size); + target->t->u.target_size = size; + strcpy(target->t->u.user.name, d->target); ++ set_revision(target->t->u.user.name, target->revision); ++ if (target->init != NULL) + target->init(target->t, &fw.nfcache); + + if(check_inverse_type(d->protocol)) +@@ -1290,7 +1324,7 @@ + } + + if (d->protocol[0] != '\0' && d->protocol[0] != 'i') { +- m = find_proto(d->protocol, LOAD_MUST_SUCCEED, 0); ++ m = find_proto(d->protocol, LOAD_MUST_SUCCEED, 0, matches); + size = IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size; + m->m = xcalloc(size, 1); + m->m->u.match_size = size; +@@ -1338,7 +1372,7 @@ + while ((c = getopt_long(argc, d->extension,"-m:", opts, NULL))!= -1) { + switch (c) { + case 'm': +- m = find_match(optarg, LOAD_MUST_SUCCEED); ++ m = find_match(optarg, LOAD_MUST_SUCCEED, matches); + size = IPT_ALIGN(sizeof(struct ipt_entry_match)) + m->size; + m->m = xcalloc(1, size); + m->m->u.match_size = size; +@@ -1361,32 +1395,80 @@ + exit(1); + + default: +- for (m = iptables_matches; m; m = m->next) { +- if (!m->used) +- continue; +- if (m->parse(c - m->option_offset, ++ ++ /* FIXME: This scheme doesn't allow two of the same ++ matches --RR */ ++ if (!target ++ || !(target->parse(c - target->option_offset, ++ d->extension, invert, ++ &target->tflags, ++ &fw, &target->t))) { ++ for (matchp = *matches; matchp; matchp = matchp->next) { ++ if (matchp->match->parse(c - matchp->match->option_offset, + d->extension, invert, +- &m->mflags, +- &fw, &fw.nfcache, &m->m)) ++ &matchp->match->mflags, ++ &fw, ++ &fw.nfcache, ++ &matchp->match->m)) + break; + } +- break; ++ ++ if (m == NULL ++ && d->protocol ++ && (!find_proto(d->protocol, DONT_LOAD, ++ 0, NULL) ++ || (find_proto(d->protocol, DONT_LOAD, ++ 0, NULL) ++ && (proto_used == 0)) ++ ) ++ && (m = find_proto(d->protocol, TRY_LOAD, ++ 0, matches))) { ++ /* Try loading protocol */ ++ size_t size; ++ ++ proto_used = 1; ++ ++ size = IPT_ALIGN(sizeof(struct ipt_entry_match)) ++ + m->size; ++ ++ m->m = xcalloc(1, size); ++ m->m->u.match_size = size; ++ strcpy(m->m->u.user.name, m->name); ++ set_revision(m->m->u.user.name, ++ m->revision); ++ if (m->init != NULL) ++ m->init(m->m, &fw.nfcache); ++ ++ opts = merge_options(opts, ++ m->extra_opts, &m->option_offset); ++ ++ optind--; ++ continue; ++ } ++ ++ m = matchp ? matchp->match : NULL; ++ if (!m) ++ exit_error(PARAMETER_PROBLEM, ++ "Unknown arg `%s'", ++ d->extension); + } + } + } +- for (m = iptables_matches; m; m = m->next) { +- if (!m->used) +- continue; +- m->final_check(m->mflags); + } + ++ for (matchp = *matches; matchp; matchp = matchp->next) ++ matchp->match->final_check(matchp->match->mflags); ++ ++ if (target) + target->final_check(target->tflags); +- *e = generate_entry(&fw, iptables_matches, target->t); ++ ++ *e = generate_entry(&fw, *matches, target->t); ++ free(target->t); ++ + + if (!handle) if (!(handle = iptc_init("filter"))) + exit_error(PARAMETER_PROBLEM, + "iptables: %s\n", iptc_strerror(errno)); +- + return 0; + } + +@@ -1399,9 +1481,11 @@ + insert_rule(raw_rule_type *d, int rule_num) + { + struct ipt_entry *e = NULL; ++ struct iptables_rule_match *matches = NULL; ++ + int ret=1; + +- if (prepare_entry(d, &e)!=0) ++ if (prepare_entry(d, &e, &matches)!=0) + return (1); + if (verbose>1) { + printf("Inserting rule\n"); +@@ -1412,28 +1496,6 @@ + return ret; + } + +-/* +- * Try to atomically replace rule in kernel return 0 in case all right, 1 otherwice +- */ +-static int +-//replace_rule (char *chain, char *saddr, char *sport, char *daddr, char *dport, +-// char *proto, char *targ, int rule_num, char *iface) +-replace_rule (raw_rule_type *d, int rule_num) +-{ +- struct ipt_entry *e = NULL; +- int ret=1; +- +- if (prepare_entry(d, &e)!=0) +- return (1); +- +- if (verbose>1) { +- printf("Replacing rule %d in '%s'\n", rule_num, d->dest); +- print_firewall_line(e, handle); +- } +- ret &= iptc_replace_entry(d->dest, e, rule_num, &handle); +- free(e); +- return ret; +-} + + /* + * Try to append rule into kernel return 0 in case all right, 1 otherwice +@@ -1449,8 +1511,9 @@ + append_rule (raw_rule_type *d) + { + struct ipt_entry *e = NULL; ++ struct iptables_rule_match *matches = NULL; + +- if (prepare_entry(d, &e)!=0) ++ if (prepare_entry(d, &e, &matches)!=0) + return (1); + + if (verbose>1) { +@@ -1472,9 +1535,11 @@ + { + struct ipt_entry *e = NULL; + unsigned char *mask = NULL; ++ struct iptables_rule_match *matches = NULL; ++ + int ret=1; + +- if (prepare_entry(d, &e)!=0) ++ if (prepare_entry(d, &e, &matches)!=0) + return (1); + + if (verbose>1) { +@@ -1482,26 +1547,12 @@ + print_firewall_line(e, handle); + } + +- mask = make_delete_mask(e); ++ mask = make_delete_mask(e, matches); + ret &= iptc_delete_entry(d->dest, e, mask, &handle); + free(e); + return ret; + } + +-static int +-delete_num_rule (char *chain, int num) +-{ +- struct ipt_entry *e = NULL; +- unsigned char *mask = NULL; +- int ret = 1; +- +- mask = make_delete_mask(e); +- ret &= iptc_delete_num_entry(chain, num, &handle); +- free(e); +- return ret; +-} +- +- + + /** Setup chains if they doesn't exist + * +@@ -1588,11 +1639,9 @@ + if (!handle) + handle = iptc_init("filter"); + +- if (!handle) { +-// try to insmod the module if iptc_init failed +- iptables_insmod("ip_tables", modprobe); ++ /* try to insmod the module if iptc_init failed */ ++ if (!handle && iptables_insmod("ip_tables", modprobe) != -1) + handle = iptc_init("filter"); +- } + + if (!handle) { + fprintf(stderr, "ipac-ng: can't initialize iptables table `filter'\n" +@@ -1617,7 +1666,6 @@ + setup_rules(void) + { + raw_rule_type *d, *d1; +- char targ[MAX_RULE_NAME_LENGTH+2]; + char chain[MAX_RULE_NAME_LENGTH+2]; + FILE *frunfile; + +diff -Nur ipac-ng-1.31.orig/agents/iptables/libip4tc.c ipac-ng-1.31/agents/iptables/libip4tc.c +--- ipac-ng-1.31.orig/agents/iptables/libip4tc.c 2003-07-06 10:33:23.000000000 +0000 ++++ ipac-ng-1.31/agents/iptables/libip4tc.c 2006-01-11 21:51:46.000000000 +0000 +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + #ifdef DEBUG_CONNTRACK + #define inline +@@ -90,6 +91,7 @@ + #define TC_SET_POLICY iptc_set_policy + #define TC_GET_RAW_SOCKET iptc_get_raw_socket + #define TC_INIT iptc_init ++#define TC_FREE iptc_free + #define TC_COMMIT iptc_commit + #define TC_STRERROR iptc_strerror + +@@ -121,121 +123,49 @@ + + #define IP_PARTS(n) IP_PARTS_NATIVE(ntohl(n)) + +-int +-dump_entry(STRUCT_ENTRY *e, const TC_HANDLE_T handle) +-{ +- size_t i; +- STRUCT_ENTRY_TARGET *t; +- +- printf("Entry %u (%lu):\n", entry2index(handle, e), +- entry2offset(handle, e)); +- printf("SRC IP: %u.%u.%u.%u/%u.%u.%u.%u\n", +- IP_PARTS(e->ip.src.s_addr),IP_PARTS(e->ip.smsk.s_addr)); +- printf("DST IP: %u.%u.%u.%u/%u.%u.%u.%u\n", +- IP_PARTS(e->ip.dst.s_addr),IP_PARTS(e->ip.dmsk.s_addr)); +- printf("Interface: `%s'/", e->ip.iniface); +- for (i = 0; i < IFNAMSIZ; i++) +- printf("%c", e->ip.iniface_mask[i] ? 'X' : '.'); +- printf("to `%s'/", e->ip.outiface); +- for (i = 0; i < IFNAMSIZ; i++) +- printf("%c", e->ip.outiface_mask[i] ? 'X' : '.'); +- printf("\nProtocol: %u\n", e->ip.proto); +- printf("Flags: %02X\n", e->ip.flags); +- printf("Invflags: %02X\n", e->ip.invflags); +- printf("Counters: %llu packets, %llu bytes\n", +- e->counters.pcnt, e->counters.bcnt); +- printf("Cache: %08X ", e->nfcache); +- if (e->nfcache & NFC_ALTERED) printf("ALTERED "); +- if (e->nfcache & NFC_UNKNOWN) printf("UNKNOWN "); +- if (e->nfcache & NFC_IP_SRC) printf("IP_SRC "); +- if (e->nfcache & NFC_IP_DST) printf("IP_DST "); +- if (e->nfcache & NFC_IP_IF_IN) printf("IP_IF_IN "); +- if (e->nfcache & NFC_IP_IF_OUT) printf("IP_IF_OUT "); +- if (e->nfcache & NFC_IP_TOS) printf("IP_TOS "); +- if (e->nfcache & NFC_IP_PROTO) printf("IP_PROTO "); +- if (e->nfcache & NFC_IP_OPTIONS) printf("IP_OPTIONS "); +- if (e->nfcache & NFC_IP_TCPFLAGS) printf("IP_TCPFLAGS "); +- if (e->nfcache & NFC_IP_SRC_PT) printf("IP_SRC_PT "); +- if (e->nfcache & NFC_IP_DST_PT) printf("IP_DST_PT "); +- if (e->nfcache & NFC_IP_PROTO_UNKNOWN) printf("IP_PROTO_UNKNOWN "); +- printf("\n"); +- +- IPT_MATCH_ITERATE(e, print_match); +- +- t = GET_TARGET(e); +- printf("Target name: `%s' [%u]\n", t->u.user.name, t->u.target_size); +- if (strcmp(t->u.user.name, STANDARD_TARGET) == 0) { +- int pos = *(int *)t->data; +- if (pos < 0) +- printf("verdict=%s\n", +- pos == -NF_ACCEPT-1 ? "NF_ACCEPT" +- : pos == -NF_DROP-1 ? "NF_DROP" +- : pos == -NF_QUEUE-1 ? "NF_QUEUE" +- : pos == RETURN ? "RETURN" +- : "UNKNOWN"); +- else +- printf("verdict=%u\n", pos); +- } else if (strcmp(t->u.user.name, IPT_ERROR_TARGET) == 0) +- printf("error=`%s'\n", t->data); +- +- printf("\n"); +- return 0; +-} + +-static int ++static unsigned char * + is_same(const STRUCT_ENTRY *a, const STRUCT_ENTRY *b, unsigned char *matchmask) + { + unsigned int i; +- STRUCT_ENTRY_TARGET *ta, *tb; + unsigned char *mptr; + + /* Always compare head structures: ignore mask here. */ + if (a->ip.src.s_addr != b->ip.src.s_addr + || a->ip.dst.s_addr != b->ip.dst.s_addr + || a->ip.smsk.s_addr != b->ip.smsk.s_addr +- || a->ip.smsk.s_addr != b->ip.smsk.s_addr ++ || a->ip.dmsk.s_addr != b->ip.dmsk.s_addr + || a->ip.proto != b->ip.proto + || a->ip.flags != b->ip.flags + || a->ip.invflags != b->ip.invflags) +- return 0; ++ return NULL; + + for (i = 0; i < IFNAMSIZ; i++) { + if (a->ip.iniface_mask[i] != b->ip.iniface_mask[i]) +- return 0; ++ return NULL; + if ((a->ip.iniface[i] & a->ip.iniface_mask[i]) + != (b->ip.iniface[i] & b->ip.iniface_mask[i])) +- return 0; ++ return NULL; + if (a->ip.outiface_mask[i] != b->ip.outiface_mask[i]) +- return 0; ++ return NULL; + if ((a->ip.outiface[i] & a->ip.outiface_mask[i]) + != (b->ip.outiface[i] & b->ip.outiface_mask[i])) +- return 0; ++ return NULL; + } + + if (a->nfcache != b->nfcache + || a->target_offset != b->target_offset + || a->next_offset != b->next_offset) +- return 0; ++ return NULL; + + mptr = matchmask + sizeof(STRUCT_ENTRY); + if (IPT_MATCH_ITERATE(a, match_different, a->elems, b->elems, &mptr)) +- return 0; ++ return NULL; + +- ta = GET_TARGET((STRUCT_ENTRY *)a); +- tb = GET_TARGET((STRUCT_ENTRY *)b); +- if (ta->u.target_size != tb->u.target_size) +- return 0; +- if (strcmp(ta->u.user.name, tb->u.user.name) != 0) +- return 0; +- +- mptr += sizeof(*ta); +- if (target_different(ta->data, tb->data, +- ta->u.target_size - sizeof(*ta), mptr)) +- return 0; +- +- return 1; ++ return mptr; + } + ++#if 0 + /***************************** DEBUGGING ********************************/ + static inline int + unconditional(const struct ipt_ip *ip) +@@ -290,20 +220,20 @@ + assert(t->verdict == -NF_DROP-1 + || t->verdict == -NF_ACCEPT-1 + || t->verdict == RETURN +- || t->verdict < (int)h->entries.size); ++ || t->verdict < (int)h->entries->size); + + if (t->verdict >= 0) { + STRUCT_ENTRY *te = get_entry(h, t->verdict); + int idx; + +- idx = entry2index(h, te); ++ idx = iptcb_entry2index(h, te); + assert(strcmp(GET_TARGET(te)->u.user.name, + IPT_ERROR_TARGET) + != 0); + assert(te != e); + + /* Prior node must be error node, or this node. */ +- assert(t->verdict == entry2offset(h, e)+e->next_offset ++ assert(t->verdict == iptcb_entry2offset(h, e)+e->next_offset + || strcmp(GET_TARGET(index2entry(h, idx-1)) + ->u.user.name, IPT_ERROR_TARGET) + == 0); +@@ -335,7 +265,7 @@ + return 0; + } + +-#ifndef NDEBUG ++#ifdef IPTC_DEBUG + /* Do every conceivable sanity check on the handle */ + static void + do_check(TC_HANDLE_T h, unsigned int line) +@@ -364,35 +294,90 @@ + + user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT]; + } else if (strcmp(h->info.name, "nat") == 0) { +- assert(h->info.valid_hooks ++ assert((h->info.valid_hooks + == (1 << NF_IP_PRE_ROUTING + | 1 << NF_IP_POST_ROUTING +- | 1 << NF_IP_LOCAL_OUT)); ++ | 1 << NF_IP_LOCAL_OUT)) || ++ (h->info.valid_hooks ++ == (1 << NF_IP_PRE_ROUTING ++ | 1 << NF_IP_LOCAL_IN ++ | 1 << NF_IP_POST_ROUTING ++ | 1 << NF_IP_LOCAL_OUT))); + + assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0); + + n = get_chain_end(h, 0); ++ + n += get_entry(h, n)->next_offset; + assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n); +- + n = get_chain_end(h, n); ++ + n += get_entry(h, n)->next_offset; + assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n); +- + user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT]; ++ ++ if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) { ++ n = get_chain_end(h, n); ++ n += get_entry(h, n)->next_offset; ++ assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n); ++ user_offset = h->info.hook_entry[NF_IP_LOCAL_IN]; ++ } ++ + } else if (strcmp(h->info.name, "mangle") == 0) { ++ /* This code is getting ugly because linux < 2.4.18-pre6 had ++ * two mangle hooks, linux >= 2.4.18-pre6 has five mangle hooks ++ * */ ++ assert((h->info.valid_hooks ++ == (1 << NF_IP_PRE_ROUTING ++ | 1 << NF_IP_LOCAL_OUT)) || ++ (h->info.valid_hooks ++ == (1 << NF_IP_PRE_ROUTING ++ | 1 << NF_IP_LOCAL_IN ++ | 1 << NF_IP_FORWARD ++ | 1 << NF_IP_LOCAL_OUT ++ | 1 << NF_IP_POST_ROUTING))); ++ ++ /* Hooks should be first five */ ++ assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0); ++ ++ n = get_chain_end(h, 0); ++ ++ if (h->info.valid_hooks & (1 << NF_IP_LOCAL_IN)) { ++ n += get_entry(h, n)->next_offset; ++ assert(h->info.hook_entry[NF_IP_LOCAL_IN] == n); ++ n = get_chain_end(h, n); ++ } ++ ++ if (h->info.valid_hooks & (1 << NF_IP_FORWARD)) { ++ n += get_entry(h, n)->next_offset; ++ assert(h->info.hook_entry[NF_IP_FORWARD] == n); ++ n = get_chain_end(h, n); ++ } ++ ++ n += get_entry(h, n)->next_offset; ++ assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n); ++ user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT]; ++ ++ if (h->info.valid_hooks & (1 << NF_IP_POST_ROUTING)) { ++ n = get_chain_end(h, n); ++ n += get_entry(h, n)->next_offset; ++ assert(h->info.hook_entry[NF_IP_POST_ROUTING] == n); ++ user_offset = h->info.hook_entry[NF_IP_POST_ROUTING]; ++ } ++ } else if (strcmp(h->info.name, "raw") == 0) { + assert(h->info.valid_hooks + == (1 << NF_IP_PRE_ROUTING + | 1 << NF_IP_LOCAL_OUT)); + +- /* Hooks should be first two */ ++ /* Hooks should be first three */ + assert(h->info.hook_entry[NF_IP_PRE_ROUTING] == 0); + +- n = get_chain_end(h, 0); ++ n = get_chain_end(h, n); + n += get_entry(h, n)->next_offset; + assert(h->info.hook_entry[NF_IP_LOCAL_OUT] == n); + + user_offset = h->info.hook_entry[NF_IP_LOCAL_OUT]; ++ + #ifdef NF_IP_DROPPING + } else if (strcmp(h->info.name, "drop") == 0) { + assert(h->info.valid_hooks == (1 << NF_IP_DROPPING)); +@@ -425,8 +410,8 @@ + assert(unconditional(&e->ip)); + assert(e->target_offset == sizeof(*e)); + t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e); +- assert(t->target.u.target_size == IPT_ALIGN(sizeof(*t))); +- assert(e->next_offset == sizeof(*e) + IPT_ALIGN(sizeof(*t))); ++ assert(t->target.u.target_size == ALIGN(sizeof(*t))); ++ assert(e->next_offset == sizeof(*e) + ALIGN(sizeof(*t))); + + assert(strcmp(t->target.u.user.name, STANDARD_TARGET)==0); + assert(t->verdict == -NF_DROP-1 || t->verdict == -NF_ACCEPT-1); +@@ -458,6 +443,8 @@ + /* Final entry must be error node */ + assert(strcmp(GET_TARGET(index2entry(h, h->new_number-1)) + ->u.user.name, +- IPT_ERROR_TARGET) == 0); ++ ERROR_TARGET) == 0); + } +-#endif /*NDEBUG*/ ++#endif /*IPTC_DEBUG*/ ++ ++#endif +diff -Nur ipac-ng-1.31.orig/agents/iptables/libiptc.c ipac-ng-1.31/agents/iptables/libiptc.c +--- ipac-ng-1.31.orig/agents/iptables/libiptc.c 2003-07-06 11:34:52.000000000 +0000 ++++ ipac-ng-1.31/agents/iptables/libiptc.c 2006-01-10 21:01:39.000000000 +0000 +@@ -9,21 +9,43 @@ + */ + + /* (C)1999 Paul ``Rusty'' Russell - Placed under the GNU GPL (See +- COPYING for details). */ ++ * COPYING for details). ++ * (C) 2000-2004 by the Netfilter Core Team ++ * ++ * 2003-Jun-20: Harald Welte : ++ * - Reimplementation of chain cache to use offsets instead of entries ++ * 2003-Jun-23: Harald Welte : ++ * - performance optimization, sponsored by Astaro AG (http://www.astaro.com/) ++ * don't rebuild the chain cache after every operation, instead fix it ++ * up after a ruleset change. ++ * 2004-Aug-18: Harald Welte : ++ * - futher performance work: total reimplementation of libiptc. ++ * - libiptc now has a real internal (linked-list) represntation of the ++ * ruleset and a parser/compiler from/to this internal representation ++ * - again sponsored by Astaro AG (http://www.astaro.com/) ++ */ ++#include ++#include + +-#ifndef IPT_LIB_DIR +-#define IPT_LIB_DIR "/lib/iptables" ++#include "linux_list.h" ++ ++//#define IPTC_DEBUG2 1 ++ ++#ifdef IPTC_DEBUG2 ++#include ++#define DEBUGP(x, args...) fprintf(stderr, "%s: " x, __FUNCTION__, ## args) ++#define DEBUGP_C(x, args...) fprintf(stderr, x, ## args) ++#else ++#define DEBUGP(x, args...) ++#define DEBUGP_C(x, args...) + #endif + +-#ifndef __OPTIMIZE__ +-STRUCT_ENTRY_TARGET * +-GET_TARGET(STRUCT_ENTRY *e) +-{ +- return (void *)e + e->target_offset; +-} ++#ifndef IPT_LIB_DIR ++#define IPT_LIB_DIR "/usr/local/lib/iptables" + #endif + + static int sockfd = -1; ++static int sockfd_use = 0; + static void *iptc_fn = NULL; + + static const char *hooknames[] +@@ -37,6 +59,16 @@ + #endif + }; + ++/* Convenience structures */ ++struct ipt_error_target ++{ ++ STRUCT_ENTRY_TARGET t; ++ char error[TABLE_MAXNAMELEN]; ++}; ++ ++struct chain_head; ++struct rule_head; ++ + struct counter_map + { + enum { +@@ -48,59 +80,95 @@ + unsigned int mappos; + }; + +-/* Convenience structures */ +-struct ipt_error_target ++enum iptcc_rule_type { ++ IPTCC_R_STANDARD, /* standard target (ACCEPT, ...) */ ++ IPTCC_R_MODULE, /* extension module (SNAT, ...) */ ++ IPTCC_R_FALLTHROUGH, /* fallthrough rule */ ++ IPTCC_R_JUMP, /* jump to other chain */ ++}; ++ ++struct rule_head + { +- STRUCT_ENTRY_TARGET t; +- char error[TABLE_MAXNAMELEN]; ++ struct list_head list; ++ struct chain_head *chain; ++ struct counter_map counter_map; ++ ++ unsigned int index; /* index (needed for counter_map) */ ++ unsigned int offset; /* offset in rule blob */ ++ ++ enum iptcc_rule_type type; ++ struct chain_head *jump; /* jump target, if IPTCC_R_JUMP */ ++ ++ unsigned int size; /* size of entry data */ ++ STRUCT_ENTRY entry[0]; + }; + +-struct chain_cache ++struct chain_head + { ++ struct list_head list; + char name[TABLE_MAXNAMELEN]; +- /* This is the first rule in chain. */ +- STRUCT_ENTRY *start; +- /* Last rule in chain */ +- STRUCT_ENTRY *end; ++ unsigned int hooknum; /* hook number+1 if builtin */ ++ unsigned int references; /* how many jumps reference us */ ++ int verdict; /* verdict if builtin */ ++ ++ STRUCT_COUNTERS counters; /* per-chain counters */ ++ struct counter_map counter_map; ++ ++ unsigned int num_rules; /* number of rules in list */ ++ struct list_head rules; /* list of rules */ ++ ++ unsigned int index; /* index (needed for jump resolval) */ ++ unsigned int head_offset; /* offset in rule blob */ ++ unsigned int foot_index; /* index (needed for counter_map) */ ++ unsigned int foot_offset; /* offset in rule blob */ + }; + + STRUCT_TC_HANDLE + { +- /* Have changes been made? */ +- int changed; +- /* Size in here reflects original state. */ +- STRUCT_GETINFO info; ++ int changed; /* Have changes been made? */ ++ ++ struct list_head chains; ++ ++ struct chain_head *chain_iterator_cur; ++ struct rule_head *rule_iterator_cur; + +- struct counter_map *counter_map; +- /* Array of hook names */ +- const char **hooknames; +- +- /* Cached position of chain heads (NULL = no cache). */ +- unsigned int cache_num_chains; +- unsigned int cache_num_builtins; +- struct chain_cache *cache_chain_heads; +- +- /* Chain iterator: current chain cache entry. */ +- struct chain_cache *cache_chain_iteration; +- +- /* Rule iterator: terminal rule */ +- STRUCT_ENTRY *cache_rule_end; +- +- /* Number in here reflects current state. */ +- unsigned int new_number; +- STRUCT_GET_ENTRIES entries; ++ STRUCT_GETINFO info; ++ STRUCT_GET_ENTRIES *entries; + }; + ++/* allocate a new chain head for the cache */ ++static struct chain_head *iptcc_alloc_chain_head(const char *name, int hooknum) ++{ ++ struct chain_head *c = malloc(sizeof(*c)); ++ if (!c) ++ return NULL; ++ memset(c, 0, sizeof(*c)); ++ ++ strncpy(c->name, name, TABLE_MAXNAMELEN); ++ c->hooknum = hooknum; ++ INIT_LIST_HEAD(&c->rules); ++ ++ return c; ++} ++ ++/* allocate and initialize a new rule for the cache */ ++static struct rule_head *iptcc_alloc_rule(struct chain_head *c, unsigned int size) ++{ ++ struct rule_head *r = malloc(sizeof(*r)+size); ++ if (!r) ++ return NULL; ++ memset(r, 0, sizeof(*r)); ++ ++ r->chain = c; ++ r->size = size; ++ ++ return r; ++} ++ ++/* notify us that the ruleset has been modified by the user */ + static void + set_changed(TC_HANDLE_T h) + { +- if (h->cache_chain_heads) { +- free(h->cache_chain_heads); +- h->cache_chain_heads = NULL; +- h->cache_num_chains = 0; +- h->cache_chain_iteration = NULL; +- h->cache_rule_end = NULL; +- } + h->changed = 1; + } + +@@ -111,8 +179,13 @@ + #define CHECK(h) + #endif + ++ ++/********************************************************************** ++ * iptc blob utility functions (iptcb_*) ++ **********************************************************************/ ++ + static inline int +-get_number(const STRUCT_ENTRY *i, ++iptcb_get_number(const STRUCT_ENTRY *i, + const STRUCT_ENTRY *seek, + unsigned int *pos) + { +@@ -122,22 +195,8 @@ + return 0; + } + +-static unsigned int +-entry2index(const TC_HANDLE_T h, const STRUCT_ENTRY *seek) +-{ +- unsigned int pos = 0; +- +- if (ENTRY_ITERATE(h->entries.entrytable, h->entries.size, +- get_number, seek, &pos) == 0) { +- fprintf(stderr, "ERROR: offset %i not an entry!\n", +- (char *)seek - (char *)h->entries.entrytable); +- abort(); +- } +- return pos; +-} +- + static inline int +-get_entry_n(STRUCT_ENTRY *i, ++iptcb_get_entry_n(STRUCT_ENTRY *i, + unsigned int number, + unsigned int *pos, + STRUCT_ENTRY **pe) +@@ -150,51 +209,556 @@ + return 0; + } + +-static STRUCT_ENTRY * +-index2entry(TC_HANDLE_T h, unsigned int index) ++static inline STRUCT_ENTRY * ++iptcb_get_entry(TC_HANDLE_T h, unsigned int offset) + { +- unsigned int pos = 0; +- STRUCT_ENTRY *ret = NULL; ++ return (STRUCT_ENTRY *)((char *)h->entries->entrytable + offset); ++} + +- ENTRY_ITERATE(h->entries.entrytable, h->entries.size, +- get_entry_n, index, &pos, &ret); ++static unsigned int ++iptcb_entry2index(const TC_HANDLE_T h, const STRUCT_ENTRY *seek) ++{ ++ unsigned int pos = 0; + +- return ret; ++ if (ENTRY_ITERATE(h->entries->entrytable, h->entries->size, ++ iptcb_get_number, seek, &pos) == 0) { ++ fprintf(stderr, "ERROR: offset %u not an entry!\n", ++ (unsigned int)((char *)seek - (char *)h->entries->entrytable)); ++ abort(); ++ } ++ return pos; + } + + static inline STRUCT_ENTRY * +-get_entry(TC_HANDLE_T h, unsigned int offset) ++iptcb_offset2entry(TC_HANDLE_T h, unsigned int offset) + { +- return (STRUCT_ENTRY *)((char *)h->entries.entrytable + offset); ++ return (STRUCT_ENTRY *) ((void *)h->entries->entrytable+offset); + } + ++ + static inline unsigned long +-entry2offset(const TC_HANDLE_T h, const STRUCT_ENTRY *e) ++iptcb_entry2offset(const TC_HANDLE_T h, const STRUCT_ENTRY *e) + { +- return (char *)e - (char *)h->entries.entrytable; ++ return (void *)e - (void *)h->entries->entrytable; + } + +-static unsigned long +-index2offset(TC_HANDLE_T h, unsigned int index) ++static inline unsigned int ++iptcb_offset2index(const TC_HANDLE_T h, unsigned int offset) + { +- return entry2offset(h, index2entry(h, index)); ++ return iptcb_entry2index(h, iptcb_offset2entry(h, offset)); + } + +-static const char * +-get_errorlabel(TC_HANDLE_T h, unsigned int offset) ++/* Returns 0 if not hook entry, else hooknumber + 1 */ ++static inline unsigned int ++iptcb_ent_is_hook_entry(STRUCT_ENTRY *e, TC_HANDLE_T h) + { +- STRUCT_ENTRY *e; ++ unsigned int i; + +- e = get_entry(h, offset); +- if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) != 0) { +- fprintf(stderr, "ERROR: offset %u not an error node!\n", +- offset); +- abort(); ++ for (i = 0; i < NUMHOOKS; i++) { ++ if ((h->info.valid_hooks & (1 << i)) ++ && iptcb_get_entry(h, h->info.hook_entry[i]) == e) ++ return i+1; ++ } ++ return 0; ++} ++ ++ ++/********************************************************************** ++ * iptc cache utility functions (iptcc_*) ++ **********************************************************************/ ++ ++/* Is the given chain builtin (1) or user-defined (0) */ ++static unsigned int iptcc_is_builtin(struct chain_head *c) ++{ ++ return (c->hooknum ? 1 : 0); ++} ++ ++/* Get a specific rule within a chain */ ++static struct rule_head *iptcc_get_rule_num(struct chain_head *c, ++ unsigned int rulenum) ++{ ++ struct rule_head *r; ++ unsigned int num = 0; ++ ++ list_for_each_entry(r, &c->rules, list) { ++ num++; ++ if (num == rulenum) ++ return r; ++ } ++ return NULL; ++} ++ ++/* Get a specific rule within a chain backwards */ ++static struct rule_head *iptcc_get_rule_num_reverse(struct chain_head *c, ++ unsigned int rulenum) ++{ ++ struct rule_head *r; ++ unsigned int num = 0; ++ ++ list_for_each_entry_reverse(r, &c->rules, list) { ++ num++; ++ if (num == rulenum) ++ return r; ++ } ++ return NULL; ++} ++ ++/* Returns chain head if found, otherwise NULL. */ ++static struct chain_head * ++iptcc_find_chain_by_offset(TC_HANDLE_T handle, unsigned int offset) ++{ ++ struct list_head *pos; ++ ++ if (list_empty(&handle->chains)) ++ return NULL; ++ ++ list_for_each(pos, &handle->chains) { ++ struct chain_head *c = list_entry(pos, struct chain_head, list); ++ if (offset >= c->head_offset && offset <= c->foot_offset) ++ return c; ++ } ++ ++ return NULL; ++} ++/* Returns chain head if found, otherwise NULL. */ ++static struct chain_head * ++iptcc_find_label(const char *name, TC_HANDLE_T handle) ++{ ++ struct list_head *pos; ++ ++ if (list_empty(&handle->chains)) ++ return NULL; ++ ++ list_for_each(pos, &handle->chains) { ++ struct chain_head *c = list_entry(pos, struct chain_head, list); ++ if (!strcmp(c->name, name)) ++ return c; ++ } ++ ++ return NULL; ++} ++ ++/* called when rule is to be removed from cache */ ++static void iptcc_delete_rule(struct rule_head *r) ++{ ++ DEBUGP("deleting rule %p (offset %u)\n", r, r->offset); ++ /* clean up reference count of called chain */ ++ if (r->type == IPTCC_R_JUMP ++ && r->jump) ++ r->jump->references--; ++ ++ list_del(&r->list); ++ free(r); ++} ++ ++ ++/********************************************************************** ++ * RULESET PARSER (blob -> cache) ++ **********************************************************************/ ++ ++/* Delete policy rule of previous chain, since cache doesn't contain ++ * chain policy rules. ++ * WARNING: This function has ugly design and relies on a lot of context, only ++ * to be called from specific places within the parser */ ++static int __iptcc_p_del_policy(TC_HANDLE_T h, unsigned int num) ++{ ++ if (h->chain_iterator_cur) { ++ /* policy rule is last rule */ ++ struct rule_head *pr = (struct rule_head *) ++ h->chain_iterator_cur->rules.prev; ++ ++ /* save verdict */ ++ h->chain_iterator_cur->verdict = ++ *(int *)GET_TARGET(pr->entry)->data; ++ ++ /* save counter and counter_map information */ ++ h->chain_iterator_cur->counter_map.maptype = ++ COUNTER_MAP_NORMAL_MAP; ++ h->chain_iterator_cur->counter_map.mappos = num-1; ++ memcpy(&h->chain_iterator_cur->counters, &pr->entry->counters, ++ sizeof(h->chain_iterator_cur->counters)); ++ ++ /* foot_offset points to verdict rule */ ++ h->chain_iterator_cur->foot_index = num; ++ h->chain_iterator_cur->foot_offset = pr->offset; ++ ++ /* delete rule from cache */ ++ iptcc_delete_rule(pr); ++ h->chain_iterator_cur->num_rules--; ++ ++ return 1; ++ } ++ return 0; ++} ++ ++/* alphabetically insert a chain into the list */ ++static inline void iptc_insert_chain(TC_HANDLE_T h, struct chain_head *c) ++{ ++ struct chain_head *tmp; ++ ++ /* sort only user defined chains */ ++ if (!c->hooknum) { ++ list_for_each_entry(tmp, &h->chains, list) { ++ if (strcmp(c->name, tmp->name) <= 0) { ++ list_add(&c->list, tmp->list.prev); ++ return; ++ } ++ } ++ } ++ ++ /* survived till end of list: add at tail */ ++ list_add_tail(&c->list, &h->chains); ++} ++ ++/* Another ugly helper function split out of cache_add_entry to make it less ++ * spaghetti code */ ++static void __iptcc_p_add_chain(TC_HANDLE_T h, struct chain_head *c, ++ unsigned int offset, unsigned int *num) ++{ ++ __iptcc_p_del_policy(h, *num); ++ ++ c->head_offset = offset; ++ c->index = *num; ++ ++ iptc_insert_chain(h, c); ++ ++ h->chain_iterator_cur = c; ++} ++ ++/* main parser function: add an entry from the blob to the cache */ ++static int cache_add_entry(STRUCT_ENTRY *e, ++ TC_HANDLE_T h, ++ STRUCT_ENTRY **prev, ++ unsigned int *num) ++{ ++ unsigned int builtin; ++ unsigned int offset = (char *)e - (char *)h->entries->entrytable; ++ ++ DEBUGP("entering..."); ++ ++ /* Last entry ("policy rule"). End it.*/ ++ if (iptcb_entry2offset(h,e) + e->next_offset == h->entries->size) { ++ /* This is the ERROR node at the end of the chain */ ++ DEBUGP_C("%u:%u: end of table:\n", *num, offset); ++ ++ __iptcc_p_del_policy(h, *num); ++ ++ h->chain_iterator_cur = NULL; ++ goto out_inc; ++ } ++ ++ /* We know this is the start of a new chain if it's an ERROR ++ * target, or a hook entry point */ ++ ++ if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) == 0) { ++ struct chain_head *c = ++ iptcc_alloc_chain_head((const char *)GET_TARGET(e)->data, 0); ++ DEBUGP_C("%u:%u:new userdefined chain %s: %p\n", *num, offset, ++ (char *)c->name, c); ++ if (!c) { ++ errno = -ENOMEM; ++ return -1; ++ } ++ ++ __iptcc_p_add_chain(h, c, offset, num); ++ ++ } else if ((builtin = iptcb_ent_is_hook_entry(e, h)) != 0) { ++ struct chain_head *c = ++ iptcc_alloc_chain_head((char *)hooknames[builtin-1], ++ builtin); ++ DEBUGP_C("%u:%u new builtin chain: %p (rules=%p)\n", ++ *num, offset, c, &c->rules); ++ if (!c) { ++ errno = -ENOMEM; ++ return -1; ++ } ++ ++ c->hooknum = builtin; ++ ++ __iptcc_p_add_chain(h, c, offset, num); ++ ++ /* FIXME: this is ugly. */ ++ goto new_rule; ++ } else { ++ /* has to be normal rule */ ++ struct rule_head *r; ++new_rule: ++ ++ if (!(r = iptcc_alloc_rule(h->chain_iterator_cur, ++ e->next_offset))) { ++ errno = ENOMEM; ++ return -1; ++ } ++ DEBUGP_C("%u:%u normal rule: %p: ", *num, offset, r); ++ ++ r->index = *num; ++ r->offset = offset; ++ memcpy(r->entry, e, e->next_offset); ++ r->counter_map.maptype = COUNTER_MAP_NORMAL_MAP; ++ r->counter_map.mappos = r->index; ++ ++ /* handling of jumps, etc. */ ++ if (!strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET)) { ++ STRUCT_STANDARD_TARGET *t; ++ ++ t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e); ++ if (t->target.u.target_size ++ != ALIGN(sizeof(STRUCT_STANDARD_TARGET))) { ++ errno = EINVAL; ++ return -1; ++ } ++ ++ if (t->verdict < 0) { ++ DEBUGP_C("standard, verdict=%d\n", t->verdict); ++ r->type = IPTCC_R_STANDARD; ++ } else if (t->verdict == r->offset+e->next_offset) { ++ DEBUGP_C("fallthrough\n"); ++ r->type = IPTCC_R_FALLTHROUGH; ++ } else { ++ DEBUGP_C("jump, target=%u\n", t->verdict); ++ r->type = IPTCC_R_JUMP; ++ /* Jump target fixup has to be deferred ++ * until second pass, since we migh not ++ * yet have parsed the target */ ++ } ++ } else { ++ DEBUGP_C("module, target=%s\n", GET_TARGET(e)->u.user.name); ++ r->type = IPTCC_R_MODULE; ++ } ++ ++ list_add_tail(&r->list, &h->chain_iterator_cur->rules); ++ h->chain_iterator_cur->num_rules++; ++ } ++out_inc: ++ (*num)++; ++ return 0; ++} ++ ++ ++/* parse an iptables blob into it's pieces */ ++static int parse_table(TC_HANDLE_T h) ++{ ++ STRUCT_ENTRY *prev; ++ unsigned int num = 0; ++ struct chain_head *c; ++ ++ /* First pass: over ruleset blob */ ++ ENTRY_ITERATE(h->entries->entrytable, h->entries->size, ++ cache_add_entry, h, &prev, &num); ++ ++ /* Second pass: fixup parsed data from first pass */ ++ list_for_each_entry(c, &h->chains, list) { ++ struct rule_head *r; ++ list_for_each_entry(r, &c->rules, list) { ++ struct chain_head *c; ++ STRUCT_STANDARD_TARGET *t; ++ ++ if (r->type != IPTCC_R_JUMP) ++ continue; ++ ++ t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry); ++ c = iptcc_find_chain_by_offset(h, t->verdict); ++ if (!c) ++ return -1; ++ r->jump = c; ++ c->references++; ++ } ++ } ++ ++ /* FIXME: sort chains */ ++ ++ return 1; ++} ++ ++ ++/********************************************************************** ++ * RULESET COMPILATION (cache -> blob) ++ **********************************************************************/ ++ ++/* Convenience structures */ ++struct iptcb_chain_start{ ++ STRUCT_ENTRY e; ++ struct ipt_error_target name; ++}; ++#define IPTCB_CHAIN_START_SIZE (sizeof(STRUCT_ENTRY) + \ ++ ALIGN(sizeof(struct ipt_error_target))) ++ ++struct iptcb_chain_foot { ++ STRUCT_ENTRY e; ++ STRUCT_STANDARD_TARGET target; ++}; ++#define IPTCB_CHAIN_FOOT_SIZE (sizeof(STRUCT_ENTRY) + \ ++ ALIGN(sizeof(STRUCT_STANDARD_TARGET))) ++ ++struct iptcb_chain_error { ++ STRUCT_ENTRY entry; ++ struct ipt_error_target target; ++}; ++#define IPTCB_CHAIN_ERROR_SIZE (sizeof(STRUCT_ENTRY) + \ ++ ALIGN(sizeof(struct ipt_error_target))) ++ ++ ++ ++/* compile rule from cache into blob */ ++static inline int iptcc_compile_rule (TC_HANDLE_T h, STRUCT_REPLACE *repl, struct rule_head *r) ++{ ++ /* handle jumps */ ++ if (r->type == IPTCC_R_JUMP) { ++ STRUCT_STANDARD_TARGET *t; ++ t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry); ++ /* memset for memcmp convenience on delete/replace */ ++ memset(t->target.u.user.name, 0, FUNCTION_MAXNAMELEN); ++ strcpy(t->target.u.user.name, STANDARD_TARGET); ++ /* Jumps can only happen to builtin chains, so we ++ * can safely assume that they always have a header */ ++ t->verdict = r->jump->head_offset + IPTCB_CHAIN_START_SIZE; ++ } else if (r->type == IPTCC_R_FALLTHROUGH) { ++ STRUCT_STANDARD_TARGET *t; ++ t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry); ++ t->verdict = r->offset + r->size; ++ } ++ ++ /* copy entry from cache to blob */ ++ memcpy((char *)repl->entries+r->offset, r->entry, r->size); ++ ++ return 1; ++} ++ ++/* compile chain from cache into blob */ ++static int iptcc_compile_chain(TC_HANDLE_T h, STRUCT_REPLACE *repl, struct chain_head *c) ++{ ++ int ret; ++ struct rule_head *r; ++ struct iptcb_chain_start *head; ++ struct iptcb_chain_foot *foot; ++ ++ /* only user-defined chains have heaer */ ++ if (!iptcc_is_builtin(c)) { ++ /* put chain header in place */ ++ head = (void *)repl->entries + c->head_offset; ++ head->e.target_offset = sizeof(STRUCT_ENTRY); ++ head->e.next_offset = IPTCB_CHAIN_START_SIZE; ++ strcpy(head->name.t.u.user.name, ERROR_TARGET); ++ head->name.t.u.target_size = ++ ALIGN(sizeof(struct ipt_error_target)); ++ strcpy(head->name.error, c->name); ++ } else { ++ repl->hook_entry[c->hooknum-1] = c->head_offset; ++ repl->underflow[c->hooknum-1] = c->foot_offset; ++ } ++ ++ /* iterate over rules */ ++ list_for_each_entry(r, &c->rules, list) { ++ ret = iptcc_compile_rule(h, repl, r); ++ if (ret < 0) ++ return ret; ++ } ++ ++ /* put chain footer in place */ ++ foot = (void *)repl->entries + c->foot_offset; ++ foot->e.target_offset = sizeof(STRUCT_ENTRY); ++ foot->e.next_offset = IPTCB_CHAIN_FOOT_SIZE; ++ strcpy(foot->target.target.u.user.name, STANDARD_TARGET); ++ foot->target.target.u.target_size = ++ ALIGN(sizeof(STRUCT_STANDARD_TARGET)); ++ /* builtin targets have verdict, others return */ ++ if (iptcc_is_builtin(c)) ++ foot->target.verdict = c->verdict; ++ else ++ foot->target.verdict = RETURN; ++ /* set policy-counters */ ++ memcpy(&foot->e.counters, &c->counters, sizeof(STRUCT_COUNTERS)); ++ ++ return 0; ++} ++ ++/* calculate offset and number for every rule in the cache */ ++static int iptcc_compile_chain_offsets(TC_HANDLE_T h, struct chain_head *c, ++ int *offset, int *num) ++{ ++ struct rule_head *r; ++ ++ c->head_offset = *offset; ++ DEBUGP("%s: chain_head %u, offset=%u\n", c->name, *num, *offset); ++ ++ if (!iptcc_is_builtin(c)) { ++ /* Chain has header */ ++ *offset += sizeof(STRUCT_ENTRY) ++ + ALIGN(sizeof(struct ipt_error_target)); ++ (*num)++; ++ } ++ ++ list_for_each_entry(r, &c->rules, list) { ++ DEBUGP("rule %u, offset=%u, index=%u\n", *num, *offset, *num); ++ r->offset = *offset; ++ r->index = *num; ++ *offset += r->size; ++ (*num)++; ++ } ++ ++ DEBUGP("%s; chain_foot %u, offset=%u, index=%u\n", c->name, *num, ++ *offset, *num); ++ c->foot_offset = *offset; ++ c->foot_index = *num; ++ *offset += sizeof(STRUCT_ENTRY) ++ + ALIGN(sizeof(STRUCT_STANDARD_TARGET)); ++ (*num)++; ++ ++ return 1; ++} ++ ++/* put the pieces back together again */ ++static int iptcc_compile_table_prep(TC_HANDLE_T h, unsigned int *size) ++{ ++ struct chain_head *c; ++ unsigned int offset = 0, num = 0; ++ int ret = 0; ++ ++ /* First pass: calculate offset for every rule */ ++ list_for_each_entry(c, &h->chains, list) { ++ ret = iptcc_compile_chain_offsets(h, c, &offset, &num); ++ if (ret < 0) ++ return ret; + } + +- return (const char *)GET_TARGET(e)->data; ++ /* Append one error rule at end of chain */ ++ num++; ++ offset += sizeof(STRUCT_ENTRY) ++ + ALIGN(sizeof(struct ipt_error_target)); ++ ++ /* ruleset size is now in offset */ ++ *size = offset; ++ return num; + } + ++static int iptcc_compile_table(TC_HANDLE_T h, STRUCT_REPLACE *repl) ++{ ++ struct chain_head *c; ++ struct iptcb_chain_error *error; ++ ++ /* Second pass: copy from cache to offsets, fill in jumps */ ++ list_for_each_entry(c, &h->chains, list) { ++ int ret = iptcc_compile_chain(h, repl, c); ++ if (ret < 0) ++ return ret; ++ } ++ ++ /* Append error rule at end of chain */ ++ error = (void *)repl->entries + repl->size - IPTCB_CHAIN_ERROR_SIZE; ++ error->entry.target_offset = sizeof(STRUCT_ENTRY); ++ error->entry.next_offset = IPTCB_CHAIN_ERROR_SIZE; ++ error->target.t.u.user.target_size = ++ ALIGN(sizeof(struct ipt_error_target)); ++ strcpy((char *)&error->target.t.u.user.name, ERROR_TARGET); ++ strcpy((char *)&error->target.error, "ERROR"); ++ ++ return 1; ++} ++ ++/********************************************************************** ++ * EXTERNAL API (operates on cache only) ++ **********************************************************************/ ++ + /* Allocate handle of given size */ + static TC_HANDLE_T + alloc_handle(const char *tablename, unsigned int size, unsigned int num_rules) +@@ -202,94 +766,139 @@ + size_t len; + TC_HANDLE_T h; + +- len = sizeof(STRUCT_TC_HANDLE) +- + size +- + num_rules * sizeof(struct counter_map); ++ len = sizeof(STRUCT_TC_HANDLE) + size; + +- if ((h = malloc(len)) == NULL) { ++ h = malloc(sizeof(STRUCT_TC_HANDLE)); ++ if (!h) { + errno = ENOMEM; + return NULL; + } +- +- h->changed = 0; +- h->cache_num_chains = 0; +- h->cache_chain_heads = NULL; +- h->counter_map = (void *)h +- + sizeof(STRUCT_TC_HANDLE) +- + size; ++ memset(h, 0, sizeof(*h)); ++ INIT_LIST_HEAD(&h->chains); + strcpy(h->info.name, tablename); +- strcpy(h->entries.name, tablename); ++ ++ h->entries = malloc(sizeof(STRUCT_GET_ENTRIES) + size); ++ if (!h->entries) ++ goto out_free_handle; ++ ++ strcpy(h->entries->name, tablename); ++ h->entries->size = size; + + return h; ++ ++out_free_handle: ++ free(h); ++ ++ return NULL; + } + ++ + TC_HANDLE_T + TC_INIT(const char *tablename) + { + TC_HANDLE_T h; + STRUCT_GETINFO info; +- unsigned int i; + int tmp; + socklen_t s; + + iptc_fn = TC_INIT; + +- if (sockfd != -1) +- close(sockfd); ++ if (strlen(tablename) >= TABLE_MAXNAMELEN) { ++ errno = EINVAL; ++ return NULL; ++ } + ++ if (sockfd_use == 0) { + sockfd = socket(TC_AF, SOCK_RAW, IPPROTO_RAW); + if (sockfd < 0) + return NULL; ++ } ++ sockfd_use++; + + s = sizeof(info); +- if (strlen(tablename) >= TABLE_MAXNAMELEN) { +- errno = EINVAL; +- return NULL; +- } ++ + strcpy(info.name, tablename); +- if (getsockopt(sockfd, TC_IPPROTO, SO_GET_INFO, &info, &s) < 0) ++ if (getsockopt(sockfd, TC_IPPROTO, SO_GET_INFO, &info, &s) < 0) { ++ if (--sockfd_use == 0) { ++ close(sockfd); ++ sockfd = -1; ++ } + return NULL; ++ } + +- if ((h = alloc_handle(info.name, info.size, info.num_entries)) +- == NULL) +- return NULL; ++ DEBUGP("valid_hooks=0x%08x, num_entries=%u, size=%u\n", ++ info.valid_hooks, info.num_entries, info.size); + +-/* Too hard --RR */ +-#if 0 +- sprintf(pathname, "%s/%s", IPT_LIB_DIR, info.name); +- dynlib = dlopen(pathname, RTLD_NOW); +- if (!dynlib) { +- errno = ENOENT; +- return NULL; ++ if ((h = alloc_handle(info.name, info.size, info.num_entries)) ++ == NULL) { ++ if (--sockfd_use == 0) { ++ close(sockfd); ++ sockfd = -1; + } +- h->hooknames = dlsym(dynlib, "hooknames"); +- if (!h->hooknames) { +- errno = ENOENT; + return NULL; + } +-#else +- h->hooknames = hooknames; +-#endif + + /* Initialize current state */ + h->info = info; +- h->new_number = h->info.num_entries; +- for (i = 0; i < h->info.num_entries; i++) +- h->counter_map[i] +- = ((struct counter_map){COUNTER_MAP_NORMAL_MAP, i}); + +- h->entries.size = h->info.size; ++ h->entries->size = h->info.size; + + tmp = sizeof(STRUCT_GET_ENTRIES) + h->info.size; + +- if (getsockopt(sockfd, TC_IPPROTO, SO_GET_ENTRIES, &h->entries, +- &tmp) < 0) { +- free(h); +- return NULL; ++ if (getsockopt(sockfd, TC_IPPROTO, SO_GET_ENTRIES, h->entries, ++ &tmp) < 0) ++ goto error; ++ ++#ifdef IPTC_DEBUG2 ++ { ++ int fd = open("/tmp/libiptc-so_get_entries.blob", ++ O_CREAT|O_WRONLY); ++ if (fd >= 0) { ++ write(fd, h->entries, tmp); ++ close(fd); ++ } + } ++#endif ++ ++ if (parse_table(h) < 0) ++ goto error; + + CHECK(h); + return h; ++error: ++ if (--sockfd_use == 0) { ++ close(sockfd); ++ sockfd = -1; ++ } ++ TC_FREE(&h); ++ return NULL; ++} ++ ++void ++TC_FREE(TC_HANDLE_T *h) ++{ ++ struct chain_head *c, *tmp; ++ ++ iptc_fn = TC_FREE; ++ if (--sockfd_use == 0) { ++ close(sockfd); ++ sockfd = -1; ++ } ++ ++ list_for_each_entry_safe(c, tmp, &(*h)->chains, list) { ++ struct rule_head *r, *rtmp; ++ ++ list_for_each_entry_safe(r, rtmp, &c->rules, list) { ++ free(r); ++ } ++ ++ free(c); ++ } ++ ++ free((*h)->entries); ++ free(*h); ++ ++ *h = NULL; + } + + static inline int +@@ -304,11 +913,11 @@ + void + TC_DUMP_ENTRIES(const TC_HANDLE_T handle) + { ++ iptc_fn = TC_DUMP_ENTRIES; + CHECK(handle); +- +- printf("libiptc v%s. %u entries, %u bytes.\n", +- NETFILTER_VERSION, +- handle->new_number, handle->entries.size); ++#if 0 ++ printf("libiptc v%s. %u bytes.\n", ++ IPTABLES_VERSION, handle->entries->size); + printf("Table `%s'\n", handle->info.name); + printf("Hooks: pre/in/fwd/out/post = %u/%u/%u/%u/%u\n", + handle->info.hook_entry[HOOK_PRE_ROUTING], +@@ -323,516 +932,277 @@ + handle->info.underflow[HOOK_LOCAL_OUT], + handle->info.underflow[HOOK_POST_ROUTING]); + +- ENTRY_ITERATE(handle->entries.entrytable, handle->entries.size, ++ ENTRY_ITERATE(handle->entries->entrytable, handle->entries->size, + dump_entry, handle); +-} +- +-/* Returns 0 if not hook entry, else hooknumber + 1 */ +-static inline unsigned int +-is_hook_entry(STRUCT_ENTRY *e, TC_HANDLE_T h) +-{ +- unsigned int i; +- +- for (i = 0; i < NUMHOOKS; i++) { +- if ((h->info.valid_hooks & (1 << i)) +- && get_entry(h, h->info.hook_entry[i]) == e) +- return i+1; +- } +- return 0; +-} +- +-static inline int +-add_chain(STRUCT_ENTRY *e, TC_HANDLE_T h, STRUCT_ENTRY **prev) +-{ +- unsigned int builtin; +- +- /* Last entry. End it. */ +- if (entry2offset(h, e) + e->next_offset == h->entries.size) { +- /* This is the ERROR node at end of the table */ +- h->cache_chain_heads[h->cache_num_chains-1].end = *prev; +- return 0; +- } +- +- /* We know this is the start of a new chain if it's an ERROR +- target, or a hook entry point */ +- if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) == 0) { +- /* prev was last entry in previous chain */ +- h->cache_chain_heads[h->cache_num_chains-1].end +- = *prev; +- +- strcpy(h->cache_chain_heads[h->cache_num_chains].name, +- (const char *)GET_TARGET(e)->data); +- h->cache_chain_heads[h->cache_num_chains].start +- = (void *)e + e->next_offset; +- h->cache_num_chains++; +- } else if ((builtin = is_hook_entry(e, h)) != 0) { +- if (h->cache_num_chains > 0) +- /* prev was last entry in previous chain */ +- h->cache_chain_heads[h->cache_num_chains-1].end +- = *prev; +- +- strcpy(h->cache_chain_heads[h->cache_num_chains].name, +- h->hooknames[builtin-1]); +- h->cache_chain_heads[h->cache_num_chains].start +- = (void *)e; +- h->cache_num_chains++; +- } +- +- *prev = e; +- return 0; +-} +- +-static int alphasort(const void *a, const void *b) +-{ +- return strcmp(((struct chain_cache *)a)->name, +- ((struct chain_cache *)b)->name); +-} +- +-static int populate_cache(TC_HANDLE_T h) +-{ +- unsigned int i; +- STRUCT_ENTRY *prev; +- +- /* # chains < # rules / 2 + num builtins - 1 */ +- h->cache_chain_heads = malloc((h->new_number / 2 + 4) +- * sizeof(struct chain_cache)); +- if (!h->cache_chain_heads) { +- errno = ENOMEM; +- return 0; +- } +- +- h->cache_num_chains = 0; +- h->cache_num_builtins = 0; +- +- /* Count builtins */ +- for (i = 0; i < NUMHOOKS; i++) { +- if (h->info.valid_hooks & (1 << i)) +- h->cache_num_builtins++; +- } +- +- prev = NULL; +- ENTRY_ITERATE(h->entries.entrytable, h->entries.size, +- add_chain, h, &prev); +- +- qsort(h->cache_chain_heads + h->cache_num_builtins, +- h->cache_num_chains - h->cache_num_builtins, +- sizeof(struct chain_cache), alphasort); +- +- return 1; +-} +- +-/* Returns cache ptr if found, otherwise NULL. */ +-static struct chain_cache * +-find_label(const char *name, TC_HANDLE_T handle) +-{ +- unsigned int i; +- +- if (handle->cache_chain_heads == NULL +- && !populate_cache(handle)) +- return NULL; +- +- /* FIXME: Linear search through builtins, then binary --RR */ +- for (i = 0; i < handle->cache_num_chains; i++) { +- if (strcmp(handle->cache_chain_heads[i].name, name) == 0) +- return &handle->cache_chain_heads[i]; +- } +- +- return NULL; ++#endif + } + + /* Does this chain exist? */ + int TC_IS_CHAIN(const char *chain, const TC_HANDLE_T handle) + { +- return find_label(chain, handle) != NULL; ++ iptc_fn = TC_IS_CHAIN; ++ return iptcc_find_label(chain, handle) != NULL; + } + +-/* Returns the position of the final (ie. unconditional) element. */ +-static unsigned int +-get_chain_end(const TC_HANDLE_T handle, unsigned int start) ++static void iptcc_chain_iterator_advance(TC_HANDLE_T handle) + { +- unsigned int last_off, off; +- STRUCT_ENTRY *e; +- +- last_off = start; +- e = get_entry(handle, start); +- +- /* Terminate when we meet a error label or a hook entry. */ +- for (off = start + e->next_offset; +- off < handle->entries.size; +- last_off = off, off += e->next_offset) { +- STRUCT_ENTRY_TARGET *t; +- unsigned int i; +- +- e = get_entry(handle, off); +- +- /* We hit an entry point. */ +- for (i = 0; i < NUMHOOKS; i++) { +- if ((handle->info.valid_hooks & (1 << i)) +- && off == handle->info.hook_entry[i]) +- return last_off; +- } ++ struct chain_head *c = handle->chain_iterator_cur; + +- /* We hit a user chain label */ +- t = GET_TARGET(e); +- if (strcmp(t->u.user.name, ERROR_TARGET) == 0) +- return last_off; +- } +- /* SHOULD NEVER HAPPEN */ +- fprintf(stderr, "ERROR: Off end (%u) of chain from %u!\n", +- handle->entries.size, off); +- abort(); ++ if (c->list.next == &handle->chains) ++ handle->chain_iterator_cur = NULL; ++ else ++ handle->chain_iterator_cur = ++ list_entry(c->list.next, struct chain_head, list); + } + + /* Iterator functions to run through the chains. */ + const char * + TC_FIRST_CHAIN(TC_HANDLE_T *handle) + { +- if ((*handle)->cache_chain_heads == NULL +- && !populate_cache(*handle)) ++ struct chain_head *c = list_entry((*handle)->chains.next, ++ struct chain_head, list); ++ ++ iptc_fn = TC_FIRST_CHAIN; ++ ++ ++ if (list_empty(&(*handle)->chains)) { ++ DEBUGP(": no chains\n"); + return NULL; ++ } + +- (*handle)->cache_chain_iteration +- = &(*handle)->cache_chain_heads[0]; ++ (*handle)->chain_iterator_cur = c; ++ iptcc_chain_iterator_advance(*handle); + +- return (*handle)->cache_chain_iteration->name; ++ DEBUGP(": returning `%s'\n", c->name); ++ return c->name; + } + + /* Iterator functions to run through the chains. Returns NULL at end. */ + const char * + TC_NEXT_CHAIN(TC_HANDLE_T *handle) + { +- (*handle)->cache_chain_iteration++; ++ struct chain_head *c = (*handle)->chain_iterator_cur; + +- if ((*handle)->cache_chain_iteration - (*handle)->cache_chain_heads +- == (*handle)->cache_num_chains) ++ iptc_fn = TC_NEXT_CHAIN; ++ ++ if (!c) { ++ DEBUGP(": no more chains\n"); + return NULL; ++ } + +- return (*handle)->cache_chain_iteration->name; ++ iptcc_chain_iterator_advance(*handle); ++ ++ DEBUGP(": returning `%s'\n", c->name); ++ return c->name; + } + + /* Get first rule in the given chain: NULL for empty chain. */ + const STRUCT_ENTRY * + TC_FIRST_RULE(const char *chain, TC_HANDLE_T *handle) + { +- struct chain_cache *c; ++ struct chain_head *c; ++ struct rule_head *r; ++ ++ iptc_fn = TC_FIRST_RULE; ++ ++ DEBUGP("first rule(%s): ", chain); + +- c = find_label(chain, *handle); ++ c = iptcc_find_label(chain, *handle); + if (!c) { + errno = ENOENT; + return NULL; + } + + /* Empty chain: single return/policy rule */ +- if (c->start == c->end) ++ if (list_empty(&c->rules)) { ++ DEBUGP_C("no rules, returning NULL\n"); + return NULL; ++ } ++ ++ r = list_entry(c->rules.next, struct rule_head, list); ++ (*handle)->rule_iterator_cur = r; ++ DEBUGP_C("%p\n", r); + +- (*handle)->cache_rule_end = c->end; +- return c->start; ++ return r->entry; + } + + /* Returns NULL when rules run out. */ + const STRUCT_ENTRY * + TC_NEXT_RULE(const STRUCT_ENTRY *prev, TC_HANDLE_T *handle) + { +- if ((void *)prev + prev->next_offset +- == (void *)(*handle)->cache_rule_end) ++ struct rule_head *r; ++ ++ iptc_fn = TC_NEXT_RULE; ++ DEBUGP("rule_iterator_cur=%p...", (*handle)->rule_iterator_cur); ++ ++ if (!(*handle)->rule_iterator_cur) { ++ DEBUGP_C("returning NULL\n"); ++ return NULL; ++ } ++ ++ r = list_entry((*handle)->rule_iterator_cur->list.next, ++ struct rule_head, list); ++ ++ iptc_fn = TC_NEXT_RULE; ++ ++ DEBUGP_C("next=%p, head=%p...", &r->list, ++ &(*handle)->rule_iterator_cur->chain->rules); ++ ++ if (&r->list == &(*handle)->rule_iterator_cur->chain->rules) { ++ (*handle)->rule_iterator_cur = NULL; ++ DEBUGP_C("finished, returning NULL\n"); + return NULL; ++ } ++ ++ (*handle)->rule_iterator_cur = r; + +- return (void *)prev + prev->next_offset; ++ /* NOTE: prev is without any influence ! */ ++ DEBUGP_C("returning rule %p\n", r); ++ return r->entry; + } + +-#if 0 + /* How many rules in this chain? */ + unsigned int + TC_NUM_RULES(const char *chain, TC_HANDLE_T *handle) + { +- unsigned int off = 0; +- STRUCT_ENTRY *start, *end; +- ++ struct chain_head *c; ++ iptc_fn = TC_NUM_RULES; + CHECK(*handle); +- if (!find_label(&off, chain, *handle)) { ++ ++ c = iptcc_find_label(chain, *handle); ++ if (!c) { + errno = ENOENT; + return (unsigned int)-1; + } + +- start = get_entry(*handle, off); +- end = get_entry(*handle, get_chain_end(*handle, off)); +- +- return entry2index(*handle, end) - entry2index(*handle, start); ++ return c->num_rules; + } + +-/* Get n'th rule in this chain. */ + const STRUCT_ENTRY *TC_GET_RULE(const char *chain, + unsigned int n, + TC_HANDLE_T *handle) + { +- unsigned int pos = 0, chainindex; ++ struct chain_head *c; ++ struct rule_head *r; ++ ++ iptc_fn = TC_GET_RULE; + + CHECK(*handle); +- if (!find_label(&pos, chain, *handle)) { ++ ++ c = iptcc_find_label(chain, *handle); ++ if (!c) { + errno = ENOENT; + return NULL; + } + +- chainindex = entry2index(*handle, get_entry(*handle, pos)); +- +- return index2entry(*handle, chainindex + n); ++ r = iptcc_get_rule_num(c, n); ++ if (!r) ++ return NULL; ++ return r->entry; + } +-#endif + +-static const char * +-target_name(TC_HANDLE_T handle, const STRUCT_ENTRY *ce) ++/* Returns a pointer to the target name of this position. */ ++const char *standard_target_map(int verdict) + { +- int spos; +- unsigned int labelidx; +- STRUCT_ENTRY *jumpto; +- +- /* To avoid const warnings */ +- STRUCT_ENTRY *e = (STRUCT_ENTRY *)ce; +- +- if (strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET) != 0) +- return GET_TARGET(e)->u.user.name; +- +- /* Standard target: evaluate */ +- spos = *(int *)GET_TARGET(e)->data; +- if (spos < 0) { +- if (spos == RETURN) ++ switch (verdict) { ++ case RETURN: + return LABEL_RETURN; +- else if (spos == -NF_ACCEPT-1) ++ break; ++ case -NF_ACCEPT-1: + return LABEL_ACCEPT; +- else if (spos == -NF_DROP-1) ++ break; ++ case -NF_DROP-1: + return LABEL_DROP; +- else if (spos == -NF_QUEUE-1) ++ break; ++ case -NF_QUEUE-1: + return LABEL_QUEUE; +- +- fprintf(stderr, "ERROR: off %lu/%u not a valid target (%i)\n", +- entry2offset(handle, e), handle->entries.size, +- spos); ++ break; ++ default: ++ fprintf(stderr, "ERROR: %d not a valid target)\n", ++ verdict); + abort(); ++ break; + } +- +- jumpto = get_entry(handle, spos); +- +- /* Fall through rule */ +- if (jumpto == (void *)e + e->next_offset) +- return ""; +- +- /* Must point to head of a chain: ie. after error rule */ +- labelidx = entry2index(handle, jumpto) - 1; +- return get_errorlabel(handle, index2offset(handle, labelidx)); ++ /* not reached */ ++ return NULL; + } + + /* Returns a pointer to the target name of this position. */ +-const char *TC_GET_TARGET(const STRUCT_ENTRY *e, ++const char *TC_GET_TARGET(const STRUCT_ENTRY *ce, + TC_HANDLE_T *handle) + { +- return target_name(*handle, e); ++ STRUCT_ENTRY *e = (STRUCT_ENTRY *)ce; ++ struct rule_head *r = container_of(e, struct rule_head, entry[0]); ++ ++ iptc_fn = TC_GET_TARGET; ++ ++ switch(r->type) { ++ int spos; ++ case IPTCC_R_FALLTHROUGH: ++ return ""; ++ break; ++ case IPTCC_R_JUMP: ++ DEBUGP("r=%p, jump=%p, name=`%s'\n", r, r->jump, r->jump->name); ++ return r->jump->name; ++ break; ++ case IPTCC_R_STANDARD: ++ spos = *(int *)GET_TARGET(e)->data; ++ DEBUGP("r=%p, spos=%d'\n", r, spos); ++ return standard_target_map(spos); ++ break; ++ case IPTCC_R_MODULE: ++ return GET_TARGET(e)->u.user.name; ++ break; ++} ++ return NULL; + } +- + /* Is this a built-in chain? Actually returns hook + 1. */ + int + TC_BUILTIN(const char *chain, const TC_HANDLE_T handle) + { +- unsigned int i; ++ struct chain_head *c; + +- for (i = 0; i < NUMHOOKS; i++) { +- if ((handle->info.valid_hooks & (1 << i)) +- && handle->hooknames[i] +- && strcmp(handle->hooknames[i], chain) == 0) +- return i+1; +- } ++ iptc_fn = TC_BUILTIN; ++ ++ c = iptcc_find_label(chain, handle); ++ if (!c) { ++ errno = ENOENT; + return 0; + } + ++ return iptcc_is_builtin(c); ++} ++ + /* Get the policy of a given built-in chain */ + const char * + TC_GET_POLICY(const char *chain, + STRUCT_COUNTERS *counters, +- TC_HANDLE_T *handle) +-{ +- unsigned int start; +- STRUCT_ENTRY *e; +- int hook; +- +- hook = TC_BUILTIN(chain, *handle); +- if (hook != 0) +- start = (*handle)->info.hook_entry[hook-1]; +- else +- return NULL; +- +- e = get_entry(*handle, get_chain_end(*handle, start)); +- *counters = e->counters; +- +- return target_name(*handle, e); +-} +- +-static int +-correct_verdict(STRUCT_ENTRY *e, +- char *base, +- unsigned int offset, int delta_offset) +-{ +- STRUCT_STANDARD_TARGET *t = (void *)GET_TARGET(e); +- unsigned int curr = (char *)e - base; +- +- /* Trap: insert of fall-through rule. Don't change fall-through +- verdict to jump-over-next-rule. */ +- if (strcmp(t->target.u.user.name, STANDARD_TARGET) == 0 +- && t->verdict > (int)offset +- && !(curr == offset && +- t->verdict == curr + e->next_offset)) { +- t->verdict += delta_offset; +- } +- +- return 0; +-} +- +-/* Adjusts standard verdict jump positions after an insertion/deletion. */ +-static int +-set_verdict(unsigned int offset, int delta_offset, TC_HANDLE_T *handle) +-{ +- ENTRY_ITERATE((*handle)->entries.entrytable, +- (*handle)->entries.size, +- correct_verdict, (char *)(*handle)->entries.entrytable, +- offset, delta_offset); +- +- set_changed(*handle); +- return 1; +-} +- +-/* If prepend is set, then we are prepending to a chain: if the +- * insertion position is an entry point, keep the entry point. */ +-static int +-insert_rules(unsigned int num_rules, unsigned int rules_size, +- const STRUCT_ENTRY *insert, +- unsigned int offset, unsigned int num_rules_offset, +- int prepend, + TC_HANDLE_T *handle) + { +- TC_HANDLE_T newh; +- STRUCT_GETINFO newinfo; +- unsigned int i; +- +- if (offset >= (*handle)->entries.size) { +- errno = EINVAL; +- return 0; +- } ++ struct chain_head *c; + +- newinfo = (*handle)->info; +- +- /* Fix up entry points. */ +- for (i = 0; i < NUMHOOKS; i++) { +- /* Entry points to START of chain, so keep same if +- inserting on at that point. */ +- if ((*handle)->info.hook_entry[i] > offset) +- newinfo.hook_entry[i] += rules_size; +- +- /* Underflow always points to END of chain (policy), +- so if something is inserted at same point, it +- should be advanced. */ +- if ((*handle)->info.underflow[i] >= offset) +- newinfo.underflow[i] += rules_size; +- } +- +- newh = alloc_handle((*handle)->info.name, +- (*handle)->entries.size + rules_size, +- (*handle)->new_number + num_rules); +- if (!newh) +- return 0; +- newh->info = newinfo; +- +- /* Copy pre... */ +- memcpy(newh->entries.entrytable, (*handle)->entries.entrytable,offset); +- /* ... Insert new ... */ +- memcpy((char *)newh->entries.entrytable + offset, insert, rules_size); +- /* ... copy post */ +- memcpy((char *)newh->entries.entrytable + offset + rules_size, +- (char *)(*handle)->entries.entrytable + offset, +- (*handle)->entries.size - offset); +- +- /* Move counter map. */ +- /* Copy pre... */ +- memcpy(newh->counter_map, (*handle)->counter_map, +- sizeof(struct counter_map) * num_rules_offset); +- /* ... copy post */ +- memcpy(newh->counter_map + num_rules_offset + num_rules, +- (*handle)->counter_map + num_rules_offset, +- sizeof(struct counter_map) * ((*handle)->new_number +- - num_rules_offset)); +- /* Set intermediates to no counter copy */ +- for (i = 0; i < num_rules; i++) +- newh->counter_map[num_rules_offset+i] +- = ((struct counter_map){ COUNTER_MAP_SET, 0 }); +- +- newh->new_number = (*handle)->new_number + num_rules; +- newh->entries.size = (*handle)->entries.size + rules_size; +- newh->hooknames = (*handle)->hooknames; +- +- if ((*handle)->cache_chain_heads) +- free((*handle)->cache_chain_heads); +- free(*handle); +- *handle = newh; +- +- return set_verdict(offset, rules_size, handle); +-} +- +-static int +-delete_rules(unsigned int num_rules, unsigned int rules_size, +- unsigned int offset, unsigned int num_rules_offset, +- TC_HANDLE_T *handle) +-{ +- unsigned int i; ++ iptc_fn = TC_GET_POLICY; + +- if (offset + rules_size > (*handle)->entries.size) { +- errno = EINVAL; +- return 0; +- } ++ DEBUGP("called for chain %s\n", chain); + +- /* Fix up entry points. */ +- for (i = 0; i < NUMHOOKS; i++) { +- /* In practice, we never delete up to a hook entry, +- since the built-in chains are always first, +- so these two are never equal */ +- if ((*handle)->info.hook_entry[i] >= offset + rules_size) +- (*handle)->info.hook_entry[i] -= rules_size; +- else if ((*handle)->info.hook_entry[i] > offset) { +- fprintf(stderr, "ERROR: Deleting entry %u %u %u\n", +- i, (*handle)->info.hook_entry[i], offset); +- abort(); ++ c = iptcc_find_label(chain, *handle); ++ if (!c) { ++ errno = ENOENT; ++ return NULL; + } + +- /* Underflow points to policy (terminal) rule in +- built-in, so sequality is valid here (when deleting +- the last rule). */ +- if ((*handle)->info.underflow[i] >= offset + rules_size) +- (*handle)->info.underflow[i] -= rules_size; +- else if ((*handle)->info.underflow[i] > offset) { +- fprintf(stderr, "ERROR: Deleting uflow %u %u %u\n", +- i, (*handle)->info.underflow[i], offset); +- abort(); +- } +- } ++ if (!iptcc_is_builtin(c)) ++ return NULL; + +- /* Move the rules down. */ +- memmove((char *)(*handle)->entries.entrytable + offset, +- (char *)(*handle)->entries.entrytable + offset + rules_size, +- (*handle)->entries.size - (offset + rules_size)); +- +- /* Move the counter map down. */ +- memmove(&(*handle)->counter_map[num_rules_offset], +- &(*handle)->counter_map[num_rules_offset + num_rules], +- sizeof(struct counter_map) +- * ((*handle)->new_number - (num_rules + num_rules_offset))); +- +- /* Fix numbers */ +- (*handle)->new_number -= num_rules; +- (*handle)->entries.size -= rules_size; ++ *counters = c->counters; + +- return set_verdict(offset, -(int)rules_size, handle); ++ return standard_target_map(c->verdict); + } + + static int +-standard_map(STRUCT_ENTRY *e, int verdict) ++iptcc_standard_map(struct rule_head *r, int verdict) + { ++ STRUCT_ENTRY *e = r->entry; + STRUCT_STANDARD_TARGET *t; + + t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e); +@@ -847,64 +1217,62 @@ + strcpy(t->target.u.user.name, STANDARD_TARGET); + t->verdict = verdict; + ++ r->type = IPTCC_R_STANDARD; ++ + return 1; + } + + static int +-map_target(const TC_HANDLE_T handle, +- STRUCT_ENTRY *e, +- unsigned int offset, +- STRUCT_ENTRY_TARGET *old) ++iptcc_map_target(const TC_HANDLE_T handle, ++ struct rule_head *r) + { ++ STRUCT_ENTRY *e = r->entry; + STRUCT_ENTRY_TARGET *t = GET_TARGET(e); + +- /* Save old target (except data, which we don't change, except for +- standard case, where we don't care). */ +- *old = *t; +- + /* Maybe it's empty (=> fall through) */ +- if (strcmp(t->u.user.name, "") == 0) +- return standard_map(e, offset + e->next_offset); ++ if (strcmp(t->u.user.name, "") == 0) { ++ r->type = IPTCC_R_FALLTHROUGH; ++ return 1; ++ } + /* Maybe it's a standard target name... */ + else if (strcmp(t->u.user.name, LABEL_ACCEPT) == 0) +- return standard_map(e, -NF_ACCEPT - 1); ++ return iptcc_standard_map(r, -NF_ACCEPT - 1); + else if (strcmp(t->u.user.name, LABEL_DROP) == 0) +- return standard_map(e, -NF_DROP - 1); ++ return iptcc_standard_map(r, -NF_DROP - 1); + else if (strcmp(t->u.user.name, LABEL_QUEUE) == 0) +- return standard_map(e, -NF_QUEUE - 1); ++ return iptcc_standard_map(r, -NF_QUEUE - 1); + else if (strcmp(t->u.user.name, LABEL_RETURN) == 0) +- return standard_map(e, RETURN); ++ return iptcc_standard_map(r, RETURN); + else if (TC_BUILTIN(t->u.user.name, handle)) { + /* Can't jump to builtins. */ + errno = EINVAL; + return 0; + } else { + /* Maybe it's an existing chain name. */ +- struct chain_cache *c; ++ struct chain_head *c; ++ DEBUGP("trying to find chain `%s': ", t->u.user.name); + +- c = find_label(t->u.user.name, handle); +- if (c) +- return standard_map(e, entry2offset(handle, c->start)); ++ c = iptcc_find_label(t->u.user.name, handle); ++ if (c) { ++ DEBUGP_C("found!\n"); ++ r->type = IPTCC_R_JUMP; ++ r->jump = c; ++ c->references++; ++ return 1; ++} ++ DEBUGP_C("not found :(\n"); + } + + /* Must be a module? If not, kernel will reject... */ +- /* memset to all 0 for your memcmp convenience. */ ++ /* memset to all 0 for your memcmp convenience: don't clear version */ + memset(t->u.user.name + strlen(t->u.user.name), + 0, +- FUNCTION_MAXNAMELEN - strlen(t->u.user.name)); ++ FUNCTION_MAXNAMELEN - 1 - strlen(t->u.user.name)); ++ r->type = IPTCC_R_MODULE; ++ set_changed(handle); + return 1; + } + +-static void +-unmap_target(STRUCT_ENTRY *e, STRUCT_ENTRY_TARGET *old) +-{ +- STRUCT_ENTRY_TARGET *t = GET_TARGET(e); +- +- /* Save old target (except data, which we don't change, except for +- standard case, where we don't care). */ +- *t = *old; +-} +- + /* Insert the entry `fw' in chain `chain' into position `rulenum'. */ + int + TC_INSERT_ENTRY(const IPT_CHAINLABEL chain, +@@ -912,36 +1280,56 @@ + unsigned int rulenum, + TC_HANDLE_T *handle) + { +- unsigned int chainindex, offset; +- STRUCT_ENTRY_TARGET old; +- struct chain_cache *c; +- STRUCT_ENTRY *tmp; +- int ret; ++ struct chain_head *c; ++ struct rule_head *r; ++ struct list_head *prev; + + iptc_fn = TC_INSERT_ENTRY; +- if (!(c = find_label(chain, *handle))) { ++ ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- chainindex = entry2index(*handle, c->start); +- +- tmp = index2entry(*handle, chainindex + rulenum); +- if (!tmp || tmp > c->end) { ++ /* first rulenum index = 0 ++ first c->num_rules index = 1 */ ++ if (rulenum > c->num_rules) { + errno = E2BIG; + return 0; + } +- offset = index2offset(*handle, chainindex + rulenum); + +- /* Mapping target actually alters entry, but that's +- transparent to the caller. */ +- if (!map_target(*handle, (STRUCT_ENTRY *)e, offset, &old)) ++ /* If we are inserting at the end just take advantage of the ++ double linked list, insert will happen before the entry ++ prev points to. */ ++ if (rulenum == c->num_rules) { ++ prev = &c->rules; ++ } else if (rulenum + 1 <= c->num_rules/2) { ++ r = iptcc_get_rule_num(c, rulenum + 1); ++ prev = &r->list; ++ } else { ++ r = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum); ++ prev = &r->list; ++ } ++ ++ if (!(r = iptcc_alloc_rule(c, e->next_offset))) { ++ errno = ENOMEM; ++ return 0; ++ } ++ ++ memcpy(r->entry, e, e->next_offset); ++ r->counter_map.maptype = COUNTER_MAP_SET; ++ ++ if (!iptcc_map_target(*handle, r)) { ++ free(r); + return 0; ++ } ++ ++ list_add_tail(&r->list, prev); ++ c->num_rules++; ++ ++ set_changed(*handle); + +- ret = insert_rules(1, e->next_offset, e, offset, +- chainindex + rulenum, rulenum == 0, handle); +- unmap_target((STRUCT_ENTRY *)e, &old); +- return ret; ++ return 1; + } + + /* Atomically replace rule `rulenum' in `chain' with `fw'. */ +@@ -951,40 +1339,47 @@ + unsigned int rulenum, + TC_HANDLE_T *handle) + { +- unsigned int chainindex, offset; +- STRUCT_ENTRY_TARGET old; +- struct chain_cache *c; +- STRUCT_ENTRY *tmp; +- int ret; ++ struct chain_head *c; ++ struct rule_head *r, *old; + + iptc_fn = TC_REPLACE_ENTRY; + +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- chainindex = entry2index(*handle, c->start); +- +- tmp = index2entry(*handle, chainindex + rulenum); +- if (!tmp || tmp >= c->end) { ++ if (rulenum >= c->num_rules) { + errno = E2BIG; + return 0; + } + +- offset = index2offset(*handle, chainindex + rulenum); +- /* Replace = delete and insert. */ +- if (!delete_rules(1, get_entry(*handle, offset)->next_offset, +- offset, chainindex + rulenum, handle)) ++ /* Take advantage of the double linked list if possible. */ ++ if (rulenum + 1 <= c->num_rules/2) { ++ old = iptcc_get_rule_num(c, rulenum + 1); ++ } else { ++ old = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum); ++ } ++ ++ if (!(r = iptcc_alloc_rule(c, e->next_offset))) { ++ errno = ENOMEM; + return 0; ++ } + +- if (!map_target(*handle, (STRUCT_ENTRY *)e, offset, &old)) ++ memcpy(r->entry, e, e->next_offset); ++ r->counter_map.maptype = COUNTER_MAP_SET; ++ ++ if (!iptcc_map_target(*handle, r)) { ++ free(r); + return 0; ++ } ++ ++ list_add(&r->list, &old->list); ++ iptcc_delete_rule(old); ++ ++ set_changed(*handle); + +- ret = insert_rules(1, e->next_offset, e, offset, +- chainindex + rulenum, 1, handle); +- unmap_target((STRUCT_ENTRY *)e, &old); +- return ret; ++ return 1; + } + + /* Append entry `fw' to chain `chain'. Equivalent to insert with +@@ -994,26 +1389,37 @@ + const STRUCT_ENTRY *e, + TC_HANDLE_T *handle) + { +- struct chain_cache *c; +- STRUCT_ENTRY_TARGET old; +- int ret; ++ struct chain_head *c; ++ struct rule_head *r; + + iptc_fn = TC_APPEND_ENTRY; +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { ++ DEBUGP("unable to find chain `%s'\n", chain); + errno = ENOENT; + return 0; + } + +- if (!map_target(*handle, (STRUCT_ENTRY *)e, +- entry2offset(*handle, c->end), &old)) ++ if (!(r = iptcc_alloc_rule(c, e->next_offset))) { ++ DEBUGP("unable to allocate rule for chain `%s'\n", chain); ++ errno = ENOMEM; ++ return 0; ++ } ++ ++ memcpy(r->entry, e, e->next_offset); ++ r->counter_map.maptype = COUNTER_MAP_SET; ++ ++ if (!iptcc_map_target(*handle, r)) { ++ DEBUGP("unable to map target of rule for chain `%s'\n", chain); ++ free(r); + return 0; ++ } ++ ++ list_add_tail(&r->list, &c->rules); ++ c->num_rules++; ++ ++ set_changed(*handle); + +- ret = insert_rules(1, e->next_offset, e, +- entry2offset(*handle, c->end), +- entry2index(*handle, c->end), +- 0, handle); +- unmap_target((STRUCT_ENTRY *)e, &old); +- return ret; ++ return 1; + } + + static inline int +@@ -1044,20 +1450,42 @@ + } + + static inline int +-target_different(const unsigned char *a_targdata, +- const unsigned char *b_targdata, +- unsigned int tdatasize, +- const unsigned char *mask) ++target_same(struct rule_head *a, struct rule_head *b,const unsigned char *mask) + { + unsigned int i; +- for (i = 0; i < tdatasize; i++) +- if (((a_targdata[i] ^ b_targdata[i]) & mask[i]) != 0) ++ STRUCT_ENTRY_TARGET *ta, *tb; ++ ++ if (a->type != b->type) ++ return 0; ++ ++ ta = GET_TARGET(a->entry); ++ tb = GET_TARGET(b->entry); ++ ++ switch (a->type) { ++ case IPTCC_R_FALLTHROUGH: + return 1; ++ case IPTCC_R_JUMP: ++ return a->jump == b->jump; ++ case IPTCC_R_STANDARD: ++ return ((STRUCT_STANDARD_TARGET *)ta)->verdict ++ == ((STRUCT_STANDARD_TARGET *)tb)->verdict; ++ case IPTCC_R_MODULE: ++ if (ta->u.target_size != tb->u.target_size) ++ return 0; ++ if (strcmp(ta->u.user.name, tb->u.user.name) != 0) ++ return 0; + ++ for (i = 0; i < ta->u.target_size - sizeof(*ta); i++) ++ if (((ta->data[i] ^ tb->data[i]) & mask[i]) != 0) + return 0; ++ return 1; ++ default: ++ fprintf(stderr, "ERROR: bad type %i\n", a->type); ++ abort(); ++ } + } + +-static int ++static unsigned char * + is_same(const STRUCT_ENTRY *a, + const STRUCT_ENTRY *b, + unsigned char *matchmask); +@@ -1069,88 +1497,106 @@ + unsigned char *matchmask, + TC_HANDLE_T *handle) + { +- unsigned int offset; +- struct chain_cache *c; +- STRUCT_ENTRY *e, *fw; ++ struct chain_head *c; ++ struct rule_head *r, *i; + + iptc_fn = TC_DELETE_ENTRY; +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- fw = malloc(origfw->next_offset); +- if (fw == NULL) { ++ /* Create a rule_head from origfw. */ ++ r = iptcc_alloc_rule(c, origfw->next_offset); ++ if (!r) { + errno = ENOMEM; + return 0; + } + +- for (offset = entry2offset(*handle, c->start); +- offset < entry2offset(*handle, c->end); +- offset += e->next_offset) { +- STRUCT_ENTRY_TARGET discard; +- +- memcpy(fw, origfw, origfw->next_offset); +- +- /* FIXME: handle this in is_same --RR */ +- if (!map_target(*handle, fw, offset, &discard)) { +- free(fw); ++ memcpy(r->entry, origfw, origfw->next_offset); ++ r->counter_map.maptype = COUNTER_MAP_NOMAP; ++ if (!iptcc_map_target(*handle, r)) { ++ DEBUGP("unable to map target of rule for chain `%s'\n", chain); ++ free(r); + return 0; + } +- e = get_entry(*handle, offset); + +-#if 0 +- printf("Deleting:\n"); +- dump_entry(newe); +-#endif +- if (is_same(e, fw, matchmask)) { +- int ret; +- ret = delete_rules(1, e->next_offset, +- offset, entry2index(*handle, e), +- handle); +- free(fw); +- return ret; ++ list_for_each_entry(i, &c->rules, list) { ++ unsigned char *mask; ++ ++ mask = is_same(r->entry, i->entry, matchmask); ++ if (!mask) ++ continue; ++ ++ if (!target_same(r, i, mask)) ++ continue; ++ ++ /* If we are about to delete the rule that is the ++ * current iterator, move rule iterator back. next ++ * pointer will then point to real next node */ ++ if (i == (*handle)->rule_iterator_cur) { ++ (*handle)->rule_iterator_cur = ++ list_entry((*handle)->rule_iterator_cur->list.prev, ++ struct rule_head, list); + } ++ ++ c->num_rules--; ++ iptcc_delete_rule(i); ++ ++ set_changed(*handle); ++ free(r); ++ return 1; + } + +- free(fw); ++ free(r); + errno = ENOENT; + return 0; + } + ++ + /* Delete the rule in position `rulenum' in `chain'. */ + int + TC_DELETE_NUM_ENTRY(const IPT_CHAINLABEL chain, + unsigned int rulenum, + TC_HANDLE_T *handle) + { +- unsigned int index; +- int ret; +- STRUCT_ENTRY *e; +- struct chain_cache *c; ++ struct chain_head *c; ++ struct rule_head *r; + + iptc_fn = TC_DELETE_NUM_ENTRY; +- if (!(c = find_label(chain, *handle))) { ++ ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- index = entry2index(*handle, c->start) + rulenum; +- +- if (index >= entry2index(*handle, c->end)) { ++ if (rulenum >= c->num_rules) { + errno = E2BIG; + return 0; + } + +- e = index2entry(*handle, index); +- if (e == NULL) { +- errno = EINVAL; +- return 0; ++ /* Take advantage of the double linked list if possible. */ ++ if (rulenum + 1 <= c->num_rules/2) { ++ r = iptcc_get_rule_num(c, rulenum + 1); ++ } else { ++ r = iptcc_get_rule_num_reverse(c, c->num_rules - rulenum); ++ } ++ ++ /* If we are about to delete the rule that is the current ++ * iterator, move rule iterator back. next pointer will then ++ * point to real next node */ ++ if (r == (*handle)->rule_iterator_cur) { ++ (*handle)->rule_iterator_cur = ++ list_entry((*handle)->rule_iterator_cur->list.prev, ++ struct rule_head, list); + } + +- ret = delete_rules(1, e->next_offset, entry2offset(*handle, e), +- index, handle); +- return ret; ++ c->num_rules--; ++ iptcc_delete_rule(r); ++ ++ set_changed(*handle); ++ ++ return 1; + } + + /* Check the packet `fw' on chain `chain'. Returns the verdict, or +@@ -1160,6 +1606,7 @@ + STRUCT_ENTRY *entry, + TC_HANDLE_T *handle) + { ++ iptc_fn = TC_CHECK_PACKET; + errno = ENOSYS; + return NULL; + } +@@ -1168,44 +1615,44 @@ + int + TC_FLUSH_ENTRIES(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle) + { +- unsigned int startindex, endindex; +- struct chain_cache *c; +- int ret; ++ struct chain_head *c; ++ struct rule_head *r, *tmp; + + iptc_fn = TC_FLUSH_ENTRIES; +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } +- startindex = entry2index(*handle, c->start); +- endindex = entry2index(*handle, c->end); + +- ret = delete_rules(endindex - startindex, +- (char *)c->end - (char *)c->start, +- entry2offset(*handle, c->start), startindex, +- handle); +- return ret; ++ list_for_each_entry_safe(r, tmp, &c->rules, list) { ++ iptcc_delete_rule(r); ++ } ++ ++ c->num_rules = 0; ++ ++ set_changed(*handle); ++ ++ return 1; + } + + /* Zeroes the counters in a chain. */ + int + TC_ZERO_ENTRIES(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle) + { +- unsigned int i, end; +- struct chain_cache *c; ++ struct chain_head *c; ++ struct rule_head *r; + +- if (!(c = find_label(chain, *handle))) { ++ iptc_fn = TC_ZERO_ENTRIES; ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- i = entry2index(*handle, c->start); +- end = entry2index(*handle, c->end); +- +- for (; i <= end; i++) { +- if ((*handle)->counter_map[i].maptype ==COUNTER_MAP_NORMAL_MAP) +- (*handle)->counter_map[i].maptype = COUNTER_MAP_ZEROED; ++ list_for_each_entry(r, &c->rules, list) { ++ if (r->counter_map.maptype == COUNTER_MAP_NORMAL_MAP) ++ r->counter_map.maptype = COUNTER_MAP_ZEROED; + } ++ + set_changed(*handle); + + return 1; +@@ -1216,29 +1663,23 @@ + unsigned int rulenum, + TC_HANDLE_T *handle) + { +- STRUCT_ENTRY *e; +- struct chain_cache *c; +- unsigned int chainindex, end; ++ struct chain_head *c; ++ struct rule_head *r; + + iptc_fn = TC_READ_COUNTER; + CHECK(*handle); + +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return NULL; + } + +- chainindex = entry2index(*handle, c->start); +- end = entry2index(*handle, c->end); +- +- if (chainindex + rulenum > end) { ++ if (!(r = iptcc_get_rule_num(c, rulenum))) { + errno = E2BIG; + return NULL; + } + +- e = index2entry(*handle, chainindex + rulenum); +- +- return &e->counters; ++ return &r->entry[0].counters; + } + + int +@@ -1246,33 +1687,24 @@ + unsigned int rulenum, + TC_HANDLE_T *handle) + { +- STRUCT_ENTRY *e; +- struct chain_cache *c; +- unsigned int chainindex, end; ++ struct chain_head *c; ++ struct rule_head *r; + + iptc_fn = TC_ZERO_COUNTER; + CHECK(*handle); + +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- chainindex = entry2index(*handle, c->start); +- end = entry2index(*handle, c->end); +- +- if (chainindex + rulenum > end) { ++ if (!(r = iptcc_get_rule_num(c, rulenum))) { + errno = E2BIG; + return 0; + } + +- e = index2entry(*handle, chainindex + rulenum); +- +-// if ((*handle)->counter_map[chainindex + rulenum].maptype +-// == COUNTER_MAP_NORMAL_MAP) { +- (*handle)->counter_map[chainindex + rulenum].maptype +- = COUNTER_MAP_ZEROED; +-// } ++ if (r->counter_map.maptype == COUNTER_MAP_NORMAL_MAP) ++ r->counter_map.maptype = COUNTER_MAP_ZEROED; + + set_changed(*handle); + +@@ -1285,30 +1717,25 @@ + STRUCT_COUNTERS *counters, + TC_HANDLE_T *handle) + { ++ struct chain_head *c; ++ struct rule_head *r; + STRUCT_ENTRY *e; +- struct chain_cache *c; +- unsigned int chainindex, end; + + iptc_fn = TC_SET_COUNTER; + CHECK(*handle); + +- if (!(c = find_label(chain, *handle))) { ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- chainindex = entry2index(*handle, c->start); +- end = entry2index(*handle, c->end); +- +- if (chainindex + rulenum > end) { ++ if (!(r = iptcc_get_rule_num(c, rulenum))) { + errno = E2BIG; + return 0; + } + +- e = index2entry(*handle, chainindex + rulenum); +- +- (*handle)->counter_map[chainindex + rulenum].maptype +- = COUNTER_MAP_SET; ++ e = r->entry; ++ r->counter_map.maptype = COUNTER_MAP_SET; + + memcpy(&e->counters, counters, sizeof(STRUCT_COUNTERS)); + +@@ -1323,71 +1750,42 @@ + int + TC_CREATE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle) + { +- int ret; +- struct { +- STRUCT_ENTRY head; +- struct ipt_error_target name; +- STRUCT_ENTRY ret; +- STRUCT_STANDARD_TARGET target; +- } newc; ++ static struct chain_head *c; + + iptc_fn = TC_CREATE_CHAIN; + + /* find_label doesn't cover built-in targets: DROP, ACCEPT, + QUEUE, RETURN. */ +- if (find_label(chain, *handle) ++ if (iptcc_find_label(chain, *handle) + || strcmp(chain, LABEL_DROP) == 0 + || strcmp(chain, LABEL_ACCEPT) == 0 + || strcmp(chain, LABEL_QUEUE) == 0 + || strcmp(chain, LABEL_RETURN) == 0) { ++ DEBUGP("Chain `%s' already exists\n", chain); + errno = EEXIST; + return 0; + } + + if (strlen(chain)+1 > sizeof(IPT_CHAINLABEL)) { ++ DEBUGP("Chain name `%s' too long\n", chain); + errno = EINVAL; + return 0; + } + +- memset(&newc, 0, sizeof(newc)); +- newc.head.target_offset = sizeof(STRUCT_ENTRY); +- newc.head.next_offset +- = sizeof(STRUCT_ENTRY) +- + ALIGN(sizeof(struct ipt_error_target)); +- strcpy(newc.name.t.u.user.name, ERROR_TARGET); +- newc.name.t.u.target_size = ALIGN(sizeof(struct ipt_error_target)); +- strcpy(newc.name.error, chain); +- +- newc.ret.target_offset = sizeof(STRUCT_ENTRY); +- newc.ret.next_offset +- = sizeof(STRUCT_ENTRY) +- + ALIGN(sizeof(STRUCT_STANDARD_TARGET)); +- strcpy(newc.target.target.u.user.name, STANDARD_TARGET); +- newc.target.target.u.target_size +- = ALIGN(sizeof(STRUCT_STANDARD_TARGET)); +- newc.target.verdict = RETURN; +- +- /* Add just before terminal entry */ +- ret = insert_rules(2, sizeof(newc), &newc.head, +- index2offset(*handle, (*handle)->new_number - 1), +- (*handle)->new_number - 1, +- 0, handle); +- return ret; +-} ++ c = iptcc_alloc_chain_head(chain, 0); ++ if (!c) { ++ DEBUGP("Cannot allocate memory for chain `%s'\n", chain); ++ errno = ENOMEM; ++ return 0; + +-static int +-count_ref(STRUCT_ENTRY *e, unsigned int offset, unsigned int *ref) +-{ +- STRUCT_STANDARD_TARGET *t; ++ } + +- if (strcmp(GET_TARGET(e)->u.user.name, STANDARD_TARGET) == 0) { +- t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e); ++ DEBUGP("Creating chain `%s'\n", chain); ++ list_add_tail(&c->list, &(*handle)->chains); + +- if (t->verdict == offset) +- (*ref)++; +- } ++ set_changed(*handle); + +- return 0; ++ return 1; + } + + /* Get the number of references to this chain. */ +@@ -1395,17 +1793,16 @@ + TC_GET_REFERENCES(unsigned int *ref, const IPT_CHAINLABEL chain, + TC_HANDLE_T *handle) + { +- struct chain_cache *c; ++ struct chain_head *c; + +- if (!(c = find_label(chain, *handle))) { ++ iptc_fn = TC_GET_REFERENCES; ++ if (!(c = iptcc_find_label(chain, *handle))) { + errno = ENOENT; + return 0; + } + +- *ref = 0; +- ENTRY_ITERATE((*handle)->entries.entrytable, +- (*handle)->entries.size, +- count_ref, entry2offset(*handle, c->start), ref); ++ *ref = c->references; ++ + return 1; + } + +@@ -1413,45 +1810,53 @@ + int + TC_DELETE_CHAIN(const IPT_CHAINLABEL chain, TC_HANDLE_T *handle) + { +- unsigned int labelidx, labeloff; + unsigned int references; +- struct chain_cache *c; +- int ret; +- +- if (!TC_GET_REFERENCES(&references, chain, handle)) +- return 0; ++ struct chain_head *c; + + iptc_fn = TC_DELETE_CHAIN; + ++ if (!(c = iptcc_find_label(chain, *handle))) { ++ DEBUGP("cannot find chain `%s'\n", chain); ++ errno = ENOENT; ++ return 0; ++ } ++ + if (TC_BUILTIN(chain, *handle)) { ++ DEBUGP("cannot remove builtin chain `%s'\n", chain); + errno = EINVAL; + return 0; + } + +- if (references > 0) { +- errno = EMLINK; ++ if (!TC_GET_REFERENCES(&references, chain, handle)) { ++ DEBUGP("cannot get references on chain `%s'\n", chain); + return 0; + } + +- if (!(c = find_label(chain, *handle))) { +- errno = ENOENT; ++ if (references > 0) { ++ DEBUGP("chain `%s' still has references\n", chain); ++ errno = EMLINK; + return 0; + } + +- if ((void *)c->start != c->end) { ++ if (c->num_rules) { ++ DEBUGP("chain `%s' is not empty\n", chain); + errno = ENOTEMPTY; + return 0; + } + +- /* Need label index: preceeds chain start */ +- labelidx = entry2index(*handle, c->start) - 1; +- labeloff = index2offset(*handle, labelidx); +- +- ret = delete_rules(2, +- get_entry(*handle, labeloff)->next_offset +- + c->start->next_offset, +- labeloff, labelidx, handle); +- return ret; ++ /* If we are about to delete the chain that is the current ++ * iterator, move chain iterator firward. */ ++ if (c == (*handle)->chain_iterator_cur) ++ iptcc_chain_iterator_advance(*handle); ++ ++ list_del(&c->list); ++ free(c); ++ ++ DEBUGP("chain `%s' deleted\n", chain); ++ ++ set_changed(*handle); ++ ++ return 1; + } + + /* Renames a chain. */ +@@ -1459,15 +1864,12 @@ + const IPT_CHAINLABEL newname, + TC_HANDLE_T *handle) + { +- unsigned int labeloff, labelidx; +- struct chain_cache *c; +- struct ipt_error_target *t; +- ++ struct chain_head *c; + iptc_fn = TC_RENAME_CHAIN; + + /* find_label doesn't cover built-in targets: DROP, ACCEPT, + QUEUE, RETURN. */ +- if (find_label(newname, *handle) ++ if (iptcc_find_label(newname, *handle) + || strcmp(newname, LABEL_DROP) == 0 + || strcmp(newname, LABEL_ACCEPT) == 0 + || strcmp(newname, LABEL_QUEUE) == 0 +@@ -1476,7 +1878,7 @@ + return 0; + } + +- if (!(c = find_label(oldname, *handle)) ++ if (!(c = iptcc_find_label(oldname, *handle)) + || TC_BUILTIN(oldname, *handle)) { + errno = ENOENT; + return 0; +@@ -1487,15 +1889,8 @@ + return 0; + } + +- /* Need label index: preceeds chain start */ +- labelidx = entry2index(*handle, c->start) - 1; +- labeloff = index2offset(*handle, labelidx); ++ strncpy(c->name, newname, sizeof(IPT_CHAINLABEL)); + +- t = (struct ipt_error_target *) +- GET_TARGET(get_entry(*handle, labeloff)); +- +- memset(t->error, 0, sizeof(t->error)); +- strcpy(t->error, newname); + set_changed(*handle); + + return 1; +@@ -1508,51 +1903,37 @@ + STRUCT_COUNTERS *counters, + TC_HANDLE_T *handle) + { +- unsigned int hook; +- unsigned int policyoff, ctrindex; +- STRUCT_ENTRY *e; +- STRUCT_STANDARD_TARGET *t; ++ struct chain_head *c; + + iptc_fn = TC_SET_POLICY; +- /* Figure out which chain. */ +- hook = TC_BUILTIN(chain, *handle); +- if (hook == 0) { ++ ++ if (!(c = iptcc_find_label(chain, *handle))) { ++ DEBUGP("cannot find chain `%s'\n", chain); + errno = ENOENT; + return 0; +- } else +- hook--; ++ } + +- policyoff = get_chain_end(*handle, (*handle)->info.hook_entry[hook]); +- if (policyoff != (*handle)->info.underflow[hook]) { +- printf("ERROR: Policy for `%s' offset %u != underflow %u\n", +- chain, policyoff, (*handle)->info.underflow[hook]); ++ if (!iptcc_is_builtin(c)) { ++ DEBUGP("cannot set policy of userdefinedchain `%s'\n", chain); ++ errno = ENOENT; + return 0; + } + +- e = get_entry(*handle, policyoff); +- t = (STRUCT_STANDARD_TARGET *)GET_TARGET(e); +- + if (strcmp(policy, LABEL_ACCEPT) == 0) +- t->verdict = -NF_ACCEPT - 1; ++ c->verdict = -NF_ACCEPT - 1; + else if (strcmp(policy, LABEL_DROP) == 0) +- t->verdict = -NF_DROP - 1; ++ c->verdict = -NF_DROP - 1; + else { + errno = EINVAL; + return 0; + } + +- ctrindex = entry2index(*handle, e); +- + if (counters) { + /* set byte and packet counters */ +- memcpy(&e->counters, counters, sizeof(STRUCT_COUNTERS)); +- +- (*handle)->counter_map[ctrindex].maptype +- = COUNTER_MAP_SET; +- ++ memcpy(&c->counters, counters, sizeof(STRUCT_COUNTERS)); ++ c->counter_map.maptype = COUNTER_MAP_SET; + } else { +- (*handle)->counter_map[ctrindex] +- = ((struct counter_map){ COUNTER_MAP_NOMAP, 0 }); ++ c->counter_map.maptype = COUNTER_MAP_NOMAP; + } + + set_changed(*handle); +@@ -1575,31 +1956,100 @@ + answer->bcnt = a->bcnt - b->bcnt; + } + ++ ++static void counters_nomap(STRUCT_COUNTERS_INFO *newcounters, ++ unsigned int index) ++{ ++ newcounters->counters[index] = ((STRUCT_COUNTERS) { 0, 0}); ++ DEBUGP_C("NOMAP => zero\n"); ++} ++ ++static void counters_normal_map(STRUCT_COUNTERS_INFO *newcounters, ++ STRUCT_REPLACE *repl, ++ unsigned int index, ++ unsigned int mappos) ++{ ++ /* Original read: X. ++ * Atomic read on replacement: X + Y. ++ * Currently in kernel: Z. ++ * Want in kernel: X + Y + Z. ++ * => Add in X + Y ++ * => Add in replacement read. ++ */ ++ newcounters->counters[index] = repl->counters[mappos]; ++ DEBUGP_C("NORMAL_MAP => mappos %u \n", mappos); ++} ++ ++static void counters_map_zeroed(STRUCT_COUNTERS_INFO *newcounters, ++ STRUCT_REPLACE *repl, ++ unsigned int index, ++ unsigned int mappos, ++ STRUCT_COUNTERS *counters) ++{ ++ /* Original read: X. ++ * Atomic read on replacement: X + Y. ++ * Currently in kernel: Z. ++ * Want in kernel: Y + Z. ++ * => Add in Y. ++ * => Add in (replacement read - original read). ++ */ ++ subtract_counters(&newcounters->counters[index], ++ &repl->counters[mappos], ++ counters); ++ DEBUGP_C("ZEROED => mappos %u\n", mappos); ++} ++ ++static void counters_map_set(STRUCT_COUNTERS_INFO *newcounters, ++ unsigned int index, ++ STRUCT_COUNTERS *counters) ++{ ++ /* Want to set counter (iptables-restore) */ ++ ++ memcpy(&newcounters->counters[index], counters, ++ sizeof(STRUCT_COUNTERS)); ++ ++ DEBUGP_C("SET\n"); ++} ++ ++ + int + TC_COMMIT(TC_HANDLE_T *handle) + { + /* Replace, then map back the counters. */ + STRUCT_REPLACE *repl; + STRUCT_COUNTERS_INFO *newcounters; +- unsigned int i; +- size_t counterlen +- = sizeof(STRUCT_COUNTERS_INFO) +- + sizeof(STRUCT_COUNTERS) * (*handle)->new_number; ++ struct chain_head *c; ++ int ret; ++ size_t counterlen; ++ int new_number; ++ unsigned int new_size; + ++ iptc_fn = TC_COMMIT; + CHECK(*handle); +-#if 0 +- TC_DUMP_ENTRIES(*handle); +-#endif + + /* Don't commit if nothing changed. */ + if (!(*handle)->changed) + goto finished; + +- repl = malloc(sizeof(*repl) + (*handle)->entries.size); ++ new_number = iptcc_compile_table_prep(*handle, &new_size); ++ if (new_number < 0) { ++ errno = ENOMEM; ++ return 0; ++ } ++ ++ repl = malloc(sizeof(*repl) + new_size); + if (!repl) { + errno = ENOMEM; + return 0; + } ++ memset(repl, 0, sizeof(*repl) + new_size); ++ ++#if 0 ++ TC_DUMP_ENTRIES(*handle); ++#endif ++ ++ counterlen = sizeof(STRUCT_COUNTERS_INFO) ++ + sizeof(STRUCT_COUNTERS) * new_number; + + /* These are the old counters we will get from kernel */ + repl->counters = malloc(sizeof(STRUCT_COUNTERS) +@@ -1609,7 +2059,6 @@ + errno = ENOMEM; + return 0; + } +- + /* These are the counters we're going to put back, later. */ + newcounters = malloc(counterlen); + if (!newcounters) { +@@ -1618,21 +2067,40 @@ + errno = ENOMEM; + return 0; + } ++ memset(newcounters, 0, counterlen); + + strcpy(repl->name, (*handle)->info.name); +- repl->num_entries = (*handle)->new_number; +- repl->size = (*handle)->entries.size; +- memcpy(repl->hook_entry, (*handle)->info.hook_entry, +- sizeof(repl->hook_entry)); +- memcpy(repl->underflow, (*handle)->info.underflow, +- sizeof(repl->underflow)); ++ repl->num_entries = new_number; ++ repl->size = new_size; ++ + repl->num_counters = (*handle)->info.num_entries; + repl->valid_hooks = (*handle)->info.valid_hooks; +- memcpy(repl->entries, (*handle)->entries.entrytable, +- (*handle)->entries.size); ++ ++ DEBUGP("num_entries=%u, size=%u, num_counters=%u\n", ++ repl->num_entries, repl->size, repl->num_counters); ++ ++ ret = iptcc_compile_table(*handle, repl); ++ if (ret < 0) { ++ errno = ret; ++ free(repl->counters); ++ free(repl); ++ return 0; ++ } ++ ++ ++#ifdef IPTC_DEBUG2 ++ { ++ int fd = open("/tmp/libiptc-so_set_replace.blob", ++ O_CREAT|O_WRONLY); ++ if (fd >= 0) { ++ write(fd, repl, sizeof(*repl) + repl->size); ++ close(fd); ++ } ++ } ++#endif + + if (setsockopt(sockfd, TC_IPPROTO, SO_SET_REPLACE, repl, +- sizeof(*repl) + (*handle)->entries.size) < 0) { ++ sizeof(*repl) + repl->size) < 0) { + free(repl->counters); + free(repl); + free(newcounters); +@@ -1641,49 +2109,64 @@ + + /* Put counters back. */ + strcpy(newcounters->name, (*handle)->info.name); +- newcounters->num_counters = (*handle)->new_number; +- for (i = 0; i < (*handle)->new_number; i++) { +- unsigned int mappos = (*handle)->counter_map[i].mappos; +- switch ((*handle)->counter_map[i].maptype) { ++ newcounters->num_counters = new_number; ++ ++ list_for_each_entry(c, &(*handle)->chains, list) { ++ struct rule_head *r; ++ ++ /* Builtin chains have their own counters */ ++ if (iptcc_is_builtin(c)) { ++ DEBUGP("counter for chain-index %u: ", c->foot_index); ++ switch(c->counter_map.maptype) { ++ case COUNTER_MAP_NOMAP: ++ counters_nomap(newcounters, c->foot_index); ++ break; ++ case COUNTER_MAP_NORMAL_MAP: ++ counters_normal_map(newcounters, repl, ++ c->foot_index, ++ c->counter_map.mappos); ++ break; ++ case COUNTER_MAP_ZEROED: ++ counters_map_zeroed(newcounters, repl, ++ c->foot_index, ++ c->counter_map.mappos, ++ &c->counters); ++ break; ++ case COUNTER_MAP_SET: ++ counters_map_set(newcounters, c->foot_index, ++ &c->counters); ++ break; ++ } ++ } ++ ++ list_for_each_entry(r, &c->rules, list) { ++ DEBUGP("counter for index %u: ", r->index); ++ switch (r->counter_map.maptype) { + case COUNTER_MAP_NOMAP: +- newcounters->counters[i] +- = ((STRUCT_COUNTERS){ 0, 0 }); ++ counters_nomap(newcounters, r->index); + break; + + case COUNTER_MAP_NORMAL_MAP: +- /* Original read: X. +- * Atomic read on replacement: X + Y. +- * Currently in kernel: Z. +- * Want in kernel: X + Y + Z. +- * => Add in X + Y +- * => Add in replacement read. +- */ +- newcounters->counters[i] = repl->counters[mappos]; ++ counters_normal_map(newcounters, repl, ++ r->index, ++ r->counter_map.mappos); + break; + + case COUNTER_MAP_ZEROED: +- /* Original read: X. +- * Atomic read on replacement: X + Y. +- * Currently in kernel: Z. +- * Want in kernel: Y + Z. +- * => Add in Y. +- * => Add in (replacement read - original read). +- */ +- subtract_counters(&newcounters->counters[i], +- &repl->counters[mappos], +- &index2entry(*handle, i)->counters); ++ counters_map_zeroed(newcounters, repl, ++ r->index, ++ r->counter_map.mappos, ++ &r->entry->counters); + break; + + case COUNTER_MAP_SET: +- /* Want to set counter (iptables-restore) */ +- +- memcpy(&newcounters->counters[i], +- &index2entry(*handle, i)->counters, +- sizeof(STRUCT_COUNTERS)); +- ++ counters_map_set(newcounters, r->index, ++ &r->entry->counters); + break; + } + } ++ } ++ + + #ifdef KERNEL_64_USERSPACE_32 + { +@@ -1696,10 +2179,21 @@ + "counters alignment incorrect! Mail rusty!\n"); + abort(); + } +- *kernptr = &newcounters->counters; ++ *kernptr = newcounters->counters; + } + #endif /* KERNEL_64_USERSPACE_32 */ + ++#ifdef IPTC_DEBUG2 ++ { ++ int fd = open("/tmp/libiptc-so_set_add_counters.blob", ++ O_CREAT|O_WRONLY); ++ if (fd >= 0) { ++ write(fd, newcounters, counterlen); ++ close(fd); ++ } ++ } ++#endif ++ + if (setsockopt(sockfd, TC_IPPROTO, SO_SET_ADD_COUNTERS, + newcounters, counterlen) < 0) { + free(repl->counters); +@@ -1713,10 +2207,7 @@ + free(newcounters); + + finished: +- if ((*handle)->cache_chain_heads) +- free((*handle)->cache_chain_heads); +- free(*handle); +- *handle = NULL; ++ TC_FREE(handle); + return 1; + } + +diff -Nur ipac-ng-1.31.orig/agents/iptables/libiptc.h ipac-ng-1.31/agents/iptables/libiptc.h +--- ipac-ng-1.31.orig/agents/iptables/libiptc.h 2003-07-06 10:33:17.000000000 +0000 ++++ ipac-ng-1.31/agents/iptables/libiptc.h 2006-01-10 21:01:39.000000000 +0000 +@@ -1,7 +1,3 @@ +-#ifndef NETFILTER_VERSION +-#define NETFILTER_VERSION "1.2.5" +-#endif +- + #ifndef _LIBIPTC_H + #define _LIBIPTC_H + /* Library which manipulates filtering rules. */ +@@ -38,6 +34,9 @@ + /* Take a snapshot of the rules. Returns NULL on error. */ + iptc_handle_t iptc_init(const char *tablename); + ++/* Cleanup after iptc_init(). */ ++void iptc_free(iptc_handle_t *h); ++ + /* Iterator functions to run through the chains. Returns NULL at end. */ + const char *iptc_first_chain(iptc_handle_t *handle); + const char *iptc_next_chain(iptc_handle_t *handle); +diff -Nur ipac-ng-1.31.orig/agents/iptables/linux_list.h ipac-ng-1.31/agents/iptables/linux_list.h +--- ipac-ng-1.31.orig/agents/iptables/linux_list.h 1970-01-01 00:00:00.000000000 +0000 ++++ ipac-ng-1.31/agents/iptables/linux_list.h 2006-01-10 21:01:39.000000000 +0000 +@@ -0,0 +1,723 @@ ++#ifndef _LINUX_LIST_H ++#define _LINUX_LIST_H ++ ++#undef offsetof ++#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) ++ ++/** ++ * container_of - cast a member of a structure out to the containing structure ++ * ++ * @ptr: the pointer to the member. ++ * @type: the type of the container struct this is embedded in. ++ * @member: the name of the member within the struct. ++ * ++ */ ++#define container_of(ptr, type, member) ({ \ ++ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ++ (type *)( (char *)__mptr - offsetof(type,member) );}) ++ ++/* ++ * Check at compile time that something is of a particular type. ++ * Always evaluates to 1 so you may use it easily in comparisons. ++ */ ++#define typecheck(type,x) \ ++({ type __dummy; \ ++ typeof(x) __dummy2; \ ++ (void)(&__dummy == &__dummy2); \ ++ 1; \ ++}) ++ ++#define prefetch(x) 1 ++ ++/* empty define to make this work in userspace -HW */ ++#define smp_wmb() ++ ++/* ++ * These are non-NULL pointers that will result in page faults ++ * under normal circumstances, used to verify that nobody uses ++ * non-initialized list entries. ++ */ ++#define LIST_POISON1 ((void *) 0x00100100) ++#define LIST_POISON2 ((void *) 0x00200200) ++ ++/* ++ * Simple doubly linked list implementation. ++ * ++ * Some of the internal functions ("__xxx") are useful when ++ * manipulating whole lists rather than single entries, as ++ * sometimes we already know the next/prev entries and we can ++ * generate better code by using them directly rather than ++ * using the generic single-entry routines. ++ */ ++ ++struct list_head { ++ struct list_head *next, *prev; ++}; ++ ++#define LIST_HEAD_INIT(name) { &(name), &(name) } ++ ++#define LIST_HEAD(name) \ ++ struct list_head name = LIST_HEAD_INIT(name) ++ ++#define INIT_LIST_HEAD(ptr) do { \ ++ (ptr)->next = (ptr); (ptr)->prev = (ptr); \ ++} while (0) ++ ++/* ++ * Insert a new entry between two known consecutive entries. ++ * ++ * This is only for internal list manipulation where we know ++ * the prev/next entries already! ++ */ ++static inline void __list_add(struct list_head *new, ++ struct list_head *prev, ++ struct list_head *next) ++{ ++ next->prev = new; ++ new->next = next; ++ new->prev = prev; ++ prev->next = new; ++} ++ ++/** ++ * list_add - add a new entry ++ * @new: new entry to be added ++ * @head: list head to add it after ++ * ++ * Insert a new entry after the specified head. ++ * This is good for implementing stacks. ++ */ ++static inline void list_add(struct list_head *new, struct list_head *head) ++{ ++ __list_add(new, head, head->next); ++} ++ ++/** ++ * list_add_tail - add a new entry ++ * @new: new entry to be added ++ * @head: list head to add it before ++ * ++ * Insert a new entry before the specified head. ++ * This is useful for implementing queues. ++ */ ++static inline void list_add_tail(struct list_head *new, struct list_head *head) ++{ ++ __list_add(new, head->prev, head); ++} ++ ++/* ++ * Insert a new entry between two known consecutive entries. ++ * ++ * This is only for internal list manipulation where we know ++ * the prev/next entries already! ++ */ ++static inline void __list_add_rcu(struct list_head * new, ++ struct list_head * prev, struct list_head * next) ++{ ++ new->next = next; ++ new->prev = prev; ++ smp_wmb(); ++ next->prev = new; ++ prev->next = new; ++} ++ ++/** ++ * list_add_rcu - add a new entry to rcu-protected list ++ * @new: new entry to be added ++ * @head: list head to add it after ++ * ++ * Insert a new entry after the specified head. ++ * This is good for implementing stacks. ++ * ++ * The caller must take whatever precautions are necessary ++ * (such as holding appropriate locks) to avoid racing ++ * with another list-mutation primitive, such as list_add_rcu() ++ * or list_del_rcu(), running on this same list. ++ * However, it is perfectly legal to run concurrently with ++ * the _rcu list-traversal primitives, such as ++ * list_for_each_entry_rcu(). ++ */ ++static inline void list_add_rcu(struct list_head *new, struct list_head *head) ++{ ++ __list_add_rcu(new, head, head->next); ++} ++ ++/** ++ * list_add_tail_rcu - add a new entry to rcu-protected list ++ * @new: new entry to be added ++ * @head: list head to add it before ++ * ++ * Insert a new entry before the specified head. ++ * This is useful for implementing queues. ++ * ++ * The caller must take whatever precautions are necessary ++ * (such as holding appropriate locks) to avoid racing ++ * with another list-mutation primitive, such as list_add_tail_rcu() ++ * or list_del_rcu(), running on this same list. ++ * However, it is perfectly legal to run concurrently with ++ * the _rcu list-traversal primitives, such as ++ * list_for_each_entry_rcu(). ++ */ ++static inline void list_add_tail_rcu(struct list_head *new, ++ struct list_head *head) ++{ ++ __list_add_rcu(new, head->prev, head); ++} ++ ++/* ++ * Delete a list entry by making the prev/next entries ++ * point to each other. ++ * ++ * This is only for internal list manipulation where we know ++ * the prev/next entries already! ++ */ ++static inline void __list_del(struct list_head * prev, struct list_head * next) ++{ ++ next->prev = prev; ++ prev->next = next; ++} ++ ++/** ++ * list_del - deletes entry from list. ++ * @entry: the element to delete from the list. ++ * Note: list_empty on entry does not return true after this, the entry is ++ * in an undefined state. ++ */ ++static inline void list_del(struct list_head *entry) ++{ ++ __list_del(entry->prev, entry->next); ++ entry->next = LIST_POISON1; ++ entry->prev = LIST_POISON2; ++} ++ ++/** ++ * list_del_rcu - deletes entry from list without re-initialization ++ * @entry: the element to delete from the list. ++ * ++ * Note: list_empty on entry does not return true after this, ++ * the entry is in an undefined state. It is useful for RCU based ++ * lockfree traversal. ++ * ++ * In particular, it means that we can not poison the forward ++ * pointers that may still be used for walking the list. ++ * ++ * The caller must take whatever precautions are necessary ++ * (such as holding appropriate locks) to avoid racing ++ * with another list-mutation primitive, such as list_del_rcu() ++ * or list_add_rcu(), running on this same list. ++ * However, it is perfectly legal to run concurrently with ++ * the _rcu list-traversal primitives, such as ++ * list_for_each_entry_rcu(). ++ * ++ * Note that the caller is not permitted to immediately free ++ * the newly deleted entry. Instead, either synchronize_kernel() ++ * or call_rcu() must be used to defer freeing until an RCU ++ * grace period has elapsed. ++ */ ++static inline void list_del_rcu(struct list_head *entry) ++{ ++ __list_del(entry->prev, entry->next); ++ entry->prev = LIST_POISON2; ++} ++ ++/** ++ * list_del_init - deletes entry from list and reinitialize it. ++ * @entry: the element to delete from the list. ++ */ ++static inline void list_del_init(struct list_head *entry) ++{ ++ __list_del(entry->prev, entry->next); ++ INIT_LIST_HEAD(entry); ++} ++ ++/** ++ * list_move - delete from one list and add as another's head ++ * @list: the entry to move ++ * @head: the head that will precede our entry ++ */ ++static inline void list_move(struct list_head *list, struct list_head *head) ++{ ++ __list_del(list->prev, list->next); ++ list_add(list, head); ++} ++ ++/** ++ * list_move_tail - delete from one list and add as another's tail ++ * @list: the entry to move ++ * @head: the head that will follow our entry ++ */ ++static inline void list_move_tail(struct list_head *list, ++ struct list_head *head) ++{ ++ __list_del(list->prev, list->next); ++ list_add_tail(list, head); ++} ++ ++/** ++ * list_empty - tests whether a list is empty ++ * @head: the list to test. ++ */ ++static inline int list_empty(const struct list_head *head) ++{ ++ return head->next == head; ++} ++ ++/** ++ * list_empty_careful - tests whether a list is ++ * empty _and_ checks that no other CPU might be ++ * in the process of still modifying either member ++ * ++ * NOTE: using list_empty_careful() without synchronization ++ * can only be safe if the only activity that can happen ++ * to the list entry is list_del_init(). Eg. it cannot be used ++ * if another CPU could re-list_add() it. ++ * ++ * @head: the list to test. ++ */ ++static inline int list_empty_careful(const struct list_head *head) ++{ ++ struct list_head *next = head->next; ++ return (next == head) && (next == head->prev); ++} ++ ++static inline void __list_splice(struct list_head *list, ++ struct list_head *head) ++{ ++ struct list_head *first = list->next; ++ struct list_head *last = list->prev; ++ struct list_head *at = head->next; ++ ++ first->prev = head; ++ head->next = first; ++ ++ last->next = at; ++ at->prev = last; ++} ++ ++/** ++ * list_splice - join two lists ++ * @list: the new list to add. ++ * @head: the place to add it in the first list. ++ */ ++static inline void list_splice(struct list_head *list, struct list_head *head) ++{ ++ if (!list_empty(list)) ++ __list_splice(list, head); ++} ++ ++/** ++ * list_splice_init - join two lists and reinitialise the emptied list. ++ * @list: the new list to add. ++ * @head: the place to add it in the first list. ++ * ++ * The list at @list is reinitialised ++ */ ++static inline void list_splice_init(struct list_head *list, ++ struct list_head *head) ++{ ++ if (!list_empty(list)) { ++ __list_splice(list, head); ++ INIT_LIST_HEAD(list); ++ } ++} ++ ++/** ++ * list_entry - get the struct for this entry ++ * @ptr: the &struct list_head pointer. ++ * @type: the type of the struct this is embedded in. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_entry(ptr, type, member) \ ++ container_of(ptr, type, member) ++ ++/** ++ * list_for_each - iterate over a list ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ */ ++#define list_for_each(pos, head) \ ++ for (pos = (head)->next, prefetch(pos->next); pos != (head); \ ++ pos = pos->next, prefetch(pos->next)) ++ ++/** ++ * __list_for_each - iterate over a list ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ * ++ * This variant differs from list_for_each() in that it's the ++ * simplest possible list iteration code, no prefetching is done. ++ * Use this for code that knows the list to be very short (empty ++ * or 1 entry) most of the time. ++ */ ++#define __list_for_each(pos, head) \ ++ for (pos = (head)->next; pos != (head); pos = pos->next) ++ ++/** ++ * list_for_each_prev - iterate over a list backwards ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ */ ++#define list_for_each_prev(pos, head) \ ++ for (pos = (head)->prev, prefetch(pos->prev); pos != (head); \ ++ pos = pos->prev, prefetch(pos->prev)) ++ ++/** ++ * list_for_each_safe - iterate over a list safe against removal of list entry ++ * @pos: the &struct list_head to use as a loop counter. ++ * @n: another &struct list_head to use as temporary storage ++ * @head: the head for your list. ++ */ ++#define list_for_each_safe(pos, n, head) \ ++ for (pos = (head)->next, n = pos->next; pos != (head); \ ++ pos = n, n = pos->next) ++ ++/** ++ * list_for_each_entry - iterate over list of given type ++ * @pos: the type * to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_for_each_entry(pos, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member), \ ++ prefetch(pos->member.next); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.next, typeof(*pos), member), \ ++ prefetch(pos->member.next)) ++ ++/** ++ * list_for_each_entry_reverse - iterate backwards over list of given type. ++ * @pos: the type * to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_for_each_entry_reverse(pos, head, member) \ ++ for (pos = list_entry((head)->prev, typeof(*pos), member), \ ++ prefetch(pos->member.prev); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.prev, typeof(*pos), member), \ ++ prefetch(pos->member.prev)) ++ ++/** ++ * list_prepare_entry - prepare a pos entry for use as a start point in ++ * list_for_each_entry_continue ++ * @pos: the type * to use as a start point ++ * @head: the head of the list ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_prepare_entry(pos, head, member) \ ++ ((pos) ? : list_entry(head, typeof(*pos), member)) ++ ++/** ++ * list_for_each_entry_continue - iterate over list of given type ++ * continuing after existing point ++ * @pos: the type * to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_for_each_entry_continue(pos, head, member) \ ++ for (pos = list_entry(pos->member.next, typeof(*pos), member), \ ++ prefetch(pos->member.next); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.next, typeof(*pos), member), \ ++ prefetch(pos->member.next)) ++ ++/** ++ * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry ++ * @pos: the type * to use as a loop counter. ++ * @n: another type * to use as temporary storage ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ */ ++#define list_for_each_entry_safe(pos, n, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member), \ ++ n = list_entry(pos->member.next, typeof(*pos), member); \ ++ &pos->member != (head); \ ++ pos = n, n = list_entry(n->member.next, typeof(*n), member)) ++ ++/** ++ * list_for_each_rcu - iterate over an rcu-protected list ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ * ++ * This list-traversal primitive may safely run concurrently with ++ * the _rcu list-mutation primitives such as list_add_rcu() ++ * as long as the traversal is guarded by rcu_read_lock(). ++ */ ++#define list_for_each_rcu(pos, head) \ ++ for (pos = (head)->next, prefetch(pos->next); pos != (head); \ ++ pos = pos->next, ({ smp_read_barrier_depends(); 0;}), prefetch(pos->next)) ++ ++#define __list_for_each_rcu(pos, head) \ ++ for (pos = (head)->next; pos != (head); \ ++ pos = pos->next, ({ smp_read_barrier_depends(); 0;})) ++ ++/** ++ * list_for_each_safe_rcu - iterate over an rcu-protected list safe ++ * against removal of list entry ++ * @pos: the &struct list_head to use as a loop counter. ++ * @n: another &struct list_head to use as temporary storage ++ * @head: the head for your list. ++ * ++ * This list-traversal primitive may safely run concurrently with ++ * the _rcu list-mutation primitives such as list_add_rcu() ++ * as long as the traversal is guarded by rcu_read_lock(). ++ */ ++#define list_for_each_safe_rcu(pos, n, head) \ ++ for (pos = (head)->next, n = pos->next; pos != (head); \ ++ pos = n, ({ smp_read_barrier_depends(); 0;}), n = pos->next) ++ ++/** ++ * list_for_each_entry_rcu - iterate over rcu list of given type ++ * @pos: the type * to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the list_struct within the struct. ++ * ++ * This list-traversal primitive may safely run concurrently with ++ * the _rcu list-mutation primitives such as list_add_rcu() ++ * as long as the traversal is guarded by rcu_read_lock(). ++ */ ++#define list_for_each_entry_rcu(pos, head, member) \ ++ for (pos = list_entry((head)->next, typeof(*pos), member), \ ++ prefetch(pos->member.next); \ ++ &pos->member != (head); \ ++ pos = list_entry(pos->member.next, typeof(*pos), member), \ ++ ({ smp_read_barrier_depends(); 0;}), \ ++ prefetch(pos->member.next)) ++ ++ ++/** ++ * list_for_each_continue_rcu - iterate over an rcu-protected list ++ * continuing after existing point. ++ * @pos: the &struct list_head to use as a loop counter. ++ * @head: the head for your list. ++ * ++ * This list-traversal primitive may safely run concurrently with ++ * the _rcu list-mutation primitives such as list_add_rcu() ++ * as long as the traversal is guarded by rcu_read_lock(). ++ */ ++#define list_for_each_continue_rcu(pos, head) \ ++ for ((pos) = (pos)->next, prefetch((pos)->next); (pos) != (head); \ ++ (pos) = (pos)->next, ({ smp_read_barrier_depends(); 0;}), prefetch((pos)->next)) ++ ++/* ++ * Double linked lists with a single pointer list head. ++ * Mostly useful for hash tables where the two pointer list head is ++ * too wasteful. ++ * You lose the ability to access the tail in O(1). ++ */ ++ ++struct hlist_head { ++ struct hlist_node *first; ++}; ++ ++struct hlist_node { ++ struct hlist_node *next, **pprev; ++}; ++ ++#define HLIST_HEAD_INIT { .first = NULL } ++#define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } ++#define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) ++#define INIT_HLIST_NODE(ptr) ((ptr)->next = NULL, (ptr)->pprev = NULL) ++ ++static inline int hlist_unhashed(const struct hlist_node *h) ++{ ++ return !h->pprev; ++} ++ ++static inline int hlist_empty(const struct hlist_head *h) ++{ ++ return !h->first; ++} ++ ++static inline void __hlist_del(struct hlist_node *n) ++{ ++ struct hlist_node *next = n->next; ++ struct hlist_node **pprev = n->pprev; ++ *pprev = next; ++ if (next) ++ next->pprev = pprev; ++} ++ ++static inline void hlist_del(struct hlist_node *n) ++{ ++ __hlist_del(n); ++ n->next = LIST_POISON1; ++ n->pprev = LIST_POISON2; ++} ++ ++/** ++ * hlist_del_rcu - deletes entry from hash list without re-initialization ++ * @n: the element to delete from the hash list. ++ * ++ * Note: list_unhashed() on entry does not return true after this, ++ * the entry is in an undefined state. It is useful for RCU based ++ * lockfree traversal. ++ * ++ * In particular, it means that we can not poison the forward ++ * pointers that may still be used for walking the hash list. ++ * ++ * The caller must take whatever precautions are necessary ++ * (such as holding appropriate locks) to avoid racing ++ * with another list-mutation primitive, such as hlist_add_head_rcu() ++ * or hlist_del_rcu(), running on this same list. ++ * However, it is perfectly legal to run concurrently with ++ * the _rcu list-traversal primitives, such as ++ * hlist_for_each_entry(). ++ */ ++static inline void hlist_del_rcu(struct hlist_node *n) ++{ ++ __hlist_del(n); ++ n->pprev = LIST_POISON2; ++} ++ ++static inline void hlist_del_init(struct hlist_node *n) ++{ ++ if (n->pprev) { ++ __hlist_del(n); ++ INIT_HLIST_NODE(n); ++ } ++} ++ ++#define hlist_del_rcu_init hlist_del_init ++ ++static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h) ++{ ++ struct hlist_node *first = h->first; ++ n->next = first; ++ if (first) ++ first->pprev = &n->next; ++ h->first = n; ++ n->pprev = &h->first; ++} ++ ++ ++/** ++ * hlist_add_head_rcu - adds the specified element to the specified hlist, ++ * while permitting racing traversals. ++ * @n: the element to add to the hash list. ++ * @h: the list to add to. ++ * ++ * The caller must take whatever precautions are necessary ++ * (such as holding appropriate locks) to avoid racing ++ * with another list-mutation primitive, such as hlist_add_head_rcu() ++ * or hlist_del_rcu(), running on this same list. ++ * However, it is perfectly legal to run concurrently with ++ * the _rcu list-traversal primitives, such as ++ * hlist_for_each_entry(), but only if smp_read_barrier_depends() ++ * is used to prevent memory-consistency problems on Alpha CPUs. ++ * Regardless of the type of CPU, the list-traversal primitive ++ * must be guarded by rcu_read_lock(). ++ * ++ * OK, so why don't we have an hlist_for_each_entry_rcu()??? ++ */ ++static inline void hlist_add_head_rcu(struct hlist_node *n, ++ struct hlist_head *h) ++{ ++ struct hlist_node *first = h->first; ++ n->next = first; ++ n->pprev = &h->first; ++ smp_wmb(); ++ if (first) ++ first->pprev = &n->next; ++ h->first = n; ++} ++ ++/* next must be != NULL */ ++static inline void hlist_add_before(struct hlist_node *n, ++ struct hlist_node *next) ++{ ++ n->pprev = next->pprev; ++ n->next = next; ++ next->pprev = &n->next; ++ *(n->pprev) = n; ++} ++ ++static inline void hlist_add_after(struct hlist_node *n, ++ struct hlist_node *next) ++{ ++ next->next = n->next; ++ n->next = next; ++ next->pprev = &n->next; ++ ++ if(next->next) ++ next->next->pprev = &next->next; ++} ++ ++#define hlist_entry(ptr, type, member) container_of(ptr,type,member) ++ ++#define hlist_for_each(pos, head) \ ++ for (pos = (head)->first; pos && ({ prefetch(pos->next); 1; }); \ ++ pos = pos->next) ++ ++#define hlist_for_each_safe(pos, n, head) \ ++ for (pos = (head)->first; pos && ({ n = pos->next; 1; }); \ ++ pos = n) ++ ++/** ++ * hlist_for_each_entry - iterate over list of given type ++ * @tpos: the type * to use as a loop counter. ++ * @pos: the &struct hlist_node to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the hlist_node within the struct. ++ */ ++#define hlist_for_each_entry(tpos, pos, head, member) \ ++ for (pos = (head)->first; \ ++ pos && ({ prefetch(pos->next); 1;}) && \ ++ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ ++ pos = pos->next) ++ ++/** ++ * hlist_for_each_entry_continue - iterate over a hlist continuing after existing point ++ * @tpos: the type * to use as a loop counter. ++ * @pos: the &struct hlist_node to use as a loop counter. ++ * @member: the name of the hlist_node within the struct. ++ */ ++#define hlist_for_each_entry_continue(tpos, pos, member) \ ++ for (pos = (pos)->next; \ ++ pos && ({ prefetch(pos->next); 1;}) && \ ++ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ ++ pos = pos->next) ++ ++/** ++ * hlist_for_each_entry_from - iterate over a hlist continuing from existing point ++ * @tpos: the type * to use as a loop counter. ++ * @pos: the &struct hlist_node to use as a loop counter. ++ * @member: the name of the hlist_node within the struct. ++ */ ++#define hlist_for_each_entry_from(tpos, pos, member) \ ++ for (; pos && ({ prefetch(pos->next); 1;}) && \ ++ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ ++ pos = pos->next) ++ ++/** ++ * hlist_for_each_entry_safe - iterate over list of given type safe against removal of list entry ++ * @tpos: the type * to use as a loop counter. ++ * @pos: the &struct hlist_node to use as a loop counter. ++ * @n: another &struct hlist_node to use as temporary storage ++ * @head: the head for your list. ++ * @member: the name of the hlist_node within the struct. ++ */ ++#define hlist_for_each_entry_safe(tpos, pos, n, head, member) \ ++ for (pos = (head)->first; \ ++ pos && ({ n = pos->next; 1; }) && \ ++ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ ++ pos = n) ++ ++/** ++ * hlist_for_each_entry_rcu - iterate over rcu list of given type ++ * @pos: the type * to use as a loop counter. ++ * @pos: the &struct hlist_node to use as a loop counter. ++ * @head: the head for your list. ++ * @member: the name of the hlist_node within the struct. ++ * ++ * This list-traversal primitive may safely run concurrently with ++ * the _rcu list-mutation primitives such as hlist_add_rcu() ++ * as long as the traversal is guarded by rcu_read_lock(). ++ */ ++#define hlist_for_each_entry_rcu(tpos, pos, head, member) \ ++ for (pos = (head)->first; \ ++ pos && ({ prefetch(pos->next); 1;}) && \ ++ ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ ++ pos = pos->next, ({ smp_read_barrier_depends(); 0; }) ) ++ ++#endif